[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 00/10] Fix versatile_pci (and break versatilepb linu
From: |
Peter Maydell |
Subject: |
[Qemu-devel] [PATCH 00/10] Fix versatile_pci (and break versatilepb linux guests!) |
Date: |
Sun, 24 Mar 2013 11:32:30 +0000 |
This patch series fixes a number of serious bugs in our emulation of
the PCI controller found on VersatilePB and the early Realview boards:
* our interrupt mapping was totally wrong
* we weren't implementing the PCI memory windows
* the I/O window wasn't mapped on VersatilePB
* realview mapped things at the wrong addresses
* we didn't implement the controller's registers at all
It also updates to some reasonable approximation to QOM best practice,
including subclassing pci_host rather than doing everything by hand.
I haven't implemented support for the SMAP registers (which control
how the controller converts accesses made by bus-mastering PCI
devices into system addresses). For the moment we rely on the fact
that Linux always maps things 1:1. (It wouldn't be too hard to add
SMAP support but it requires changing QEMU's pci code to allow a
controller to pass in a MemoryRegion* for DMA to use instead of
the system address space, so I prefer to leave that for another series.)
Patchset tested on both versatilepb and realview, using a set of
Linux kernel patches written by Arnd Bergmann:
http://lists.infradead.org/pipermail/linux-arm-kernel/2010-October/029040.html
which were in turn tested against real PB926 and PB1176 hardware.
* WARNING WARNING *
This patchset will break any use of PCI (including the default SCSI
card) on versatilepb with current Linux kernels, because those kernels
have the matching bug in interrupt mapping to old QEMU.
I've provided a property for enabling the old broken IRQ mapping;
this can be enabled with the command line option:
-global versatile_pci.broken-irq-mapping=1
(If anybody wants to suggest a better way of handling this please do.)
Peter Maydell (10):
versatile_pci: Fix hardcoded tabs
versatile_pci: Expose PCI I/O region on Versatile PB
versatile_pci: Update to realize and instance init functions
versatile_pci: Change to subclassing TYPE_PCI_HOST_BRIDGE
versatile_pci: Use separate PCI I/O space rather than system I/O space
versatile_pci: Put the host bridge PCI device at slot 29
versatile_pci: Implement the correct PCI IRQ mapping
versatile_pci: Implement the PCI controller's control registers
arm/realview: Fix mapping of PCI regions
versatile_pci: Expose PCI memory space to system
hw/arm/realview.c | 22 +--
hw/arm/versatilepb.c | 11 +-
hw/versatile_pci.c | 368 ++++++++++++++++++++++++++++++++++++++++++++------
3 files changed, 344 insertions(+), 57 deletions(-)
--
1.7.9.5
- [Qemu-devel] [PATCH 00/10] Fix versatile_pci (and break versatilepb linux guests!),
Peter Maydell <=
- [Qemu-devel] [PATCH 01/10] versatile_pci: Fix hardcoded tabs, Peter Maydell, 2013/03/24
- [Qemu-devel] [PATCH 10/10] versatile_pci: Expose PCI memory space to system, Peter Maydell, 2013/03/24
- [Qemu-devel] [PATCH 09/10] arm/realview: Fix mapping of PCI regions, Peter Maydell, 2013/03/24
- [Qemu-devel] [PATCH 08/10] versatile_pci: Implement the PCI controller's control registers, Peter Maydell, 2013/03/24
- [Qemu-devel] [PATCH 06/10] versatile_pci: Put the host bridge PCI device at slot 29, Peter Maydell, 2013/03/24
- [Qemu-devel] [PATCH 03/10] versatile_pci: Update to realize and instance init functions, Peter Maydell, 2013/03/24