From: "Michael S. Tsirkin" <mst@redhat.com>
To: Blue Swirl <blauwirbel@gmail.com>
Cc: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
qemu-devel@nongnu.org, Anthony Liguori <anthony@codemonkey.ws>,
avi@redhat.com
Subject: Re: [Qemu-devel] [PATCH] pci: fix bridge IO/BASE
Date: Sun, 4 Mar 2012 14:33:02 +0200 [thread overview]
Message-ID: <20120304123302.GA11527@redhat.com> (raw)
In-Reply-To: <CAAu8pHuyD_KmZGV8GF1AJhaurdATcC3s24RTnxWa7iCCszcbDw@mail.gmail.com>
On Sun, Mar 04, 2012 at 10:27:24AM +0000, Blue Swirl wrote:
> On Sun, Mar 4, 2012 at 09:46, Michael S. Tsirkin <mst@redhat.com> wrote:
> > commit 5caef97a16010f818ea8b950e2ee24ba876643ad introduced
> > a regression: we do not make IO base/limit upper 16
> > bit registers writeable, so we should report a 16 bit
> > IO range type, not a 32 bit one.
> > Note that PCI_PREF_RANGE_TYPE_32 is 0x0, but PCI_IO_RANGE_TYPE_32 is 0x1.
> >
> > In particular, this broke sparc64.
> >
> > Note: this just reverts to behaviour prior to the patch.
> > Making PCI_IO_BASE_UPPER16 and PCI_IO_LIMIT_UPPER16
> > registers writeable should, and seems to, work just as well, but
> > as no system seems to actually be interested in 32 bit IO,
> > let's not make unnecessary changes.
> >
> > Reported-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
> > Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> >
> > Mark, can you confirm that this fixes the bug for you?
>
> No, running
> qemu-system-sparc64 -serial stdio
> still shows black screen and the following on console:
> OpenBIOS for Sparc64
> Unhandled Exception 0x0000000000000032
> PC = 0x00000000ffd19e18 NPC = 0x00000000ffd19e1c
> Stopping execution
>
> This unassigned memory exception is triggered because CMD646 IDE I/O
> registers are not accessible:
So here's a theory: the issue is that both device IO
and bridge IO have the same priority.
Bridge is initialized with IO at 0 to 4K
and so we have two devices at the same priority.
And flipping a type bit affects this, by chance?
I tried the following and it seems to help.
But the real fix IMO is to either disable the bridge ranges
at reset, in hardware, or have the BIOS do this.
Avi, could you pls comment on my analysis?
diff --git a/hw/pci.c b/hw/pci.c
index 6d08cef..286383a 100644
--- a/hw/pci.c
+++ b/hw/pci.c
@@ -986,7 +986,7 @@ static void pci_update_mappings(PCIDevice *d)
r->addr = new_addr;
if (r->addr != PCI_BAR_UNMAPPED) {
memory_region_add_subregion_overlap(r->address_space,
- r->addr, r->memory, 1);
+ r->addr, r->memory, 2);
}
}
}
next prev parent reply other threads:[~2012-03-04 12:33 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-04 9:46 [Qemu-devel] [PATCH] pci: fix bridge IO/BASE Michael S. Tsirkin
2012-03-04 10:27 ` Blue Swirl
2012-03-04 12:21 ` Michael S. Tsirkin
2012-03-04 12:37 ` Blue Swirl
2012-03-04 13:28 ` Michael S. Tsirkin
2012-03-04 13:38 ` Blue Swirl
2012-03-04 14:23 ` Michael S. Tsirkin
2012-03-04 14:35 ` Blue Swirl
2012-03-04 15:22 ` Michael S. Tsirkin
2012-03-04 17:07 ` Blue Swirl
2012-03-04 17:35 ` Michael S. Tsirkin
2012-03-04 19:51 ` Blue Swirl
2012-03-04 20:02 ` Michael S. Tsirkin
2012-03-04 20:32 ` Blue Swirl
2012-03-04 21:28 ` Michael S. Tsirkin
2012-03-04 21:54 ` Blue Swirl
2012-03-04 22:29 ` Michael S. Tsirkin
2012-03-05 18:34 ` Blue Swirl
2012-03-06 13:42 ` Michael S. Tsirkin
2012-03-04 21:56 ` Mark Cave-Ayland
2012-03-04 15:41 ` Michael S. Tsirkin
2012-03-04 13:38 ` Michael S. Tsirkin
2012-03-04 12:28 ` Avi Kivity
2012-03-04 12:38 ` Blue Swirl
2012-03-04 12:41 ` Avi Kivity
2012-03-04 12:46 ` Blue Swirl
2012-03-04 13:21 ` Michael S. Tsirkin
2012-03-04 13:22 ` Michael S. Tsirkin
2012-03-04 13:33 ` Blue Swirl
2012-03-04 14:08 ` Michael S. Tsirkin
2012-03-04 14:26 ` Blue Swirl
2012-03-04 16:42 ` Michael S. Tsirkin
2012-03-04 17:49 ` Blue Swirl
2012-03-04 18:11 ` Mark Cave-Ayland
2012-03-04 19:27 ` Michael S. Tsirkin
2012-03-04 19:43 ` Michael S. Tsirkin
2012-03-04 19:27 ` Michael S. Tsirkin
2012-03-04 12:33 ` Michael S. Tsirkin [this message]
2012-03-04 12:35 ` Avi Kivity
2012-03-04 12:35 ` Michael S. Tsirkin
2012-03-04 12:42 ` Blue Swirl
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=20120304123302.GA11527@redhat.com \
--to=mst@redhat.com \
--cc=anthony@codemonkey.ws \
--cc=avi@redhat.com \
--cc=blauwirbel@gmail.com \
--cc=mark.cave-ayland@ilande.co.uk \
--cc=qemu-devel@nongnu.org \
/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).