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 review 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 v2 -> v3: - call pci_addr_to_devfn pci_addr_to_config_reg - split out debug fix - call convert functions config_addr instead of config_reg - no spaces between braces - dropped: Enable secondary cmd64x - new: Tell the guest about the time base frequency - new: Use macio IDE controller for Newworld - new: Get rid of segfaults in DBDMA emulation - new: Add USB per default on U3 Alexander Graf (9): PCI: PCI config space access overhaul PPC: Add config space conversion function for uni_north PPC: Use Mac99_U3 type on ppc64 PPC: Include dump of lspci -nn on real G5 PPC: Make interrupts work PPC: tell the guest about the time base frequency PPC: Use macio IDE controller for Newworld PPC: Get rid of segfaults in DBDMA emulation PPC: Add USB per default on U3 hw/apb_pci.c | 1 + hw/grackle_pci.c | 1 + hw/gt64xxx.c | 1 + hw/mac_dbdma.c | 10 ++- hw/pci.h | 13 ++++ hw/pci_host.c | 46 ++++++++++++--- hw/pci_host.h | 16 +++++ hw/pci_host_template.h | 92 +++++++++-------------------- hw/pci_host_template_all.h | 23 +++++++ hw/pci_ids.h | 1 + hw/piix_pci.c | 1 + hw/ppc.h | 2 + hw/ppc4xx_pci.c | 1 + hw/ppc_mac.h | 1 + hw/ppc_newworld.c | 49 +++++++++++++--- hw/ppc_oldworld.c | 9 +++ hw/ppce500_pci.c | 1 + hw/unin_pci.c | 141 +++++++++++++++++++++++++++++++++++++++++++- target-ppc/kvm.c | 46 ++++++++++++++ target-ppc/kvm_ppc.h | 2 + 20 files changed, 370 insertions(+), 87 deletions(-) create mode 100644 hw/pci_host_template_all.h