qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 00/10] Fix versatile_pci (and break versatilepb


From: Aurelien Jarno
Subject: Re: [Qemu-devel] [PATCH 00/10] Fix versatile_pci (and break versatilepb linux guests!)
Date: Sun, 24 Mar 2013 16:58:37 +0100
User-agent: Mutt/1.5.20 (2009-06-14)

On Sun, Mar 24, 2013 at 11:32:30AM +0000, Peter Maydell wrote:
> 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

Do you mean Versatile/PB and not Versatile/AB, or actually both?

> have the matching bug in interrupt mapping to old QEMU.

How is real hardware working with this bug?

> 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.)

Do you have a pointer to the corresponding kernel patch? Is it possible
to get the kernel to detect if it should use the correct or the broken 
IRQ mapping?


> 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
> 
> 
> 

-- 
Aurelien Jarno                          GPG: 1024D/F1BCDB73
address@hidden                 http://www.aurel32.net



reply via email to

[Prev in Thread] Current Thread [Next in Thread]