From owner-freebsd-current@FreeBSD.ORG Thu May 19 21:35:55 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 702981065670 for ; Thu, 19 May 2011 21:35:55 +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 0D19B8FC15 for ; Thu, 19 May 2011 21:35:55 +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 B64F046B09; Thu, 19 May 2011 17:35:54 -0400 (EDT) Received: from jhbbsd.localnet (unknown [209.249.190.124]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id 54A718A04F; Thu, 19 May 2011 17:35:54 -0400 (EDT) From: John Baldwin To: freebsd-current@freebsd.org Date: Thu, 19 May 2011 17:35:53 -0400 User-Agent: KMail/1.13.5 (FreeBSD/8.2-CBSD-20110325; KDE/4.5.5; amd64; ; ) References: <201105190813.37908.jhb@freebsd.org> In-Reply-To: MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <201105191735.53889.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.6 (bigwig.baldwin.cx); Thu, 19 May 2011 17:35:54 -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: Thu, 19 May 2011 21:35:55 -0000 On Thursday, May 19, 2011 12:28:46 pm deeptech71@gmail.com wrote: > On Thu, May 19, 2011 at 2:13 PM, John Baldwin wrote: > > Yeah, your BIOS continues to behave very poorly. Please try this hack to see > > if it allows your video to still work with any AGP aperture size: > > > > Index: pci_pci.c > > =================================================================== > > --- pci_pci.c (revision 222093) > > +++ pci_pci.c (working copy) > > @@ -231,7 +231,9 @@ pcib_alloc_window(struct pcib_softc *sc, struct pc > > w->name, (uintmax_t)w->base, (uintmax_t)w->limit); > > w->base = max_address; > > w->limit = 0; > > +#if 0 > > pcib_write_windows(sc, w->mask); > > +#endif > > return; > > } > > pcib_activate_window(sc, type); > > does not. Hummm, that should leave the PCI-PCI bridge unchanged until we write the new values in place so it's never "turned off" (only updated to use a smaller range at some point). You could try patching write_windows to disable IO and memory decoding in the PCI command register while the windows are frobbed. Index: pci_pci.c =================================================================== --- pci_pci.c (revision 222093) +++ 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 @@ -231,7 +238,9 @@ pcib_alloc_window(struct pcib_softc *sc, struct pc w->name, (uintmax_t)w->base, (uintmax_t)w->limit); w->base = max_address; w->limit = 0; +#if 0 pcib_write_windows(sc, w->mask); +#endif return; } pcib_activate_window(sc, type); -- John Baldwin