Commit dd27111e authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull driver core updates from Greg KH:
 "Here is the "big" set of changes to the driver core, and some drivers
  using the changes, for 5.9-rc1.

  "Biggest" thing in here is the device link exposure in sysfs, to help
  to tame the madness that is SoC device tree representations and driver
  interactions with it.

  Other stuff in here that is interesting is:

   - device probe log helper so that drivers can report problems in a
     unified way easier.

   - devres functions added

   - DEVICE_ATTR_ADMIN_* macro added to make it harder to write
     incorrect sysfs file permissions

   - documentation cleanups

   - ability for debugfs to be present in the kernel, yet not exposed to
     userspace. Needed for systems that want it enabled, but do not
     trust users, so they can still use some kernel functions that were
     otherwise disabled.

   - other minor fixes and cleanups

  The patches outside of drivers/base/ all have acks from the respective
  subsystem maintainers to go through this tree instead of theirs.

  All of these have been in linux-next with no reported issues"

* tag 'driver-core-5.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: (39 commits)
  drm/bridge: lvds-codec: simplify error handling
  drm/bridge/sii8620: fix resource acquisition error handling
  driver core: add deferring probe reason to devices_deferred property
  driver core: add device probe log helper
  driver core: Avoid binding drivers to dead devices
  Revert "test_firmware: Test platform fw loading on non-EFI systems"
  firmware_loader: EFI firmware loader must handle pre-allocated buffer
  selftest/firmware: Add selftest timeout in settings
  test_firmware: Test platform fw loading on non-EFI systems
  driver core: Change delimiter in devlink device's name to "--"
  debugfs: Add access restriction option
  tracefs: Remove unnecessary debug_fs checks.
  driver core: Fix probe_count imbalance in really_probe()
  kobject: remove unused KOBJ_MAX action
  driver core: Fix sleeping in invalid context during device link deletion
  driver core: Add waiting_for_supplier sysfs file for devices
  driver core: Add state_synced sysfs file for devices that support it
  driver core: Expose device link details in sysfs
  driver core: Drop mention of obsolete bus rwsem from kernel-doc
  debugfs: file: Remove unnecessary cast in kfree()
  ...
parents 1785d116 76acb5ee
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -18,3 +18,13 @@ Description:
		devices to opt-out of driver binding using a driver_override
		name such as "none".  Only a single driver may be specified in
		the override, there is no support for parsing delimiters.

What:		/sys/bus/platform/devices/.../numa_node
Date:		June 2020
Contact:	Barry Song <song.bao.hua@hisilicon.com>
Description:
		This file contains the NUMA node to which the platform device
		is attached. It won't be visible if the node is unknown. The
		value comes from an ACPI _PXM method or a similar firmware
		source. Initial users for this file would be devices like
		arm smmu which are populated by arm64 acpi_iort.
+126 −0
Original line number Diff line number Diff line
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.
+8 −0
Original line number Diff line number Diff line
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.
+24 −0
Original line number Diff line number Diff line
What:		/sys/devices/.../state_synced
Date:		May 2020
Contact:	Saravana Kannan <saravanak@google.com>
Description:
		The /sys/devices/.../state_synced attribute is only present for
		devices whose bus types or driver provides the .sync_state()
		callback. The number read from it (0 or 1) reflects the value
		of the device's 'state_synced' field. A value of 0 means the
		.sync_state() callback hasn't been called yet. A value of 1
		means the .sync_state() callback has been called.

		Generally, if a device has sync_state() support and has some of
		the resources it provides enabled at the time the kernel starts
		(Eg: enabled by hardware reset or bootloader or anything that
		run before the kernel starts), then it'll keep those resources
		enabled and in a state that's compatible with the state they
		were in at the start of the kernel. The device will stop doing
		this only when the sync_state() callback has been called --
		which happens only when all its consumer devices are registered
		and have probed successfully. Resources that were left disabled
		at the time the kernel starts are not affected or limited in
		any way by sync_state() callbacks.

+8 −0
Original line number Diff line number Diff line
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.
Loading