On May 7, 2012, at 9:27 AM, John Baldwin wrote:

> On Friday, May 04, 2012 5:25:32 pm Warner Losh wrote:
>> 
>> 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
>>>>>>> 
>>>>>>> Log:
>>>>>>> MFC r233662, r233677 and r233678:
>>>>>>> 
>>>>>>> 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.
>>>>>> 
>>>>>> FYI, I've got one bug report on HEAD where these changes broke a
>>>>>> machine's ATA controller.
>>>>> 
>>>>> Have you considered adding code to disable the I/O or memory range
>>>>> instead of writing 0 to the bar in this case?
>>>> 
>>>> 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...
>>>> 
>>>> Warner
>>> 
>>> If the size of the bar is a few megabytes, then moving it to location 0 is 
>>> 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.
> 
> Not true.  During NEW_PCIB testing I at one point fat-fingered something such
> that I had an memory window on a PCI-PCI bridge claim address 0 and the boot
> promptly hung as soon as that register was written.

I'll grant that for bridges...  The code in question just does devices 
though...  Still, something we should avoid...

Warner

_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to