The 0xCF8/0xCFC configuration-address mechanism you implement here is exactly what the Linux kernel's drivers/pci/access.c 'type 1' config access uses on every x86 machine that hasn't switched to MMCONFIG, and enumerating all 256 buses times 32 devices times 8 functions is the same brute-force scan `lspci` performs under the hood. Misreading the bus/device/function bit-packing in the address register is a classic bug that silently probes the wrong device entirely.