I'm trying to get the PPC64 system emulation target working finally. While doing so, I ran into several issues, all related to PCI this time.
This patchset fixes all the PCI config space access and PCI interrupt mapping issues I've found on PPC64. Using this and a patched OpenBIOS version, I can successfully access IDE devices and was booting a guest into the shell from IDE using serial console. To leverage this patch, you also need a few patches to OpenBIOS. I'll present them to the OpenBIOS list, but in general getting patches into Qemu is harder than getting them into OpenBIOS. So I want to wait for the rewiew process here first. Find the OpenBIOS patch at: http://alex.csgraf.de/openbios-ppc-u3.patch v1 -> v2: - use decoding function for config space bits - merge config space data access functions - introduce encoding function for x86 style encodings - convert Uninorth to use config space decoder Alexander Graf (6): PCI config space access overhaul Add config space conversion function for uni_north Use Mac99_U3 type on ppc64 Include dump of lspci -nn on real G5 Make interrupts work Enable secondary cmd64x hw/apb_pci.c | 1 + hw/grackle_pci.c | 1 + hw/gt64xxx.c | 1 + hw/pci.h | 13 ++++ hw/pci_host.c | 48 ++++++++++++--- hw/pci_host.h | 16 +++++ hw/pci_host_template.h | 90 ++++++++-------------------- hw/pci_host_template_all.h | 23 +++++++ hw/pci_ids.h | 1 + hw/piix_pci.c | 1 + hw/ppc.h | 1 + hw/ppc4xx_pci.c | 1 + hw/ppc_mac.h | 1 + hw/ppc_newworld.c | 14 ++++- hw/ppce500_pci.c | 1 + hw/unin_pci.c | 141 +++++++++++++++++++++++++++++++++++++++++++- 16 files changed, 274 insertions(+), 80 deletions(-) create mode 100644 hw/pci_host_template_all.h