Skip to contentSkip to conversation

incompatible pci sysfs change since 3.12 (5136b2da770d)

DISCUSSION Jeff Epler 2 participants 5 messages Oct 30, 2014 PCI

lore
Share & tools
lore

Jeff Epler

author
#0 lore raw

Hi.

I am an author of LinuxCNC, a GPL'd CNC control for Linux.

Recently we added support for userspace PCI drivers. This worked with kernel 3.2 but doesn't with kernel 3.16. The software fails early with

    Failed to open "/sys/devices/pci0000:00/.../enable" (Permission denied)

This appears to be because our software relies on the documented "enable" sysfs file for pci devices (Documentation/filesystem/sysfs-pci.txt) which was (unintentionally?) changed to "enabled" in the above-named patch:

5136b2da770d PCI: convert bus code to use dev_groups
...
+static DEVICE_ATTR_RW(enabled);
...
- __ATTR(enable, 0600, is_enabled_show, is_enabled_store),

Are we in the LinuxCNC project wrong in thinking that stuff in /sys (and not /sys/debug) is supposed to be a durable API/interface for userspace to the kernel? (It must be a low-usage API if it went unnoticed for a year :-/)

We'll have to work around it by modifying our software (since we'd like to work with the kernels people already have) in any case.

Even if it is not going to be changed compatibly with older kernels, it seems like the documentation should be updated!

Jeff

#1 lore raw
Quoted 19 lines · Jeff Epler

Hi.

I am an author of LinuxCNC, a GPL'd CNC control for Linux.

Recently we added support for userspace PCI drivers. This worked with kernel 3.2 but doesn't with kernel 3.16. The software fails early with

    Failed to open "/sys/devices/pci0000:00/.../enable" (Permission denied)

This appears to be because our software relies on the documented "enable" sysfs file for pci devices (Documentation/filesystem/sysfs-pci.txt) which was (unintentionally?) changed to "enabled" in the above-named patch:

5136b2da770d PCI: convert bus code to use dev_groups
...

(quoted diff) +1 -1
+static DEVICE_ATTR_RW(enabled);
...
-   __ATTR(enable, 0600, is_enabled_show, is_enabled_store),
Quoted 4 lines

Are we in the LinuxCNC project wrong in thinking that stuff in /sys (and not /sys/debug) is supposed to be a durable API/interface for userspace to the kernel? (It must be a low-usage API if it went unnoticed for a year :-/)

Ugh, that's my fault, I made a typo and should not have renamed the sysfs file, very sorry about that.

I'll work on making up a patch to fix this and get it into the stable kernels so that you don't have to have a work-around for very long.

Quoted 5 lines

We'll have to work around it by modifying our software (since we'd like to work with the kernels people already have) in any case.

Even if it is not going to be changed compatibly with older kernels, it seems like the documentation should be updated!

I'll fix it up, this was just a bug, my apologies.

greg k-h

author
#2 lore raw
Quoted 5 lines · Greg Kroah-Hartman

Ugh, that's my fault, I made a typo and should not have renamed the sysfs file, very sorry about that.

I'll work on making up a patch to fix this and get it into the stable kernels so that you don't have to have a work-around for very long.

Thank you! I appreciate your quick response.

Jeff

#3 lore raw
Quoted 8 lines · Jeff Epler
Quoted 5 lines · Greg Kroah-Hartman

Ugh, that's my fault, I made a typo and should not have renamed the sysfs file, very sorry about that.

I'll work on making up a patch to fix this and get it into the stable kernels so that you don't have to have a work-around for very long.

Thank you! I appreciate your quick response.

I've now sent a patch that should fix this. If you could verify it, I'd appreciate it.

thanks,

greg k-h

author
#4 lore raw
Quoted 2 lines · Greg Kroah-Hartman

I've now sent a patch that should fix this. If you could verify it, I'd appreciate it.

Will test. Thank you. The patch sure looks plausible.

Jeff