linux-imx/Documentation/ABI/testing/sysfs-class-devlink
Saravana Kannan e020ff611b driver core: Fix device link device name collision
The device link device's name was of the form:
<supplier-dev-name>--<consumer-dev-name>

This can cause name collision as reported here [1] as device names are
not globally unique. Since device names have to be unique within the
bus/class, add the bus/class name as a prefix to the device names used to
construct the device link device name.

So the devuce link device's name will be of the form:
<supplier-bus-name>:<supplier-dev-name>--<consumer-bus-name>:<consumer-dev-name>

[1] - https://lore.kernel.org/lkml/20201229033440.32142-1-michael@walle.cc/

Fixes: 287905e68d ("driver core: Expose device link details in sysfs")
Cc: stable@vger.kernel.org
Reported-by: Michael Walle <michael@walle.cc>
Tested-by: Michael Walle <michael@walle.cc>
Signed-off-by: Saravana Kannan <saravanak@google.com>
Link: https://lore.kernel.org/r/20210110175408.1465657-1-saravanak@google.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-01-21 20:12:40 +01:00

4.4 KiB

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 -- where is the supplier bus:device name and is the consumer bus: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.