Message ID | 20161101154232.6451-1-emil.l.velikov@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Tue, Nov 1, 2016 at 11:42 AM, Emil Velikov <emil.l.velikov@gmail.com> wrote: > From: Emil Velikov <emil.velikov@collabora.com> > > Currently the revision isn't available via sysfs/libudev thus if one > wants to know the value they need to read through the config file. > > This in itself wakes/powers up the device, causing unwanted delay > since it can be quite costly. > > Expose the revision as a separate file, just like we do for the device, > vendor, their subsystem version and class. > > Cc: Jammy Zhou <Jammy.Zhou@amd.com> > Cc: Michel Dänzer <michel.daenzer@amd.com> > Cc: Bjorn Helgaas <bhelgaas@google.com> > Cc: linux-pci@vger.kernel.org > Cc: linux-kernel@vger.kernel.org > Signed-off-by: Emil Velikov <emil.velikov@collabora.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> > --- > Gents, I'm not subscribed to the mailing list so please keep me in the > CC chain. > > Thanks > Emil > --- > drivers/pci/pci-sysfs.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c > index bcd10c7..0666287 100644 > --- a/drivers/pci/pci-sysfs.c > +++ b/drivers/pci/pci-sysfs.c > @@ -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, > -- > 2.9.3 > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel
[Dropping Jammy since his email bounces] On 1 November 2016 at 15:47, Alex Deucher <alexdeucher@gmail.com> wrote: > On Tue, Nov 1, 2016 at 11:42 AM, Emil Velikov <emil.l.velikov@gmail.com> wrote: >> From: Emil Velikov <emil.velikov@collabora.com> >> >> Currently the revision isn't available via sysfs/libudev thus if one >> wants to know the value they need to read through the config file. >> >> This in itself wakes/powers up the device, causing unwanted delay >> since it can be quite costly. >> >> Expose the revision as a separate file, just like we do for the device, >> vendor, their subsystem version and class. >> >> Cc: Jammy Zhou <Jammy.Zhou@amd.com> >> Cc: Michel Dänzer <michel.daenzer@amd.com> >> Cc: Bjorn Helgaas <bhelgaas@google.com> >> Cc: linux-pci@vger.kernel.org >> Cc: linux-kernel@vger.kernel.org >> Signed-off-by: Emil Velikov <emil.velikov@collabora.com> > > Reviewed-by: Alex Deucher <alexander.deucher@amd.com> > Thanks Alex. Gents, to elaborate a bit: When using the Mesa drivers alongside firefox [1] (since Mesa 13.0), glxinfo (Mesa 10.0) and others, all the GPUs* will be awaken, causing unwanted delays and increased power usage. From the userspace POV we have two distinct users who require the revision file - libdrm and libpciaccess. * The latter would even wake up _all_ the devices located on a PCI bus ! Let me know if you'd like the above in the patch summary, meanwhile I'll poke and collect a few more ack/r-b/t-b. Thanks Emil [1] https://bugs.freedesktop.org/show_bug.cgi?id=98502
diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c index bcd10c7..0666287 100644 --- a/drivers/pci/pci-sysfs.c +++ b/drivers/pci/pci-sysfs.c @@ -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,