PCI, sysfs: show ari_enabled in sysfs
PATCH 1/1 PCI, sysfs: show ari_enabled in sysfs
Some multifunction PCI devices with more than 8 functions use "alternative routing-ID interpretation" (ARI), which means the 8-bit device/function number field will be interpreted as 8 bits specifying the function number (the device number is 0 implicitly), rather than the upper 5 bits specifying the device number and the lower 3 bits specifying the function number. The kernel can enable and use this.
Expose in a sysfs attribute whether the kernel has enabled ARI, so that a program in userspace won't have to parse PCI devices and PCI configuration space to figure out if it is enabled. This will allow better predictable network naming using PCI function numbers without using PCI bus or device numbers, which is desirable because bus and device numbers can change with system configuration but function numbers will not.
---
drivers/pci/pci-sysfs.c renamed from drivers/pci/pci-sysfs.c.orig +11 -0
@@ -278,6 +278,16 @@ static ssize_t subordinate_bus_number_sh }static DEVICE_ATTR_RO (subordinate_bus_number); +static ssize_t ari_enabled_show (struct device *dev, +struct device_attribute *attr, +char *buf) +{ +struct pci_dev *pci_dev =to_pci_dev (dev); + +return sprintf (buf,"%u\n" ,pci_ari_enabled (pci_dev->bus)); +} +static DEVICE_ATTR_RO (ari_enabled); +static ssize_t modalias_show (struct device *dev,struct device_attribute *attr,char *buf) {
@@ -786,6 +796,7 @@ static struct attribute *pci_dev_attrs[] &dev_attr_devspec.attr, #endif &dev_attr_driver_override.attr, + &dev_attr_ari_enabled.attr, NULL, };
---
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus
Hi Stuart,
Please run "git log --oneline drivers/pci/pci-sysfs.c" and follow the convention.
Quoted 50 lines · Stuart Hayes
Some multifunction PCI devices with more than 8 functions use "alternative routing-ID interpretation" (ARI), which means the 8-bit device/function number field will be interpreted as 8 bits specifying the function number (the device number is 0 implicitly), rather than the upper 5 bits specifying the device number and the lower 3 bits specifying the function number. The kernel can enable and use this.
Expose in a sysfs attribute whether the kernel has enabled ARI, so that a program in userspace won't have to parse PCI devices and PCI configuration space to figure out if it is enabled. This will allow better predictable network naming using PCI function numbers without using PCI bus or device numbers, which is desirable because bus and device numbers can change with system configuration but function numbers will not.
Signed-off-by Stuart Hayes <[email protected]>---
drivers/pci/pci-sysfs.c renamed from drivers/pci/pci-sysfs.c.orig +11
-1@@ -278,6 +278,16 @@ static ssize_t subordinate_bus_number_sh }static DEVICE_ATTR_RO (subordinate_bus_number); +static ssize_t ari_enabled_show (struct device *dev, +struct device_attribute *attr, +char *buf) +{ +struct pci_dev *pci_dev =to_pci_dev (dev); + +return sprintf (buf,"%u\n" ,pci_ari_enabled (pci_dev->bus)); +} +static DEVICE_ATTR_RO (ari_enabled); +static ssize_t modalias_show (struct device *dev,struct device_attribute *attr,char *buf) {@@ -786,6 +796,7 @@ static struct attribute *pci_dev_attrs[] &dev_attr_devspec.attr, #endif &dev_attr_driver_override.attr, + &dev_attr_ari_enabled.attr, NULL, }; ---This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus
Quoted 5 lines · Bjorn Helgaas
Hi Stuart,
Please run "git log --oneline
drivers/pci/pci-sysfs.c" and follow the convention.
Bjorn,
Is the problem just with the subject line (i.e., it should be something like "PCI: Expose ari_enabled...")?
I'm happy to fix, I just want to make sure I understand the problem so I get it right next time.
Thank you,
Stuart
Quoted 51 lines · Stuart Hayes
Quoted 50 lines
Some multifunction PCI devices with more than 8 functions use "alternative routing-ID interpretation" (ARI), which means the 8-bit device/function number field will be interpreted as 8 bits specifying the function number (the device number is 0 implicitly), rather than the upper 5 bits specifying the device number and the lower 3 bits specifying the function number. The kernel can enable and use this.
Expose in a sysfs attribute whether the kernel has enabled ARI, so that a program in userspace won't have to parse PCI devices and PCI configuration space to figure out if it is enabled. This will allow better predictable network naming using PCI function numbers without using PCI bus or device numbers, which is desirable because bus and device numbers can change with system configuration but function numbers will not.
Signed-off-by Stuart Hayes <[email protected]>---
drivers/pci/pci-sysfs.c renamed from drivers/pci/pci-sysfs.c.orig +11
-1@@ -278,6 +278,16 @@ static ssize_t subordinate_bus_number_sh }static DEVICE_ATTR_RO (subordinate_bus_number); +static ssize_t ari_enabled_show (struct device *dev, +struct device_attribute *attr, +char *buf) +{ +struct pci_dev *pci_dev =to_pci_dev (dev); + +return sprintf (buf,"%u\n" ,pci_ari_enabled (pci_dev->bus)); +} +static DEVICE_ATTR_RO (ari_enabled); +static ssize_t modalias_show (struct device *dev,struct device_attribute *attr,char *buf) {@@ -786,6 +796,7 @@ static struct attribute *pci_dev_attrs[] &dev_attr_devspec.attr, #endif &dev_attr_driver_override.attr, + &dev_attr_ari_enabled.attr, NULL, }; ---This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus
Quoted 5 lines · Stuart Hayes
Quoted 2 lines · Bjorn Helgaas
Hi Stuart,
Quoted 8 lines
Quoted 3 lines
Please run "git log --oneline
drivers/pci/pci-sysfs.c" and follow the convention.Bjorn,
Is the problem just with the subject line (i.e., it should be something like "PCI: Expose
ari_enabled...")?
Yep, exactly. I don't have any issue with the patch itself; I just like the logs to be consistent to make them easier to read because I spend a lot of time reading them :)
Quoted 54 lines
I'm happy to fix, I just want to make sure I understand the problem so I get it right next time.
Quoted 51 lines · Stuart Hayes
Quoted 50 lines
Some multifunction PCI devices with more than 8 functions use "alternative routing-ID interpretation" (ARI), which means the 8-bit device/function number field will be interpreted as 8 bits specifying the function number (the device number is 0 implicitly), rather than the upper 5 bits specifying the device number and the lower 3 bits specifying the function number. The kernel can enable and use this.
Expose in a sysfs attribute whether the kernel has enabled ARI, so that a program in userspace won't have to parse PCI devices and PCI configuration space to figure out if it is enabled. This will allow better predictable network naming using PCI function numbers without using PCI bus or device numbers, which is desirable because bus and device numbers can change with system configuration but function numbers will not.
Signed-off-by Stuart Hayes <[email protected]>---
drivers/pci/pci-sysfs.c renamed from drivers/pci/pci-sysfs.c.orig +11
-1@@ -278,6 +278,16 @@ static ssize_t subordinate_bus_number_sh }static DEVICE_ATTR_RO (subordinate_bus_number); +static ssize_t ari_enabled_show (struct device *dev, +struct device_attribute *attr, +char *buf) +{ +struct pci_dev *pci_dev =to_pci_dev (dev); + +return sprintf (buf,"%u\n" ,pci_ari_enabled (pci_dev->bus)); +} +static DEVICE_ATTR_RO (ari_enabled); +static ssize_t modalias_show (struct device *dev,struct device_attribute *attr,char *buf) {@@ -786,6 +796,7 @@ static struct attribute *pci_dev_attrs[] &dev_attr_devspec.attr, #endif &dev_attr_driver_override.attr, + &dev_attr_ari_enabled.attr, NULL, }; ---This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus