Re: conventional PCI transaction during start-up. How it wor
Yes. Vendor ID and Device ID are enough.
Copied from wikipedia
"All PCI devices are in an inactive state upon system reset, they will not have any addresses assigned to them by which the operating system or device drivers can communicate with them. Either the BIOS or the operating system geographically addresses the PCI slots (e.g. the first PCI slot, the second PCI slot, or the third PCI slot, etc., on the motherboard) through the PCI controller using the per slot IDSEL signals."
"there is no direct method for the BIOS or OS to determine which PCI slots have devices installed (nor the functions the device implements) the PCI bus(es) must be enumerated. Bus enumeration is performed by attempting to read the Vendor- and Device ID register for each combination of bus number and device number, at the device's function #0."
"If there is no device that implements the function zero (ie. vendor and device ID registers), the bus master performs an abort and returns all 1's in binary (F's in hexadecimal). All 1's is an invalid VID/DID value, thus a device driver can tell that the specified combination bus/device/function (B/D/F) does not exist."