Date: Fri, 4 May 2012 15:25:32 -0600 From: Warner Losh <imp@bsdimp.com> To: Hans Petter Selasky <hselasky@c2i.net> Cc: "svn-src-stable@freebsd.org" <svn-src-stable@freebsd.org>, "svn-src-all@freebsd.org" <svn-src-all@freebsd.org>, "src-committers@freebsd.org" <src-committers@freebsd.org>, "svn-src-stable-9@freebsd.org" <svn-src-stable-9@freebsd.org>, John Baldwin <jhb@freebsd.org> Subject: Re: svn commit: r235007 - stable/9/sys/dev/pci Message-ID: <80963C87-6F37-4AC7-B5E8-132EC5F47D98@bsdimp.com> In-Reply-To: <201205042141.55089.hselasky@c2i.net> References: <201205041538.q44FclqK010547@svn.freebsd.org> <201205041826.19435.hselasky@c2i.net> <FEA446E9-A651-40F7-BFDD-1A2D41360EB8@bsdimp.com> <201205042141.55089.hselasky@c2i.net>
next in thread | previous in thread | raw e-mail | index | archive | help
On May 4, 2012, at 1:41 PM, Hans Petter Selasky wrote: > On Friday 04 May 2012 19:18:56 Warner Losh wrote: >> On May 4, 2012, at 10:26 AM, Hans Petter Selasky wrote: >>> On Friday 04 May 2012 18:14:16 John Baldwin wrote: >>>> On Friday, May 04, 2012 11:38:47 am Hans Petter Selasky wrote: >>>>> Author: hselasky >>>>> Date: Fri May 4 15:38:47 2012 >>>>> New Revision: 235007 >>>>> URL: http://svn.freebsd.org/changeset/base/235007 >>>>>=20 >>>>> Log: >>>>> MFC r233662, r233677 and r233678: >>>>>=20 >>>>> Writing zero to BAR actually does not disable it and >>>>> it is even harmful as hselasky found out. Historically, >>>>> this code was originated from (OLDCARD) CardBus driver and later >>>>> leaked into PCI driver when CardBus was newbus'ified and = refactored >>>>> with PCI driver. However, it is not really necessary even for >>>>> CardBus. >>>>=20 >>>> FYI, I've got one bug report on HEAD where these changes broke a >>>> machine's ATA controller. >>>=20 >>> Have you considered adding code to disable the I/O or memory range >>> instead of writing 0 to the bar in this case? >>=20 >> I tried that once upon a time, but was problematical with some = bridges that >> had BARs at non-standard locations that needed the I/O or MEM bit set = in >> order to work... >>=20 >> Warner >=20 > If the size of the bar is a few megabytes, then moving it to location = 0 is=20 > definitely wrong. Else it might work! Only if the bridge passes the transactions for that memory to the PCI = bus for decoding. The reason it worked for as long as it did was that = we had bridges that passed the memory cycles to DRAM for addresses near = 0 and they didn't make it onto the PCI bus. Except in embedded systems, = I fail to see how that could have changed in the interim. The physical = layout of x86 has actual memory at location 0 and it would be a big = performance hit to push those transactions onto the pci bus, so nobody = in their right mind would do that. Warner Warner=
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?80963C87-6F37-4AC7-B5E8-132EC5F47D98>