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=98502 Tested-by: Mauro Santos <registo.mailling@gmail.com> Signed-off-by: Emil Velikov <emil.velikov@collabora.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch CC: Greg KH <gregkh@linuxfoundation.org>
This commit is contained in:
Родитель
1001354ca3
Коммит
702ed3be1b
|
@ -294,3 +294,10 @@ Description:
|
|||
a firmware bug to the system vendor. Writing to this file
|
||||
taints the kernel with TAINT_FIRMWARE_WORKAROUND, which
|
||||
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:
|
|||
| |-- resource0
|
||||
| |-- resource1
|
||||
| |-- resource2
|
||||
| |-- revision
|
||||
| |-- rom
|
||||
| |-- subsystem_device
|
||||
| |-- subsystem_vendor
|
||||
|
@ -41,6 +42,7 @@ files, each with their own function.
|
|||
resource PCI resource host addresses (ascii, ro)
|
||||
resource0..N PCI resource N, if present (binary, mmap, rw[1])
|
||||
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)
|
||||
subsystem_device PCI subsystem device (ascii, ro)
|
||||
subsystem_vendor PCI subsystem vendor (ascii, ro)
|
||||
|
|
|
@ -50,6 +50,7 @@ pci_config_attr(vendor, "0x%04x\n");
|
|||
pci_config_attr(device, "0x%04x\n");
|
||||
pci_config_attr(subsystem_vendor, "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(irq, "%u\n");
|
||||
|
||||
|
@ -568,6 +569,7 @@ static struct attribute *pci_dev_attrs[] = {
|
|||
&dev_attr_device.attr,
|
||||
&dev_attr_subsystem_vendor.attr,
|
||||
&dev_attr_subsystem_device.attr,
|
||||
&dev_attr_revision.attr,
|
||||
&dev_attr_class.attr,
|
||||
&dev_attr_irq.attr,
|
||||
&dev_attr_local_cpus.attr,
|
||||
|
|
Загрузка…
Ссылка в новой задаче