From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:44597) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S4EVm-0006vD-H4 for qemu-devel@nongnu.org; Sun, 04 Mar 2012 11:42:19 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1S4EVk-0000kC-NK for qemu-devel@nongnu.org; Sun, 04 Mar 2012 11:42:18 -0500 Received: from mx1.redhat.com ([209.132.183.28]:42192) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S4EVk-0000jz-FS for qemu-devel@nongnu.org; Sun, 04 Mar 2012 11:42:16 -0500 Date: Sun, 4 Mar 2012 18:42:17 +0200 From: "Michael S. Tsirkin" Message-ID: <20120304164044.GA15384@redhat.com> References: <20120304094614.GA8158@redhat.com> <4F535FD4.2000905@redhat.com> <4F5362FD.5060305@redhat.com> <20120304132225.GB12047@redhat.com> <20120304140853.GA12776@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Subject: Re: [Qemu-devel] [PATCH] pci: fix bridge IO/BASE List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Blue Swirl Cc: Mark Cave-Ayland , Avi Kivity , Anthony Liguori , qemu-devel@nongnu.org On Sun, Mar 04, 2012 at 02:26:13PM +0000, Blue Swirl wrote: > > It seems to have to do with the host bridge. > > It's unusual to have host bridge present itself > > as a pci to pci bridge but there it is. > > It looks like the I/O base calculations in OpenBIOS are confused Where's the source for that, BTW? Have build instructions? > by > host bridge, after that all BARs are wrong. OpenBIOS also thinks that > the host bridge is a device and attempts to configure six BARs instead > of two. According to the spec it is a device, so should be ok? If I just make BAR4 writeable we get past the bios screen at least. Maybe openbios gets confused if a device has no BARs? Do things work for you with the patch below? All it does is make BAR4 writeable, accesses go nowhere. diff --git a/hw/apb_pci.c b/hw/apb_pci.c index 1d25da8..fae841f 100644 --- a/hw/apb_pci.c +++ b/hw/apb_pci.c @@ -433,6 +433,7 @@ static int pbm_pci_host_init(PCIDevice *d) pci_set_word(d->config + PCI_STATUS, PCI_STATUS_FAST_BACK | PCI_STATUS_66MHZ | PCI_STATUS_DEVSEL_MEDIUM); + pci_set_long(d->wmask + 0x20, 0xfffffff0); return 0; } @@ -444,7 +445,6 @@ static void pbm_pci_host_class_init(ObjectClass *klass, void *data) k->vendor_id = PCI_VENDOR_ID_SUN; k->device_id = PCI_DEVICE_ID_SUN_SABRE; k->class_id = PCI_CLASS_BRIDGE_HOST; - k->is_bridge = 1; } static TypeInfo pbm_pci_host_info = { -- MST