I think the problem is that you're trying to do a 4-byte read that goes off the end of PCI_DATA. Try doing an inpw() to read the last word. Simple test program shows it works properly for me.
** Changed in: qemu Status: New => Invalid -- PCI read data register offset https://bugs.launchpad.net/bugs/424458 You received this bug notification because you are a member of qemu- devel-ml, which is subscribed to QEMU. Status in QEMU: Invalid Bug description: I may have found a bug with the PCI code. If I execute the following code as a quest, #define PCI_ADDR 0x0CF8 #define PCI_DATA 0x0CFC // bus 0, dev 0, func 0, addr 0 outpd(PCI_ADDR, 0x80000000); // read in the dword at addr 0 offset 0 // and // read in the word at addr 0 offset 2 // and the word at addr 1 offset 0 printf("0x%08X 0x%08X", inpd(PCI_DATA), inpd(PCI_DATA+2)); Qemu (0.10.6 Windows build) returns 0x12378086 0xFFFFFFFF It seems that if I read from any offset other than PCI_DATA, QEMU is returning 0xFFFFFFFF. Shouldn't PCI_DATA+1, PCI_DATA+2, and PCI_DATA+3 all be registered to the PCI emulation? Again, this is the Windows build at http://homepage3.nifty.com/takeda-toshiya/qemu/index.html so it is unknown if it is the main CVS. I didn't check, though I can't image this error lasting this long. I would image someone would have noticed it already. So it might be assosiated with the Windows build only. Thanks.