[PATCH v4 07/24] PCI/sysfs: Convert PCI resource files to static attributes

Krzysztof Wilczyński kwilczynski at kernel.org
Fri Apr 17 21:49:12 AEST 2026


Hello,

> > -	/* Expose the PCI resources from this device as files */
> > -	for (i = 0; i < PCI_STD_NUM_BARS; i++) {
> > +	if (!pci_resource_len(pdev, bar))
> > +		return 0;
[...]
> Did you accidently forget to address some of the comments as I thought you 
> were agreeing to changing this to resource_assigned() but I found no 
> resource_assigned() from entire series?

I have not.  Sorry for late reply here.

When testing resource_assigned() as replacement for pci_resource_len(),
none of the resource files would be made visible.

The resource_assigned() checks res->parent, but the static .is_bin_visible
callback runs at device_add() time, called from pci_device_add() during bus
enumeration, so before pci_assign_unassigned_bus_resources() runs and inserts
resources into the resource tree via pci_claim_resource(), etc.

The call sequence in pci_host_probe() is:

  pci_scan_root_bus_bridge()
    pci_scan_child_bus()
      pci_scan_slot()
        pci_scan_single_device()
          pci_scan_device()
            pci_setup_device()
              pci_read_bases()        <- res->start/end set from BARs
          pci_device_add()
            device_add()              <- is_bin_visible() runs here
                                         res->parent still NULL

  pci_assign_unassigned_root_bus_resources()
    pci_claim_resource()
      request_resource_conflict()
        __request_resource()          <- res->parent set here

At that point, the pci_resource_len() would return a non-zero value as
res->start and res->end would already be set, but the res->parent is
still NULL (not yet assigned to tree).

The old dynamic code ran from pci_sysfs_init() as a late_initcall (after
assignment), where resource_assigned() would have worked.

As such, we can't really use resource_assigned() together with static
sysfs attributes, at least not without solving the resources evaluation
order here.

Thank you!

	Krzysztof


More information about the Linuxppc-dev mailing list