From owner-freebsd-current@FreeBSD.ORG Tue May 31 15:01:29 2011 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C66601065673 for ; Tue, 31 May 2011 15:01:29 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from cyrus.watson.org (cyrus.watson.org [65.122.17.42]) by mx1.freebsd.org (Postfix) with ESMTP id 9D75D8FC13 for ; Tue, 31 May 2011 15:01:29 +0000 (UTC) Received: from bigwig.baldwin.cx (66.111.2.69.static.nyinternet.net [66.111.2.69]) by cyrus.watson.org (Postfix) with ESMTPSA id 52A8F46B3C; Tue, 31 May 2011 11:01:29 -0400 (EDT) Received: from jhbbsd.localnet (unknown [209.249.190.124]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id 8A4A68A02B; Tue, 31 May 2011 11:01:28 -0400 (EDT) From: John Baldwin To: freebsd-current@freebsd.org Date: Tue, 31 May 2011 10:39:37 -0400 User-Agent: KMail/1.13.5 (FreeBSD/8.2-CBSD-20110325; KDE/4.5.5; amd64; ; ) References: <201105260940.37035.jhb@freebsd.org> In-Reply-To: MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <201105311039.37935.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.6 (bigwig.baldwin.cx); Tue, 31 May 2011 11:01:29 -0400 (EDT) Cc: "deeptech71@gmail.com" Subject: Re: pcib allocation failure X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 May 2011 15:01:29 -0000 On Saturday, May 28, 2011 9:45:48 pm deeptech71@gmail.com wrote: > On Thu, May 26, 2011 at 3:40 PM, John Baldwin wrote: > > Ohh, you have two devices behind this bridge that have prefetch ranges. > > > > As a hack, can you try this: > > > > Index: pci_pci.c > > =================================================================== > > --- pci_pci.c (revision 222285) > > +++ pci_pci.c (working copy) > > @@ -162,8 +162,13 @@ pcib_write_windows(struct pcib_softc *sc, int mask > > { > > device_t dev; > > uint32_t val; > > + uint16_t cmd; > > > > dev = sc->dev; > > + cmd = pci_read_config(dev, PCIR_COMMAND, 2); > > + if (cmd & (PCIM_CMD_PORTEN | PCIM_CMD_MEMEN)) > > + pci_write_config(dev, PCIR_COMMAND, > > + cmd & ~(PCIM_CMD_PORTEN | PCIM_CMD_MEMEN), 2); > > if (sc->io.valid && mask & WIN_IO) { > > val = pci_read_config(dev, PCIR_IOBASEL_1, 1); > > if ((val & PCIM_BRIO_MASK) == PCIM_BRIO_32) { > > @@ -192,6 +197,8 @@ pcib_write_windows(struct pcib_softc *sc, int mask > > pci_write_config(dev, PCIR_PMBASEL_1, sc->pmem.base >> 16, 2); > > pci_write_config(dev, PCIR_PMLIMITL_1, sc->pmem.limit >> 16, 2); > > } > > + if (cmd & (PCIM_CMD_PORTEN | PCIM_CMD_MEMEN)) > > + pci_write_config(dev, PCIR_COMMAND, cmd, 2); > > } > > > > static void > > @@ -337,6 +344,9 @@ pcib_probe_windows(struct pcib_softc *sc) > > pci_read_config(dev, PCIR_PMLIMITL_1, 2)); > > max = 0xffffffff; > > } > > + /* XXX: Testing hack */ > > + if (device_get_unit(sc->sc_dev) == 1) > > i'm assuming that "sc->sc_dev" should be "dev" (this fixes a compilation error). > > > + sc->pmem.limit = 0xefffffff; > > pcib_alloc_window(sc, &sc->pmem, SYS_RES_MEMORY, > > RF_PREFETCHABLE, max); > > } > > that seems to work! Hmmm, ok. This may not be easy to fix properly for the time being as it requires the PCI-PCI bridge to scan all the devices behind the bus to find what resource ranges are actually needed before programming its windows. Note that this is all to work around your BIOS being very broken. :( > btw, is my machine a test-pig for an upcoming change to the PCI bus driver? Well, it's been a good test thus far. -- John Baldwin