linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* SYSFS "errors"
@ 2013-02-18 15:33 Felipe Balbi
  2013-02-18 15:50 ` Greg KH
  0 siblings, 1 reply; 44+ 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] 44+ 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; 44+ 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] 44+ 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; 44+ 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] 44+ 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; 44+ 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] 44+ 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; 44+ 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] 44+ 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; 44+ 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] 44+ 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; 44+ 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] 44+ messages in thread

* Re: SYSFS "errors"
  2013-02-18 17:49         ` Greg KH
@ 2013-02-18 18:46           ` Felipe Balbi
  2013-02-18 19:46             ` Mauro Carvalho Chehab
  2013-02-18 21:48             ` Alan Stern
  2013-02-19  7:41           ` Alexander Stein
  1 sibling, 2 replies; 44+ 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] 44+ 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; 44+ 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] 44+ 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; 44+ 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] 44+ messages in thread

* Re: SYSFS "errors"
  2013-02-18 18:46           ` Felipe Balbi
@ 2013-02-18 19:46             ` Mauro Carvalho Chehab
  2013-02-18 20:05               ` Felipe Balbi
  2013-02-18 21:48             ` Alan Stern
  1 sibling, 1 reply; 44+ 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] 44+ messages in thread

* Re: SYSFS "errors"
  2013-02-18 19:40             ` Borislav Petkov
@ 2013-02-18 20:04               ` Felipe Balbi
  0 siblings, 0 replies; 44+ 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] 44+ messages in thread

* Re: SYSFS "errors"
  2013-02-18 19:46             ` Mauro Carvalho Chehab
@ 2013-02-18 20:05               ` Felipe Balbi
  2013-02-18 21:47                 ` Mauro Carvalho Chehab
  0 siblings, 1 reply; 44+ 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] 44+ messages in thread

* Re: SYSFS "errors"
  2013-02-18 20:05               ` Felipe Balbi
@ 2013-02-18 21:47                 ` Mauro Carvalho Chehab
  2013-02-18 21:54                   ` Greg KH
  0 siblings, 1 reply; 44+ 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] 44+ messages in thread

* Re: SYSFS "errors"
  2013-02-18 18:46           ` Felipe Balbi
  2013-02-18 19:46             ` Mauro Carvalho Chehab
@ 2013-02-18 21:48             ` Alan Stern
  2013-02-18 21:57               ` Felipe Balbi
  1 sibling, 1 reply; 44+ 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] 44+ 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
  0 siblings, 1 reply; 44+ 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] 44+ messages in thread

* Re: SYSFS "errors"
  2013-02-18 21:48             ` Alan Stern
@ 2013-02-18 21:57               ` Felipe Balbi
  0 siblings, 0 replies; 44+ 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] 44+ 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; 44+ 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] 44+ 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; 44+ 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] 44+ 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; 44+ 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] 44+ 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; 44+ 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] 44+ 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; 44+ 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] 44+ messages in thread

* Re: SYSFS "errors"
  2013-02-19 10:03                           ` Mauro Carvalho Chehab
@ 2013-02-19 10:11                             ` Felipe Balbi
  2013-02-19 11:11                               ` Mauro Carvalho Chehab
  0 siblings, 1 reply; 44+ 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] 44+ messages in thread

* Re: SYSFS "errors"
  2013-02-19  7:41           ` Alexander Stein
@ 2013-02-19 10:12             ` Felipe Balbi
  0 siblings, 0 replies; 44+ 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] 44+ messages in thread

* Re: SYSFS "errors"
  2013-02-19 10:11                             ` Felipe Balbi
@ 2013-02-19 11:11                               ` Mauro Carvalho Chehab
  2013-02-19 11:43                                 ` Borislav Petkov
  0 siblings, 1 reply; 44+ 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] 44+ 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
  0 siblings, 1 reply; 44+ 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] 44+ 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; 44+ 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] 44+ 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; 44+ 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] 44+ 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; 44+ 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] 44+ 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; 44+ 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] 44+ messages in thread

* Re: SYSFS "errors"
  2013-02-19 13:06                                         ` Borislav Petkov
@ 2013-02-19 13:15                                           ` Felipe Balbi
  2013-02-19 13:28                                             ` Borislav Petkov
  2013-02-19 13:42                                           ` Mauro Carvalho Chehab
  1 sibling, 1 reply; 44+ 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] 44+ 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
  0 siblings, 1 reply; 44+ 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] 44+ messages in thread

* Re: SYSFS "errors"
  2013-02-19 13:28                                             ` Borislav Petkov
@ 2013-02-19 13:38                                               ` Felipe Balbi
  2013-02-19 13:50                                                 ` Mauro Carvalho Chehab
  2013-02-19 13:50                                                 ` Borislav Petkov
  0 siblings, 2 replies; 44+ 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] 44+ 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; 44+ 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] 44+ messages in thread

* Re: SYSFS "errors"
  2013-02-19 13:38                                               ` Felipe Balbi
@ 2013-02-19 13:50                                                 ` Mauro Carvalho Chehab
  2013-02-19 13:55                                                   ` Borislav Petkov
  2013-02-19 13:50                                                 ` Borislav Petkov
  1 sibling, 1 reply; 44+ 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] 44+ messages in thread

* Re: SYSFS "errors"
  2013-02-19 13:38                                               ` Felipe Balbi
  2013-02-19 13:50                                                 ` Mauro Carvalho Chehab
@ 2013-02-19 13:50                                                 ` Borislav Petkov
  2013-02-19 13:58                                                   ` Hannes Reinecke
  2013-02-19 14:35                                                   ` Mauro Carvalho Chehab
  1 sibling, 2 replies; 44+ 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] 44+ messages in thread

* Re: SYSFS "errors"
  2013-02-19 13:50                                                 ` Mauro Carvalho Chehab
@ 2013-02-19 13:55                                                   ` Borislav Petkov
  0 siblings, 0 replies; 44+ 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] 44+ 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; 44+ 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] 44+ 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; 44+ 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] 44+ 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; 44+ 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] 44+ 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; 44+ 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] 44+ 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; 44+ 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] 44+ 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; 44+ 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] 44+ 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; 44+ 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] 44+ messages in thread

end of thread, other threads:[~2013-02-19 14:53 UTC | newest]

Thread overview: 44+ 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 19:46             ` Mauro Carvalho Chehab
2013-02-18 20:05               ` Felipe Balbi
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 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:28                                             ` Borislav Petkov
2013-02-19 13:38                                               ` Felipe Balbi
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:35                                                   ` Mauro Carvalho Chehab
2013-02-19 14:50                                                     ` Borislav Petkov
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:57               ` Felipe Balbi
2013-02-19  7:41           ` Alexander Stein
2013-02-19 10:12             ` Felipe Balbi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).