[+Mika & Andy] On Monday, October 16, 2017 1:44:40 PM CET Hans de Goede wrote: > Hi, > > On 16-10-17 01:47, Rafael J. Wysocki wrote: > > On Sun, Oct 15, 2017 at 9:24 PM, Hans de Goede <hdegoede@xxxxxxxxxx> wrote: > >> Most Bay and Cherry Trail devices use a generic DSDT with all possible > >> peripheral devices present in the DSDT, with their _STA returning 0x00 or > >> 0x0f based on AML variables which describe what is actually present on > >> the board. > >> > >> Since ACPI device objects with a 0x00 status (not present) still get an > >> entry under /sys/bus/acpi/devices, and those entry had an acpi:PNPID > >> modalias, userspace would end up loading modules for non present hardware. > >> > >> This commit fixes this by leaving the modalias empty for non present > >> devices. This results in 10 modules less being loaded with a generic > >> distro kernel config on my Cherry Trail test-device (a GPD pocket). > > > > Well, what about hotplug? > > > > On some systems _STA may change from 0 to nonzero for some devices, so > > what's going to happen to the modalias then? > > A good question. I would expect a change uevent to be generated in > this case and when the device has become present in this new uvent the > modalias will no longer be empty and the module will get loaded, so > the module will not get loaded until the actual hotplug. > > The actual generation of this uevent should be done by the various > subsystems based on ACPI_RECONFIG_DEVICE_ADD messages, at which point > adev->status is already updated and then when the subsys calls > acpi_device_uevent_modalias() for the new uevent it will return a > non-empty modalias. Mika, I need your input here. I have to say I'm not quite sure about possible implications of this change, what do you think? > > > >> Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx> > >> --- > >> drivers/acpi/device_sysfs.c | 4 ++++ > >> 1 file changed, 4 insertions(+) > >> > >> diff --git a/drivers/acpi/device_sysfs.c b/drivers/acpi/device_sysfs.c > >> index 24418932612e..a041689e5701 100644 > >> --- a/drivers/acpi/device_sysfs.c > >> +++ b/drivers/acpi/device_sysfs.c > >> @@ -146,6 +146,10 @@ static int create_pnp_modalias(struct acpi_device *acpi_dev, char *modalias, > >> int count; > >> struct acpi_hardware_id *id; > >> > >> + /* Avoid unnecessarily loading modules for non present devices. */ > >> + if (!acpi_device_is_present(acpi_dev)) > >> + return 0; > >> + > >> /* > >> * Since we skip ACPI_DT_NAMESPACE_HID from the modalias below, 0 should > >> * be returned if ACPI_DT_NAMESPACE_HID is the only ACPI/PNP ID in the > >> -- > -- -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html