Messages in this thread | | | Subject | Re: Possible issue with dangling PCI BARs | From | Benjamin Herrenschmidt <> | Date | Thu, 13 Dec 2007 14:40:00 +1100 |
| |
On Thu, 2007-12-13 at 14:05 +1100, Benjamin Herrenschmidt wrote: > On Thu, 2007-12-13 at 14:00 +1100, Benjamin Herrenschmidt wrote: > > .../... > > (oops, sent too fast) > > > So not only we can have a dangling BAR, but nothing prevent us to > > actually go turn IO or MEM decoding on in case it wasn't already the > > case on that device. > > And I was about to say before I clicked "send".. can't we do something like > writing all ff's into the BAR at the same time as we clear res->start ? Isn't > that supposed to pretty much disable decoding on that BAR ? Or not... Probably > still better than leaving it to whatever dangling value it had no ?
Ok, reading some other threads, it seems that writing all ff's will not be a very good alternative on x86 machines where MMCONFIG sits up there...
I suppose there is nothing totally safe that can be done, thanks to Intel not thinking about making BARs individually enable/disable'able (or size-able without interrupting access, among other numerous fuckups in the PCI spec).
So if a BAR is left dangling, I think we -must- disable MEM and IO decoding on the whole device. In fact, the whole trick of passing a bitmask of required BARs to pci_enable_device_bars() in the first place doesn't fly.
Yuck.
Ben.
| |