On Fri, Jun 14, 2019 at 06:36:32PM +1000, Benjamin Herrenschmidt wrote: [...] > The biggest issue for me right now is that the spec says pretty much at > _DSM #5 = 0 is equivalent to _DSM #5 absent, and Bjorn seems keen on > having it this way, but for arm64, we specifically want to distinguish > those 2 cases. > > We want to honor _DSM #5 = 0, and at least initially, leave the rest > alone. > > Now, we *also* want to look at switching the rest to the "normal" (for > ACPI platforms at least) mechanism of using what FW setup and fixing up > if necessary, but that's not what the code does today, we know just > switching to pci_bus_claim_resources() will break some platforms, and > we need more testing and possibly quirks to get there, so it's material > for a separate patch. > > But in the meantime, I need to differenciate. > > Also using "probe_only" for _DSM #5 = 0 isn't a good idea, at least as > implemented today in the rest of the kernel, probe_only also means we > shouldn't assign what was left unassigned. However _DSM #5 allows this. I am not sure about this. PCI_PROBE_ONLY cannot stop an OS from reassigning BARs that are clearly misconfigured, it does not make any sense. It can't stop an OS from writing those BARs anyway, since they must be sized, why firmware would prevent an OS from reassigning BARs that are programmed with values that can be deemed 100% bogus ? Or put it differently, why must an OS preserve those values willy-nilly ? For me, PCI_PROBE_ONLY and _DSM == 0 on a host bridge must be considered equivalent. I agree with Bjorn on his reading of _DSM #5 and I think that the original patch that claims on _DSM #5 == 0 is a good starting point. I would like to make it a default even without _DSM #5 == 0 so that claim and reassign on claim failure works irrespective of _DSM #5, it is now or never, I think we can give it a shot, with an incremental patch. Lorenzo > So we'll need to find some more subtle way to convey these. > > Bjorn: At this point, because of all the above, I'm keen on going back > to my original patch (slightly modified Ard's patch), possibly > rewording a thing or two and addressing Lorenzo comment. > > We can look at a better and more generic implementation of _DSM #5 > including for child nodes after I have consolidated more of the > resource management code. > > Looking at the spec (and followup discussions for specs updates), I'm > quite keen on treating _DSM #5 = 1 as "wipe out the resource for that > endpoint/bridge and realloc something better. There are reasons for > that, but we can probably discuss that later. > > Cheers, > Ben. > >