Commit 702ed3be authored by Emil Velikov's avatar Emil Velikov Committed by Bjorn Helgaas

PCI: Create revision file in sysfs

Currently the revision isn't available via sysfs/libudev thus if one wants
to know the value one needs to read through the config file, which can be
quite time-consuming because it wakes/powers up the device.

There are at least two userspace components which could make use the new
file: libpciaccess and libdrm.  The former wakes up _every_ PCI device,
which can be observed via glxinfo when using Mesa 10.0+ drivers.  The
latter, in association with Mesa 13.0, can lead to 2-3 second delays while
starting firefox, thunderbird or chromium.

Link: https://bugs.freedesktop.org/show_bug.cgi?id=98502Tested-by: default avatarMauro Santos <registo.mailling@gmail.com>
Signed-off-by: default avatarEmil Velikov <emil.velikov@collabora.com>
Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch
CC: Greg KH <gregkh@linuxfoundation.org>
parent 1001354c
...@@ -294,3 +294,10 @@ Description: ...@@ -294,3 +294,10 @@ Description:
a firmware bug to the system vendor. Writing to this file a firmware bug to the system vendor. Writing to this file
taints the kernel with TAINT_FIRMWARE_WORKAROUND, which taints the kernel with TAINT_FIRMWARE_WORKAROUND, which
reduces the supportability of your system. reduces the supportability of your system.
What: /sys/bus/pci/devices/.../revision
Date: November 2016
Contact: Emil Velikov <emil.l.velikov@gmail.com>
Description:
This file contains the revision field of the the PCI device.
The value comes from device config space. The file is read only.
...@@ -17,6 +17,7 @@ that support it. For example, a given bus might look like this: ...@@ -17,6 +17,7 @@ that support it. For example, a given bus might look like this:
| |-- resource0 | |-- resource0
| |-- resource1 | |-- resource1
| |-- resource2 | |-- resource2
| |-- revision
| |-- rom | |-- rom
| |-- subsystem_device | |-- subsystem_device
| |-- subsystem_vendor | |-- subsystem_vendor
...@@ -41,6 +42,7 @@ files, each with their own function. ...@@ -41,6 +42,7 @@ files, each with their own function.
resource PCI resource host addresses (ascii, ro) resource PCI resource host addresses (ascii, ro)
resource0..N PCI resource N, if present (binary, mmap, rw[1]) resource0..N PCI resource N, if present (binary, mmap, rw[1])
resource0_wc..N_wc PCI WC map resource N, if prefetchable (binary, mmap) resource0_wc..N_wc PCI WC map resource N, if prefetchable (binary, mmap)
revision PCI revision (ascii, ro)
rom PCI ROM resource, if present (binary, ro) rom PCI ROM resource, if present (binary, ro)
subsystem_device PCI subsystem device (ascii, ro) subsystem_device PCI subsystem device (ascii, ro)
subsystem_vendor PCI subsystem vendor (ascii, ro) subsystem_vendor PCI subsystem vendor (ascii, ro)
......
...@@ -50,6 +50,7 @@ pci_config_attr(vendor, "0x%04x\n"); ...@@ -50,6 +50,7 @@ pci_config_attr(vendor, "0x%04x\n");
pci_config_attr(device, "0x%04x\n"); pci_config_attr(device, "0x%04x\n");
pci_config_attr(subsystem_vendor, "0x%04x\n"); pci_config_attr(subsystem_vendor, "0x%04x\n");
pci_config_attr(subsystem_device, "0x%04x\n"); pci_config_attr(subsystem_device, "0x%04x\n");
pci_config_attr(revision, "0x%02x\n");
pci_config_attr(class, "0x%06x\n"); pci_config_attr(class, "0x%06x\n");
pci_config_attr(irq, "%u\n"); pci_config_attr(irq, "%u\n");
...@@ -568,6 +569,7 @@ static struct attribute *pci_dev_attrs[] = { ...@@ -568,6 +569,7 @@ static struct attribute *pci_dev_attrs[] = {
&dev_attr_device.attr, &dev_attr_device.attr,
&dev_attr_subsystem_vendor.attr, &dev_attr_subsystem_vendor.attr,
&dev_attr_subsystem_device.attr, &dev_attr_subsystem_device.attr,
&dev_attr_revision.attr,
&dev_attr_class.attr, &dev_attr_class.attr,
&dev_attr_irq.attr, &dev_attr_irq.attr,
&dev_attr_local_cpus.attr, &dev_attr_local_cpus.attr,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment