summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorKrzysztof Wilczyński <kwilczynski@kernel.org>2026-05-08 04:35:35 +0000
committerBjorn Helgaas <bhelgaas@google.com>2026-06-23 15:19:09 -0500
commit5980dcbc4b25e0164cfebc90c32bca7cff33d1c2 (patch)
treefa7b0ca919d649a4619d06516b0d92adcd83f5f8 /arch
parent29840080f5a68de131ae5bf89138d6ae11c591d8 (diff)
alpha/PCI: Add static PCI resource attribute macros
Add macros for declaring static binary attributes for Alpha's PCI resource files: - pci_dev_resource_attr(), for dense/BWX systems (mmap dense) - pci_dev_resource_sparse_attr(), for sparse systems (mmap sparse) - pci_dev_resource_dense_attr(), for dense companion files (mmap dense) Each macro creates a const bin_attribute with the BAR index stored in the .private property and the appropriate .mmap() callback. Signed-off-by: Krzysztof Wilczyński <kwilczynski@kernel.org> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Tested-by: Magnus Lindholm <linmag7@gmail.com> Tested-by: Shivaprasad G Bhat <sbhat@linux.ibm.com> Acked-by: Magnus Lindholm <linmag7@gmail.com> Link: https://patch.msgid.link/20260508043543.217179-17-kwilczynski@kernel.org
Diffstat (limited to 'arch')
-rw-r--r--arch/alpha/kernel/pci-sysfs.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/arch/alpha/kernel/pci-sysfs.c b/arch/alpha/kernel/pci-sysfs.c
index 6cf688621ea9..e1a4546ac2db 100644
--- a/arch/alpha/kernel/pci-sysfs.c
+++ b/arch/alpha/kernel/pci-sysfs.c
@@ -104,6 +104,26 @@ static int pci_mmap_resource_dense(struct file *filp, struct kobject *kobj,
return pci_mmap_resource(kobj, attr, vma, 0);
}
+#define __pci_dev_resource_attr(_bar, _name, _suffix, _mmap) \
+static const struct bin_attribute \
+pci_dev_resource##_bar##_suffix##_attr = { \
+ .attr = { .name = __stringify(_name), .mode = 0600 }, \
+ .private = (void *)(unsigned long)(_bar), \
+ .mmap = (_mmap), \
+}
+
+#define pci_dev_resource_attr(_bar) \
+ __pci_dev_resource_attr(_bar, resource##_bar,, \
+ pci_mmap_resource_dense)
+
+#define pci_dev_resource_sparse_attr(_bar) \
+ __pci_dev_resource_attr(_bar, resource##_bar##_sparse, _sparse, \
+ pci_mmap_resource_sparse)
+
+#define pci_dev_resource_dense_attr(_bar) \
+ __pci_dev_resource_attr(_bar, resource##_bar##_dense, _dense, \
+ pci_mmap_resource_dense)
+
/**
* pci_remove_resource_files - cleanup resource files
* @pdev: pci_dev to cleanup