* SYSFS "errors" @ 2013-02-18 15:33 Felipe Balbi 2013-02-18 15:50 ` Greg KH 0 siblings, 1 reply; 57+ messages in thread From: Felipe Balbi @ 2013-02-18 15:33 UTC (permalink / raw) To: Greg KH, Linux Kernel Mailing List [-- Attachment #1: Type: text/plain, Size: 1657 bytes --] Hi folks, there are today a number of SYSFS files with read permission set but can't really be read (tried with normal user and root). To make things simpler, I wrote a simple ruby script (see below) to check if the file is world writeable or if it has Read permission but throws an exception when read (note that I ignore files which return empty buffers since ruby cries about it). Here are some results from my desktop PC: $ ruby sysfs_errors.rb |wc -l 968 # ruby sysfs_errors.rb | wc -l 1602 8<---------------------------- cut here -------------------------------- Dir.glob("/sys/**/*").each do |file| next if File.directory?(file) if File.world_writable?(file) puts "#{file} is world-writable" end if File.readable?(file) begin File.open(file) { |f| result = f.readline } rescue EOFError nil rescue => e puts e.message end end end I wonder if that should be sorted out or should we leave it as is ? If it helps in any way, I have printed below only the filenames (without path) so I could pipe it through uniq: act_mask audit autosuspend_delay_ms bind bl_curve clear compact delete delete_device drivers_probe drvctl duplex em_buffer enable end_lba event_char hard_offline_page host_reset mode new_device new_id pid probe reconfig release reload remove remove_id rescan reset reset_counters resource0 resource1 resource1_wc resource2 resource3 resource4 resource5 rom rotate_all scan sdram_scrub_rate smi_request soft_offline_page speed start_lba sw_activity trigger_fs_error uevent unbind unload_heads -- balbi [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" 2013-02-18 15:33 SYSFS "errors" Felipe Balbi @ 2013-02-18 15:50 ` Greg KH 2013-02-18 15:52 ` Felipe Balbi 0 siblings, 1 reply; 57+ messages in thread From: Greg KH @ 2013-02-18 15:50 UTC (permalink / raw) To: Felipe Balbi; +Cc: Linux Kernel Mailing List On Mon, Feb 18, 2013 at 05:33:16PM +0200, Felipe Balbi wrote: > Hi folks, > > there are today a number of SYSFS files with read permission set but > can't really be read (tried with normal user and root). To make things > simpler, I wrote a simple ruby script (see below) to check if the file > is world writeable or if it has Read permission but throws an exception > when read (note that I ignore files which return empty buffers since > ruby cries about it). > > Here are some results from my desktop PC: > > $ ruby sysfs_errors.rb |wc -l > 968 > > # ruby sysfs_errors.rb | wc -l > 1602 > > 8<---------------------------- cut here -------------------------------- > > Dir.glob("/sys/**/*").each do |file| > next if File.directory?(file) > > if File.world_writable?(file) > puts "#{file} is world-writable" > end > > if File.readable?(file) > begin > File.open(file) { |f| > result = f.readline > } > rescue EOFError > nil > rescue => e > puts e.message > end > end > end > > I wonder if that should be sorted out or should we leave it as is ? They should be sorted out. > If it helps in any way, I have printed below only the filenames > (without path) so I could pipe it through uniq: > > act_mask > audit > autosuspend_delay_ms > bind This one the driver core creates, I'll fix that up. The rest need paths to determine who to blame :) thanks, greg k-h ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" 2013-02-18 15:50 ` Greg KH @ 2013-02-18 15:52 ` Felipe Balbi 2013-02-18 17:13 ` Greg KH 0 siblings, 1 reply; 57+ messages in thread From: Felipe Balbi @ 2013-02-18 15:52 UTC (permalink / raw) To: Greg KH; +Cc: Felipe Balbi, Linux Kernel Mailing List [-- Attachment #1: Type: text/plain, Size: 432 bytes --] Hi, On Mon, Feb 18, 2013 at 07:50:12AM -0800, Greg KH wrote: > > If it helps in any way, I have printed below only the filenames > > (without path) so I could pipe it through uniq: > > > > act_mask > > audit > > autosuspend_delay_ms > > bind > > This one the driver core creates, I'll fix that up. > > The rest need paths to determine who to blame :) wanna see the full list ? It's 1602 lines :-p -- balbi [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" 2013-02-18 15:52 ` Felipe Balbi @ 2013-02-18 17:13 ` Greg KH 2013-02-18 17:27 ` Felipe Balbi 0 siblings, 1 reply; 57+ messages in thread From: Greg KH @ 2013-02-18 17:13 UTC (permalink / raw) To: Felipe Balbi; +Cc: Linux Kernel Mailing List On Mon, Feb 18, 2013 at 05:52:15PM +0200, Felipe Balbi wrote: > Hi, > > On Mon, Feb 18, 2013 at 07:50:12AM -0800, Greg KH wrote: > > > If it helps in any way, I have printed below only the filenames > > > (without path) so I could pipe it through uniq: > > > > > > act_mask > > > audit > > > autosuspend_delay_ms > > > bind > > > > This one the driver core creates, I'll fix that up. > > > > The rest need paths to determine who to blame :) > > wanna see the full list ? It's 1602 lines :-p You must have more devices in your system than I do: $ ruby ./sysfs_test.ruby | wc -l 626 What kernel version did you run this on? I don't see any "bind" file in the list on 3.8.0-rc7+: $ ls -l /sys/bus/platform/drivers/pcspkr/bind --w------- 1 root root 4096 Feb 18 09:09 /sys/bus/platform/drivers/pcspkr/bind $ ls -l /sys/bus/serio/drivers/atkbd/unbind --w------- 1 root root 4096 Feb 18 09:09 /sys/bus/serio/drivers/atkbd/unbind So the full list might be necessary here, thanks. greg k-h ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" 2013-02-18 17:13 ` Greg KH @ 2013-02-18 17:27 ` Felipe Balbi 2013-02-18 17:45 ` Borislav Petkov 2013-02-18 17:49 ` Greg KH 0 siblings, 2 replies; 57+ messages in thread From: Felipe Balbi @ 2013-02-18 17:27 UTC (permalink / raw) To: Greg KH; +Cc: Felipe Balbi, Linux Kernel Mailing List [-- Attachment #1.1: Type: text/plain, Size: 1406 bytes --] On Mon, Feb 18, 2013 at 09:13:34AM -0800, Greg KH wrote: > On Mon, Feb 18, 2013 at 05:52:15PM +0200, Felipe Balbi wrote: > > Hi, > > > > On Mon, Feb 18, 2013 at 07:50:12AM -0800, Greg KH wrote: > > > > If it helps in any way, I have printed below only the filenames > > > > (without path) so I could pipe it through uniq: > > > > > > > > act_mask > > > > audit > > > > autosuspend_delay_ms > > > > bind > > > > > > This one the driver core creates, I'll fix that up. > > > > > > The rest need paths to determine who to blame :) > > > > wanna see the full list ? It's 1602 lines :-p > > You must have more devices in your system than I do: > $ ruby ./sysfs_test.ruby | wc -l > 626 > > What kernel version did you run this on? I don't see any "bind" file in > the list on 3.8.0-rc7+: running on -rc6: $ uname -r 3.8.0-rc6+ > $ ls -l /sys/bus/platform/drivers/pcspkr/bind > --w------- 1 root root 4096 Feb 18 09:09 /sys/bus/platform/drivers/pcspkr/bind > $ ls -l /sys/bus/serio/drivers/atkbd/unbind > --w------- 1 root root 4096 Feb 18 09:09 /sys/bus/serio/drivers/atkbd/unbind > > So the full list might be necessary here, thanks. yeah, I figured one thing later. Ruby is stupid, if you run it as root, it File.readable? will return true even if there's no read permission. So I'm running only as a normal user, full output attached -- balbi [-- Attachment #1.2: sysfs_errors.txt --] [-- Type: text/plain, Size: 81809 bytes --] Input/output error - /sys/devices/cpu/power/autosuspend_delay_ms Input/output error - /sys/devices/pnp0/00:00/power/autosuspend_delay_ms Input/output error - /sys/devices/pnp0/00:01/power/autosuspend_delay_ms Input/output error - /sys/devices/pnp0/00:02/power/autosuspend_delay_ms Input/output error - /sys/devices/pnp0/00:03/power/autosuspend_delay_ms Input/output error - /sys/devices/pnp0/00:04/rtc/rtc0/power/autosuspend_delay_ms Input/output error - /sys/devices/pnp0/00:04/power/autosuspend_delay_ms Input/output error - /sys/devices/pnp0/00:05/power/autosuspend_delay_ms Input/output error - /sys/devices/pnp0/00:06/tty/ttyS0/power/autosuspend_delay_ms Input/output error - /sys/devices/pnp0/00:06/power/autosuspend_delay_ms Input/output error - /sys/devices/pnp0/00:07/power/autosuspend_delay_ms Input/output error - /sys/devices/pnp0/power/autosuspend_delay_ms Input/output error - /sys/devices/software/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:00.0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:01.0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:01.0/pci_bus/0000:01/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:03.0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:03.0/0000:02:00.0/drm/card0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:03.0/0000:02:00.0/drm/card0/card0-DP-1/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:03.0/0000:02:00.0/drm/card0/card0-DP-2/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:03.0/0000:02:00.0/drm/card0/card0-DVI-I-1/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:03.0/0000:02:00.0/drm/controlD64/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:03.0/0000:02:00.0/i2c-1/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:03.0/0000:02:00.0/i2c-2/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:03.0/0000:02:00.0/i2c-3/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:03.0/0000:02:00.0/i2c-3/3-002e/hwmon/hwmon1/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:03.0/0000:02:00.0/i2c-3/3-002e/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:03.0/0000:02:00.0/i2c-4/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:03.0/0000:02:00.0/i2c-5/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:03.0/0000:02:00.0/i2c-6/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:03.0/0000:02:00.0/i2c-7/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:03.0/0000:02:00.0/i2c-8/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:03.0/0000:02:00.0/i2c-9/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:03.0/0000:02:00.0/hwmon/hwmon2/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:03.0/0000:02:00.0/graphics/fb0/power/autosuspend_delay_ms No such device - /sys/devices/pci0000:00/0000:00:03.0/0000:02:00.0/graphics/fb0/bl_curve Input/output error - /sys/devices/pci0000:00/0000:00:03.0/0000:02:00.0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:03.0/0000:02:00.0/i2c-10/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:03.0/pci_bus/0000:02/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:07.0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:07.0/0000:03:00.0/usb9/ep_00/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:07.0/0000:03:00.0/usb9/9-0:1.0/ep_81/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:07.0/0000:03:00.0/usb9/9-0:1.0/port1/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:07.0/0000:03:00.0/usb9/9-0:1.0/port2/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:07.0/0000:03:00.0/usb9/9-0:1.0/port3/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:07.0/0000:03:00.0/usb9/9-0:1.0/port4/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:07.0/0000:03:00.0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:07.0/0000:03:00.0/usb10/ep_00/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:07.0/0000:03:00.0/usb10/10-0:1.0/ep_81/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:07.0/0000:03:00.0/usb10/10-0:1.0/port1/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:07.0/0000:03:00.0/usb10/10-0:1.0/port2/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:07.0/0000:03:00.0/usb10/10-0:1.0/port3/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:07.0/0000:03:00.0/usb10/10-0:1.0/port4/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:07.0/pci_bus/0000:03/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:14.0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:14.1/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:14.2/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1a.0/usb3/3-0:1.0/ep_81/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1a.0/usb3/3-0:1.0/port1/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1a.0/usb3/3-0:1.0/port2/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1a.0/usb3/ep_00/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1a.0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1a.1/usb4/4-2/ep_00/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1a.1/usb4/4-2/4-2:1.0/ep_02/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1a.1/usb4/4-2/4-2:1.0/ep_81/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1a.1/usb4/4-2/4-2:1.0/ttyUSB3/tty/ttyUSB3/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1a.1/usb4/4-2/4-2:1.0/ttyUSB3/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1a.1/usb4/ep_00/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1a.1/usb4/4-0:1.0/ep_81/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1a.1/usb4/4-0:1.0/port1/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1a.1/usb4/4-0:1.0/port2/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1a.1/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1a.2/usb5/ep_00/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1a.2/usb5/5-0:1.0/ep_81/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1a.2/usb5/5-0:1.0/port1/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1a.2/usb5/5-0:1.0/port2/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1a.2/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1a.7/usb1/ep_00/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1a.7/usb1/1-0:1.0/ep_81/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1a.7/usb1/1-0:1.0/port1/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1a.7/usb1/1-0:1.0/port2/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1a.7/usb1/1-0:1.0/port3/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1a.7/usb1/1-0:1.0/port4/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1a.7/usb1/1-0:1.0/port5/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1a.7/usb1/1-0:1.0/port6/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1a.7/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1b.0/input/input2/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1b.0/input/input2/event2/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1b.0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1b.0/sound/card0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1b.0/sound/card0/controlC0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1b.0/sound/card0/hwC0D0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1b.0/sound/card0/pcmC0D0c/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1b.0/sound/card0/pcmC0D0p/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1b.0/sound/card0/pcmC0D1p/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1c.0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1c.0/0000:00:1c.0:pcie08/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1c.0/0000:04:00.0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1c.0/0000:04:00.0/usb11/ep_00/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1c.0/0000:04:00.0/usb11/11-0:1.0/ep_81/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1c.0/0000:04:00.0/usb11/11-0:1.0/port1/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1c.0/0000:04:00.0/usb11/11-0:1.0/port2/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1c.0/0000:04:00.0/usb12/ep_00/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1c.0/0000:04:00.0/usb12/12-0:1.0/ep_81/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1c.0/0000:04:00.0/usb12/12-0:1.0/port1/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1c.0/0000:04:00.0/usb12/12-0:1.0/port2/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1c.0/pci_bus/0000:04/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1c.5/0000:00:1c.5:pcie08/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1c.5/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1c.5/0000:05:00.0/net/eth0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1c.5/0000:05:00.0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1c.5/pci_bus/0000:05/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.0/usb6/ep_00/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.0/usb6/6-0:1.0/ep_81/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.0/usb6/6-0:1.0/port1/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.0/usb6/6-0:1.0/port2/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.1/usb7/7-1/ep_00/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.1/usb7/7-1/7-1:1.0/ep_81/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.1/usb7/7-1/7-1:1.0/input/input3/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.1/usb7/7-1/7-1:1.0/input/input3/event3/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.1/usb7/7-1/7-1:1.0/input/input3/mouse0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.1/usb7/7-1/7-1:1.0/0003:0461:4D81.0001/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.1/usb7/7-1/7-1:1.0/0003:0461:4D81.0001/hidraw/hidraw0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.1/usb7/7-2/ep_00/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.1/usb7/7-2/7-2:1.0/ep_81/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.1/usb7/7-2/7-2:1.0/input/input4/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.1/usb7/7-2/7-2:1.0/input/input4/event4/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.1/usb7/7-2/7-2:1.0/0003:413C:2106.0002/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.1/usb7/7-2/7-2:1.0/0003:413C:2106.0002/hidraw/hidraw1/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.1/usb7/ep_00/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.1/usb7/7-0:1.0/ep_81/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.1/usb7/7-0:1.0/port1/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.1/usb7/7-0:1.0/port2/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.1/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.2/usb8/ep_00/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.2/usb8/8-0:1.0/ep_81/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.2/usb8/8-0:1.0/port1/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.2/usb8/8-0:1.0/port2/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.2/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/ep_00/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1:1.0/ep_81/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1:1.0/port1/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1:1.0/port2/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1:1.0/port3/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1.1/ep_00/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1.1/2-5.1.1:1.0/ep_02/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1.1/2-5.1.1:1.0/ep_82/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1.1/2-5.1.1:1.0/host100/scsi_host/host100/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1.1/2-5.1.1:1.0/host100/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1.1/2-5.1.1:1.0/host100/target100:0:0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1.1/2-5.1.1:1.0/host100/target100:0:0/100:0:0:0/bsg/100:0:0:0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1.1/2-5.1.1:1.0/host100/target100:0:0/100:0:0:0/scsi_disk/100:0:0:0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1.1/2-5.1.1:1.0/host100/target100:0:0/100:0:0:0/block/sdc/power/autosuspend_delay_ms No such device or address - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1.1/2-5.1.1:1.0/host100/target100:0:0/100:0:0:0/block/sdc/trace/pid No such device or address - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1.1/2-5.1.1:1.0/host100/target100:0:0/100:0:0:0/block/sdc/trace/end_lba No such device or address - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1.1/2-5.1.1:1.0/host100/target100:0:0/100:0:0:0/block/sdc/trace/enable No such device or address - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1.1/2-5.1.1:1.0/host100/target100:0:0/100:0:0:0/block/sdc/trace/act_mask No such device or address - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1.1/2-5.1.1:1.0/host100/target100:0:0/100:0:0:0/block/sdc/trace/start_lba Input/output error - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1.1/2-5.1.1:1.0/host100/target100:0:0/100:0:0:0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1.1/2-5.1.1:1.0/host100/target100:0:0/100:0:0:0/scsi_generic/sg3/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1.1/2-5.1.1:1.0/host100/target100:0:0/100:0:0:0/scsi_device/100:0:0:0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1.2/ep_00/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1.2/2-5.1.2:1.0/ep_02/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1.2/2-5.1.2:1.0/ep_81/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1.2/2-5.1.2:1.0/ttyUSB1/tty/ttyUSB1/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1.2/2-5.1.2:1.0/ttyUSB1/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1.2/2-5.1.2:1.1/ep_04/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1.2/2-5.1.2:1.1/ep_83/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1.2/2-5.1.2:1.1/ttyUSB2/tty/ttyUSB2/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1.2/2-5.1.2:1.1/ttyUSB2/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.3/ep_00/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.3/2-5.3:1.0/ep_02/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.3/2-5.3:1.0/ep_81/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.3/2-5.3:1.0/ep_83/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.3/2-5.3:1.0/ttyUSB0/tty/ttyUSB0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.3/2-5.3:1.0/ttyUSB0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/ep_00/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5:1.0/ep_81/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5:1.0/port1/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5:1.0/port2/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5:1.0/port3/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.7/usb2/ep_00/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-0:1.0/ep_81/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-0:1.0/port1/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-0:1.0/port2/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-0:1.0/port3/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-0:1.0/port4/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-0:1.0/port5/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-0:1.0/port6/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1d.7/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1e.0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1e.0/pci_bus/0000:06/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.0/misc/watchdog/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.0/iTCO_wdt/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.0/watchdog/watchdog0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.0/gpio_ich/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/scsi_host/host0/power/autosuspend_delay_ms Invalid argument - /sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/scsi_host/host0/em_buffer Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/bsg/0:0:0:0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/scsi_disk/0:0:0:0/power/autosuspend_delay_ms Invalid argument - /sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/sw_activity Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda/sda1/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda/sda2/power/autosuspend_delay_ms No such device or address - /sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda/sda2/trace/pid No such device or address - /sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda/sda2/trace/end_lba No such device or address - /sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda/sda2/trace/enable No such device or address - /sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda/sda2/trace/act_mask No such device or address - /sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda/sda2/trace/start_lba Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda/sda5/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda/sda6/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/power/autosuspend_delay_ms Operation not supported - /sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/unload_heads Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/scsi_generic/sg0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/scsi_device/0:0:0:0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata1/link1/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata1/link1/dev1.0/ata_device/dev1.0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata1/link1/dev1.0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata1/link1/ata_link/link1/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata1/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata1/ata_port/ata1/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata2/host1/scsi_host/host1/power/autosuspend_delay_ms Invalid argument - /sys/devices/pci0000:00/0000:00:1f.2/ata2/host1/scsi_host/host1/em_buffer Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/bsg/1:0:0:0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/scsi_disk/1:0:0:0/power/autosuspend_delay_ms Invalid argument - /sys/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/sw_activity Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/block/sdb/sdb1/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/block/sdb/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/power/autosuspend_delay_ms Operation not supported - /sys/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/unload_heads Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/scsi_generic/sg1/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/scsi_device/1:0:0:0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata2/host1/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata2/link2/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata2/link2/dev2.0/ata_device/dev2.0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata2/link2/dev2.0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata2/link2/ata_link/link2/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata2/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata2/ata_port/ata2/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata3/host2/scsi_host/host2/power/autosuspend_delay_ms Invalid argument - /sys/devices/pci0000:00/0000:00:1f.2/ata3/host2/scsi_host/host2/em_buffer Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata3/host2/target2:0:0/2:0:0:0/bsg/2:0:0:0/power/autosuspend_delay_ms Invalid argument - /sys/devices/pci0000:00/0000:00:1f.2/ata3/host2/target2:0:0/2:0:0:0/sw_activity Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata3/host2/target2:0:0/2:0:0:0/block/sr0/power/autosuspend_delay_ms No such device or address - /sys/devices/pci0000:00/0000:00:1f.2/ata3/host2/target2:0:0/2:0:0:0/block/sr0/trace/pid No such device or address - /sys/devices/pci0000:00/0000:00:1f.2/ata3/host2/target2:0:0/2:0:0:0/block/sr0/trace/end_lba No such device or address - /sys/devices/pci0000:00/0000:00:1f.2/ata3/host2/target2:0:0/2:0:0:0/block/sr0/trace/enable No such device or address - /sys/devices/pci0000:00/0000:00:1f.2/ata3/host2/target2:0:0/2:0:0:0/block/sr0/trace/act_mask No such device or address - /sys/devices/pci0000:00/0000:00:1f.2/ata3/host2/target2:0:0/2:0:0:0/block/sr0/trace/start_lba Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata3/host2/target2:0:0/2:0:0:0/power/autosuspend_delay_ms Operation not supported - /sys/devices/pci0000:00/0000:00:1f.2/ata3/host2/target2:0:0/2:0:0:0/unload_heads Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata3/host2/target2:0:0/2:0:0:0/scsi_generic/sg2/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata3/host2/target2:0:0/2:0:0:0/scsi_device/2:0:0:0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata3/host2/target2:0:0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata3/host2/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata3/link3/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata3/link3/dev3.0/ata_device/dev3.0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata3/link3/dev3.0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata3/link3/ata_link/link3/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata3/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata3/ata_port/ata3/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata4/host3/scsi_host/host3/power/autosuspend_delay_ms Invalid argument - /sys/devices/pci0000:00/0000:00:1f.2/ata4/host3/scsi_host/host3/em_buffer Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata4/host3/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata4/link4/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata4/link4/dev4.0/ata_device/dev4.0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata4/link4/dev4.0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata4/link4/ata_link/link4/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata4/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata4/ata_port/ata4/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata5/host4/scsi_host/host4/power/autosuspend_delay_ms Invalid argument - /sys/devices/pci0000:00/0000:00:1f.2/ata5/host4/scsi_host/host4/em_buffer Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata5/host4/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata5/link5/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata5/link5/dev5.0/ata_device/dev5.0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata5/link5/dev5.0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata5/link5/ata_link/link5/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata5/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata5/ata_port/ata5/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata6/host5/scsi_host/host5/power/autosuspend_delay_ms Invalid argument - /sys/devices/pci0000:00/0000:00:1f.2/ata6/host5/scsi_host/host5/em_buffer Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata6/host5/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata6/link6/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata6/link6/dev6.0/ata_device/dev6.0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata6/link6/dev6.0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata6/link6/ata_link/link6/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata6/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/ata6/ata_port/ata6/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.2/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.3/i2c-0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/0000:00:1f.3/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:00/pci_bus/0000:00/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:3f/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:3f/0000:3f:00.0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:3f/0000:3f:00.1/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:3f/0000:3f:02.0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:3f/0000:3f:02.1/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:3f/0000:3f:03.0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:3f/0000:3f:03.1/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:3f/0000:3f:03.4/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:3f/0000:3f:04.0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:3f/0000:3f:04.1/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:3f/0000:3f:04.2/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:3f/0000:3f:04.3/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:3f/0000:3f:05.0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:3f/0000:3f:05.1/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:3f/0000:3f:05.2/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:3f/0000:3f:05.3/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:3f/0000:3f:06.0/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:3f/0000:3f:06.1/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:3f/0000:3f:06.2/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:3f/0000:3f:06.3/power/autosuspend_delay_ms Input/output error - /sys/devices/pci0000:3f/pci_bus/0000:3f/power/autosuspend_delay_ms Input/output error - /sys/devices/tracepoint/power/autosuspend_delay_ms Input/output error - /sys/devices/system/cpu/cpu0/power/autosuspend_delay_ms Input/output error - /sys/devices/system/cpu/cpu1/power/autosuspend_delay_ms Input/output error - /sys/devices/system/cpu/cpu2/power/autosuspend_delay_ms Input/output error - /sys/devices/system/cpu/cpu3/power/autosuspend_delay_ms Input/output error - /sys/devices/system/cpu/cpu4/power/autosuspend_delay_ms Input/output error - /sys/devices/system/cpu/cpu5/power/autosuspend_delay_ms Input/output error - /sys/devices/system/cpu/cpu6/power/autosuspend_delay_ms Input/output error - /sys/devices/system/cpu/cpu7/power/autosuspend_delay_ms Input/output error - /sys/devices/system/cpu/power/autosuspend_delay_ms Input/output error - /sys/devices/system/edac/mc/mc0/all_channel_counts/power/autosuspend_delay_ms Input/output error - /sys/devices/system/edac/mc/mc0/dimm0/power/autosuspend_delay_ms Input/output error - /sys/devices/system/edac/mc/mc0/dimm3/power/autosuspend_delay_ms Input/output error - /sys/devices/system/edac/mc/mc0/dimm6/power/autosuspend_delay_ms Input/output error - /sys/devices/system/edac/mc/mc0/power/autosuspend_delay_ms No such device - /sys/devices/system/edac/mc/mc0/sdram_scrub_rate Input/output error - /sys/devices/system/edac/mc/mc0/inject_addrmatch/power/autosuspend_delay_ms Input/output error - /sys/devices/system/edac/mc/mc0/csrow0/power/autosuspend_delay_ms Input/output error - /sys/devices/system/edac/mc/power/autosuspend_delay_ms Input/output error - /sys/devices/system/edac/power/autosuspend_delay_ms Input/output error - /sys/devices/system/node/node0/power/autosuspend_delay_ms Input/output error - /sys/devices/system/node/power/autosuspend_delay_ms Input/output error - /sys/devices/system/clocksource/power/autosuspend_delay_ms Input/output error - /sys/devices/system/clocksource/clocksource0/power/autosuspend_delay_ms Input/output error - /sys/devices/system/machinecheck/power/autosuspend_delay_ms Input/output error - /sys/devices/system/machinecheck/machinecheck0/power/autosuspend_delay_ms Input/output error - /sys/devices/system/machinecheck/machinecheck1/power/autosuspend_delay_ms Input/output error - /sys/devices/system/machinecheck/machinecheck2/power/autosuspend_delay_ms Input/output error - /sys/devices/system/machinecheck/machinecheck3/power/autosuspend_delay_ms Input/output error - /sys/devices/system/machinecheck/machinecheck4/power/autosuspend_delay_ms Input/output error - /sys/devices/system/machinecheck/machinecheck5/power/autosuspend_delay_ms Input/output error - /sys/devices/system/machinecheck/machinecheck6/power/autosuspend_delay_ms Input/output error - /sys/devices/system/machinecheck/machinecheck7/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/soft_offline_page Input/output error - /sys/devices/system/memory/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/hard_offline_page Input/output error - /sys/devices/system/memory/memory0/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/memory1/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/memory2/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/memory3/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/memory4/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/memory5/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/memory6/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/memory7/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/memory8/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/memory9/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/memory10/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/memory11/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/memory12/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/memory13/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/memory14/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/memory15/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/memory16/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/memory17/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/memory18/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/memory19/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/memory20/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/memory21/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/memory22/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/memory23/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/memory32/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/memory33/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/memory34/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/memory35/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/memory36/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/memory37/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/memory38/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/memory39/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/memory40/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/memory41/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/memory42/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/memory43/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/memory44/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/memory45/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/memory46/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/memory47/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/memory48/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/memory49/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/memory50/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/memory51/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/memory52/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/memory53/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/memory54/power/autosuspend_delay_ms Input/output error - /sys/devices/system/memory/memory55/power/autosuspend_delay_ms Input/output error - /sys/devices/uncore/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/vc/vcs/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/vc/vcs1/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/vc/vcs2/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/vc/vcs3/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/vc/vcs4/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/vc/vcs5/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/vc/vcs6/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/vc/vcs7/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/vc/vcsa/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/vc/vcsa1/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/vc/vcsa2/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/vc/vcsa3/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/vc/vcsa4/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/vc/vcsa5/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/vc/vcsa6/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/vc/vcsa7/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/bdi/1:0/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/bdi/1:1/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/bdi/1:2/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/bdi/1:3/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/bdi/1:4/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/bdi/1:5/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/bdi/1:6/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/bdi/1:7/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/bdi/1:8/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/bdi/1:9/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/bdi/7:0/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/bdi/7:1/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/bdi/7:2/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/bdi/7:3/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/bdi/7:4/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/bdi/7:5/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/bdi/7:6/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/bdi/7:7/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/bdi/8:0/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/bdi/11:0/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/bdi/1:10/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/bdi/1:11/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/bdi/1:12/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/bdi/1:13/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/bdi/1:14/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/bdi/1:15/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/bdi/43:0/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/bdi/43:1/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/bdi/43:2/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/bdi/43:3/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/bdi/43:4/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/bdi/43:5/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/bdi/43:6/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/bdi/43:7/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/bdi/43:8/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/bdi/43:9/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/bdi/8:16/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/bdi/8:32/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/bdi/default/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/bdi/43:10/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/bdi/43:11/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/bdi/43:12/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/bdi/43:13/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/bdi/43:14/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/bdi/43:15/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/bdi/btrfs-1/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/dmi/id/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/drm/ttm/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/mem/mem/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/mem/full/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/mem/kmsg/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/mem/null/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/mem/port/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/mem/zero/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/mem/random/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/mem/urandom/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/net/lo/power/autosuspend_delay_ms Invalid argument - /sys/devices/virtual/net/lo/speed Invalid argument - /sys/devices/virtual/net/lo/duplex Input/output error - /sys/devices/virtual/net/tun0/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/ptmx/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty0/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty1/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty2/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty3/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty4/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty5/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty6/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty7/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty8/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty9/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/console/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty10/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty11/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty12/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty13/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty14/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty15/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty16/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty17/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty18/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty19/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty20/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty21/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty22/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty23/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty24/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty25/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty26/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty27/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty28/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty29/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty30/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty31/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty32/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty33/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty34/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty35/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty36/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty37/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty38/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty39/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty40/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty41/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty42/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty43/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty44/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty45/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty46/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty47/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty48/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty49/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty50/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty51/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty52/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty53/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty54/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty55/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty56/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty57/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty58/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty59/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty60/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty61/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty62/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/tty/tty63/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/wmi/8D9DDCBC-A997-11DA-B012-B622A1EF5492/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/wmi/9DBB5994-A997-11DA-B012-B622A1EF5492/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/wmi/A80593CE-A997-11DA-B012-B622A1EF5492/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/wmi/A3776CE0-1E88-11DB-A98B-0800200C9A66/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/wmi/05901221-D566-11D1-B2F0-00A0C9062910/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/misc/kvm/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/misc/tgt/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/misc/tun/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/misc/fuse/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/misc/hpet/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/misc/cpu_dma_latency/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/misc/btrfs-control/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/misc/psaux/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/misc/network_latency/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/misc/loop-control/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/misc/mcelog/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/misc/snapshot/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/misc/vga_arbiter/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/misc/microcode/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/misc/network_throughput/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/block/nbd0/power/autosuspend_delay_ms No such device or address - /sys/devices/virtual/block/nbd0/trace/pid No such device or address - /sys/devices/virtual/block/nbd0/trace/end_lba No such device or address - /sys/devices/virtual/block/nbd0/trace/enable No such device or address - /sys/devices/virtual/block/nbd0/trace/act_mask No such device or address - /sys/devices/virtual/block/nbd0/trace/start_lba Input/output error - /sys/devices/virtual/block/nbd1/power/autosuspend_delay_ms No such device or address - /sys/devices/virtual/block/nbd1/trace/pid No such device or address - /sys/devices/virtual/block/nbd1/trace/end_lba No such device or address - /sys/devices/virtual/block/nbd1/trace/enable No such device or address - /sys/devices/virtual/block/nbd1/trace/act_mask No such device or address - /sys/devices/virtual/block/nbd1/trace/start_lba Input/output error - /sys/devices/virtual/block/nbd2/power/autosuspend_delay_ms No such device or address - /sys/devices/virtual/block/nbd2/trace/pid No such device or address - /sys/devices/virtual/block/nbd2/trace/end_lba No such device or address - /sys/devices/virtual/block/nbd2/trace/enable No such device or address - /sys/devices/virtual/block/nbd2/trace/act_mask No such device or address - /sys/devices/virtual/block/nbd2/trace/start_lba Input/output error - /sys/devices/virtual/block/nbd3/power/autosuspend_delay_ms No such device or address - /sys/devices/virtual/block/nbd3/trace/pid No such device or address - /sys/devices/virtual/block/nbd3/trace/end_lba No such device or address - /sys/devices/virtual/block/nbd3/trace/enable No such device or address - /sys/devices/virtual/block/nbd3/trace/act_mask No such device or address - /sys/devices/virtual/block/nbd3/trace/start_lba Input/output error - /sys/devices/virtual/block/nbd4/power/autosuspend_delay_ms No such device or address - /sys/devices/virtual/block/nbd4/trace/pid No such device or address - /sys/devices/virtual/block/nbd4/trace/end_lba No such device or address - /sys/devices/virtual/block/nbd4/trace/enable No such device or address - /sys/devices/virtual/block/nbd4/trace/act_mask No such device or address - /sys/devices/virtual/block/nbd4/trace/start_lba Input/output error - /sys/devices/virtual/block/nbd5/power/autosuspend_delay_ms No such device or address - /sys/devices/virtual/block/nbd5/trace/pid No such device or address - /sys/devices/virtual/block/nbd5/trace/end_lba No such device or address - /sys/devices/virtual/block/nbd5/trace/enable No such device or address - /sys/devices/virtual/block/nbd5/trace/act_mask No such device or address - /sys/devices/virtual/block/nbd5/trace/start_lba Input/output error - /sys/devices/virtual/block/nbd6/power/autosuspend_delay_ms No such device or address - /sys/devices/virtual/block/nbd6/trace/pid No such device or address - /sys/devices/virtual/block/nbd6/trace/end_lba No such device or address - /sys/devices/virtual/block/nbd6/trace/enable No such device or address - /sys/devices/virtual/block/nbd6/trace/act_mask No such device or address - /sys/devices/virtual/block/nbd6/trace/start_lba Input/output error - /sys/devices/virtual/block/nbd7/power/autosuspend_delay_ms No such device or address - /sys/devices/virtual/block/nbd7/trace/pid No such device or address - /sys/devices/virtual/block/nbd7/trace/end_lba No such device or address - /sys/devices/virtual/block/nbd7/trace/enable No such device or address - /sys/devices/virtual/block/nbd7/trace/act_mask No such device or address - /sys/devices/virtual/block/nbd7/trace/start_lba Input/output error - /sys/devices/virtual/block/nbd8/power/autosuspend_delay_ms No such device or address - /sys/devices/virtual/block/nbd8/trace/pid No such device or address - /sys/devices/virtual/block/nbd8/trace/end_lba No such device or address - /sys/devices/virtual/block/nbd8/trace/enable No such device or address - /sys/devices/virtual/block/nbd8/trace/act_mask No such device or address - /sys/devices/virtual/block/nbd8/trace/start_lba Input/output error - /sys/devices/virtual/block/nbd9/power/autosuspend_delay_ms No such device or address - /sys/devices/virtual/block/nbd9/trace/pid No such device or address - /sys/devices/virtual/block/nbd9/trace/end_lba No such device or address - /sys/devices/virtual/block/nbd9/trace/enable No such device or address - /sys/devices/virtual/block/nbd9/trace/act_mask No such device or address - /sys/devices/virtual/block/nbd9/trace/start_lba Input/output error - /sys/devices/virtual/block/ram0/power/autosuspend_delay_ms No such device or address - /sys/devices/virtual/block/ram0/trace/pid No such device or address - /sys/devices/virtual/block/ram0/trace/end_lba No such device or address - /sys/devices/virtual/block/ram0/trace/enable No such device or address - /sys/devices/virtual/block/ram0/trace/act_mask No such device or address - /sys/devices/virtual/block/ram0/trace/start_lba Input/output error - /sys/devices/virtual/block/ram1/power/autosuspend_delay_ms No such device or address - /sys/devices/virtual/block/ram1/trace/pid No such device or address - /sys/devices/virtual/block/ram1/trace/end_lba No such device or address - /sys/devices/virtual/block/ram1/trace/enable No such device or address - /sys/devices/virtual/block/ram1/trace/act_mask No such device or address - /sys/devices/virtual/block/ram1/trace/start_lba Input/output error - /sys/devices/virtual/block/ram2/power/autosuspend_delay_ms No such device or address - /sys/devices/virtual/block/ram2/trace/pid No such device or address - /sys/devices/virtual/block/ram2/trace/end_lba No such device or address - /sys/devices/virtual/block/ram2/trace/enable No such device or address - /sys/devices/virtual/block/ram2/trace/act_mask No such device or address - /sys/devices/virtual/block/ram2/trace/start_lba Input/output error - /sys/devices/virtual/block/ram3/power/autosuspend_delay_ms No such device or address - /sys/devices/virtual/block/ram3/trace/pid No such device or address - /sys/devices/virtual/block/ram3/trace/end_lba No such device or address - /sys/devices/virtual/block/ram3/trace/enable No such device or address - /sys/devices/virtual/block/ram3/trace/act_mask No such device or address - /sys/devices/virtual/block/ram3/trace/start_lba Input/output error - /sys/devices/virtual/block/ram4/power/autosuspend_delay_ms No such device or address - /sys/devices/virtual/block/ram4/trace/pid No such device or address - /sys/devices/virtual/block/ram4/trace/end_lba No such device or address - /sys/devices/virtual/block/ram4/trace/enable No such device or address - /sys/devices/virtual/block/ram4/trace/act_mask No such device or address - /sys/devices/virtual/block/ram4/trace/start_lba Input/output error - /sys/devices/virtual/block/ram5/power/autosuspend_delay_ms No such device or address - /sys/devices/virtual/block/ram5/trace/pid No such device or address - /sys/devices/virtual/block/ram5/trace/end_lba No such device or address - /sys/devices/virtual/block/ram5/trace/enable No such device or address - /sys/devices/virtual/block/ram5/trace/act_mask No such device or address - /sys/devices/virtual/block/ram5/trace/start_lba Input/output error - /sys/devices/virtual/block/ram6/power/autosuspend_delay_ms No such device or address - /sys/devices/virtual/block/ram6/trace/pid No such device or address - /sys/devices/virtual/block/ram6/trace/end_lba No such device or address - /sys/devices/virtual/block/ram6/trace/enable No such device or address - /sys/devices/virtual/block/ram6/trace/act_mask No such device or address - /sys/devices/virtual/block/ram6/trace/start_lba Input/output error - /sys/devices/virtual/block/ram7/power/autosuspend_delay_ms No such device or address - /sys/devices/virtual/block/ram7/trace/pid No such device or address - /sys/devices/virtual/block/ram7/trace/end_lba No such device or address - /sys/devices/virtual/block/ram7/trace/enable No such device or address - /sys/devices/virtual/block/ram7/trace/act_mask No such device or address - /sys/devices/virtual/block/ram7/trace/start_lba Input/output error - /sys/devices/virtual/block/ram8/power/autosuspend_delay_ms No such device or address - /sys/devices/virtual/block/ram8/trace/pid No such device or address - /sys/devices/virtual/block/ram8/trace/end_lba No such device or address - /sys/devices/virtual/block/ram8/trace/enable No such device or address - /sys/devices/virtual/block/ram8/trace/act_mask No such device or address - /sys/devices/virtual/block/ram8/trace/start_lba Input/output error - /sys/devices/virtual/block/ram9/power/autosuspend_delay_ms No such device or address - /sys/devices/virtual/block/ram9/trace/pid No such device or address - /sys/devices/virtual/block/ram9/trace/end_lba No such device or address - /sys/devices/virtual/block/ram9/trace/enable No such device or address - /sys/devices/virtual/block/ram9/trace/act_mask No such device or address - /sys/devices/virtual/block/ram9/trace/start_lba Input/output error - /sys/devices/virtual/block/loop0/power/autosuspend_delay_ms No such device or address - /sys/devices/virtual/block/loop0/trace/pid No such device or address - /sys/devices/virtual/block/loop0/trace/end_lba No such device or address - /sys/devices/virtual/block/loop0/trace/enable No such device or address - /sys/devices/virtual/block/loop0/trace/act_mask No such device or address - /sys/devices/virtual/block/loop0/trace/start_lba Input/output error - /sys/devices/virtual/block/loop1/power/autosuspend_delay_ms No such device or address - /sys/devices/virtual/block/loop1/trace/pid No such device or address - /sys/devices/virtual/block/loop1/trace/end_lba No such device or address - /sys/devices/virtual/block/loop1/trace/enable No such device or address - /sys/devices/virtual/block/loop1/trace/act_mask No such device or address - /sys/devices/virtual/block/loop1/trace/start_lba Input/output error - /sys/devices/virtual/block/loop2/power/autosuspend_delay_ms No such device or address - /sys/devices/virtual/block/loop2/trace/pid No such device or address - /sys/devices/virtual/block/loop2/trace/end_lba No such device or address - /sys/devices/virtual/block/loop2/trace/enable No such device or address - /sys/devices/virtual/block/loop2/trace/act_mask No such device or address - /sys/devices/virtual/block/loop2/trace/start_lba Input/output error - /sys/devices/virtual/block/loop3/power/autosuspend_delay_ms No such device or address - /sys/devices/virtual/block/loop3/trace/pid No such device or address - /sys/devices/virtual/block/loop3/trace/end_lba No such device or address - /sys/devices/virtual/block/loop3/trace/enable No such device or address - /sys/devices/virtual/block/loop3/trace/act_mask No such device or address - /sys/devices/virtual/block/loop3/trace/start_lba Input/output error - /sys/devices/virtual/block/loop4/power/autosuspend_delay_ms No such device or address - /sys/devices/virtual/block/loop4/trace/pid No such device or address - /sys/devices/virtual/block/loop4/trace/end_lba No such device or address - /sys/devices/virtual/block/loop4/trace/enable No such device or address - /sys/devices/virtual/block/loop4/trace/act_mask No such device or address - /sys/devices/virtual/block/loop4/trace/start_lba Input/output error - /sys/devices/virtual/block/loop5/power/autosuspend_delay_ms No such device or address - /sys/devices/virtual/block/loop5/trace/pid No such device or address - /sys/devices/virtual/block/loop5/trace/end_lba No such device or address - /sys/devices/virtual/block/loop5/trace/enable No such device or address - /sys/devices/virtual/block/loop5/trace/act_mask No such device or address - /sys/devices/virtual/block/loop5/trace/start_lba Input/output error - /sys/devices/virtual/block/loop6/power/autosuspend_delay_ms No such device or address - /sys/devices/virtual/block/loop6/trace/pid No such device or address - /sys/devices/virtual/block/loop6/trace/end_lba No such device or address - /sys/devices/virtual/block/loop6/trace/enable No such device or address - /sys/devices/virtual/block/loop6/trace/act_mask No such device or address - /sys/devices/virtual/block/loop6/trace/start_lba Input/output error - /sys/devices/virtual/block/loop7/power/autosuspend_delay_ms No such device or address - /sys/devices/virtual/block/loop7/trace/pid No such device or address - /sys/devices/virtual/block/loop7/trace/end_lba No such device or address - /sys/devices/virtual/block/loop7/trace/enable No such device or address - /sys/devices/virtual/block/loop7/trace/act_mask No such device or address - /sys/devices/virtual/block/loop7/trace/start_lba Input/output error - /sys/devices/virtual/block/nbd10/power/autosuspend_delay_ms No such device or address - /sys/devices/virtual/block/nbd10/trace/pid No such device or address - /sys/devices/virtual/block/nbd10/trace/end_lba No such device or address - /sys/devices/virtual/block/nbd10/trace/enable No such device or address - /sys/devices/virtual/block/nbd10/trace/act_mask No such device or address - /sys/devices/virtual/block/nbd10/trace/start_lba Input/output error - /sys/devices/virtual/block/nbd11/power/autosuspend_delay_ms No such device or address - /sys/devices/virtual/block/nbd11/trace/pid No such device or address - /sys/devices/virtual/block/nbd11/trace/end_lba No such device or address - /sys/devices/virtual/block/nbd11/trace/enable No such device or address - /sys/devices/virtual/block/nbd11/trace/act_mask No such device or address - /sys/devices/virtual/block/nbd11/trace/start_lba Input/output error - /sys/devices/virtual/block/nbd12/power/autosuspend_delay_ms No such device or address - /sys/devices/virtual/block/nbd12/trace/pid No such device or address - /sys/devices/virtual/block/nbd12/trace/end_lba No such device or address - /sys/devices/virtual/block/nbd12/trace/enable No such device or address - /sys/devices/virtual/block/nbd12/trace/act_mask No such device or address - /sys/devices/virtual/block/nbd12/trace/start_lba Input/output error - /sys/devices/virtual/block/nbd13/power/autosuspend_delay_ms No such device or address - /sys/devices/virtual/block/nbd13/trace/pid No such device or address - /sys/devices/virtual/block/nbd13/trace/end_lba No such device or address - /sys/devices/virtual/block/nbd13/trace/enable No such device or address - /sys/devices/virtual/block/nbd13/trace/act_mask No such device or address - /sys/devices/virtual/block/nbd13/trace/start_lba Input/output error - /sys/devices/virtual/block/nbd14/power/autosuspend_delay_ms No such device or address - /sys/devices/virtual/block/nbd14/trace/pid No such device or address - /sys/devices/virtual/block/nbd14/trace/end_lba No such device or address - /sys/devices/virtual/block/nbd14/trace/enable No such device or address - /sys/devices/virtual/block/nbd14/trace/act_mask No such device or address - /sys/devices/virtual/block/nbd14/trace/start_lba Input/output error - /sys/devices/virtual/block/nbd15/power/autosuspend_delay_ms No such device or address - /sys/devices/virtual/block/nbd15/trace/pid No such device or address - /sys/devices/virtual/block/nbd15/trace/end_lba No such device or address - /sys/devices/virtual/block/nbd15/trace/enable No such device or address - /sys/devices/virtual/block/nbd15/trace/act_mask No such device or address - /sys/devices/virtual/block/nbd15/trace/start_lba Input/output error - /sys/devices/virtual/block/ram10/power/autosuspend_delay_ms No such device or address - /sys/devices/virtual/block/ram10/trace/pid No such device or address - /sys/devices/virtual/block/ram10/trace/end_lba No such device or address - /sys/devices/virtual/block/ram10/trace/enable No such device or address - /sys/devices/virtual/block/ram10/trace/act_mask No such device or address - /sys/devices/virtual/block/ram10/trace/start_lba Input/output error - /sys/devices/virtual/block/ram11/power/autosuspend_delay_ms No such device or address - /sys/devices/virtual/block/ram11/trace/pid No such device or address - /sys/devices/virtual/block/ram11/trace/end_lba No such device or address - /sys/devices/virtual/block/ram11/trace/enable No such device or address - /sys/devices/virtual/block/ram11/trace/act_mask No such device or address - /sys/devices/virtual/block/ram11/trace/start_lba Input/output error - /sys/devices/virtual/block/ram12/power/autosuspend_delay_ms No such device or address - /sys/devices/virtual/block/ram12/trace/pid No such device or address - /sys/devices/virtual/block/ram12/trace/end_lba No such device or address - /sys/devices/virtual/block/ram12/trace/enable No such device or address - /sys/devices/virtual/block/ram12/trace/act_mask No such device or address - /sys/devices/virtual/block/ram12/trace/start_lba Input/output error - /sys/devices/virtual/block/ram13/power/autosuspend_delay_ms No such device or address - /sys/devices/virtual/block/ram13/trace/pid No such device or address - /sys/devices/virtual/block/ram13/trace/end_lba No such device or address - /sys/devices/virtual/block/ram13/trace/enable No such device or address - /sys/devices/virtual/block/ram13/trace/act_mask No such device or address - /sys/devices/virtual/block/ram13/trace/start_lba Input/output error - /sys/devices/virtual/block/ram14/power/autosuspend_delay_ms No such device or address - /sys/devices/virtual/block/ram14/trace/pid No such device or address - /sys/devices/virtual/block/ram14/trace/end_lba No such device or address - /sys/devices/virtual/block/ram14/trace/enable No such device or address - /sys/devices/virtual/block/ram14/trace/act_mask No such device or address - /sys/devices/virtual/block/ram14/trace/start_lba Input/output error - /sys/devices/virtual/block/ram15/power/autosuspend_delay_ms No such device or address - /sys/devices/virtual/block/ram15/trace/pid No such device or address - /sys/devices/virtual/block/ram15/trace/end_lba No such device or address - /sys/devices/virtual/block/ram15/trace/enable No such device or address - /sys/devices/virtual/block/ram15/trace/act_mask No such device or address - /sys/devices/virtual/block/ram15/trace/start_lba Input/output error - /sys/devices/virtual/input/mice/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/graphics/fbcon/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/sound/seq/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/sound/timer/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/thermal/cooling_device0/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/thermal/cooling_device1/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/thermal/cooling_device2/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/thermal/cooling_device3/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/thermal/cooling_device4/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/thermal/cooling_device5/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/thermal/cooling_device6/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/thermal/cooling_device7/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/vtconsole/vtcon0/power/autosuspend_delay_ms Input/output error - /sys/devices/virtual/vtconsole/vtcon1/power/autosuspend_delay_ms Input/output error - /sys/devices/platform/reg-dummy/regulator/regulator.0/power/autosuspend_delay_ms Input/output error - /sys/devices/platform/reg-dummy/power/autosuspend_delay_ms Input/output error - /sys/devices/platform/i8042/power/autosuspend_delay_ms Input/output error - /sys/devices/platform/i8042/serio0/power/autosuspend_delay_ms Input/output error - /sys/devices/platform/i8042/serio1/power/autosuspend_delay_ms Input/output error - /sys/devices/platform/power/autosuspend_delay_ms Input/output error - /sys/devices/platform/alarmtimer/power/autosuspend_delay_ms Input/output error - /sys/devices/platform/dcdbas/power/autosuspend_delay_ms Input/output error - /sys/devices/platform/pcspkr/power/autosuspend_delay_ms Input/output error - /sys/devices/platform/serial8250/tty/ttyS1/power/autosuspend_delay_ms Input/output error - /sys/devices/platform/serial8250/tty/ttyS2/power/autosuspend_delay_ms Input/output error - /sys/devices/platform/serial8250/tty/ttyS3/power/autosuspend_delay_ms Input/output error - /sys/devices/platform/serial8250/power/autosuspend_delay_ms Input/output error - /sys/devices/platform/microcode/power/autosuspend_delay_ms Input/output error - /sys/devices/platform/coretemp.0/hwmon/hwmon0/power/autosuspend_delay_ms Input/output error - /sys/devices/platform/coretemp.0/power/autosuspend_delay_ms Input/output error - /sys/devices/breakpoint/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXCPU:00/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXCPU:01/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXCPU:02/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXCPU:03/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXCPU:04/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXCPU:05/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXCPU:06/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXCPU:07/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXCPU:08/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXCPU:09/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXCPU:10/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXCPU:11/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXCPU:12/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXCPU:13/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXCPU:14/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXCPU:15/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXCPU:16/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXCPU:17/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXCPU:18/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXCPU:19/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXCPU:0a/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXCPU:0b/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXCPU:0c/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXCPU:0d/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXCPU:0e/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXCPU:0f/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXCPU:1a/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXCPU:1b/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXCPU:1c/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXCPU:1d/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXCPU:1e/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXCPU:1f/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXSYBUS:00/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:00/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:01/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:02/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:03/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:04/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:05/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:06/PNP0401:00/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:06/PNP0501:00/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:06/PNP0800:00/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:06/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:06/PNP0B00:00/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:06/PNP0C01:00/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:06/PNP0C04:00/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:06/PNP0000:00/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:06/PNP0100:00/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:06/PNP0200:00/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:07/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:08/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:09/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:0a/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:0b/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:0c/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C14:00/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input0/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input0/event0/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0F:00/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0F:01/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0F:02/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0F:03/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0F:04/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0F:05/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0F:06/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0F:07/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0103:00/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXSYBUS:01/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input1/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input1/event1/power/autosuspend_delay_ms Input/output error - /sys/devices/LNXSYSTM:00/LNXPWRBN:00/power/autosuspend_delay_ms [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" 2013-02-18 17:27 ` Felipe Balbi @ 2013-02-18 17:45 ` Borislav Petkov 2013-02-18 18:47 ` Felipe Balbi 2013-02-18 17:49 ` Greg KH 1 sibling, 1 reply; 57+ messages in thread From: Borislav Petkov @ 2013-02-18 17:45 UTC (permalink / raw) To: Felipe Balbi; +Cc: Greg KH, Linux Kernel Mailing List On Mon, Feb 18, 2013 at 07:27:00PM +0200, Felipe Balbi wrote: > No such device - /sys/devices/system/edac/mc/mc0/sdram_scrub_rate Looks like your edac module doesn't allow scrub rate setting. Which edac driver is that? dmesg? Thanks. -- Regards/Gruss, Boris. Sent from a fat crate under my desk. Formatting is fine. -- ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" 2013-02-18 17:45 ` Borislav Petkov @ 2013-02-18 18:47 ` Felipe Balbi 2013-02-18 19:40 ` Borislav Petkov 0 siblings, 1 reply; 57+ messages in thread From: Felipe Balbi @ 2013-02-18 18:47 UTC (permalink / raw) To: Borislav Petkov, Felipe Balbi, Greg KH, Linux Kernel Mailing List [-- Attachment #1: Type: text/plain, Size: 427 bytes --] On Mon, Feb 18, 2013 at 06:45:27PM +0100, Borislav Petkov wrote: > On Mon, Feb 18, 2013 at 07:27:00PM +0200, Felipe Balbi wrote: > > No such device - /sys/devices/system/edac/mc/mc0/sdram_scrub_rate > > Looks like your edac module doesn't allow scrub rate setting. Which edac > driver is that? dmesg? $ lsmod | grep -i edac i7core_edac 22414 0 edac_core 43453 2 i7core_edac -- balbi [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" 2013-02-18 18:47 ` Felipe Balbi @ 2013-02-18 19:40 ` Borislav Petkov 2013-02-18 20:04 ` Felipe Balbi 0 siblings, 1 reply; 57+ messages in thread From: Borislav Petkov @ 2013-02-18 19:40 UTC (permalink / raw) To: Felipe Balbi; +Cc: Greg KH, Linux Kernel Mailing List On Mon, Feb 18, 2013 at 08:47:35PM +0200, Felipe Balbi wrote: > On Mon, Feb 18, 2013 at 06:45:27PM +0100, Borislav Petkov wrote: > > On Mon, Feb 18, 2013 at 07:27:00PM +0200, Felipe Balbi wrote: > > > No such device - /sys/devices/system/edac/mc/mc0/sdram_scrub_rate > > > > Looks like your edac module doesn't allow scrub rate setting. Which edac > > driver is that? dmesg? > > $ lsmod | grep -i edac > i7core_edac 22414 0 > edac_core 43453 2 i7core_edac Ok, that would be those i7s which reportedly do not support reading/setting the scrub rate, see 27100db0e0d381d24b6f3cb1a4f439996e7c00c8, for example. So this is as expected. Maybe it would be more correct if the core would return "N/A" or "unsupported" or something to that effect in such cases, to conform with the readable flag of the sysfs file. Hmm. -- Regards/Gruss, Boris. Sent from a fat crate under my desk. Formatting is fine. -- ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" 2013-02-18 19:40 ` Borislav Petkov @ 2013-02-18 20:04 ` Felipe Balbi 0 siblings, 0 replies; 57+ messages in thread From: Felipe Balbi @ 2013-02-18 20:04 UTC (permalink / raw) To: Borislav Petkov, Felipe Balbi, Greg KH, Linux Kernel Mailing List [-- Attachment #1: Type: text/plain, Size: 1013 bytes --] On Mon, Feb 18, 2013 at 08:40:32PM +0100, Borislav Petkov wrote: > On Mon, Feb 18, 2013 at 08:47:35PM +0200, Felipe Balbi wrote: > > On Mon, Feb 18, 2013 at 06:45:27PM +0100, Borislav Petkov wrote: > > > On Mon, Feb 18, 2013 at 07:27:00PM +0200, Felipe Balbi wrote: > > > > No such device - /sys/devices/system/edac/mc/mc0/sdram_scrub_rate > > > > > > Looks like your edac module doesn't allow scrub rate setting. Which edac > > > driver is that? dmesg? > > > > $ lsmod | grep -i edac > > i7core_edac 22414 0 > > edac_core 43453 2 i7core_edac > > Ok, that would be those i7s which reportedly do > not support reading/setting the scrub rate, see > 27100db0e0d381d24b6f3cb1a4f439996e7c00c8, for example. > > So this is as expected. > > Maybe it would be more correct if the core would return "N/A" or > "unsupported" or something to that effect in such cases, to conform with > the readable flag of the sysfs file. yeah, that would be cool :-) -- balbi [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" 2013-02-18 17:27 ` Felipe Balbi 2013-02-18 17:45 ` Borislav Petkov @ 2013-02-18 17:49 ` Greg KH 2013-02-18 18:46 ` Felipe Balbi 2013-02-19 7:41 ` Alexander Stein 1 sibling, 2 replies; 57+ messages in thread From: Greg KH @ 2013-02-18 17:49 UTC (permalink / raw) To: Felipe Balbi; +Cc: Linux Kernel Mailing List On Mon, Feb 18, 2013 at 07:27:00PM +0200, Felipe Balbi wrote: > On Mon, Feb 18, 2013 at 09:13:34AM -0800, Greg KH wrote: > > On Mon, Feb 18, 2013 at 05:52:15PM +0200, Felipe Balbi wrote: > > > Hi, > > > > > > On Mon, Feb 18, 2013 at 07:50:12AM -0800, Greg KH wrote: > > > > > If it helps in any way, I have printed below only the filenames > > > > > (without path) so I could pipe it through uniq: > > > > > > > > > > act_mask > > > > > audit > > > > > autosuspend_delay_ms > > > > > bind > > > > > > > > This one the driver core creates, I'll fix that up. > > > > > > > > The rest need paths to determine who to blame :) > > > > > > wanna see the full list ? It's 1602 lines :-p > > > > You must have more devices in your system than I do: > > $ ruby ./sysfs_test.ruby | wc -l > > 626 > > > > What kernel version did you run this on? I don't see any "bind" file in > > the list on 3.8.0-rc7+: > > running on -rc6: > > $ uname -r > 3.8.0-rc6+ > > > $ ls -l /sys/bus/platform/drivers/pcspkr/bind > > --w------- 1 root root 4096 Feb 18 09:09 /sys/bus/platform/drivers/pcspkr/bind > > $ ls -l /sys/bus/serio/drivers/atkbd/unbind > > --w------- 1 root root 4096 Feb 18 09:09 /sys/bus/serio/drivers/atkbd/unbind > > > > So the full list might be necessary here, thanks. > > yeah, I figured one thing later. Ruby is stupid, if you run it as root, > it File.readable? will return true even if there's no read permission. > So I'm running only as a normal user, full output attached > > -- > balbi > Input/output error - /sys/devices/cpu/power/autosuspend_delay_ms The issue with this file is, if the power.use_autosuspend flag is not set for the device, then it can't be read or written to. This flag changes dynamically with the system state (__pm_runtime_use_autosuspend() can change it), so we can't just not show the file if the flag is not set properly, sorry. So the "error" is correct here, as is the 0644 file value. Take that sysfs file out of your results, reduces it to a mere handful of files: > No such device - /sys/devices/pci0000:00/0000:00:03.0/0000:02:00.0/graphics/fb0/bl_curve I don't really have a framebuffer in this box either it seems, so reading this file correctly returns -ENODEV. > No such device or address - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1.1/2-5.1.1:1.0/host100/target100:0:0/100:0:0:0/block/sdc/trace/pid > No such device or address - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1.1/2-5.1.1:1.0/host100/target100:0:0/100:0:0:0/block/sdc/trace/end_lba > No such device or address - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1.1/2-5.1.1:1.0/host100/target100:0:0/100:0:0:0/block/sdc/trace/enable > No such device or address - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1.1/2-5.1.1:1.0/host100/target100:0:0/100:0:0:0/block/sdc/trace/act_mask > No such device or address - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1.1/2-5.1.1:1.0/host100/target100:0:0/100:0:0:0/block/sdc/trace/start_lba > Invalid argument - /sys/devices/pci0000:00/0000:00:1f.2/ata2/host1/scsi_host/host1/em_buffer > Invalid argument - /sys/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/sw_activity > Operation not supported - /sys/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/unload_heads SCSI fun, go poke the SCSI developers about these files, I know nothing about them, nor do I really want to :) > No such device - /sys/devices/system/edac/mc/mc0/sdram_scrub_rate Odd, go ask the edac developers > Input/output error - /sys/devices/system/memory/soft_offline_page > Input/output error - /sys/devices/system/memory/hard_offline_page These both should be mode 0400, not 0644, they have no 'show' attribute, that's a bug, care to make up a patch that I can take? Or I can, let me know. > Invalid argument - /sys/devices/virtual/net/lo/speed > Invalid argument - /sys/devices/virtual/net/lo/duplex Ask the network developers, odds are, the loopback device doesn't really have a speed :) > No such device or address - /sys/devices/virtual/block/loop0/trace/pid > No such device or address - /sys/devices/virtual/block/loop0/trace/end_lba > No such device or address - /sys/devices/virtual/block/loop0/trace/enable > No such device or address - /sys/devices/virtual/block/loop0/trace/act_mask > No such device or address - /sys/devices/virtual/block/loop0/trace/start_lba Hm, these show up for virtual block devices as well, maybe they aren't scsi specific, but rather block specific, go poke the block developers then. So the list is much more reasonable now, with at least 2 bugs found, nice. thanks, greg k-h ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" 2013-02-18 17:49 ` Greg KH @ 2013-02-18 18:46 ` Felipe Balbi 2013-02-19 7:41 ` Alexander Stein 1 sibling, 0 replies; 57+ messages in thread From: Felipe Balbi @ 2013-02-18 18:46 UTC (permalink / raw) To: Greg KH Cc: Felipe Balbi, Linux Kernel Mailing List, Steven Rostedt, Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem, netdev, Doug Thompson, linux-edac, rjw, linux-pm [-- Attachment #1: Type: text/plain, Size: 3705 bytes --] Hi, On Mon, Feb 18, 2013 at 09:49:16AM -0800, Greg KH wrote: > > Input/output error - /sys/devices/cpu/power/autosuspend_delay_ms > > The issue with this file is, if the power.use_autosuspend flag is not > set for the device, then it can't be read or written to. This flag > changes dynamically with the system state > (__pm_runtime_use_autosuspend() can change it), so we can't just not > show the file if the flag is not set properly, sorry. > > So the "error" is correct here, as is the 0644 file value. hmm... we could create the file at pm_runtime_enable() time and remove it on pm_runtime_disable() time, no ? Addin Rafael to Cc > > No such device or address - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1.1/2-5.1.1:1.0/host100/target100:0:0/100:0:0:0/block/sdc/trace/pid > > No such device or address - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1.1/2-5.1.1:1.0/host100/target100:0:0/100:0:0:0/block/sdc/trace/end_lba > > No such device or address - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1.1/2-5.1.1:1.0/host100/target100:0:0/100:0:0:0/block/sdc/trace/enable > > No such device or address - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1.1/2-5.1.1:1.0/host100/target100:0:0/100:0:0:0/block/sdc/trace/act_mask > > No such device or address - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1.1/2-5.1.1:1.0/host100/target100:0:0/100:0:0:0/block/sdc/trace/start_lba > > Invalid argument - /sys/devices/pci0000:00/0000:00:1f.2/ata2/host1/scsi_host/host1/em_buffer > > Invalid argument - /sys/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/sw_activity > > Operation not supported - /sys/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/unload_heads > > SCSI fun, go poke the SCSI developers about these files, I know nothing > about them, nor do I really want to :) > > > No such device - /sys/devices/system/edac/mc/mc0/sdram_scrub_rate > > Odd, go ask the edac developers will do ;-) > > Input/output error - /sys/devices/system/memory/soft_offline_page > > Input/output error - /sys/devices/system/memory/hard_offline_page > > These both should be mode 0400, not 0644, they have no 'show' attribute, > that's a bug, care to make up a patch that I can take? Or I can, let me > know. sure, will send in a bit. > > Invalid argument - /sys/devices/virtual/net/lo/speed > > Invalid argument - /sys/devices/virtual/net/lo/duplex > > Ask the network developers, odds are, the loopback device doesn't really > have a speed :) right ;-) > > No such device or address - /sys/devices/virtual/block/loop0/trace/pid > > No such device or address - /sys/devices/virtual/block/loop0/trace/end_lba > > No such device or address - /sys/devices/virtual/block/loop0/trace/enable > > No such device or address - /sys/devices/virtual/block/loop0/trace/act_mask > > No such device or address - /sys/devices/virtual/block/loop0/trace/start_lba > > Hm, these show up for virtual block devices as well, maybe they aren't > scsi specific, but rather block specific, go poke the block developers > then. yeah, I was looking into these a while ago. They're created by blk_trace_init_sysfs() which is called by blk_register_queue() but I wonder if we couldn't defer the creation of those so that: sysfs_blk_trace_attr_show(): 1639 bdev = bdget(part_devt(p)); 1640 if (bdev == NULL) 1641 goto out; 1642 1643 q = blk_trace_get_queue(bdev); 1644 if (q == NULL) 1645 goto out_bdput; never fail (meaning they could be removed), adding some block folks to the loop. -- balbi [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" @ 2013-02-18 18:46 ` Felipe Balbi 0 siblings, 0 replies; 57+ messages in thread From: Felipe Balbi @ 2013-02-18 18:46 UTC (permalink / raw) To: Greg KH Cc: Felipe Balbi, Linux Kernel Mailing List, Steven Rostedt, Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem, netdev, Doug Thompson, linux-edac, rjw, linux-pm [-- Attachment #1: Type: text/plain, Size: 3705 bytes --] Hi, On Mon, Feb 18, 2013 at 09:49:16AM -0800, Greg KH wrote: > > Input/output error - /sys/devices/cpu/power/autosuspend_delay_ms > > The issue with this file is, if the power.use_autosuspend flag is not > set for the device, then it can't be read or written to. This flag > changes dynamically with the system state > (__pm_runtime_use_autosuspend() can change it), so we can't just not > show the file if the flag is not set properly, sorry. > > So the "error" is correct here, as is the 0644 file value. hmm... we could create the file at pm_runtime_enable() time and remove it on pm_runtime_disable() time, no ? Addin Rafael to Cc > > No such device or address - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1.1/2-5.1.1:1.0/host100/target100:0:0/100:0:0:0/block/sdc/trace/pid > > No such device or address - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1.1/2-5.1.1:1.0/host100/target100:0:0/100:0:0:0/block/sdc/trace/end_lba > > No such device or address - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1.1/2-5.1.1:1.0/host100/target100:0:0/100:0:0:0/block/sdc/trace/enable > > No such device or address - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1.1/2-5.1.1:1.0/host100/target100:0:0/100:0:0:0/block/sdc/trace/act_mask > > No such device or address - /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1.1/2-5.1.1:1.0/host100/target100:0:0/100:0:0:0/block/sdc/trace/start_lba > > Invalid argument - /sys/devices/pci0000:00/0000:00:1f.2/ata2/host1/scsi_host/host1/em_buffer > > Invalid argument - /sys/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/sw_activity > > Operation not supported - /sys/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/unload_heads > > SCSI fun, go poke the SCSI developers about these files, I know nothing > about them, nor do I really want to :) > > > No such device - /sys/devices/system/edac/mc/mc0/sdram_scrub_rate > > Odd, go ask the edac developers will do ;-) > > Input/output error - /sys/devices/system/memory/soft_offline_page > > Input/output error - /sys/devices/system/memory/hard_offline_page > > These both should be mode 0400, not 0644, they have no 'show' attribute, > that's a bug, care to make up a patch that I can take? Or I can, let me > know. sure, will send in a bit. > > Invalid argument - /sys/devices/virtual/net/lo/speed > > Invalid argument - /sys/devices/virtual/net/lo/duplex > > Ask the network developers, odds are, the loopback device doesn't really > have a speed :) right ;-) > > No such device or address - /sys/devices/virtual/block/loop0/trace/pid > > No such device or address - /sys/devices/virtual/block/loop0/trace/end_lba > > No such device or address - /sys/devices/virtual/block/loop0/trace/enable > > No such device or address - /sys/devices/virtual/block/loop0/trace/act_mask > > No such device or address - /sys/devices/virtual/block/loop0/trace/start_lba > > Hm, these show up for virtual block devices as well, maybe they aren't > scsi specific, but rather block specific, go poke the block developers > then. yeah, I was looking into these a while ago. They're created by blk_trace_init_sysfs() which is called by blk_register_queue() but I wonder if we couldn't defer the creation of those so that: sysfs_blk_trace_attr_show(): 1639 bdev = bdget(part_devt(p)); 1640 if (bdev == NULL) 1641 goto out; 1642 1643 q = blk_trace_get_queue(bdev); 1644 if (q == NULL) 1645 goto out_bdput; never fail (meaning they could be removed), adding some block folks to the loop. -- balbi [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" 2013-02-18 18:46 ` Felipe Balbi @ 2013-02-18 19:46 ` Mauro Carvalho Chehab -1 siblings, 0 replies; 57+ messages in thread From: Mauro Carvalho Chehab @ 2013-02-18 19:46 UTC (permalink / raw) To: balbi Cc: Greg KH, Linux Kernel Mailing List, Steven Rostedt, Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem, netdev, Doug Thompson, linux-edac, rjw, linux-pm Em Mon, 18 Feb 2013 20:46:33 +0200 Felipe Balbi <balbi@ti.com> escreveu: > Hi, On Mon, Feb 18, 2013 at 09:49:16AM -0800, Greg KH wrote: > > > Input/output error - /sys/devices/cpu/power/autosuspend_delay_ms > > > > The issue with this file is, if the power.use_autosuspend flag is not > > set for the device, then it can't be read or written to. This flag > > changes dynamically with the system state > > (__pm_runtime_use_autosuspend() can change it), so we can't just not > > show the file if the flag is not set properly, sorry. > > > > So the "error" is correct here, as is the 0644 file value. > > hmm... we could create the file at pm_runtime_enable() time and remove > it on pm_runtime_disable() time, no ? Addin Rafael to Cc ... > > > > > No such device - /sys/devices/system/edac/mc/mc0/sdram_scrub_rate > > > > Odd, go ask the edac developers > > will do ;-) Well, the question is missing ;) /me assumes that you want to talk about suspending/resume and EDAC, right? In general, memory controllers don't supports suspend, as far as I can tell. Still, I've seen a few ones that support, but the current drivers and/or the EDAC core currently doesn't offer any support to it, as such setup is done by the BIOS, when it detects the used DIMM banks. I suspect that, when the OS puts the machine on a suspend state, the BIOS may also suspend also the memory controller or put it into a low power consumption mode, but it does it without any help from the EDAC drivers. For most of what's there at EDAC, I don't think it is worth to add any PM support inside it. There are, however, two cases were we may need to add some support: 1) if user changed the SDRAM scrub rate before suspending, it makes sense to restore it after resume, on the memory controller drivers that support such feature (not all supports it); 2) hot-pluggable DIMMs. EDAC currently doesn't support. This could be needed on some future. In this case, the core may need to re-scan the memory controller, changing the memory properties. I've no idea if is there any real case needing it, nor what event would trigger the memory-controller re-scan. Resume is likely one of the candidates for it, on machines that support hot-pluggable memories. Regards, Mauro ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" @ 2013-02-18 19:46 ` Mauro Carvalho Chehab 0 siblings, 0 replies; 57+ messages in thread From: Mauro Carvalho Chehab @ 2013-02-18 19:46 UTC (permalink / raw) To: balbi Cc: Greg KH, Linux Kernel Mailing List, Steven Rostedt, Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem, netdev, Doug Thompson, linux-edac, rjw, linux-pm Em Mon, 18 Feb 2013 20:46:33 +0200 Felipe Balbi <balbi@ti.com> escreveu: > Hi, On Mon, Feb 18, 2013 at 09:49:16AM -0800, Greg KH wrote: > > > Input/output error - /sys/devices/cpu/power/autosuspend_delay_ms > > > > The issue with this file is, if the power.use_autosuspend flag is not > > set for the device, then it can't be read or written to. This flag > > changes dynamically with the system state > > (__pm_runtime_use_autosuspend() can change it), so we can't just not > > show the file if the flag is not set properly, sorry. > > > > So the "error" is correct here, as is the 0644 file value. > > hmm... we could create the file at pm_runtime_enable() time and remove > it on pm_runtime_disable() time, no ? Addin Rafael to Cc ... > > > > > No such device - /sys/devices/system/edac/mc/mc0/sdram_scrub_rate > > > > Odd, go ask the edac developers > > will do ;-) Well, the question is missing ;) /me assumes that you want to talk about suspending/resume and EDAC, right? In general, memory controllers don't supports suspend, as far as I can tell. Still, I've seen a few ones that support, but the current drivers and/or the EDAC core currently doesn't offer any support to it, as such setup is done by the BIOS, when it detects the used DIMM banks. I suspect that, when the OS puts the machine on a suspend state, the BIOS may also suspend also the memory controller or put it into a low power consumption mode, but it does it without any help from the EDAC drivers. For most of what's there at EDAC, I don't think it is worth to add any PM support inside it. There are, however, two cases were we may need to add some support: 1) if user changed the SDRAM scrub rate before suspending, it makes sense to restore it after resume, on the memory controller drivers that support such feature (not all supports it); 2) hot-pluggable DIMMs. EDAC currently doesn't support. This could be needed on some future. In this case, the core may need to re-scan the memory controller, changing the memory properties. I've no idea if is there any real case needing it, nor what event would trigger the memory-controller re-scan. Resume is likely one of the candidates for it, on machines that support hot-pluggable memories. Regards, Mauro ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" 2013-02-18 19:46 ` Mauro Carvalho Chehab @ 2013-02-18 20:05 ` Felipe Balbi -1 siblings, 0 replies; 57+ messages in thread From: Felipe Balbi @ 2013-02-18 20:05 UTC (permalink / raw) To: Mauro Carvalho Chehab Cc: balbi, Greg KH, Linux Kernel Mailing List, Steven Rostedt, Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem, netdev, Doug Thompson, linux-edac, rjw, linux-pm [-- Attachment #1: Type: text/plain, Size: 450 bytes --] Hi, On Mon, Feb 18, 2013 at 04:46:38PM -0300, Mauro Carvalho Chehab wrote: > > > > No such device - /sys/devices/system/edac/mc/mc0/sdram_scrub_rate > > > > > > Odd, go ask the edac developers > > > > will do ;-) > > Well, the question is missing ;) /me assumes that you want to talk about > suspending/resume and EDAC, right? oops, my bad. The thing is that file has read permission but reading it isn't allowed ;-) -- balbi [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" @ 2013-02-18 20:05 ` Felipe Balbi 0 siblings, 0 replies; 57+ messages in thread From: Felipe Balbi @ 2013-02-18 20:05 UTC (permalink / raw) To: Mauro Carvalho Chehab Cc: balbi, Greg KH, Linux Kernel Mailing List, Steven Rostedt, Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem, netdev, Doug Thompson, linux-edac, rjw, linux-pm [-- Attachment #1: Type: text/plain, Size: 450 bytes --] Hi, On Mon, Feb 18, 2013 at 04:46:38PM -0300, Mauro Carvalho Chehab wrote: > > > > No such device - /sys/devices/system/edac/mc/mc0/sdram_scrub_rate > > > > > > Odd, go ask the edac developers > > > > will do ;-) > > Well, the question is missing ;) /me assumes that you want to talk about > suspending/resume and EDAC, right? oops, my bad. The thing is that file has read permission but reading it isn't allowed ;-) -- balbi [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" 2013-02-18 20:05 ` Felipe Balbi @ 2013-02-18 21:47 ` Mauro Carvalho Chehab -1 siblings, 0 replies; 57+ messages in thread From: Mauro Carvalho Chehab @ 2013-02-18 21:47 UTC (permalink / raw) To: balbi Cc: Greg KH, Linux Kernel Mailing List, Steven Rostedt, Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem, netdev, Doug Thompson, linux-edac, rjw, linux-pm Em Mon, 18 Feb 2013 22:05:42 +0200 Felipe Balbi <balbi@ti.com> escreveu: > Hi, > > On Mon, Feb 18, 2013 at 04:46:38PM -0300, Mauro Carvalho Chehab wrote: > > > > > No such device - /sys/devices/system/edac/mc/mc0/sdram_scrub_rate > > > > > > > > Odd, go ask the edac developers > > > > > > will do ;-) > > > > Well, the question is missing ;) /me assumes that you want to talk about > > suspending/resume and EDAC, right? > > oops, my bad. The thing is that file has read permission but reading it > isn't allowed ;-) That depends on the driver. See drivers/edac/edac_mc_sysfs.c: static ssize_t mci_sdram_scrub_rate_show(struct device *dev, struct device_attribute *mattr, char *data) { struct mem_ctl_info *mci = to_mci(dev); int bandwidth = 0; if (!mci->get_sdram_scrub_rate) return -ENODEV; bandwidth = mci->get_sdram_scrub_rate(mci); if (bandwidth < 0) { edac_printk(KERN_DEBUG, EDAC_MC, "Error reading scrub rate\n"); return bandwidth; } return sprintf(data, "%d\n", bandwidth); } /* memory scrubber attribute file */ DEVICE_ATTR(sdram_scrub_rate, S_IRUGO | S_IWUSR, mci_sdram_scrub_rate_show, mci_sdram_scrub_rate_store); static struct attribute *mci_attrs[] = { &dev_attr_reset_counters.attr, &dev_attr_mc_name.attr, &dev_attr_size_mb.attr, &dev_attr_seconds_since_reset.attr, &dev_attr_ue_noinfo_count.attr, &dev_attr_ce_noinfo_count.attr, &dev_attr_ue_count.attr, &dev_attr_ce_count.attr, &dev_attr_sdram_scrub_rate.attr, &dev_attr_max_location.attr, NULL }; The capability of get and/or set the scrub rate is edac-driver specific. Drivers that support it need to fill those callbacks: mci->get_sdram_scrub_rate mci->set_sdram_scrub_rate In any case, the sysfs attribute is created even if the device doesn't have support for read/set the scrub rate. On devices where this is not supported, reading (and/or writing) to this sysfs node will return -ENODEV. In the past, the sysfs node creation was done using the raw sysfs support. Doing dynamic creation with the old code were much more complex. I guess that's the reason why the code was written this way. Now that the code uses struct device, it shouldn't be hard to change the code to only create this attribute if the device has support for scrub rate setting. Yet, that would change the userspace API. I'm not sure what applications would rely on the current behavior. So, changing it would require some investigation in order to avoid regressions. Regards, Mauro ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" @ 2013-02-18 21:47 ` Mauro Carvalho Chehab 0 siblings, 0 replies; 57+ messages in thread From: Mauro Carvalho Chehab @ 2013-02-18 21:47 UTC (permalink / raw) To: balbi Cc: Greg KH, Linux Kernel Mailing List, Steven Rostedt, Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem, netdev, Doug Thompson, linux-edac, rjw, linux-pm Em Mon, 18 Feb 2013 22:05:42 +0200 Felipe Balbi <balbi@ti.com> escreveu: > Hi, > > On Mon, Feb 18, 2013 at 04:46:38PM -0300, Mauro Carvalho Chehab wrote: > > > > > No such device - /sys/devices/system/edac/mc/mc0/sdram_scrub_rate > > > > > > > > Odd, go ask the edac developers > > > > > > will do ;-) > > > > Well, the question is missing ;) /me assumes that you want to talk about > > suspending/resume and EDAC, right? > > oops, my bad. The thing is that file has read permission but reading it > isn't allowed ;-) That depends on the driver. See drivers/edac/edac_mc_sysfs.c: static ssize_t mci_sdram_scrub_rate_show(struct device *dev, struct device_attribute *mattr, char *data) { struct mem_ctl_info *mci = to_mci(dev); int bandwidth = 0; if (!mci->get_sdram_scrub_rate) return -ENODEV; bandwidth = mci->get_sdram_scrub_rate(mci); if (bandwidth < 0) { edac_printk(KERN_DEBUG, EDAC_MC, "Error reading scrub rate\n"); return bandwidth; } return sprintf(data, "%d\n", bandwidth); } /* memory scrubber attribute file */ DEVICE_ATTR(sdram_scrub_rate, S_IRUGO | S_IWUSR, mci_sdram_scrub_rate_show, mci_sdram_scrub_rate_store); static struct attribute *mci_attrs[] = { &dev_attr_reset_counters.attr, &dev_attr_mc_name.attr, &dev_attr_size_mb.attr, &dev_attr_seconds_since_reset.attr, &dev_attr_ue_noinfo_count.attr, &dev_attr_ce_noinfo_count.attr, &dev_attr_ue_count.attr, &dev_attr_ce_count.attr, &dev_attr_sdram_scrub_rate.attr, &dev_attr_max_location.attr, NULL }; The capability of get and/or set the scrub rate is edac-driver specific. Drivers that support it need to fill those callbacks: mci->get_sdram_scrub_rate mci->set_sdram_scrub_rate In any case, the sysfs attribute is created even if the device doesn't have support for read/set the scrub rate. On devices where this is not supported, reading (and/or writing) to this sysfs node will return -ENODEV. In the past, the sysfs node creation was done using the raw sysfs support. Doing dynamic creation with the old code were much more complex. I guess that's the reason why the code was written this way. Now that the code uses struct device, it shouldn't be hard to change the code to only create this attribute if the device has support for scrub rate setting. Yet, that would change the userspace API. I'm not sure what applications would rely on the current behavior. So, changing it would require some investigation in order to avoid regressions. Regards, Mauro ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" 2013-02-18 21:47 ` Mauro Carvalho Chehab (?) @ 2013-02-18 21:54 ` Greg KH 2013-02-18 22:13 ` Borislav Petkov -1 siblings, 1 reply; 57+ messages in thread From: Greg KH @ 2013-02-18 21:54 UTC (permalink / raw) To: Mauro Carvalho Chehab Cc: balbi, Linux Kernel Mailing List, Steven Rostedt, Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem, netdev, Doug Thompson, linux-edac, rjw, linux-pm On Mon, Feb 18, 2013 at 06:47:42PM -0300, Mauro Carvalho Chehab wrote: > In the past, the sysfs node creation was done using the raw sysfs support. > Doing dynamic creation with the old code were much more complex. I guess > that's the reason why the code was written this way. Now that the code > uses struct device, it shouldn't be hard to change the code to only > create this attribute if the device has support for scrub rate setting. > > Yet, that would change the userspace API. I'm not sure what > applications would rely on the current behavior. So, changing it > would require some investigation in order to avoid regressions. Because sysfs is "one value per file" the lack of a file showing up shouldn't cause any userspace tools any problems, that is why we did things this way. But, of course, userspace programmers do know how to mess things up... greg k-h ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" 2013-02-18 21:54 ` Greg KH @ 2013-02-18 22:13 ` Borislav Petkov 2013-02-18 22:26 ` Greg KH 0 siblings, 1 reply; 57+ messages in thread From: Borislav Petkov @ 2013-02-18 22:13 UTC (permalink / raw) To: Greg KH Cc: Mauro Carvalho Chehab, balbi, Linux Kernel Mailing List, Steven Rostedt, Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem, netdev, Doug Thompson, linux-edac, rjw, linux-pm On Mon, Feb 18, 2013 at 01:54:34PM -0800, Greg KH wrote: > Because sysfs is "one value per file" the lack of a file showing up > shouldn't cause any userspace tools any problems, that is why we did > things this way. > > But, of course, userspace programmers do know how to mess things up... How about what I proposed earlier to Felipe: -- diff --git a/drivers/edac/edac_mc_sysfs.c b/drivers/edac/edac_mc_sysfs.c index 0ca1ca71157f..d2eef76d1d46 100644 --- a/drivers/edac/edac_mc_sysfs.c +++ b/drivers/edac/edac_mc_sysfs.c @@ -704,7 +704,7 @@ static ssize_t mci_sdram_scrub_rate_show(struct device *dev, int bandwidth = 0; if (!mci->get_sdram_scrub_rate) - return -ENODEV; + return sprintf(data, "N/A"); bandwidth = mci->get_sdram_scrub_rate(mci); if (bandwidth < 0) { -- Would that hurt the sysfs policy? In this case we *can* read the file and it correctly tells us that scrub rate reading is not supported instead of having a number there. Hmm. -- Regards/Gruss, Boris. Sent from a fat crate under my desk. Formatting is fine. -- ^ permalink raw reply related [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" 2013-02-18 22:13 ` Borislav Petkov @ 2013-02-18 22:26 ` Greg KH 2013-02-18 22:44 ` Borislav Petkov 0 siblings, 1 reply; 57+ messages in thread From: Greg KH @ 2013-02-18 22:26 UTC (permalink / raw) To: Borislav Petkov, Mauro Carvalho Chehab, balbi, Linux Kernel Mailing List, Steven Rostedt, Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem, netdev, Doug Thompson, linux-edac, rjw, linux-pm On Mon, Feb 18, 2013 at 11:13:06PM +0100, Borislav Petkov wrote: > On Mon, Feb 18, 2013 at 01:54:34PM -0800, Greg KH wrote: > > Because sysfs is "one value per file" the lack of a file showing up > > shouldn't cause any userspace tools any problems, that is why we did > > things this way. > > > > But, of course, userspace programmers do know how to mess things up... > > How about what I proposed earlier to Felipe: > > -- > diff --git a/drivers/edac/edac_mc_sysfs.c b/drivers/edac/edac_mc_sysfs.c > index 0ca1ca71157f..d2eef76d1d46 100644 > --- a/drivers/edac/edac_mc_sysfs.c > +++ b/drivers/edac/edac_mc_sysfs.c > @@ -704,7 +704,7 @@ static ssize_t mci_sdram_scrub_rate_show(struct device *dev, > int bandwidth = 0; > > if (!mci->get_sdram_scrub_rate) > - return -ENODEV; > + return sprintf(data, "N/A"); > > bandwidth = mci->get_sdram_scrub_rate(mci); > if (bandwidth < 0) { > > -- > > Would that hurt the sysfs policy? In this case we *can* read the file > and it correctly tells us that scrub rate reading is not supported > instead of having a number there. > > Hmm. I don't know, it depends on if userspace can handle this properly or not. What tools rely on this sysfs file? WHat happens when they get a non-number in the file? thanks, greg k-h ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" 2013-02-18 22:26 ` Greg KH @ 2013-02-18 22:44 ` Borislav Petkov 2013-02-19 10:03 ` Mauro Carvalho Chehab 0 siblings, 1 reply; 57+ messages in thread From: Borislav Petkov @ 2013-02-18 22:44 UTC (permalink / raw) To: Greg KH Cc: Mauro Carvalho Chehab, balbi, Linux Kernel Mailing List, Steven Rostedt, Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem, netdev, Doug Thompson, linux-edac, rjw, linux-pm On Mon, Feb 18, 2013 at 02:26:18PM -0800, Greg KH wrote: > I don't know, it depends on if userspace can handle this properly or > not. What tools rely on this sysfs file? WHat happens when they get a > non-number in the file? I'm not aware of any, frankly speaking. If there are any, those tools should be able to handle the -ENODEV they get. Now, if this gets changed this way, the read would succeed but they'll have to parse the returned value and see that it is not an integer. So I don't know either. But my gut feeling says to stay concervative and not touch this code - we don't know what uses it and how much we would break by "fixing" it. The current situation is not that big of a deal IMVHO and I'd be willing to accept the small inconcistency versus possibly breaking userspace. Thanks. -- Regards/Gruss, Boris. Sent from a fat crate under my desk. Formatting is fine. -- ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" 2013-02-18 22:44 ` Borislav Petkov @ 2013-02-19 10:03 ` Mauro Carvalho Chehab 2013-02-19 10:11 ` Felipe Balbi 0 siblings, 1 reply; 57+ messages in thread From: Mauro Carvalho Chehab @ 2013-02-19 10:03 UTC (permalink / raw) To: Borislav Petkov Cc: Greg KH, balbi, Linux Kernel Mailing List, Steven Rostedt, Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem, netdev, Doug Thompson, linux-edac, rjw, linux-pm Em Mon, 18 Feb 2013 23:44:05 +0100 Borislav Petkov <bp@alien8.de> escreveu: > On Mon, Feb 18, 2013 at 02:26:18PM -0800, Greg KH wrote: > > I don't know, it depends on if userspace can handle this properly or > > not. What tools rely on this sysfs file? WHat happens when they get a > > non-number in the file? The thing with "sdram_scrub_rate" is that this is not supported by any userspace application I know. I suspect that this is used by userspace scripts. So, we'll never know in advance what behavior those scripts would expect. > > I'm not aware of any, frankly speaking. > > If there are any, those tools should be able to handle the -ENODEV > they get. Now, if this gets changed this way, the read would succeed > but they'll have to parse the returned value and see that it is not an > integer. > > So I don't know either. > > But my gut feeling says to stay concervative and not touch this code - > we don't know what uses it and how much we would break by "fixing" it. > The current situation is not that big of a deal IMVHO and I'd be willing > to accept the small inconcistency versus possibly breaking userspace. I remember I saw some discussions about it in the past at bluesmoke ML, saying that -ENODEV is the expected behavior when this is not supported. Changing from -ENODEV to "N/A" will break anything that would be relying on the previous behavior. So, I think that such change will for sure break userspace. If we're willing to change it, not creating the "sdram_scrub_rate" sysfs node is less likely to affect userspace. Regards, Mauro ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" 2013-02-19 10:03 ` Mauro Carvalho Chehab @ 2013-02-19 10:11 ` Felipe Balbi 0 siblings, 0 replies; 57+ messages in thread From: Felipe Balbi @ 2013-02-19 10:11 UTC (permalink / raw) To: Mauro Carvalho Chehab Cc: Borislav Petkov, Greg KH, balbi, Linux Kernel Mailing List, Steven Rostedt, Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem, netdev, Doug Thompson, linux-edac, rjw, linux-pm [-- Attachment #1: Type: text/plain, Size: 1105 bytes --] Hi, On Tue, Feb 19, 2013 at 07:03:10AM -0300, Mauro Carvalho Chehab wrote: > > But my gut feeling says to stay concervative and not touch this code - > > we don't know what uses it and how much we would break by "fixing" it. > > The current situation is not that big of a deal IMVHO and I'd be willing > > to accept the small inconcistency versus possibly breaking userspace. > > I remember I saw some discussions about it in the past at bluesmoke ML, > saying that -ENODEV is the expected behavior when this is not supported. > > Changing from -ENODEV to "N/A" will break anything that would be relying > on the previous behavior. So, I think that such change will for sure break > userspace. > > If we're willing to change it, not creating the "sdram_scrub_rate" sysfs > node is less likely to affect userspace. yeah, I agree with this. Guess we shouldn't be creating files which aren't supported by the underlying HW and having a read() return -ENODEV is quite weird IMO since that's actually 'breaking' read() interface although that's up to interpretations. -- balbi [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" @ 2013-02-19 10:11 ` Felipe Balbi 0 siblings, 0 replies; 57+ messages in thread From: Felipe Balbi @ 2013-02-19 10:11 UTC (permalink / raw) To: Mauro Carvalho Chehab Cc: Borislav Petkov, Greg KH, balbi, Linux Kernel Mailing List, Steven Rostedt, Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem, netdev, Doug Thompson, linux-edac, rjw, linux-pm [-- Attachment #1: Type: text/plain, Size: 1105 bytes --] Hi, On Tue, Feb 19, 2013 at 07:03:10AM -0300, Mauro Carvalho Chehab wrote: > > But my gut feeling says to stay concervative and not touch this code - > > we don't know what uses it and how much we would break by "fixing" it. > > The current situation is not that big of a deal IMVHO and I'd be willing > > to accept the small inconcistency versus possibly breaking userspace. > > I remember I saw some discussions about it in the past at bluesmoke ML, > saying that -ENODEV is the expected behavior when this is not supported. > > Changing from -ENODEV to "N/A" will break anything that would be relying > on the previous behavior. So, I think that such change will for sure break > userspace. > > If we're willing to change it, not creating the "sdram_scrub_rate" sysfs > node is less likely to affect userspace. yeah, I agree with this. Guess we shouldn't be creating files which aren't supported by the underlying HW and having a read() return -ENODEV is quite weird IMO since that's actually 'breaking' read() interface although that's up to interpretations. -- balbi [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" 2013-02-19 10:11 ` Felipe Balbi @ 2013-02-19 11:11 ` Mauro Carvalho Chehab -1 siblings, 0 replies; 57+ messages in thread From: Mauro Carvalho Chehab @ 2013-02-19 11:11 UTC (permalink / raw) To: balbi Cc: Borislav Petkov, Greg KH, Linux Kernel Mailing List, Steven Rostedt, Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem, netdev, Doug Thompson, linux-edac, rjw, linux-pm [-- Attachment #1: Type: text/plain, Size: 3716 bytes --] Em Tue, 19 Feb 2013 12:11:21 +0200 Felipe Balbi <balbi@ti.com> escreveu: > Hi, > > On Tue, Feb 19, 2013 at 07:03:10AM -0300, Mauro Carvalho Chehab wrote: > > > But my gut feeling says to stay concervative and not touch this code - > > > we don't know what uses it and how much we would break by "fixing" it. > > > The current situation is not that big of a deal IMVHO and I'd be willing > > > to accept the small inconcistency versus possibly breaking userspace. > > > > I remember I saw some discussions about it in the past at bluesmoke ML, > > saying that -ENODEV is the expected behavior when this is not supported. > > > > Changing from -ENODEV to "N/A" will break anything that would be relying > > on the previous behavior. So, I think that such change will for sure break > > userspace. > > > > If we're willing to change it, not creating the "sdram_scrub_rate" sysfs > > node is less likely to affect userspace. > > yeah, I agree with this. Guess we shouldn't be creating files which > aren't supported by the underlying HW and having a read() return -ENODEV > is quite weird IMO since that's actually 'breaking' read() interface > although that's up to interpretations. The enclosed (untested) patch will likely do the trick. It needs to be tested with one of the drivers that support scrub setting (amd64_edac.c, cpc925_edac.c, e752x_edac.c, i5100_edac.c or i7core_edac.c). Regards, Mauro - [PATCH] edac: only create sdram_scrub_rate where supported Currently, sdram_scrub_rate sysfs node is created even if the device doesn't support get/set the scub rate. Change the logic to only create this device node when the operation is supported. Reported-by: Felipe Balbi <balbi@ti.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com> diff --git a/drivers/edac/edac_mc_sysfs.c b/drivers/edac/edac_mc_sysfs.c index 9c58da6..937975b 100644 --- a/drivers/edac/edac_mc_sysfs.c +++ b/drivers/edac/edac_mc_sysfs.c @@ -7,7 +7,7 @@ * * Written Doug Thompson <norsk5@xmission.com> www.softwarebitmaker.com * - * (c) 2012 - Mauro Carvalho Chehab <mchehab@redhat.com> + * (c) 2012-2013 - Mauro Carvalho Chehab <mchehab@redhat.com> * The entire API were re-written, and ported to use struct device * */ @@ -681,9 +681,6 @@ static ssize_t mci_sdram_scrub_rate_store(struct device *dev, unsigned long bandwidth = 0; int new_bw = 0; - if (!mci->set_sdram_scrub_rate) - return -ENODEV; - if (strict_strtoul(data, 10, &bandwidth) < 0) return -EINVAL; @@ -707,9 +704,6 @@ static ssize_t mci_sdram_scrub_rate_show(struct device *dev, struct mem_ctl_info *mci = to_mci(dev); int bandwidth = 0; - if (!mci->get_sdram_scrub_rate) - return -ENODEV; - bandwidth = mci->get_sdram_scrub_rate(mci); if (bandwidth < 0) { edac_printk(KERN_DEBUG, EDAC_MC, "Error reading scrub rate\n"); @@ -882,7 +876,6 @@ static struct attribute *mci_attrs[] = { &dev_attr_ce_noinfo_count.attr, &dev_attr_ue_count.attr, &dev_attr_ce_count.attr, - &dev_attr_sdram_scrub_rate.attr, &dev_attr_max_location.attr, NULL }; @@ -1017,6 +1010,14 @@ int edac_create_sysfs_mci_device(struct mem_ctl_info *mci) return err; } + if (mci->set_sdram_scrub_rate && mci->get_sdram_scrub_rate) { + err = device_create_file(&mci->dev, + &dev_attr_sdram_scrub_rate); + if (err) { + edac_dbg(1, "failure: create sdram_scrub_rate\n"); + goto fail2; + } + } /* * Create the dimm/rank devices */ @@ -1061,6 +1062,7 @@ fail: continue; device_unregister(&dimm->dev); } +fail2: device_unregister(&mci->dev); bus_unregister(&mci->bus); kfree(mci->bus.name); [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply related [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" @ 2013-02-19 11:11 ` Mauro Carvalho Chehab 0 siblings, 0 replies; 57+ messages in thread From: Mauro Carvalho Chehab @ 2013-02-19 11:11 UTC (permalink / raw) To: balbi Cc: Borislav Petkov, Greg KH, Linux Kernel Mailing List, Steven Rostedt, Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem, netdev, Doug Thompson, linux-edac, rjw, linux-pm [-- Attachment #1: Type: text/plain, Size: 3716 bytes --] Em Tue, 19 Feb 2013 12:11:21 +0200 Felipe Balbi <balbi@ti.com> escreveu: > Hi, > > On Tue, Feb 19, 2013 at 07:03:10AM -0300, Mauro Carvalho Chehab wrote: > > > But my gut feeling says to stay concervative and not touch this code - > > > we don't know what uses it and how much we would break by "fixing" it. > > > The current situation is not that big of a deal IMVHO and I'd be willing > > > to accept the small inconcistency versus possibly breaking userspace. > > > > I remember I saw some discussions about it in the past at bluesmoke ML, > > saying that -ENODEV is the expected behavior when this is not supported. > > > > Changing from -ENODEV to "N/A" will break anything that would be relying > > on the previous behavior. So, I think that such change will for sure break > > userspace. > > > > If we're willing to change it, not creating the "sdram_scrub_rate" sysfs > > node is less likely to affect userspace. > > yeah, I agree with this. Guess we shouldn't be creating files which > aren't supported by the underlying HW and having a read() return -ENODEV > is quite weird IMO since that's actually 'breaking' read() interface > although that's up to interpretations. The enclosed (untested) patch will likely do the trick. It needs to be tested with one of the drivers that support scrub setting (amd64_edac.c, cpc925_edac.c, e752x_edac.c, i5100_edac.c or i7core_edac.c). Regards, Mauro - [PATCH] edac: only create sdram_scrub_rate where supported Currently, sdram_scrub_rate sysfs node is created even if the device doesn't support get/set the scub rate. Change the logic to only create this device node when the operation is supported. Reported-by: Felipe Balbi <balbi@ti.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com> diff --git a/drivers/edac/edac_mc_sysfs.c b/drivers/edac/edac_mc_sysfs.c index 9c58da6..937975b 100644 --- a/drivers/edac/edac_mc_sysfs.c +++ b/drivers/edac/edac_mc_sysfs.c @@ -7,7 +7,7 @@ * * Written Doug Thompson <norsk5@xmission.com> www.softwarebitmaker.com * - * (c) 2012 - Mauro Carvalho Chehab <mchehab@redhat.com> + * (c) 2012-2013 - Mauro Carvalho Chehab <mchehab@redhat.com> * The entire API were re-written, and ported to use struct device * */ @@ -681,9 +681,6 @@ static ssize_t mci_sdram_scrub_rate_store(struct device *dev, unsigned long bandwidth = 0; int new_bw = 0; - if (!mci->set_sdram_scrub_rate) - return -ENODEV; - if (strict_strtoul(data, 10, &bandwidth) < 0) return -EINVAL; @@ -707,9 +704,6 @@ static ssize_t mci_sdram_scrub_rate_show(struct device *dev, struct mem_ctl_info *mci = to_mci(dev); int bandwidth = 0; - if (!mci->get_sdram_scrub_rate) - return -ENODEV; - bandwidth = mci->get_sdram_scrub_rate(mci); if (bandwidth < 0) { edac_printk(KERN_DEBUG, EDAC_MC, "Error reading scrub rate\n"); @@ -882,7 +876,6 @@ static struct attribute *mci_attrs[] = { &dev_attr_ce_noinfo_count.attr, &dev_attr_ue_count.attr, &dev_attr_ce_count.attr, - &dev_attr_sdram_scrub_rate.attr, &dev_attr_max_location.attr, NULL }; @@ -1017,6 +1010,14 @@ int edac_create_sysfs_mci_device(struct mem_ctl_info *mci) return err; } + if (mci->set_sdram_scrub_rate && mci->get_sdram_scrub_rate) { + err = device_create_file(&mci->dev, + &dev_attr_sdram_scrub_rate); + if (err) { + edac_dbg(1, "failure: create sdram_scrub_rate\n"); + goto fail2; + } + } /* * Create the dimm/rank devices */ @@ -1061,6 +1062,7 @@ fail: continue; device_unregister(&dimm->dev); } +fail2: device_unregister(&mci->dev); bus_unregister(&mci->bus); kfree(mci->bus.name); [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply related [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" 2013-02-19 11:11 ` Mauro Carvalho Chehab (?) @ 2013-02-19 11:43 ` Borislav Petkov 2013-02-19 12:16 ` Mauro Carvalho Chehab -1 siblings, 1 reply; 57+ messages in thread From: Borislav Petkov @ 2013-02-19 11:43 UTC (permalink / raw) To: Mauro Carvalho Chehab Cc: balbi, Greg KH, Linux Kernel Mailing List, Steven Rostedt, Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem, netdev, Doug Thompson, linux-edac, rjw, linux-pm On Tue, Feb 19, 2013 at 08:11:49AM -0300, Mauro Carvalho Chehab wrote: > > > I remember I saw some discussions about it in the past at bluesmoke ML, > > > saying that -ENODEV is the expected behavior when this is not supported. > > > > > > Changing from -ENODEV to "N/A" will break anything that would be relying > > > on the previous behavior. So, I think that such change will for sure break > > > userspace. > > > > > > If we're willing to change it, not creating the "sdram_scrub_rate" sysfs > > > node is less likely to affect userspace. This will break scripts which assume this file's presence implicitly. [ … ] > @@ -1017,6 +1010,14 @@ int edac_create_sysfs_mci_device(struct mem_ctl_info *mci) > return err; > } > > + if (mci->set_sdram_scrub_rate && mci->get_sdram_scrub_rate) { This will break cpc925_edac.c because it defines a ->get_sdram_scrub_rate but not a ->set_sdram_scrub_rate. I think a maybe better fix would be to figure out the sysfs file permissions based on the presence of the two functions and *then* add the attribute. This way, the only visible change to userspace is the corrected sysfs file permissions. -- Regards/Gruss, Boris. Sent from a fat crate under my desk. Formatting is fine. -- ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" 2013-02-19 11:43 ` Borislav Petkov @ 2013-02-19 12:16 ` Mauro Carvalho Chehab 2013-02-19 12:35 ` Borislav Petkov 0 siblings, 1 reply; 57+ messages in thread From: Mauro Carvalho Chehab @ 2013-02-19 12:16 UTC (permalink / raw) To: Borislav Petkov Cc: balbi, Greg KH, Linux Kernel Mailing List, Steven Rostedt, Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem, netdev, Doug Thompson, linux-edac, rjw, linux-pm Em Tue, 19 Feb 2013 12:43:46 +0100 Borislav Petkov <bp@alien8.de> escreveu: > On Tue, Feb 19, 2013 at 08:11:49AM -0300, Mauro Carvalho Chehab wrote: > > > > I remember I saw some discussions about it in the past at bluesmoke ML, > > > > saying that -ENODEV is the expected behavior when this is not supported. > > > > > > > > Changing from -ENODEV to "N/A" will break anything that would be relying > > > > on the previous behavior. So, I think that such change will for sure break > > > > userspace. > > > > > > > > If we're willing to change it, not creating the "sdram_scrub_rate" sysfs > > > > node is less likely to affect userspace. > > This will break scripts which assume this file's presence implicitly. If are there any script like that, then yes. > [ … ] > > > @@ -1017,6 +1010,14 @@ int edac_create_sysfs_mci_device(struct mem_ctl_info *mci) > > return err; > > } > > > > + if (mci->set_sdram_scrub_rate && mci->get_sdram_scrub_rate) { > > This will break cpc925_edac.c because it defines a > ->get_sdram_scrub_rate but not a ->set_sdram_scrub_rate. True. Patch below fixes it. > I think a maybe better fix would be to figure out the sysfs file > permissions based on the presence of the two functions and *then* add > the attribute. > > This way, the only visible change to userspace is the corrected sysfs > file permissions. I'm not sure if is there a way to pass fs permissions to something similar to device_create_file(). On both cases, an error will happen at open: - if file doesn't exist (this approach), it will return -ENOENT; - if file is opened with wrong permissions, open will return -EPERM. However, if the file is not created, readdir() won't show the file. So, if userspace first seeks for the sdram_scrub_rate, it won't fail. That makes the logic below a little safer, IMO. [PATCH EDAC] edac: only create sdram_scrub_rate where supported Currently, sdram_scrub_rate sysfs node is created even if the device doesn't support get/set the scub rate. Change the logic to only create this device node when the operation is supported. If only read or only write is supported, it will keep returning -ENODEV just like before. Reported-by: Felipe Balbi <balbi@ti.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com> diff --git a/drivers/edac/edac_mc_sysfs.c b/drivers/edac/edac_mc_sysfs.c index 9c58da6..29b66a2 100644 --- a/drivers/edac/edac_mc_sysfs.c +++ b/drivers/edac/edac_mc_sysfs.c @@ -7,7 +7,7 @@ * * Written Doug Thompson <norsk5@xmission.com> www.softwarebitmaker.com * - * (c) 2012 - Mauro Carvalho Chehab <mchehab@redhat.com> + * (c) 2012-2013 - Mauro Carvalho Chehab <mchehab@redhat.com> * The entire API were re-written, and ported to use struct device * */ @@ -882,7 +882,6 @@ static struct attribute *mci_attrs[] = { &dev_attr_ce_noinfo_count.attr, &dev_attr_ue_count.attr, &dev_attr_ce_count.attr, - &dev_attr_sdram_scrub_rate.attr, &dev_attr_max_location.attr, NULL }; @@ -1017,6 +1016,14 @@ int edac_create_sysfs_mci_device(struct mem_ctl_info *mci) return err; } + if (mci->set_sdram_scrub_rate || mci->get_sdram_scrub_rate) { + err = device_create_file(&mci->dev, + &dev_attr_sdram_scrub_rate); + if (err) { + edac_dbg(1, "failure: create sdram_scrub_rate\n"); + goto fail2; + } + } /* * Create the dimm/rank devices */ @@ -1061,6 +1068,7 @@ fail: continue; device_unregister(&dimm->dev); } +fail2: device_unregister(&mci->dev); bus_unregister(&mci->bus); kfree(mci->bus.name); ^ permalink raw reply related [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" 2013-02-19 12:16 ` Mauro Carvalho Chehab @ 2013-02-19 12:35 ` Borislav Petkov 2013-02-19 12:46 ` Mauro Carvalho Chehab 0 siblings, 1 reply; 57+ messages in thread From: Borislav Petkov @ 2013-02-19 12:35 UTC (permalink / raw) To: Mauro Carvalho Chehab Cc: balbi, Greg KH, Linux Kernel Mailing List, Steven Rostedt, Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem, netdev, Doug Thompson, linux-edac, rjw, linux-pm On Tue, Feb 19, 2013 at 09:16:10AM -0300, Mauro Carvalho Chehab wrote: > I'm not sure if is there a way to pass fs permissions to something similar > to device_create_file(). struct device_attribute.attr.mode? I.e., second arg. > On both cases, an error will happen at open: > - if file doesn't exist (this approach), it will return -ENOENT; > - if file is opened with wrong permissions, open will return -EPERM. > > However, if the file is not created, readdir() won't show the file. Right, and in that case userspace which *assumes* it is always created - like it is now - will fail when accessing it. If simply you adjust the attributes accordingly but *always* create the file and it has the correct permissions, everyone is happy. Right? -- Regards/Gruss, Boris. Sent from a fat crate under my desk. Formatting is fine. -- ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" 2013-02-19 12:35 ` Borislav Petkov @ 2013-02-19 12:46 ` Mauro Carvalho Chehab 2013-02-19 13:06 ` Borislav Petkov 0 siblings, 1 reply; 57+ messages in thread From: Mauro Carvalho Chehab @ 2013-02-19 12:46 UTC (permalink / raw) To: Borislav Petkov Cc: balbi, Greg KH, Linux Kernel Mailing List, Steven Rostedt, Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem, netdev, Doug Thompson, linux-edac, rjw, linux-pm Em Tue, 19 Feb 2013 13:35:02 +0100 Borislav Petkov <bp@alien8.de> escreveu: > On Tue, Feb 19, 2013 at 09:16:10AM -0300, Mauro Carvalho Chehab wrote: > > I'm not sure if is there a way to pass fs permissions to something similar > > to device_create_file(). > > struct device_attribute.attr.mode? I.e., second arg. Ah, now I see what you're meaning. That would require to dynamically create a per-mci DEVICE_ATTR(). > > On both cases, an error will happen at open: > > - if file doesn't exist (this approach), it will return -ENOENT; > > - if file is opened with wrong permissions, open will return -EPERM. > > > > However, if the file is not created, readdir() won't show the file. > > Right, and in that case userspace which *assumes* it is always created - > like it is now - will fail when accessing it. > > If simply you adjust the attributes accordingly but *always* create the > file and it has the correct permissions, everyone is happy. Right? No, on both cases, open() will return an error (-ENOENT against -EPERM). If userspace doesn't check if open() failed, I can't see why changing the open return error code would help. -- Cheers, Mauro ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" 2013-02-19 12:46 ` Mauro Carvalho Chehab @ 2013-02-19 13:06 ` Borislav Petkov 2013-02-19 13:15 ` Felipe Balbi 2013-02-19 13:42 ` Mauro Carvalho Chehab 0 siblings, 2 replies; 57+ messages in thread From: Borislav Petkov @ 2013-02-19 13:06 UTC (permalink / raw) To: Mauro Carvalho Chehab Cc: balbi, Greg KH, Linux Kernel Mailing List, Steven Rostedt, Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem, netdev, Doug Thompson, linux-edac, rjw, linux-pm On Tue, Feb 19, 2013 at 09:46:40AM -0300, Mauro Carvalho Chehab wrote: > Ah, now I see what you're meaning. That would require to dynamically > create a per-mci DEVICE_ATTR(). Dude, look at the code, we do that already. And you're using it with dev_attr_sdram_scrub_rate. Simply change the permissions of the attribute before calling device_create_file. pseudo: umode_t mode = 0; if (mci->set...) mode |= S_IWUSR; if (mci->get...) mode |= S_IRUGO; dev_attr_sdram_scrub_rate.attr.mode = mode; device_create_file(&mci->dev, &dev_attr_sdram_scrub_rate); > No, on both cases, open() will return an error (-ENOENT against -EPERM). What if it is a shell script doing: cat /sys/devices/system/edac/mc/mc0/sdram_scrub_rate or similar? Simply fixing the permissions fixes *all* possible cases. -- Regards/Gruss, Boris. Sent from a fat crate under my desk. Formatting is fine. -- ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" 2013-02-19 13:06 ` Borislav Petkov @ 2013-02-19 13:15 ` Felipe Balbi 2013-02-19 13:42 ` Mauro Carvalho Chehab 1 sibling, 0 replies; 57+ messages in thread From: Felipe Balbi @ 2013-02-19 13:15 UTC (permalink / raw) To: Borislav Petkov, Mauro Carvalho Chehab, balbi, Greg KH, Linux Kernel Mailing List, Steven Rostedt, Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem, netdev, Doug Thompson, linux-edac, rjw, linux-pm [-- Attachment #1: Type: text/plain, Size: 1102 bytes --] On Tue, Feb 19, 2013 at 02:06:26PM +0100, Borislav Petkov wrote: > On Tue, Feb 19, 2013 at 09:46:40AM -0300, Mauro Carvalho Chehab wrote: > > Ah, now I see what you're meaning. That would require to dynamically > > create a per-mci DEVICE_ATTR(). > > Dude, look at the code, we do that already. And you're using it with > dev_attr_sdram_scrub_rate. > > Simply change the permissions of the attribute before calling > device_create_file. > > pseudo: > > umode_t mode = 0; > > if (mci->set...) > mode |= S_IWUSR; > > if (mci->get...) > mode |= S_IRUGO; > > > dev_attr_sdram_scrub_rate.attr.mode = mode; > > device_create_file(&mci->dev, &dev_attr_sdram_scrub_rate); > > > No, on both cases, open() will return an error (-ENOENT against -EPERM). > > What if it is a shell script doing: > > cat /sys/devices/system/edac/mc/mc0/sdram_scrub_rate what's the problem with that ? $ cat /path/to/file/that/doesnt/exist.txt cat: /path/to/file/that/doesnt/exist.txt: No such file or directory Didn't see any gates to hell opening here... -- balbi [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" @ 2013-02-19 13:15 ` Felipe Balbi 0 siblings, 0 replies; 57+ messages in thread From: Felipe Balbi @ 2013-02-19 13:15 UTC (permalink / raw) To: Borislav Petkov, Mauro Carvalho Chehab, balbi, Greg KH, Linux Kernel Mailing List, Steven Rostedt, Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem, netdev, Doug Thompson, linux-edac, rjw, linux-pm [-- Attachment #1: Type: text/plain, Size: 1102 bytes --] On Tue, Feb 19, 2013 at 02:06:26PM +0100, Borislav Petkov wrote: > On Tue, Feb 19, 2013 at 09:46:40AM -0300, Mauro Carvalho Chehab wrote: > > Ah, now I see what you're meaning. That would require to dynamically > > create a per-mci DEVICE_ATTR(). > > Dude, look at the code, we do that already. And you're using it with > dev_attr_sdram_scrub_rate. > > Simply change the permissions of the attribute before calling > device_create_file. > > pseudo: > > umode_t mode = 0; > > if (mci->set...) > mode |= S_IWUSR; > > if (mci->get...) > mode |= S_IRUGO; > > > dev_attr_sdram_scrub_rate.attr.mode = mode; > > device_create_file(&mci->dev, &dev_attr_sdram_scrub_rate); > > > No, on both cases, open() will return an error (-ENOENT against -EPERM). > > What if it is a shell script doing: > > cat /sys/devices/system/edac/mc/mc0/sdram_scrub_rate what's the problem with that ? $ cat /path/to/file/that/doesnt/exist.txt cat: /path/to/file/that/doesnt/exist.txt: No such file or directory Didn't see any gates to hell opening here... -- balbi [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" 2013-02-19 13:15 ` Felipe Balbi (?) @ 2013-02-19 13:28 ` Borislav Petkov 2013-02-19 13:38 ` Felipe Balbi -1 siblings, 1 reply; 57+ messages in thread From: Borislav Petkov @ 2013-02-19 13:28 UTC (permalink / raw) To: Felipe Balbi Cc: Mauro Carvalho Chehab, Greg KH, Linux Kernel Mailing List, Steven Rostedt, Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem, netdev, Doug Thompson, linux-edac, rjw, linux-pm On Tue, Feb 19, 2013 at 03:15:00PM +0200, Felipe Balbi wrote: > what's the problem with that ? Not a problem - simply annoying. $ ./test.sh cat: /path/to/file/that/doesnt/exist.txt: No such file or directory Setting scrubrate to: I'm sure someone would ask themselves why all of a sudden the file is gone. > $ cat /path/to/file/that/doesnt/exist.txt > cat: /path/to/file/that/doesnt/exist.txt: No such file or directory > > Didn't see any gates to hell opening here... And I don't see why we have to debate such a trivial thing when we can fix it *properly* without *absolutely* *not* upsetting userspace. -- Regards/Gruss, Boris. Sent from a fat crate under my desk. Formatting is fine. -- ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" 2013-02-19 13:28 ` Borislav Petkov @ 2013-02-19 13:38 ` Felipe Balbi 0 siblings, 0 replies; 57+ messages in thread From: Felipe Balbi @ 2013-02-19 13:38 UTC (permalink / raw) To: Borislav Petkov, Felipe Balbi, Mauro Carvalho Chehab, Greg KH, Linux Kernel Mailing List, Steven Rostedt, Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem, netdev, Doug Thompson, linux-edac, rjw, linux-pm [-- Attachment #1: Type: text/plain, Size: 1141 bytes --] Hi, On Tue, Feb 19, 2013 at 02:28:54PM +0100, Borislav Petkov wrote: > On Tue, Feb 19, 2013 at 03:15:00PM +0200, Felipe Balbi wrote: > > what's the problem with that ? > > Not a problem - simply annoying. > > $ ./test.sh > cat: /path/to/file/that/doesnt/exist.txt: No such file or directory > Setting scrubrate to: > > I'm sure someone would ask themselves why all of a sudden the file is > gone. > > > $ cat /path/to/file/that/doesnt/exist.txt > > cat: /path/to/file/that/doesnt/exist.txt: No such file or directory > > > > Didn't see any gates to hell opening here... > > And I don't see why we have to debate such a trivial thing when we can > fix it *properly* without *absolutely* *not* upsetting userspace. because changing the permission will cause the same issue: $ cat temporary.txt cat: temporary.txt: Permission denied $ ls -l temporary.txt ---------- 1 balbi balbi 0 Feb 19 15:37 temporary.txt $ cat temporary.txt cat: temporary.txt: Permission denied $ cat non-existent.txt cat: non-existent.txt: No such file or directory just a different error code is returned... -- balbi [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" @ 2013-02-19 13:38 ` Felipe Balbi 0 siblings, 0 replies; 57+ messages in thread From: Felipe Balbi @ 2013-02-19 13:38 UTC (permalink / raw) To: Borislav Petkov, Felipe Balbi, Mauro Carvalho Chehab, Greg KH, Linux Kernel Mailing List, Steven Rostedt, Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem, netdev, Doug Thompson, linux-edac, rjw, linux-pm [-- Attachment #1: Type: text/plain, Size: 1141 bytes --] Hi, On Tue, Feb 19, 2013 at 02:28:54PM +0100, Borislav Petkov wrote: > On Tue, Feb 19, 2013 at 03:15:00PM +0200, Felipe Balbi wrote: > > what's the problem with that ? > > Not a problem - simply annoying. > > $ ./test.sh > cat: /path/to/file/that/doesnt/exist.txt: No such file or directory > Setting scrubrate to: > > I'm sure someone would ask themselves why all of a sudden the file is > gone. > > > $ cat /path/to/file/that/doesnt/exist.txt > > cat: /path/to/file/that/doesnt/exist.txt: No such file or directory > > > > Didn't see any gates to hell opening here... > > And I don't see why we have to debate such a trivial thing when we can > fix it *properly* without *absolutely* *not* upsetting userspace. because changing the permission will cause the same issue: $ cat temporary.txt cat: temporary.txt: Permission denied $ ls -l temporary.txt ---------- 1 balbi balbi 0 Feb 19 15:37 temporary.txt $ cat temporary.txt cat: temporary.txt: Permission denied $ cat non-existent.txt cat: non-existent.txt: No such file or directory just a different error code is returned... -- balbi [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" 2013-02-19 13:38 ` Felipe Balbi @ 2013-02-19 13:50 ` Mauro Carvalho Chehab -1 siblings, 0 replies; 57+ messages in thread From: Mauro Carvalho Chehab @ 2013-02-19 13:50 UTC (permalink / raw) To: balbi Cc: Borislav Petkov, Greg KH, Linux Kernel Mailing List, Steven Rostedt, Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem, netdev, Doug Thompson, linux-edac, rjw, linux-pm [-- Attachment #1: Type: text/plain, Size: 1178 bytes --] Em Tue, 19 Feb 2013 15:38:09 +0200 Felipe Balbi <balbi@ti.com> escreveu: > Hi, > > On Tue, Feb 19, 2013 at 02:28:54PM +0100, Borislav Petkov wrote: > > On Tue, Feb 19, 2013 at 03:15:00PM +0200, Felipe Balbi wrote: > > > what's the problem with that ? > > > > Not a problem - simply annoying. > > > > $ ./test.sh > > cat: /path/to/file/that/doesnt/exist.txt: No such file or directory > > Setting scrubrate to: > > > > I'm sure someone would ask themselves why all of a sudden the file is > > gone. > > > > > $ cat /path/to/file/that/doesnt/exist.txt > > > cat: /path/to/file/that/doesnt/exist.txt: No such file or directory > > > > > > Didn't see any gates to hell opening here... > > > > And I don't see why we have to debate such a trivial thing when we can > > fix it *properly* without *absolutely* *not* upsetting userspace. > > because changing the permission will cause the same issue: It is actually worse, as if someone is using a C code to open the device with fp = open ("/sys/devices/system/edac/mc/mc0/sdram_scrub_rate", O_RDWR); It will now start to fail if the device doesn't have both permissions. Regards, Mauro [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" @ 2013-02-19 13:50 ` Mauro Carvalho Chehab 0 siblings, 0 replies; 57+ messages in thread From: Mauro Carvalho Chehab @ 2013-02-19 13:50 UTC (permalink / raw) To: balbi Cc: Borislav Petkov, Greg KH, Linux Kernel Mailing List, Steven Rostedt, Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem, netdev, Doug Thompson, linux-edac, rjw, linux-pm [-- Attachment #1: Type: text/plain, Size: 1178 bytes --] Em Tue, 19 Feb 2013 15:38:09 +0200 Felipe Balbi <balbi@ti.com> escreveu: > Hi, > > On Tue, Feb 19, 2013 at 02:28:54PM +0100, Borislav Petkov wrote: > > On Tue, Feb 19, 2013 at 03:15:00PM +0200, Felipe Balbi wrote: > > > what's the problem with that ? > > > > Not a problem - simply annoying. > > > > $ ./test.sh > > cat: /path/to/file/that/doesnt/exist.txt: No such file or directory > > Setting scrubrate to: > > > > I'm sure someone would ask themselves why all of a sudden the file is > > gone. > > > > > $ cat /path/to/file/that/doesnt/exist.txt > > > cat: /path/to/file/that/doesnt/exist.txt: No such file or directory > > > > > > Didn't see any gates to hell opening here... > > > > And I don't see why we have to debate such a trivial thing when we can > > fix it *properly* without *absolutely* *not* upsetting userspace. > > because changing the permission will cause the same issue: It is actually worse, as if someone is using a C code to open the device with fp = open ("/sys/devices/system/edac/mc/mc0/sdram_scrub_rate", O_RDWR); It will now start to fail if the device doesn't have both permissions. Regards, Mauro [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" 2013-02-19 13:50 ` Mauro Carvalho Chehab (?) @ 2013-02-19 13:55 ` Borislav Petkov -1 siblings, 0 replies; 57+ messages in thread From: Borislav Petkov @ 2013-02-19 13:55 UTC (permalink / raw) To: Mauro Carvalho Chehab Cc: balbi, Greg KH, Linux Kernel Mailing List, Steven Rostedt, Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem, netdev, Doug Thompson, linux-edac, rjw, linux-pm On Tue, Feb 19, 2013 at 10:50:48AM -0300, Mauro Carvalho Chehab wrote: > It is actually worse, as if someone is using a C code to open the device > with > fp = open ("/sys/devices/system/edac/mc/mc0/sdram_scrub_rate", O_RDWR); > > It will now start to fail if the device doesn't have both permissions. That's fine - you're supposed to handle open()'s retval properly anyway. See my other mail. -- Regards/Gruss, Boris. Sent from a fat crate under my desk. Formatting is fine. -- ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" 2013-02-19 13:38 ` Felipe Balbi (?) (?) @ 2013-02-19 13:50 ` Borislav Petkov 2013-02-19 13:58 ` Hannes Reinecke 2013-02-19 14:35 ` Mauro Carvalho Chehab -1 siblings, 2 replies; 57+ messages in thread From: Borislav Petkov @ 2013-02-19 13:50 UTC (permalink / raw) To: Felipe Balbi Cc: Mauro Carvalho Chehab, Greg KH, Linux Kernel Mailing List, Steven Rostedt, Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem, netdev, Doug Thompson, linux-edac, rjw, linux-pm On Tue, Feb 19, 2013 at 03:38:09PM +0200, Felipe Balbi wrote: > because changing the permission will cause the same issue: Actually, I take that back. Mauro's patch will already create the file anyway: if (mci->set_sdram_scrub_rate || mci->get_sdram_scrub_rate) Adjusting the permissions is simply the last missing piece to this patch to make the interface to userspace 100% coherent. -- From: Mauro Carvalho Chehab <mchehab@redhat.com> Date: Tue, 19 Feb 2013 09:16:10 -0300 Subject: [PATCH] EDAC: only create sdram_scrub_rate where supported Currently, sdram_scrub_rate sysfs node is created even if the device doesn't support get/set the scub rate. Change the logic to only create this device node when the operation is supported. If only read or only write is supported, it will keep returning -ENODEV just like before. Reported-by: Felipe Balbi <balbi@ti.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com> --- drivers/edac/edac_mc_sysfs.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/drivers/edac/edac_mc_sysfs.c b/drivers/edac/edac_mc_sysfs.c index 0ca1ca71157f..5a788e60ff67 100644 --- a/drivers/edac/edac_mc_sysfs.c +++ b/drivers/edac/edac_mc_sysfs.c @@ -7,7 +7,7 @@ * * Written Doug Thompson <norsk5@xmission.com> www.softwarebitmaker.com * - * (c) 2012 - Mauro Carvalho Chehab <mchehab@redhat.com> + * (c) 2012-2013 - Mauro Carvalho Chehab <mchehab@redhat.com> * The entire API were re-written, and ported to use struct device * */ @@ -878,7 +878,6 @@ static struct attribute *mci_attrs[] = { &dev_attr_ce_noinfo_count.attr, &dev_attr_ue_count.attr, &dev_attr_ce_count.attr, - &dev_attr_sdram_scrub_rate.attr, &dev_attr_max_location.attr, NULL }; @@ -1012,6 +1011,23 @@ int edac_create_sysfs_mci_device(struct mem_ctl_info *mci) return err; } + if (mci->set_sdram_scrub_rate || mci->get_sdram_scrub_rate) { + umode_t mode = 0; + + if (mci->get_sdram_scrub_rate) + mode = S_IRUGO; + + if (mci->set_sdram_scrub_rate) + mode |= S_IWUSR; + + dev_attr_sdram_scrub_rate.attr.mode = mode; + + err = device_create_file(&mci->dev, &dev_attr_sdram_scrub_rate); + if (err) { + edac_dbg(1, "failure: create sdram_scrub_rate\n"); + goto fail2; + } + } /* * Create the dimm/rank devices */ @@ -1056,6 +1072,7 @@ fail: continue; device_unregister(&dimm->dev); } +fail2: device_unregister(&mci->dev); bus_unregister(&mci->bus); kfree(mci->bus.name); -- 1.8.1.3.535.ga923c31 -- Regards/Gruss, Boris. Sent from a fat crate under my desk. Formatting is fine. -- ^ permalink raw reply related [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" 2013-02-19 13:50 ` Borislav Petkov @ 2013-02-19 13:58 ` Hannes Reinecke 2013-02-19 14:10 ` Borislav Petkov 2013-02-19 14:14 ` Mauro Carvalho Chehab 2013-02-19 14:35 ` Mauro Carvalho Chehab 1 sibling, 2 replies; 57+ messages in thread From: Hannes Reinecke @ 2013-02-19 13:58 UTC (permalink / raw) To: Borislav Petkov, Felipe Balbi, Mauro Carvalho Chehab, Greg KH, Linux Kernel Mailing List, Steven Rostedt, Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem, netdev, Doug Thompson, linux-edac, rjw, linux-pm On 02/19/2013 02:50 PM, Borislav Petkov wrote: > On Tue, Feb 19, 2013 at 03:38:09PM +0200, Felipe Balbi wrote: >> because changing the permission will cause the same issue: > > Actually, I take that back. Mauro's patch will already create the file > anyway: > > if (mci->set_sdram_scrub_rate || mci->get_sdram_scrub_rate) > > Adjusting the permissions is simply the last missing piece to this patch > to make the interface to userspace 100% coherent. > > -- > From: Mauro Carvalho Chehab <mchehab@redhat.com> > Date: Tue, 19 Feb 2013 09:16:10 -0300 > Subject: [PATCH] EDAC: only create sdram_scrub_rate where supported > > Currently, sdram_scrub_rate sysfs node is created even if the device > doesn't support get/set the scub rate. Change the logic to only > create this device node when the operation is supported. > > If only read or only write is supported, it will keep returning -ENODEV > just like before. > > Reported-by: Felipe Balbi <balbi@ti.com> > Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com> > --- > drivers/edac/edac_mc_sysfs.c | 21 +++++++++++++++++++-- > 1 file changed, 19 insertions(+), 2 deletions(-) > > diff --git a/drivers/edac/edac_mc_sysfs.c b/drivers/edac/edac_mc_sysfs.c > index 0ca1ca71157f..5a788e60ff67 100644 > --- a/drivers/edac/edac_mc_sysfs.c > +++ b/drivers/edac/edac_mc_sysfs.c > @@ -7,7 +7,7 @@ > * > * Written Doug Thompson <norsk5@xmission.com> www.softwarebitmaker.com > * > - * (c) 2012 - Mauro Carvalho Chehab <mchehab@redhat.com> > + * (c) 2012-2013 - Mauro Carvalho Chehab <mchehab@redhat.com> > * The entire API were re-written, and ported to use struct device > * > */ > @@ -878,7 +878,6 @@ static struct attribute *mci_attrs[] = { > &dev_attr_ce_noinfo_count.attr, > &dev_attr_ue_count.attr, > &dev_attr_ce_count.attr, > - &dev_attr_sdram_scrub_rate.attr, > &dev_attr_max_location.attr, > NULL > }; > @@ -1012,6 +1011,23 @@ int edac_create_sysfs_mci_device(struct mem_ctl_info *mci) > return err; > } > > + if (mci->set_sdram_scrub_rate || mci->get_sdram_scrub_rate) { > + umode_t mode = 0; > + > + if (mci->get_sdram_scrub_rate) > + mode = S_IRUGO; > + > + if (mci->set_sdram_scrub_rate) > + mode |= S_IWUSR; > + > + dev_attr_sdram_scrub_rate.attr.mode = mode; > + > + err = device_create_file(&mci->dev, &dev_attr_sdram_scrub_rate); > + if (err) { > + edac_dbg(1, "failure: create sdram_scrub_rate\n"); > + goto fail2; > + } > + } > /* > * Create the dimm/rank devices > */ > @@ -1056,6 +1072,7 @@ fail: > continue; > device_unregister(&dimm->dev); > } > +fail2: > device_unregister(&mci->dev); > bus_unregister(&mci->bus); > kfree(mci->bus.name); > And of course you all know that creating sysfs attributes via 'device_create_file' opens all sort of funny race conditions, especially when checking these attributes from udev ... Please consider adding a default attribute which return '-EINVAL' or somesuch when the function pointers are not set. But _not_ adding it via device_create_file(). That's evil. Cheers, Hannes -- Dr. Hannes Reinecke zSeries & Storage hare@suse.de +49 911 74053 688 SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: J. Hawn, J. Guild, F. Imendörffer, HRB 16746 (AG Nürnberg) ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" 2013-02-19 13:58 ` Hannes Reinecke @ 2013-02-19 14:10 ` Borislav Petkov 2013-02-19 14:14 ` Mauro Carvalho Chehab 1 sibling, 0 replies; 57+ messages in thread From: Borislav Petkov @ 2013-02-19 14:10 UTC (permalink / raw) To: Hannes Reinecke Cc: Felipe Balbi, Mauro Carvalho Chehab, Greg KH, Linux Kernel Mailing List, Steven Rostedt, Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem, netdev, Doug Thompson, linux-edac, rjw, linux-pm On Tue, Feb 19, 2013 at 02:58:07PM +0100, Hannes Reinecke wrote: > Please consider adding a default attribute which return '-EINVAL' or > somesuch when the function pointers are not set. But _not_ adding it > via device_create_file(). That's evil. This is what we do now. We probably could add the permissions fiddling out in the the code but remain using DEVICE_ATTR. Thanks. -- Regards/Gruss, Boris. Sent from a fat crate under my desk. Formatting is fine. -- ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" 2013-02-19 13:58 ` Hannes Reinecke 2013-02-19 14:10 ` Borislav Petkov @ 2013-02-19 14:14 ` Mauro Carvalho Chehab 2013-02-19 14:19 ` Felipe Balbi 1 sibling, 1 reply; 57+ messages in thread From: Mauro Carvalho Chehab @ 2013-02-19 14:14 UTC (permalink / raw) To: Hannes Reinecke Cc: Borislav Petkov, Felipe Balbi, Greg KH, Linux Kernel Mailing List, Steven Rostedt, Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem, netdev, Doug Thompson, linux-edac, rjw, linux-pm Em Tue, 19 Feb 2013 14:58:07 +0100 Hannes Reinecke <hare@suse.de> escreveu: > On 02/19/2013 02:50 PM, Borislav Petkov wrote: > > On Tue, Feb 19, 2013 at 03:38:09PM +0200, Felipe Balbi wrote: > >> because changing the permission will cause the same issue: > > > > Actually, I take that back. Mauro's patch will already create the file > > anyway: > > > > if (mci->set_sdram_scrub_rate || mci->get_sdram_scrub_rate) > > > > Adjusting the permissions is simply the last missing piece to this patch > > to make the interface to userspace 100% coherent. > > > > -- > > From: Mauro Carvalho Chehab <mchehab@redhat.com> > > Date: Tue, 19 Feb 2013 09:16:10 -0300 > > Subject: [PATCH] EDAC: only create sdram_scrub_rate where supported > > > > Currently, sdram_scrub_rate sysfs node is created even if the device > > doesn't support get/set the scub rate. Change the logic to only > > create this device node when the operation is supported. > > > > If only read or only write is supported, it will keep returning -ENODEV > > just like before. > > > > Reported-by: Felipe Balbi <balbi@ti.com> > > Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com> > > --- > > drivers/edac/edac_mc_sysfs.c | 21 +++++++++++++++++++-- > > 1 file changed, 19 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/edac/edac_mc_sysfs.c b/drivers/edac/edac_mc_sysfs.c > > index 0ca1ca71157f..5a788e60ff67 100644 > > --- a/drivers/edac/edac_mc_sysfs.c > > +++ b/drivers/edac/edac_mc_sysfs.c > > @@ -7,7 +7,7 @@ > > * > > * Written Doug Thompson <norsk5@xmission.com> www.softwarebitmaker.com > > * > > - * (c) 2012 - Mauro Carvalho Chehab <mchehab@redhat.com> > > + * (c) 2012-2013 - Mauro Carvalho Chehab <mchehab@redhat.com> > > * The entire API were re-written, and ported to use struct device > > * > > */ > > @@ -878,7 +878,6 @@ static struct attribute *mci_attrs[] = { > > &dev_attr_ce_noinfo_count.attr, > > &dev_attr_ue_count.attr, > > &dev_attr_ce_count.attr, > > - &dev_attr_sdram_scrub_rate.attr, > > &dev_attr_max_location.attr, > > NULL > > }; > > @@ -1012,6 +1011,23 @@ int edac_create_sysfs_mci_device(struct mem_ctl_info *mci) > > return err; > > } > > > > + if (mci->set_sdram_scrub_rate || mci->get_sdram_scrub_rate) { > > + umode_t mode = 0; > > + > > + if (mci->get_sdram_scrub_rate) > > + mode = S_IRUGO; > > + > > + if (mci->set_sdram_scrub_rate) > > + mode |= S_IWUSR; > > + > > + dev_attr_sdram_scrub_rate.attr.mode = mode; > > + > > + err = device_create_file(&mci->dev, &dev_attr_sdram_scrub_rate); > > + if (err) { > > + edac_dbg(1, "failure: create sdram_scrub_rate\n"); > > + goto fail2; > > + } > > + } > > /* > > * Create the dimm/rank devices > > */ > > @@ -1056,6 +1072,7 @@ fail: > > continue; > > device_unregister(&dimm->dev); > > } > > +fail2: > > device_unregister(&mci->dev); > > bus_unregister(&mci->bus); > > kfree(mci->bus.name); > > > And of course you all know that creating sysfs attributes via > 'device_create_file' opens all sort of funny race conditions, > especially when checking these attributes from udev ... Yes, we know that, but this subsystem has already lots of other attributes created via device_create_file(). It used to be a lot worse than that, as, on a very recent past (before Kernel 3.5), those attributes were created via sysfs_create_file(). There's not much that can be done to avoid it on this subsystem. > > Please consider adding a default attribute which return '-EINVAL' or > somesuch when the function pointers are not set. > But _not_ adding it via device_create_file(). That's evil. This thread started with Felipe's complain about it returning -ENOSYS ;) when this feature is not supported. Regards, Mauro ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" 2013-02-19 14:14 ` Mauro Carvalho Chehab @ 2013-02-19 14:19 ` Felipe Balbi 0 siblings, 0 replies; 57+ messages in thread From: Felipe Balbi @ 2013-02-19 14:19 UTC (permalink / raw) To: Mauro Carvalho Chehab Cc: Hannes Reinecke, Borislav Petkov, Felipe Balbi, Greg KH, Linux Kernel Mailing List, Steven Rostedt, Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem, netdev, Doug Thompson, linux-edac, rjw, linux-pm [-- Attachment #1: Type: text/plain, Size: 513 bytes --] Hi, On Tue, Feb 19, 2013 at 11:14:40AM -0300, Mauro Carvalho Chehab wrote: > > Please consider adding a default attribute which return '-EINVAL' or > > somesuch when the function pointers are not set. > > But _not_ adding it via device_create_file(). That's evil. > > This thread started with Felipe's complain about it returning -ENOSYS ;) > when this feature is not supported. I was complaining about a file with read permission not being really readable which is a fair bug IMHO. -- balbi [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" @ 2013-02-19 14:19 ` Felipe Balbi 0 siblings, 0 replies; 57+ messages in thread From: Felipe Balbi @ 2013-02-19 14:19 UTC (permalink / raw) To: Mauro Carvalho Chehab Cc: Hannes Reinecke, Borislav Petkov, Felipe Balbi, Greg KH, Linux Kernel Mailing List, Steven Rostedt, Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem, netdev, Doug Thompson, linux-edac, rjw, linux-pm [-- Attachment #1: Type: text/plain, Size: 513 bytes --] Hi, On Tue, Feb 19, 2013 at 11:14:40AM -0300, Mauro Carvalho Chehab wrote: > > Please consider adding a default attribute which return '-EINVAL' or > > somesuch when the function pointers are not set. > > But _not_ adding it via device_create_file(). That's evil. > > This thread started with Felipe's complain about it returning -ENOSYS ;) > when this feature is not supported. I was complaining about a file with read permission not being really readable which is a fair bug IMHO. -- balbi [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" 2013-02-19 13:50 ` Borislav Petkov 2013-02-19 13:58 ` Hannes Reinecke @ 2013-02-19 14:35 ` Mauro Carvalho Chehab 2013-02-19 14:50 ` Borislav Petkov 2013-02-19 14:53 ` Felipe Balbi 1 sibling, 2 replies; 57+ messages in thread From: Mauro Carvalho Chehab @ 2013-02-19 14:35 UTC (permalink / raw) To: Borislav Petkov Cc: Felipe Balbi, Greg KH, Linux Kernel Mailing List, Steven Rostedt, Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem, netdev, Doug Thompson, linux-edac, rjw, linux-pm Em Tue, 19 Feb 2013 14:50:56 +0100 Borislav Petkov <bp@alien8.de> escreveu: > On Tue, Feb 19, 2013 at 03:38:09PM +0200, Felipe Balbi wrote: > > because changing the permission will cause the same issue: > > Actually, I take that back. Mauro's patch will already create the file > anyway: > > if (mci->set_sdram_scrub_rate || mci->get_sdram_scrub_rate) > > Adjusting the permissions is simply the last missing piece to this patch > to make the interface to userspace 100% coherent. That's covers everything but Hannes arguments. I don't think that adding just one more device_create_file() on a driver that creates dozens (or hundreds) of sys nodes, depending on the number of DIMMS on the system would make it any worse. Regards, Mauro [PATCH EDAC] edac: only create sdram_scrub_rate where supported Currently, sdram_scrub_rate sysfs node is created even if the device doesn't support get/set the scub rate. Change the logic to only create this device node when the operation is supported. Reported-by: Felipe Balbi <balbi@ti.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com> diff --git a/drivers/edac/edac_mc_sysfs.c b/drivers/edac/edac_mc_sysfs.c index 9c58da6..4f4b613 100644 --- a/drivers/edac/edac_mc_sysfs.c +++ b/drivers/edac/edac_mc_sysfs.c @@ -7,7 +7,7 @@ * * Written Doug Thompson <norsk5@xmission.com> www.softwarebitmaker.com * - * (c) 2012 - Mauro Carvalho Chehab <mchehab@redhat.com> + * (c) 2012-2013 - Mauro Carvalho Chehab <mchehab@redhat.com> * The entire API were re-written, and ported to use struct device * */ @@ -681,9 +681,6 @@ static ssize_t mci_sdram_scrub_rate_store(struct device *dev, unsigned long bandwidth = 0; int new_bw = 0; - if (!mci->set_sdram_scrub_rate) - return -ENODEV; - if (strict_strtoul(data, 10, &bandwidth) < 0) return -EINVAL; @@ -707,9 +704,6 @@ static ssize_t mci_sdram_scrub_rate_show(struct device *dev, struct mem_ctl_info *mci = to_mci(dev); int bandwidth = 0; - if (!mci->get_sdram_scrub_rate) - return -ENODEV; - bandwidth = mci->get_sdram_scrub_rate(mci); if (bandwidth < 0) { edac_printk(KERN_DEBUG, EDAC_MC, "Error reading scrub rate\n"); @@ -870,8 +864,7 @@ DEVICE_ATTR(ce_count, S_IRUGO, mci_ce_count_show, NULL); DEVICE_ATTR(max_location, S_IRUGO, mci_max_location_show, NULL); /* memory scrubber attribute file */ -DEVICE_ATTR(sdram_scrub_rate, S_IRUGO | S_IWUSR, mci_sdram_scrub_rate_show, - mci_sdram_scrub_rate_store); +DEVICE_ATTR(sdram_scrub_rate, 0, NULL, NULL); static struct attribute *mci_attrs[] = { &dev_attr_reset_counters.attr, @@ -882,7 +875,6 @@ static struct attribute *mci_attrs[] = { &dev_attr_ce_noinfo_count.attr, &dev_attr_ue_count.attr, &dev_attr_ce_count.attr, - &dev_attr_sdram_scrub_rate.attr, &dev_attr_max_location.attr, NULL }; @@ -1017,6 +1009,22 @@ int edac_create_sysfs_mci_device(struct mem_ctl_info *mci) return err; } + if (mci->set_sdram_scrub_rate || mci->get_sdram_scrub_rate) { + if (mci->get_sdram_scrub_rate) { + dev_attr_sdram_scrub_rate.attr.mode |= S_IRUGO; + dev_attr_sdram_scrub_rate.show = &mci_sdram_scrub_rate_show; + } + if (mci->set_sdram_scrub_rate) { + dev_attr_sdram_scrub_rate.attr.mode |= S_IWUSR; + dev_attr_sdram_scrub_rate.store = &mci_sdram_scrub_rate_store; + } + err = device_create_file(&mci->dev, + &dev_attr_sdram_scrub_rate); + if (err) { + edac_dbg(1, "failure: create sdram_scrub_rate\n"); + goto fail2; + } + } /* * Create the dimm/rank devices */ @@ -1061,6 +1069,7 @@ fail: continue; device_unregister(&dimm->dev); } +fail2: device_unregister(&mci->dev); bus_unregister(&mci->bus); kfree(mci->bus.name); -- Cheers, Mauro ^ permalink raw reply related [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" 2013-02-19 14:35 ` Mauro Carvalho Chehab @ 2013-02-19 14:50 ` Borislav Petkov 2013-02-19 14:53 ` Felipe Balbi 1 sibling, 0 replies; 57+ messages in thread From: Borislav Petkov @ 2013-02-19 14:50 UTC (permalink / raw) To: Mauro Carvalho Chehab Cc: Felipe Balbi, Greg KH, Linux Kernel Mailing List, Steven Rostedt, Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem, netdev, Doug Thompson, linux-edac, rjw, linux-pm On Tue, Feb 19, 2013 at 11:35:21AM -0300, Mauro Carvalho Chehab wrote: > That's covers everything but Hannes arguments. I don't think that > adding just one more device_create_file() on a driver that creates > dozens (or hundreds) of sys nodes, depending on the number of DIMMS > on the system would make it any worse. Right, those attributes are created once during EDAC core init and we haven't seen any issues so far so let's not address this just yet but make a mental note about the race condition possibility. > [PATCH EDAC] edac: only create sdram_scrub_rate where supported > > Currently, sdram_scrub_rate sysfs node is created even if the device > doesn't support get/set the scub rate. Change the logic to only > create this device node when the operation is supported. > > Reported-by: Felipe Balbi <balbi@ti.com> > Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com> Acked-by: Borislav Petkov <bp@suse.de> -- Regards/Gruss, Boris. Sent from a fat crate under my desk. Formatting is fine. -- ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" 2013-02-19 14:35 ` Mauro Carvalho Chehab @ 2013-02-19 14:53 ` Felipe Balbi 2013-02-19 14:53 ` Felipe Balbi 1 sibling, 0 replies; 57+ messages in thread From: Felipe Balbi @ 2013-02-19 14:53 UTC (permalink / raw) To: Mauro Carvalho Chehab Cc: Borislav Petkov, Felipe Balbi, Greg KH, Linux Kernel Mailing List, Steven Rostedt, Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem, netdev, Doug Thompson, linux-edac, rjw, linux-pm [-- Attachment #1: Type: text/plain, Size: 1343 bytes --] On Tue, Feb 19, 2013 at 11:35:21AM -0300, Mauro Carvalho Chehab wrote: > Em Tue, 19 Feb 2013 14:50:56 +0100 > Borislav Petkov <bp@alien8.de> escreveu: > > > On Tue, Feb 19, 2013 at 03:38:09PM +0200, Felipe Balbi wrote: > > > because changing the permission will cause the same issue: > > > > Actually, I take that back. Mauro's patch will already create the file > > anyway: > > > > if (mci->set_sdram_scrub_rate || mci->get_sdram_scrub_rate) > > > > Adjusting the permissions is simply the last missing piece to this patch > > to make the interface to userspace 100% coherent. > > That's covers everything but Hannes arguments. I don't think that > adding just one more device_create_file() on a driver that creates > dozens (or hundreds) of sys nodes, depending on the number of DIMMS > on the system would make it any worse. > > Regards, > Mauro > > [PATCH EDAC] edac: only create sdram_scrub_rate where supported > > Currently, sdram_scrub_rate sysfs node is created even if the device > doesn't support get/set the scub rate. Change the logic to only > create this device node when the operation is supported. > > Reported-by: Felipe Balbi <balbi@ti.com> > Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com> looks alright to me: Reviewed-by: Felipe Balbi <balbi@ti.com> -- balbi [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" @ 2013-02-19 14:53 ` Felipe Balbi 0 siblings, 0 replies; 57+ messages in thread From: Felipe Balbi @ 2013-02-19 14:53 UTC (permalink / raw) To: Mauro Carvalho Chehab Cc: Borislav Petkov, Felipe Balbi, Greg KH, Linux Kernel Mailing List, Steven Rostedt, Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem, netdev, Doug Thompson, linux-edac, rjw, linux-pm [-- Attachment #1: Type: text/plain, Size: 1343 bytes --] On Tue, Feb 19, 2013 at 11:35:21AM -0300, Mauro Carvalho Chehab wrote: > Em Tue, 19 Feb 2013 14:50:56 +0100 > Borislav Petkov <bp@alien8.de> escreveu: > > > On Tue, Feb 19, 2013 at 03:38:09PM +0200, Felipe Balbi wrote: > > > because changing the permission will cause the same issue: > > > > Actually, I take that back. Mauro's patch will already create the file > > anyway: > > > > if (mci->set_sdram_scrub_rate || mci->get_sdram_scrub_rate) > > > > Adjusting the permissions is simply the last missing piece to this patch > > to make the interface to userspace 100% coherent. > > That's covers everything but Hannes arguments. I don't think that > adding just one more device_create_file() on a driver that creates > dozens (or hundreds) of sys nodes, depending on the number of DIMMS > on the system would make it any worse. > > Regards, > Mauro > > [PATCH EDAC] edac: only create sdram_scrub_rate where supported > > Currently, sdram_scrub_rate sysfs node is created even if the device > doesn't support get/set the scub rate. Change the logic to only > create this device node when the operation is supported. > > Reported-by: Felipe Balbi <balbi@ti.com> > Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com> looks alright to me: Reviewed-by: Felipe Balbi <balbi@ti.com> -- balbi [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" 2013-02-19 13:06 ` Borislav Petkov 2013-02-19 13:15 ` Felipe Balbi @ 2013-02-19 13:42 ` Mauro Carvalho Chehab 1 sibling, 0 replies; 57+ messages in thread From: Mauro Carvalho Chehab @ 2013-02-19 13:42 UTC (permalink / raw) To: Borislav Petkov Cc: balbi, Greg KH, Linux Kernel Mailing List, Steven Rostedt, Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem, netdev, Doug Thompson, linux-edac, rjw, linux-pm Em Tue, 19 Feb 2013 14:06:26 +0100 Borislav Petkov <bp@alien8.de> escreveu: > > No, on both cases, open() will return an error (-ENOENT against -EPERM). > > What if it is a shell script doing: > > cat /sys/devices/system/edac/mc/mc0/sdram_scrub_rate > > or similar? Well, cat will return "1" if an error is found, no matter what error happened. With an existing file (-ENOSYS): $ cat /sys/devices/system/edac/mc/mc0/sdram_scrub_rate; echo $? cat: /sys/devices/system/edac/mc/mc0/sdram_scrub_rate: No such device 1 When the file doesn't exist (-ENOENT): $ cat /sys/devices/system/edac/mc/mc0/sdram_scrub_rate_not_exist; echo $? cat: /sys/devices/system/edac/mc/mc0/sdram_scrub_rate_not_exist: No such file or directory 1 When permission doesn't match (-EPERM): $ cat /sys/devices/system/cpu/probe; echo $? cat: /sys/devices/system/cpu/probe: Permission denied 1 When everything is ok, it will return 0 $ cat /sys/devices/system/edac/mc/mc0/ce_count; echo $? >/dev/null 0 A script ready to handle -ENOSYS would be doing, instead: RATE=$(cat /sys/devices/system/edac/mc/mc0/ce_count 2>/dev/null) if [ "$?" == "0" ]; then echo "Scrub rate: $RATE"; fi So, a bash script won't notice any difference. The only difference will be noticed if the script is written on some other language and the script is dumb enough to assume success if the errno is different than -ENOSYS. -- Cheers, Mauro ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" 2013-02-18 18:46 ` Felipe Balbi @ 2013-02-18 21:48 ` Alan Stern -1 siblings, 0 replies; 57+ messages in thread From: Alan Stern @ 2013-02-18 21:48 UTC (permalink / raw) To: Felipe Balbi Cc: Greg KH, Linux Kernel Mailing List, Steven Rostedt, Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem, netdev, Doug Thompson, linux-edac, rjw, linux-pm On Mon, 18 Feb 2013, Felipe Balbi wrote: > Hi, On Mon, Feb 18, 2013 at 09:49:16AM -0800, Greg KH wrote: > > > Input/output error - /sys/devices/cpu/power/autosuspend_delay_ms > > > > The issue with this file is, if the power.use_autosuspend flag is not > > set for the device, then it can't be read or written to. This flag > > changes dynamically with the system state > > (__pm_runtime_use_autosuspend() can change it), so we can't just not > > show the file if the flag is not set properly, sorry. > > > > So the "error" is correct here, as is the 0644 file value. > > hmm... we could create the file at pm_runtime_enable() time and remove > it on pm_runtime_disable() time, no ? Addin Rafael to Cc In theory this could be done, although the times would be when runtime autosuspend is turned on or off, not when pm_runtime_enable is called. Alan Stern ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" @ 2013-02-18 21:48 ` Alan Stern 0 siblings, 0 replies; 57+ messages in thread From: Alan Stern @ 2013-02-18 21:48 UTC (permalink / raw) To: Felipe Balbi Cc: Greg KH, Linux Kernel Mailing List, Steven Rostedt, Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem, netdev, Doug Thompson, linux-edac, rjw, linux-pm On Mon, 18 Feb 2013, Felipe Balbi wrote: > Hi, On Mon, Feb 18, 2013 at 09:49:16AM -0800, Greg KH wrote: > > > Input/output error - /sys/devices/cpu/power/autosuspend_delay_ms > > > > The issue with this file is, if the power.use_autosuspend flag is not > > set for the device, then it can't be read or written to. This flag > > changes dynamically with the system state > > (__pm_runtime_use_autosuspend() can change it), so we can't just not > > show the file if the flag is not set properly, sorry. > > > > So the "error" is correct here, as is the 0644 file value. > > hmm... we could create the file at pm_runtime_enable() time and remove > it on pm_runtime_disable() time, no ? Addin Rafael to Cc In theory this could be done, although the times would be when runtime autosuspend is turned on or off, not when pm_runtime_enable is called. Alan Stern ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" 2013-02-18 21:48 ` Alan Stern @ 2013-02-18 21:57 ` Felipe Balbi -1 siblings, 0 replies; 57+ messages in thread From: Felipe Balbi @ 2013-02-18 21:57 UTC (permalink / raw) To: Alan Stern Cc: Felipe Balbi, Greg KH, Linux Kernel Mailing List, Steven Rostedt, Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem, netdev, Doug Thompson, linux-edac, rjw, linux-pm [-- Attachment #1: Type: text/plain, Size: 5465 bytes --] On Mon, Feb 18, 2013 at 04:48:06PM -0500, Alan Stern wrote: > On Mon, 18 Feb 2013, Felipe Balbi wrote: > > > Hi, On Mon, Feb 18, 2013 at 09:49:16AM -0800, Greg KH wrote: > > > > Input/output error - /sys/devices/cpu/power/autosuspend_delay_ms > > > > > > The issue with this file is, if the power.use_autosuspend flag is not > > > set for the device, then it can't be read or written to. This flag > > > changes dynamically with the system state > > > (__pm_runtime_use_autosuspend() can change it), so we can't just not > > > show the file if the flag is not set properly, sorry. > > > > > > So the "error" is correct here, as is the 0644 file value. > > > > hmm... we could create the file at pm_runtime_enable() time and remove > > it on pm_runtime_disable() time, no ? Addin Rafael to Cc > > In theory this could be done, although the times would be when runtime > autosuspend is turned on or off, not when pm_runtime_enable is called. Right, I got that after replying. Here's a patch I plan to test tomorrow: 8<------------------------ cut here ---------------------------- From 2cdeeb483383490946cc98727a167843c40d7d27 Mon Sep 17 00:00:00 2001 From: Felipe Balbi <balbi@ti.com> Date: Mon, 18 Feb 2013 21:20:28 +0200 Subject: [PATCH] base: power: create autosuspend_delay_ms from pm_runtime_use_autosuspend() this patch moves the creation of autosuspend_delay_ms sysfs file to pm_runtime_use_autosuspend() and, conversely, its deletion to pm_runtime_dont_use_autosuspend. The idea behind this patch is such that the file in question is only readable after pm_runtime_use_autosuspend() has been called for a particular device, so we might as well move the creation of the file to that place. Signed-off-by: Felipe Balbi <balbi@ti.com> --- drivers/base/power/power.h | 4 ++++ drivers/base/power/runtime.c | 6 ++++++ drivers/base/power/sysfs.c | 25 ++++++++++++++++++++++++- 3 files changed, 34 insertions(+), 1 deletion(-) diff --git a/drivers/base/power/power.h b/drivers/base/power/power.h index b16686a..3822b94 100644 --- a/drivers/base/power/power.h +++ b/drivers/base/power/power.h @@ -90,6 +90,8 @@ static inline void device_pm_init(struct device *dev) extern int dpm_sysfs_add(struct device *dev); extern void dpm_sysfs_remove(struct device *dev); +extern int dpm_autosuspend_sysfs_add(struct device *dev); +extern void dpm_autosuspend_sysfs_remove(struct device *dev); extern void rpm_sysfs_remove(struct device *dev); extern int wakeup_sysfs_add(struct device *dev); extern void wakeup_sysfs_remove(struct device *dev); @@ -102,6 +104,8 @@ extern void pm_qos_sysfs_remove_flags(struct device *dev); static inline int dpm_sysfs_add(struct device *dev) { return 0; } static inline void dpm_sysfs_remove(struct device *dev) {} +static inline int dpm_autosuspend_sysfs_add(struct device *dev) { return 0; } +static inline void dpm_autosuspend_sysfs_remove(struct device *dev) {} static inline void rpm_sysfs_remove(struct device *dev) {} static inline int wakeup_sysfs_add(struct device *dev) { return 0; } static inline void wakeup_sysfs_remove(struct device *dev) {} diff --git a/drivers/base/power/runtime.c b/drivers/base/power/runtime.c index 3148b10..a162ba5 100644 --- a/drivers/base/power/runtime.c +++ b/drivers/base/power/runtime.c @@ -1266,6 +1266,12 @@ void __pm_runtime_use_autosuspend(struct device *dev, bool use) old_use = dev->power.use_autosuspend; dev->power.use_autosuspend = use; update_autosuspend(dev, old_delay, old_use); + + if (use) + dpm_autosuspend_sysfs_add(dev); + else + dpm_autosuspend_sysfs_remove(dev); + spin_unlock_irq(&dev->power.lock); } EXPORT_SYMBOL_GPL(__pm_runtime_use_autosuspend); diff --git a/drivers/base/power/sysfs.c b/drivers/base/power/sysfs.c index 50d16e3..ef2a41c 100644 --- a/drivers/base/power/sysfs.c +++ b/drivers/base/power/sysfs.c @@ -609,15 +609,26 @@ static struct attribute *runtime_attrs[] = { &dev_attr_control.attr, &dev_attr_runtime_suspended_time.attr, &dev_attr_runtime_active_time.attr, - &dev_attr_autosuspend_delay_ms.attr, #endif /* CONFIG_PM_RUNTIME */ NULL, }; + static struct attribute_group pm_runtime_attr_group = { .name = power_group_name, .attrs = runtime_attrs, }; +static struct attribute *runtime_autosuspend_attrs[] = { +#ifdef CONFIG_PM_RUNTIME + &dev_attr_autosuspend_delay_ms.attr, +#endif /* CONFIG_PM_RUNTIME */ +}; + +static struct attribute_group pm_runtime_autosuspend_attr_group = { + .name = power_group_name, + .attrs = runtime_autosuspend_attrs, +}; + static struct attribute *pm_qos_latency_attrs[] = { #ifdef CONFIG_PM_RUNTIME &dev_attr_pm_qos_resume_latency_us.attr, @@ -671,6 +682,12 @@ int dpm_sysfs_add(struct device *dev) return rc; } +int dpm_autosuspend_sysfs_add(struct device *dev) +{ + return sysfs_merge_group(&dev->kobj, + &pm_runtime_autosuspend_attr_group); +} + int wakeup_sysfs_add(struct device *dev) { return sysfs_merge_group(&dev->kobj, &pm_wakeup_attr_group); @@ -712,3 +729,9 @@ void dpm_sysfs_remove(struct device *dev) sysfs_unmerge_group(&dev->kobj, &pm_wakeup_attr_group); sysfs_remove_group(&dev->kobj, &pm_attr_group); } + +void dpm_autosuspend_sysfs_remove(struct device *dev) +{ + sysfs_unmerge_group(&dev->kobj, + &pm_runtime_autosuspend_attr_group); +} -- 1.8.1.rc1.5.g7e0651a -- balbi [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply related [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" @ 2013-02-18 21:57 ` Felipe Balbi 0 siblings, 0 replies; 57+ messages in thread From: Felipe Balbi @ 2013-02-18 21:57 UTC (permalink / raw) To: Alan Stern Cc: Felipe Balbi, Greg KH, Linux Kernel Mailing List, Steven Rostedt, Frederic Weisbecker, Ingo Molnar, JBottomley, linux-scsi, davem, netdev, Doug Thompson, linux-edac, rjw, linux-pm [-- Attachment #1: Type: text/plain, Size: 5465 bytes --] On Mon, Feb 18, 2013 at 04:48:06PM -0500, Alan Stern wrote: > On Mon, 18 Feb 2013, Felipe Balbi wrote: > > > Hi, On Mon, Feb 18, 2013 at 09:49:16AM -0800, Greg KH wrote: > > > > Input/output error - /sys/devices/cpu/power/autosuspend_delay_ms > > > > > > The issue with this file is, if the power.use_autosuspend flag is not > > > set for the device, then it can't be read or written to. This flag > > > changes dynamically with the system state > > > (__pm_runtime_use_autosuspend() can change it), so we can't just not > > > show the file if the flag is not set properly, sorry. > > > > > > So the "error" is correct here, as is the 0644 file value. > > > > hmm... we could create the file at pm_runtime_enable() time and remove > > it on pm_runtime_disable() time, no ? Addin Rafael to Cc > > In theory this could be done, although the times would be when runtime > autosuspend is turned on or off, not when pm_runtime_enable is called. Right, I got that after replying. Here's a patch I plan to test tomorrow: 8<------------------------ cut here ---------------------------- From 2cdeeb483383490946cc98727a167843c40d7d27 Mon Sep 17 00:00:00 2001 From: Felipe Balbi <balbi@ti.com> Date: Mon, 18 Feb 2013 21:20:28 +0200 Subject: [PATCH] base: power: create autosuspend_delay_ms from pm_runtime_use_autosuspend() this patch moves the creation of autosuspend_delay_ms sysfs file to pm_runtime_use_autosuspend() and, conversely, its deletion to pm_runtime_dont_use_autosuspend. The idea behind this patch is such that the file in question is only readable after pm_runtime_use_autosuspend() has been called for a particular device, so we might as well move the creation of the file to that place. Signed-off-by: Felipe Balbi <balbi@ti.com> --- drivers/base/power/power.h | 4 ++++ drivers/base/power/runtime.c | 6 ++++++ drivers/base/power/sysfs.c | 25 ++++++++++++++++++++++++- 3 files changed, 34 insertions(+), 1 deletion(-) diff --git a/drivers/base/power/power.h b/drivers/base/power/power.h index b16686a..3822b94 100644 --- a/drivers/base/power/power.h +++ b/drivers/base/power/power.h @@ -90,6 +90,8 @@ static inline void device_pm_init(struct device *dev) extern int dpm_sysfs_add(struct device *dev); extern void dpm_sysfs_remove(struct device *dev); +extern int dpm_autosuspend_sysfs_add(struct device *dev); +extern void dpm_autosuspend_sysfs_remove(struct device *dev); extern void rpm_sysfs_remove(struct device *dev); extern int wakeup_sysfs_add(struct device *dev); extern void wakeup_sysfs_remove(struct device *dev); @@ -102,6 +104,8 @@ extern void pm_qos_sysfs_remove_flags(struct device *dev); static inline int dpm_sysfs_add(struct device *dev) { return 0; } static inline void dpm_sysfs_remove(struct device *dev) {} +static inline int dpm_autosuspend_sysfs_add(struct device *dev) { return 0; } +static inline void dpm_autosuspend_sysfs_remove(struct device *dev) {} static inline void rpm_sysfs_remove(struct device *dev) {} static inline int wakeup_sysfs_add(struct device *dev) { return 0; } static inline void wakeup_sysfs_remove(struct device *dev) {} diff --git a/drivers/base/power/runtime.c b/drivers/base/power/runtime.c index 3148b10..a162ba5 100644 --- a/drivers/base/power/runtime.c +++ b/drivers/base/power/runtime.c @@ -1266,6 +1266,12 @@ void __pm_runtime_use_autosuspend(struct device *dev, bool use) old_use = dev->power.use_autosuspend; dev->power.use_autosuspend = use; update_autosuspend(dev, old_delay, old_use); + + if (use) + dpm_autosuspend_sysfs_add(dev); + else + dpm_autosuspend_sysfs_remove(dev); + spin_unlock_irq(&dev->power.lock); } EXPORT_SYMBOL_GPL(__pm_runtime_use_autosuspend); diff --git a/drivers/base/power/sysfs.c b/drivers/base/power/sysfs.c index 50d16e3..ef2a41c 100644 --- a/drivers/base/power/sysfs.c +++ b/drivers/base/power/sysfs.c @@ -609,15 +609,26 @@ static struct attribute *runtime_attrs[] = { &dev_attr_control.attr, &dev_attr_runtime_suspended_time.attr, &dev_attr_runtime_active_time.attr, - &dev_attr_autosuspend_delay_ms.attr, #endif /* CONFIG_PM_RUNTIME */ NULL, }; + static struct attribute_group pm_runtime_attr_group = { .name = power_group_name, .attrs = runtime_attrs, }; +static struct attribute *runtime_autosuspend_attrs[] = { +#ifdef CONFIG_PM_RUNTIME + &dev_attr_autosuspend_delay_ms.attr, +#endif /* CONFIG_PM_RUNTIME */ +}; + +static struct attribute_group pm_runtime_autosuspend_attr_group = { + .name = power_group_name, + .attrs = runtime_autosuspend_attrs, +}; + static struct attribute *pm_qos_latency_attrs[] = { #ifdef CONFIG_PM_RUNTIME &dev_attr_pm_qos_resume_latency_us.attr, @@ -671,6 +682,12 @@ int dpm_sysfs_add(struct device *dev) return rc; } +int dpm_autosuspend_sysfs_add(struct device *dev) +{ + return sysfs_merge_group(&dev->kobj, + &pm_runtime_autosuspend_attr_group); +} + int wakeup_sysfs_add(struct device *dev) { return sysfs_merge_group(&dev->kobj, &pm_wakeup_attr_group); @@ -712,3 +729,9 @@ void dpm_sysfs_remove(struct device *dev) sysfs_unmerge_group(&dev->kobj, &pm_wakeup_attr_group); sysfs_remove_group(&dev->kobj, &pm_attr_group); } + +void dpm_autosuspend_sysfs_remove(struct device *dev) +{ + sysfs_unmerge_group(&dev->kobj, + &pm_runtime_autosuspend_attr_group); +} -- 1.8.1.rc1.5.g7e0651a -- balbi [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply related [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" 2013-02-18 17:49 ` Greg KH 2013-02-18 18:46 ` Felipe Balbi @ 2013-02-19 7:41 ` Alexander Stein 2013-02-19 10:12 ` Felipe Balbi 1 sibling, 1 reply; 57+ messages in thread From: Alexander Stein @ 2013-02-19 7:41 UTC (permalink / raw) To: Greg KH; +Cc: Felipe Balbi, Linux Kernel Mailing List On Monday 18 February 2013 09:49:16, Greg KH wrote: > > Invalid argument - /sys/devices/virtual/net/lo/speed > > Invalid argument - /sys/devices/virtual/net/lo/duplex This is even true for ethernet devices which do not have a link currently or non-ethernet devices (e.g. CAN). > LANG=C cat /sys/class/net/enp1s8/speed > cat: /sys/class/net/enp1s8/speed: Invalid argument > ethtool enp1s8 | grep -A1 Speed > Speed: Unknown! > Duplex: Unknown! (255) > LANG=C cat /sys/class/net/can0/speed > cat: /sys/class/net/can0/speed: Invalid argument Regards, Alexander ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: SYSFS "errors" 2013-02-19 7:41 ` Alexander Stein @ 2013-02-19 10:12 ` Felipe Balbi 0 siblings, 0 replies; 57+ messages in thread From: Felipe Balbi @ 2013-02-19 10:12 UTC (permalink / raw) To: Alexander Stein; +Cc: Greg KH, Felipe Balbi, Linux Kernel Mailing List, netdev [-- Attachment #1: Type: text/plain, Size: 715 bytes --] +netdev On Tue, Feb 19, 2013 at 08:41:47AM +0100, Alexander Stein wrote: > On Monday 18 February 2013 09:49:16, Greg KH wrote: > > > Invalid argument - /sys/devices/virtual/net/lo/speed > > > Invalid argument - /sys/devices/virtual/net/lo/duplex > > This is even true for ethernet devices which do not have a link currently or non-ethernet devices (e.g. CAN). > > LANG=C cat /sys/class/net/enp1s8/speed > > cat: /sys/class/net/enp1s8/speed: Invalid argument > > ethtool enp1s8 | grep -A1 Speed > > Speed: Unknown! > > Duplex: Unknown! (255) > > LANG=C cat /sys/class/net/can0/speed > > cat: /sys/class/net/can0/speed: Invalid argument > > Regards, > Alexander > -- balbi [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 57+ messages in thread
end of thread, other threads:[~2013-02-19 14:53 UTC | newest] Thread overview: 57+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2013-02-18 15:33 SYSFS "errors" Felipe Balbi 2013-02-18 15:50 ` Greg KH 2013-02-18 15:52 ` Felipe Balbi 2013-02-18 17:13 ` Greg KH 2013-02-18 17:27 ` Felipe Balbi 2013-02-18 17:45 ` Borislav Petkov 2013-02-18 18:47 ` Felipe Balbi 2013-02-18 19:40 ` Borislav Petkov 2013-02-18 20:04 ` Felipe Balbi 2013-02-18 17:49 ` Greg KH 2013-02-18 18:46 ` Felipe Balbi 2013-02-18 18:46 ` Felipe Balbi 2013-02-18 19:46 ` Mauro Carvalho Chehab 2013-02-18 19:46 ` Mauro Carvalho Chehab 2013-02-18 20:05 ` Felipe Balbi 2013-02-18 20:05 ` Felipe Balbi 2013-02-18 21:47 ` Mauro Carvalho Chehab 2013-02-18 21:47 ` Mauro Carvalho Chehab 2013-02-18 21:54 ` Greg KH 2013-02-18 22:13 ` Borislav Petkov 2013-02-18 22:26 ` Greg KH 2013-02-18 22:44 ` Borislav Petkov 2013-02-19 10:03 ` Mauro Carvalho Chehab 2013-02-19 10:11 ` Felipe Balbi 2013-02-19 10:11 ` Felipe Balbi 2013-02-19 11:11 ` Mauro Carvalho Chehab 2013-02-19 11:11 ` Mauro Carvalho Chehab 2013-02-19 11:43 ` Borislav Petkov 2013-02-19 12:16 ` Mauro Carvalho Chehab 2013-02-19 12:35 ` Borislav Petkov 2013-02-19 12:46 ` Mauro Carvalho Chehab 2013-02-19 13:06 ` Borislav Petkov 2013-02-19 13:15 ` Felipe Balbi 2013-02-19 13:15 ` Felipe Balbi 2013-02-19 13:28 ` Borislav Petkov 2013-02-19 13:38 ` Felipe Balbi 2013-02-19 13:38 ` Felipe Balbi 2013-02-19 13:50 ` Mauro Carvalho Chehab 2013-02-19 13:50 ` Mauro Carvalho Chehab 2013-02-19 13:55 ` Borislav Petkov 2013-02-19 13:50 ` Borislav Petkov 2013-02-19 13:58 ` Hannes Reinecke 2013-02-19 14:10 ` Borislav Petkov 2013-02-19 14:14 ` Mauro Carvalho Chehab 2013-02-19 14:19 ` Felipe Balbi 2013-02-19 14:19 ` Felipe Balbi 2013-02-19 14:35 ` Mauro Carvalho Chehab 2013-02-19 14:50 ` Borislav Petkov 2013-02-19 14:53 ` Felipe Balbi 2013-02-19 14:53 ` Felipe Balbi 2013-02-19 13:42 ` Mauro Carvalho Chehab 2013-02-18 21:48 ` Alan Stern 2013-02-18 21:48 ` Alan Stern 2013-02-18 21:57 ` Felipe Balbi 2013-02-18 21:57 ` Felipe Balbi 2013-02-19 7:41 ` Alexander Stein 2013-02-19 10:12 ` Felipe Balbi
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.