On Wed, 2024-08-21 at 11:14 +0300, Andy Shevchenko wrote:
On Wed, Aug 21, 2024 at 10:19 AM Philipp Stanner
[off-list ref] wrote:
quoted
stmicro uses PCI devres in the wrong way. Resources requested
through pcim_* functions don't need to be cleaned up manually in
the
remove() callback or in the error unwind path of a probe()
function.
quoted
Moreover, there is an unnecessary loop which only requests and
ioremaps
BAR 0, but iterates over all BARs nevertheless.
Seems like loongson was cargo-culted a lot without a clear
understanding of this code in the main driver...
quoted
Furthermore, pcim_iomap_regions() and pcim_iomap_table() have been
deprecated by the PCI subsystem in commit e354bb84a4c1 ("PCI:
Deprecate
pcim_iomap_table(), pcim_iomap_regions_request_all()").
Replace these functions with pcim_iomap_region().
Remove the unnecessary manual pcim_* cleanup calls.
Remove the unnecessary loop over all BARs.
...
quoted
- for (i = 0; i < PCI_STD_NUM_BARS; i++) {
- if (pci_resource_len(pdev, i) == 0)
- continue;
- pcim_iounmap_regions(pdev, BIT(i));
Here is the BARx, which contradicts the probe :-)
I'm not sure what should be done about it. The only interesting
question is whether the other code with pcim_iomap_regions(... BIT(i)
does also only grap BAR 0.
In that case the driver wouldn't even be knowing what its own hardware
is / does, though.
P.
quoted
- break;
- }