Aaron, this patch is for our DKMS driver. It also needs to be applied upstream. -- Jeremy Soller System76 Principal Engineer jeremy@xxxxxxxxxxxx On Thu, Jul 9, 2020, at 12:54 PM, Aaron Honeycutt wrote: > 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 > > >