[PATCH 1/3] pci: introduce read_bridge/write_bridge pci ops
From: arnd@arndb.de (Arnd Bergmann)
Date: 2016-06-03 07:40:11
Also in:
linux-pci, linux-rockchip, lkml
On Thursday, June 2, 2016 9:00:01 AM CEST Bjorn Helgaas wrote:
quoted
I just did a count of the implementations of pci_ops: I found 107 instances of 'struct pci_ops', and 67 of them treat type0 and type1 access differently in some form. I'd estimate that about half of them, or roughly a third of the total instances would benefit from my change, if we were to do them again. Clearly there is no need to change the existing code here when it works, unless the benefit is very clear and the code is actively maintained. In some cases, the difference is only that the root bus has a limited set of devices that are allowed to be accessed, so there would likely be no benefit of this, compared to e.g. yet another callback that checks the validity. Some other instances have type0 registers at a different memory location from type1, some use different layout inside of that space, and some are completely different.The type0/type1 distinction still seems out of place to me at the call site. Is there any other reason a caller would care about the difference between type0 and type1?
The callers really shouldn't care, but they also shouldn't call the
pci_ops function pointer (and as we found earlier, there are only
three such callers).
The distinction between type0 and type1 in my mind is an implementation
detail of the pci_{read,write}_config_{byte,word,dword} functions
that call the low-level operations here.
Arnd