qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Aurelien Jarno <aurelien@aurel32.net>
Cc: "Peter Maydell" <peter.maydell@linaro.org>,
	"Arnd Bergmann" <arnd@arndb.de>,
	patches@linaro.org, "Will Deacon" <will.deacon@arm.com>,
	qemu-devel@nongnu.org, "Paul Brook" <paul@codesourcery.com>,
	"Andreas Färber" <afaerber@suse.de>
Subject: Re: [Qemu-devel] [PATCH 00/10] Fix versatile_pci (and break versatilepb linux guests!)
Date: Sun, 24 Mar 2013 21:17:19 +0200	[thread overview]
Message-ID: <20130324191719.GB31138@redhat.com> (raw)
In-Reply-To: <20130324155837.GB22106@hall.aurel32.net>

On Sun, Mar 24, 2013 at 04:58:37PM +0100, Aurelien Jarno wrote:
> 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?

Alternatively, or additionally, how about detecting the correct or
the incorrect kernel and updating the mapping?
For example, maybe we could do this using the
IRQ value written into the device pci config register?

If we can't find anything, maybe add our own register
so the same qemu config can support old and new kernels?

> 
> > 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
> aurelien@aurel32.net                 http://www.aurel32.net

  parent reply	other threads:[~2013-03-24 19:17 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-24 11:32 [Qemu-devel] [PATCH 00/10] Fix versatile_pci (and break versatilepb linux guests!) Peter Maydell
2013-03-24 11:32 ` [Qemu-devel] [PATCH 01/10] versatile_pci: Fix hardcoded tabs Peter Maydell
2013-03-24 11:32 ` [Qemu-devel] [PATCH 02/10] versatile_pci: Expose PCI I/O region on Versatile PB Peter Maydell
2013-03-25  1:01   ` Peter Crosthwaite
2013-03-25  9:47     ` Peter Maydell
2013-03-25 10:15       ` Peter Maydell
2013-03-24 11:32 ` [Qemu-devel] [PATCH 03/10] versatile_pci: Update to realize and instance init functions Peter Maydell
2013-03-24 11:32 ` [Qemu-devel] [PATCH 04/10] versatile_pci: Change to subclassing TYPE_PCI_HOST_BRIDGE Peter Maydell
2013-03-24 11:32 ` [Qemu-devel] [PATCH 05/10] versatile_pci: Use separate PCI I/O space rather than system I/O space Peter Maydell
2013-03-24 11:32 ` [Qemu-devel] [PATCH 06/10] versatile_pci: Put the host bridge PCI device at slot 29 Peter Maydell
2013-03-24 11:32 ` [Qemu-devel] [PATCH 07/10] versatile_pci: Implement the correct PCI IRQ mapping Peter Maydell
2013-03-25 12:12   ` Michael S. Tsirkin
2013-03-25 12:17     ` Peter Maydell
2013-03-25 12:28       ` Michael S. Tsirkin
2013-03-24 11:32 ` [Qemu-devel] [PATCH 08/10] versatile_pci: Implement the PCI controller's control registers Peter Maydell
2013-03-24 11:32 ` [Qemu-devel] [PATCH 09/10] arm/realview: Fix mapping of PCI regions Peter Maydell
2013-03-24 11:32 ` [Qemu-devel] [PATCH 10/10] versatile_pci: Expose PCI memory space to system Peter Maydell
2013-03-24 15:58 ` [Qemu-devel] [PATCH 00/10] Fix versatile_pci (and break versatilepb linux guests!) Aurelien Jarno
2013-03-24 16:49   ` Peter Maydell
2013-03-24 20:12     ` Aurelien Jarno
2013-03-24 19:17   ` Michael S. Tsirkin [this message]
2013-03-24 20:53     ` Peter Maydell
2013-03-24 21:16       ` Arnd Bergmann
2013-03-24 21:29         ` Peter Maydell
2013-03-24 22:45           ` Arnd Bergmann
2013-03-24 21:37         ` Michael S. Tsirkin
2013-03-24 22:59           ` Arnd Bergmann
2013-03-25 11:56           ` Peter Maydell
2013-03-24 21:34       ` Michael S. Tsirkin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20130324191719.GB31138@redhat.com \
    --to=mst@redhat.com \
    --cc=afaerber@suse.de \
    --cc=arnd@arndb.de \
    --cc=aurelien@aurel32.net \
    --cc=patches@linaro.org \
    --cc=paul@codesourcery.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=will.deacon@arm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).