I'm trying to get the PPC64 system emulation target working finally. While doing so, I ran into several issues, most 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 WARNING: This patchset is based on top of mst's rwhandler patches. You can find those here: git://git.kernel.org/pub/scm/linux/kernel/git/mst/qemu.git 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 v3 -> v4: - fix fgets warning - use self-contained config space data functions - use mst's rwhandler - move lspci output up - new: Fix large pages - new: Add timer when running KVM Alexander Graf (10): PPC: Uninorth config space accessor 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 PPC: Fix large pages PPC: Add timer when running KVM hw/mac_dbdma.c | 10 ++- hw/pci_ids.h | 1 + hw/ppc.h | 2 + hw/ppc_mac.h | 1 + hw/ppc_newworld.c | 73 +++++++++++++++++++++--- hw/ppc_oldworld.c | 9 +++ hw/unin_pci.c | 151 ++++++++++++++++++++++++++++++++++++++++++++++++- target-ppc/helper.c | 9 +-- target-ppc/kvm.c | 70 +++++++++++++++++++++++ target-ppc/kvm_ppc.h | 2 + 10 files changed, 308 insertions(+), 20 deletions(-)