From owner-freebsd-arch@FreeBSD.ORG Wed Apr 27 19:44:50 2011 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E2A30106564A; Wed, 27 Apr 2011 19:44:49 +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 9D6508FC17; Wed, 27 Apr 2011 19:44:49 +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 14A4E46B2D; Wed, 27 Apr 2011 15:44:49 -0400 (EDT) Received: from jhbbsd.localnet (unknown [209.249.190.124]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id 9E2258A01B; Wed, 27 Apr 2011 15:44:48 -0400 (EDT) From: John Baldwin To: Alexander Motin Date: Wed, 27 Apr 2011 13:32:08 -0400 User-Agent: KMail/1.13.5 (FreeBSD/8.2-CBSD-20110325; KDE/4.5.5; amd64; ; ) References: <201104271101.01259.jhb@freebsd.org> <4DB835E4.5060300@FreeBSD.org> In-Reply-To: <4DB835E4.5060300@FreeBSD.org> MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <201104271332.08621.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.6 (bigwig.baldwin.cx); Wed, 27 Apr 2011 15:44:48 -0400 (EDT) Cc: freebsd-arch@freebsd.org Subject: Re: Changing how PCI-PCI bridges do resource allocation X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 Apr 2011 19:44:50 -0000 On Wednesday, April 27, 2011 11:27:32 am Alexander Motin wrote: > On 27.04.2011 18:01, John Baldwin wrote: > > On Tuesday, April 26, 2011 5:54:34 pm Alexander Motin wrote: > >> John Baldwin wrote: > >>> On Tuesday, April 26, 2011 10:45:33 am Alexander Motin wrote: > >>>> John Baldwin wrote: > >>>>> On Tuesday, April 26, 2011 2:53:24 am Alexander Motin wrote: > >>>>>> On 26.04.2011 00:21, John Baldwin wrote: > >>>>>>> On Monday, April 25, 2011 3:09:47 pm John Baldwin wrote: > >>>>>>>> On Wednesday, April 20, 2011 4:38:30 am Alexander Motin wrote: > >>>>>>>>> On 19.04.2011 21:50, John Baldwin wrote: > >>>>>>>>>> I've already had at least one testing report that this fixes the issues with > >>>>>>>>>> some machines' BIOS clearing the I/O windows on some PCI-PCI bridges when ACPI > >>>>>>>>>> is enabled as this code re-discovers the original windows and programs them > >>>>>>>>>> correctly. More testing would be good however. > >>>>>>>>> I would like this helped my Acer TM6292 which also has alike problems > >>>>>>>>> with missing PCIe bridge resources, but unluckily it doesn't. > >>>>>>>>> > >>>>>>>>> Here is verbose dmesg when my system uses this dirty hack: > >>>>>>>>> http://people.freebsd.org/~mav/tm6292_pcie.patch > >>>>>>>>> to restore bridges resources to the pre-ACPI state: > >>>>>>>>> http://people.freebsd.org/~mav/dmesg.boot.hacks > >>>>>>>>> > >>>>>>>>> Here is respective `pciconf -lvcb` output: > >>>>>>>>> http://people.freebsd.org/~mav/pciconf.hacks > >>>>>>>>> > >>>>>>>>> Here is dmesg with patches, but without NEW_PCIB: > >>>>>>>>> http://people.freebsd.org/~mav/dmesg.boot.olbpcib > >>>>>>>>> > >>>>>>>>> Here is dmesg with patches with NEW_PCIB: > >>>>>>>>> http://people.freebsd.org/~mav/dmesg.boot.newpcib > >>>>>>>> Ah, your problem is we pick bad ranges when we alloc fresh resources for your > >>>>>>>> bridges. I am working on making that better for ACPI, but for now you can try > >>>>>>>> setting hw.acpi.host_mem_start to a value like '0xf0000000' in loader.conf. > >>>>>>>> > >>>>>>>> Although, it looks like it is not being honored currently. Try adding a printf > >>>>>>>> in acpi_pcib_alloc_resource() in sys/dev/acpica/acpi_pcib_acpi.c to log the > >>>>>>>> type, start, and end of each resource range. > >>>>>>> Actually, try this patch. Then I think you can use the host_mem_start tunable: > >>>>>> I've tried it. With this patch host_mem_start tunable seems like makes > >>>>>> effect. Numbers look closer, but bge0 and iwn0 beyond the bridges are > >>>>>> still not working. > >>>>> Hmmm, I think I need to clear the completely bogus windows when we fail to > >>>>> allocate the initial window. Try this (relative to the previous patches): > >>>> Dmesg changed a bit, but still no luck: > >>>> http://people.freebsd.org/~mav/newpcib/dmesg.next > >>> > >>> Oh, I'm dumb. 'w->base' should be set to 'max_address' and 'w->limit' should > >>> be set to 0 to turn off the bogus windows like this: > >> > >> No luck: > >> http://people.freebsd.org/~mav/newpcib/dmesg.next2 > > > > Ahh, I know what's wrong. I need to force MEMEN and/or IOEN in the bridge's > > command register when enabling a window. Here is an updated patch relative > > to pcib_window.patch (so it includes the previous patch to disable bogus > > windows): > > Hurray! You did it! Congratulations! :) > > After changing > PCI_ENABLE_IO(device_get_parent(sc->dev), dev, type); > to > PCI_ENABLE_IO(device_get_parent(sc->dev), sc->dev, type); > to fix the build I've got working devices: > http://people.freebsd.org/~mav/newpcib/dmesg.working > > By the way, it also works without setting host_mem_start. Just uses > different addresses for bge, iwn and the bridges. > > Thank you! Great! Barring any objections I'll start committing this. -- John Baldwin