PCI/sysfs: Add __weak pci_legacy_has_sparse() helper

Currently, Alpha's sparse/dense legacy attribute handling is done via
pci_adjust_legacy_attr(), which updates dynamically allocated attributes at
runtime.  The upcoming conversion to static attributes needs a way to
determine sparse support at visibility check time.

Add a __weak pci_legacy_has_sparse() that returns false by default.  Alpha
overrides it to check has_sparse() on the bus host controller.

Signed-off-by: Krzysztof Wilczyński <kwilczynski@kernel.org>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Tested-by: Shivaprasad G Bhat <sbhat@linux.ibm.com>
Link: https://patch.msgid.link/20260508043543.217179-22-kwilczynski@kernel.org
This commit is contained in:
Krzysztof Wilczyński 2026-05-08 04:35:40 +00:00 committed by Bjorn Helgaas
parent 385ec1d407
commit 574b5470f8
4 changed files with 19 additions and 0 deletions

View File

@ -86,6 +86,8 @@ extern int pci_mmap_legacy_page_range(struct pci_bus *bus,
enum pci_mmap_state mmap_state);
extern void pci_adjust_legacy_attr(struct pci_bus *bus,
enum pci_mmap_state mmap_type);
extern bool pci_legacy_has_sparse(struct pci_bus *bus,
enum pci_mmap_state type);
#define HAVE_PCI_LEGACY 1
extern const struct attribute_group pci_dev_resource_attr_group;

View File

@ -184,6 +184,13 @@ int pci_mmap_legacy_page_range(struct pci_bus *bus, struct vm_area_struct *vma,
return hose_mmap_page_range(hose, vma, mmap_type, sparse);
}
bool pci_legacy_has_sparse(struct pci_bus *bus, enum pci_mmap_state type)
{
struct pci_controller *hose = bus->sysdata;
return has_sparse(hose, type);
}
/**
* pci_adjust_legacy_attr - adjustment of legacy file attributes
* @bus: bus to create files under

View File

@ -983,6 +983,12 @@ static int pci_mmap_legacy_io(struct file *filp, struct kobject *kobj,
return pci_mmap_legacy_page_range(bus, vma, pci_mmap_io);
}
bool __weak pci_legacy_has_sparse(struct pci_bus *bus,
enum pci_mmap_state type)
{
return false;
}
/**
* pci_adjust_legacy_attr - adjustment of legacy file attributes
* @b: bus to create files under

View File

@ -392,6 +392,10 @@ static inline int pci_no_d1d2(struct pci_dev *dev)
}
#ifdef HAVE_PCI_LEGACY
bool pci_legacy_has_sparse(struct pci_bus *bus, enum pci_mmap_state type);
#endif
#ifdef CONFIG_SYSFS
extern const struct attribute_group *pci_dev_groups[];
extern const struct attribute_group *pci_dev_attr_groups[];