-
Notifications
You must be signed in to change notification settings - Fork 102
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
driver core: Expose device link details in sysfs
It's helpful to be able to look at device link details from sysfs. So, expose it in sysfs. Say device-A is supplier of device-B. These are the additional files this patch would create: /sys/class/devlink/device-A:device-B/ auto_remove_on consumer/ -> .../device-B/ runtime_pm status supplier/ -> .../device-A/ sync_state_only /sys/devices/.../device-A/ consumer:device-B/ -> /sys/class/devlink/device-A:device-B/ /sys/devices/.../device-B/ supplier:device-A/ -> /sys/class/devlink/device-A:device-B/ That way: To get a list of all the device link in the system: ls /sys/class/devlink/ To get the consumer names and links of a device: ls -d /sys/devices/.../device-X/consumer:* To get the supplier names and links of a device: ls -d /sys/devices/.../device-X/supplier:* Signed-off-by: Saravana Kannan <saravanak@google.com> Link: https://lore.kernel.org/r/20200521191800.136035-2-saravanak@google.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
- Loading branch information
Showing
5 changed files
with
375 additions
and
36 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,126 @@ | ||
What: /sys/class/devlink/.../ | ||
Date: May 2020 | ||
Contact: Saravana Kannan <saravanak@google.com> | ||
Description: | ||
Provide a place in sysfs for the device link objects in the | ||
kernel at any given time. The name of a device link directory, | ||
denoted as ... above, is of the form <supplier>:<consumer> | ||
where <supplier> is the supplier device name and <consumer> is | ||
the consumer device name. | ||
|
||
What: /sys/class/devlink/.../auto_remove_on | ||
Date: May 2020 | ||
Contact: Saravana Kannan <saravanak@google.com> | ||
Description: | ||
This file indicates if the device link will ever be | ||
automatically removed by the driver core when the consumer and | ||
supplier devices themselves are still present. | ||
|
||
This will be one of the following strings: | ||
|
||
'consumer unbind' | ||
'supplier unbind' | ||
'never' | ||
|
||
'consumer unbind' means the device link will be removed when | ||
the consumer's driver is unbound from the consumer device. | ||
|
||
'supplier unbind' means the device link will be removed when | ||
the supplier's driver is unbound from the supplier device. | ||
|
||
'never' means the device link will not be automatically removed | ||
when as long as the supplier and consumer devices themselves | ||
are still present. | ||
|
||
What: /sys/class/devlink/.../consumer | ||
Date: May 2020 | ||
Contact: Saravana Kannan <saravanak@google.com> | ||
Description: | ||
This file is a symlink to the consumer device's sysfs directory. | ||
|
||
What: /sys/class/devlink/.../runtime_pm | ||
Date: May 2020 | ||
Contact: Saravana Kannan <saravanak@google.com> | ||
Description: | ||
This file indicates if the device link has any impact on the | ||
runtime power management behavior of the consumer and supplier | ||
devices. For example: Making sure the supplier doesn't enter | ||
runtime suspend while the consumer is active. | ||
|
||
This will be one of the following strings: | ||
|
||
'0' - Does not affect runtime power management | ||
'1' - Affects runtime power management | ||
|
||
What: /sys/class/devlink/.../status | ||
Date: May 2020 | ||
Contact: Saravana Kannan <saravanak@google.com> | ||
Description: | ||
This file indicates the status of the device link. The status | ||
of a device link is affected by whether the supplier and | ||
consumer devices have been bound to their corresponding | ||
drivers. The status of a device link also affects the binding | ||
and unbinding of the supplier and consumer devices with their | ||
drivers and also affects whether the software state of the | ||
supplier device is synced with the hardware state of the | ||
supplier device after boot up. | ||
See also: sysfs-devices-state_synced. | ||
|
||
This will be one of the following strings: | ||
|
||
'not tracked' | ||
'dormant' | ||
'available' | ||
'consumer probing' | ||
'active' | ||
'supplier unbinding' | ||
'unknown' | ||
|
||
'not tracked' means this device link does not track the status | ||
and has no impact on the binding, unbinding and syncing the | ||
hardware and software device state. | ||
|
||
'dormant' means the supplier and the consumer devices have not | ||
bound to their driver. | ||
|
||
'available' means the supplier has bound to its driver and is | ||
available to supply resources to the consumer device. | ||
|
||
'consumer probing' means the consumer device is currently | ||
trying to bind to its driver. | ||
|
||
'active' means the supplier and consumer devices have both | ||
bound successfully to their drivers. | ||
|
||
'supplier unbinding' means the supplier devices is currently in | ||
the process of unbinding from its driver. | ||
|
||
'unknown' means the state of the device link is not any of the | ||
above. If this is ever the value, there's a bug in the kernel. | ||
|
||
What: /sys/class/devlink/.../supplier | ||
Date: May 2020 | ||
Contact: Saravana Kannan <saravanak@google.com> | ||
Description: | ||
This file is a symlink to the supplier device's sysfs directory. | ||
|
||
What: /sys/class/devlink/.../sync_state_only | ||
Date: May 2020 | ||
Contact: Saravana Kannan <saravanak@google.com> | ||
Description: | ||
This file indicates if the device link is limited to only | ||
affecting the syncing of the hardware and software state of the | ||
supplier device. | ||
|
||
This will be one of the following strings: | ||
|
||
'0' | ||
'1' - Affects runtime power management | ||
|
||
'0' means the device link can affect other device behaviors | ||
like binding/unbinding, suspend/resume, runtime power | ||
management, etc. | ||
|
||
'1' means the device link will only affect the syncing of | ||
hardware and software state of the supplier device after boot | ||
up and doesn't not affect other behaviors of the devices. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
What: /sys/devices/.../consumer:<consumer> | ||
Date: May 2020 | ||
Contact: Saravana Kannan <saravanak@google.com> | ||
Description: | ||
The /sys/devices/.../consumer:<consumer> are symlinks to device | ||
links where this device is the supplier. <consumer> denotes the | ||
name of the consumer in that device link. There can be zero or | ||
more of these symlinks for a given device. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
What: /sys/devices/.../supplier:<supplier> | ||
Date: May 2020 | ||
Contact: Saravana Kannan <saravanak@google.com> | ||
Description: | ||
The /sys/devices/.../supplier:<supplier> are symlinks to device | ||
links where this device is the consumer. <supplier> denotes the | ||
name of the supplier in that device link. There can be zero or | ||
more of these symlinks for a given device. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.