Linux 5.16 Introducing Ability For A Driver To Probe Hardware While Powered Off
Last week saw the main set of ACPI and power management changes for Linux 5.16 while merged on Wednesday were a secondary set of updates. Notable on the ACPI side are some changes in preparing for allowing Linux drivers to "probe" hardware while being powered off.
This Intel-contributed change to the Linux kernel is about allowing certain devices to be probed by a kernel module without changing their power states / being powered up. It's a bit of a corner case with normally not being able to properly probe the hardware and load the driver without the component being initialized and ensuring it can successfully light up and work. This won't magically work for all drivers/hardware but depends upon necessary ACPI support being advertised.
Intel's motivation for allowing a driver to probe a device powered off is actually around laptop web cameras... With some web cameras, powering up the web camera will (obviously) result in the camera's privacy LED lighting up too. For security reasons, the camera privacy LED is not normally controllable by the operating system software. But to avoid interrupting the user's experience and thinking Linux or something may be spying on them when the system is booting, there is this desire to probe a device while powered off. The privacy LED lighting in the current behavior normally is very brief but this would eliminate the need to turn on the camera while loading the kernel driver.
But on the downside, if there are hardware issues that won't be known until trying to use the driver/camera. With the initial Intel patches their changes targeted the imx319 and at24 drivers while other Linux kernel drivers moving forward may find use for this functionality if having the necessary ACPI capability.
The code is going in through the ACPI tree as it introduces the "_DSC" object for the power management object indicating the deepest D-State a device can be in for evaluating its configuration objects. Devices supporting this _DSC ACPI object can let the kernel know it can remain in a D3cold state or similar during the driver probe process and to not fully power it on. The ACPI spec proposal was made earlier this year here.
The ACPI update allowing this _DSC support for probing without changing of power states can be found via this pull request.
This Intel-contributed change to the Linux kernel is about allowing certain devices to be probed by a kernel module without changing their power states / being powered up. It's a bit of a corner case with normally not being able to properly probe the hardware and load the driver without the component being initialized and ensuring it can successfully light up and work. This won't magically work for all drivers/hardware but depends upon necessary ACPI support being advertised.
Intel's motivation for allowing a driver to probe a device powered off is actually around laptop web cameras... With some web cameras, powering up the web camera will (obviously) result in the camera's privacy LED lighting up too. For security reasons, the camera privacy LED is not normally controllable by the operating system software. But to avoid interrupting the user's experience and thinking Linux or something may be spying on them when the system is booting, there is this desire to probe a device while powered off. The privacy LED lighting in the current behavior normally is very brief but this would eliminate the need to turn on the camera while loading the kernel driver.
But on the downside, if there are hardware issues that won't be known until trying to use the driver/camera. With the initial Intel patches their changes targeted the imx319 and at24 drivers while other Linux kernel drivers moving forward may find use for this functionality if having the necessary ACPI capability.
The code is going in through the ACPI tree as it introduces the "_DSC" object for the power management object indicating the deepest D-State a device can be in for evaluating its configuration objects. Devices supporting this _DSC ACPI object can let the kernel know it can remain in a D3cold state or similar during the driver probe process and to not fully power it on. The ACPI spec proposal was made earlier this year here.
The ACPI update allowing this _DSC support for probing without changing of power states can be found via this pull request.
17 Comments