Andy, These changes have already been applied in this commit: https://github.com/pop-os/system76-acpi-dkms/commit/54ac52e611b60adc50e5f977e908c5547021e4a4 Aaron Honeycutt System76, Inc. Happiness Engineer 720-226-9269 x602 aaron@xxxxxxxxxxxx On Thu, Jul 9, 2020, at 12:50 PM, Andy Shevchenko wrote: > On Tue, Jun 23, 2020 at 5:44 PM Nick Shipp <git@xxxxxxxxxx> wrote: > > > > And here's a fix for my email client and bad copy-paste, sorry about that noise. > > > > `system76_set' was set as an LED `brightness_set' callback, but it calls > > `acpi_evaluate_object' which is not atomic-safe. Switched to the > > `brightness_set_blocking' LED callback instead. > > > > Signed-off-by: Nick Shipp <git@xxxxxxxxxx> > > This patch is mangled and can not be applied. > > > --- > > drivers/platform/x86/system76_acpi.c | 12 ++++++------ > > 1 file changed, 6 insertions(+), 6 deletions(-) > > > > diff --git a/drivers/platform/x86/system76_acpi.c > > b/drivers/platform/x86/system76_acpi.c > > index 4f6e4c342382..c14fd22ba196 100644 > > --- a/drivers/platform/x86/system76_acpi.c > > +++ b/drivers/platform/x86/system76_acpi.c > > @@ -103,12 +103,12 @@ static enum led_brightness ap_led_get(struct > > led_classdev *led) > > } > > > > // Set the airplane mode LED brightness > > -static void ap_led_set(struct led_classdev *led, enum led_brightness value) > > +static int ap_led_set(struct led_classdev *led, enum led_brightness value) > > { > > struct system76_data *data; > > > > data = container_of(led, struct system76_data, ap_led); > > - system76_set(data, "SAPL", value == LED_OFF ? 0 : 1); > > + return system76_set(data, "SAPL", value == LED_OFF ? 0 : 1); > > } > > > > // Get the last set keyboard LED brightness > > @@ -121,13 +121,13 @@ static enum led_brightness kb_led_get(struct > > led_classdev *led) > > } > > > > // Set the keyboard LED brightness > > -static void kb_led_set(struct led_classdev *led, enum led_brightness value) > > +static int kb_led_set(struct led_classdev *led, enum led_brightness value) > > { > > struct system76_data *data; > > > > data = container_of(led, struct system76_data, kb_led); > > data->kb_brightness = value; > > - system76_set(data, "SKBL", (int)data->kb_brightness); > > + return system76_set(data, "SKBL", (int)data->kb_brightness); > > } > > > > // Get the last set keyboard LED color > > @@ -313,7 +313,7 @@ static int system76_add(struct acpi_device *acpi_dev) > > data->ap_led.name = "system76_acpi::airplane"; > > data->ap_led.flags = LED_CORE_SUSPENDRESUME; > > data->ap_led.brightness_get = ap_led_get; > > - data->ap_led.brightness_set = ap_led_set; > > + data->ap_led.brightness_set_blocking = ap_led_set; > > data->ap_led.max_brightness = 1; > > data->ap_led.default_trigger = "rfkill-none"; > > err = devm_led_classdev_register(&acpi_dev->dev, &data->ap_led); > > @@ -323,7 +323,7 @@ static int system76_add(struct acpi_device *acpi_dev) > > data->kb_led.name = "system76_acpi::kbd_backlight"; > > data->kb_led.flags = LED_BRIGHT_HW_CHANGED | LED_CORE_SUSPENDRESUME; > > data->kb_led.brightness_get = kb_led_get; > > - data->kb_led.brightness_set = kb_led_set; > > + data->kb_led.brightness_set_blocking = kb_led_set; > > if (acpi_has_method(acpi_device_handle(data->acpi_dev), "SKBC")) { > > data->kb_led.max_brightness = 255; > > data->kb_toggle_brightness = 72; > > -- > > 2.27.0 > > > > -- > With Best Regards, > Andy Shevchenko >