Message ID | 1460766432-5390-1-git-send-email-giedrius.statkevicius@gmail.com (mailing list archive) |
---|---|
State | Accepted, archived |
Headers | show |
On Sat, Apr 16, 2016 at 3:27 AM, Giedrius Statkevi?ius <giedrius.statkevicius@gmail.com> wrote: > It is possible that acpi_evaluate_integer might fail and value would not be > set to any value so correct this defect by returning 0 in case of an > error. This is also the correct thing to return because the backlight > subsystem will print the old value of brightness in this case. > > Signed-off-by: Giedrius Statkevi?ius <giedrius.statkevicius@gmail.com> > --- > drivers/platform/x86/asus-laptop.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/platform/x86/asus-laptop.c b/drivers/platform/x86/asus-laptop.c > index 9a69734..15f1311 100644 > --- a/drivers/platform/x86/asus-laptop.c > +++ b/drivers/platform/x86/asus-laptop.c > @@ -775,8 +775,10 @@ static int asus_read_brightness(struct backlight_device *bd) > > rv = acpi_evaluate_integer(asus->handle, METHOD_BRIGHTNESS_GET, > NULL, &value); > - if (ACPI_FAILURE(rv)) > + if (ACPI_FAILURE(rv)) { > pr_warn("Error reading brightness\n"); > + return 0; > + } This looks like a workaround. I suppose the real fix is to return here an error code and fix all callers, like drivers/video/backlight/backlight.c. > > return value; > } > -- > 2.8.0 >
On Fri, Apr 22, 2016 at 02:09:22AM +0300, Andy Shevchenko wrote: > On Sat, Apr 16, 2016 at 3:27 AM, Giedrius Statkevi?ius > <giedrius.statkevicius@gmail.com> wrote: > > It is possible that acpi_evaluate_integer might fail and value would not be > > set to any value so correct this defect by returning 0 in case of an > > error. This is also the correct thing to return because the backlight > > subsystem will print the old value of brightness in this case. > > > > Signed-off-by: Giedrius Statkevi?ius <giedrius.statkevicius@gmail.com> > > --- > > drivers/platform/x86/asus-laptop.c | 4 +++- > > 1 file changed, 3 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/platform/x86/asus-laptop.c b/drivers/platform/x86/asus-laptop.c > > index 9a69734..15f1311 100644 > > --- a/drivers/platform/x86/asus-laptop.c > > +++ b/drivers/platform/x86/asus-laptop.c > > @@ -775,8 +775,10 @@ static int asus_read_brightness(struct backlight_device *bd) > > > > rv = acpi_evaluate_integer(asus->handle, METHOD_BRIGHTNESS_GET, > > NULL, &value); > > - if (ACPI_FAILURE(rv)) > > + if (ACPI_FAILURE(rv)) { > > pr_warn("Error reading brightness\n"); > > + return 0; > > + } > > This looks like a workaround. > I suppose the real fix is to return here an error code and fix all callers, like > drivers/video/backlight/backlight.c. > It just fixes the behaviour according to the current code in that file. I suppose that would be nice but I don't think it would make any difference because the backlight core code still prints out ->props.brightness in case ops->get_brightness fails. Just the difference would be that now actual error messages are printed in the drivers themselves instead of generic messages from the backlight core. Anyway, I think the current behaviour is more useful because the drivers know better about what has failed. -- To unsubscribe from this list: send the line "unsubscribe platform-driver-x86" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Fri, Apr 22, 2016 at 10:43:30AM +0300, Giedrius Statkevi?ius wrote: > On Fri, Apr 22, 2016 at 02:09:22AM +0300, Andy Shevchenko wrote: > > On Sat, Apr 16, 2016 at 3:27 AM, Giedrius Statkevi?ius > > <giedrius.statkevicius@gmail.com> wrote: > > > It is possible that acpi_evaluate_integer might fail and value would not be > > > set to any value so correct this defect by returning 0 in case of an > > > error. This is also the correct thing to return because the backlight > > > subsystem will print the old value of brightness in this case. > > > > > > Signed-off-by: Giedrius Statkevi?ius <giedrius.statkevicius@gmail.com> > > > --- > > > drivers/platform/x86/asus-laptop.c | 4 +++- > > > 1 file changed, 3 insertions(+), 1 deletion(-) > > > > > > diff --git a/drivers/platform/x86/asus-laptop.c b/drivers/platform/x86/asus-laptop.c > > > index 9a69734..15f1311 100644 > > > --- a/drivers/platform/x86/asus-laptop.c > > > +++ b/drivers/platform/x86/asus-laptop.c > > > @@ -775,8 +775,10 @@ static int asus_read_brightness(struct backlight_device *bd) > > > > > > rv = acpi_evaluate_integer(asus->handle, METHOD_BRIGHTNESS_GET, > > > NULL, &value); > > > - if (ACPI_FAILURE(rv)) > > > + if (ACPI_FAILURE(rv)) { > > > pr_warn("Error reading brightness\n"); > > > + return 0; > > > + } > > > > This looks like a workaround. > > I suppose the real fix is to return here an error code and fix all callers, like > > drivers/video/backlight/backlight.c. > > > > It just fixes the behaviour according to the current code in that file. I > suppose that would be nice but I don't think it would make any difference > because the backlight core code still prints out ->props.brightness in case > ops->get_brightness fails. Just the difference would be that now actual error > messages are printed in the drivers themselves instead of generic messages from > the backlight core. Anyway, I think the current behaviour is more useful because > the drivers know better about what has failed. > As a matter of practice, based on feedback from the previous pdx86 maintainers, I prefer to accept patches which fix an immediate issue and leave the rework or broader work as a follow-on, or a TODO item. We should look for a good place to document these TODOs. Queued for 4.7. Thanks,
diff --git a/drivers/platform/x86/asus-laptop.c b/drivers/platform/x86/asus-laptop.c index 9a69734..15f1311 100644 --- a/drivers/platform/x86/asus-laptop.c +++ b/drivers/platform/x86/asus-laptop.c @@ -775,8 +775,10 @@ static int asus_read_brightness(struct backlight_device *bd) rv = acpi_evaluate_integer(asus->handle, METHOD_BRIGHTNESS_GET, NULL, &value); - if (ACPI_FAILURE(rv)) + if (ACPI_FAILURE(rv)) { pr_warn("Error reading brightness\n"); + return 0; + } return value; }
It is possible that acpi_evaluate_integer might fail and value would not be set to any value so correct this defect by returning 0 in case of an error. This is also the correct thing to return because the backlight subsystem will print the old value of brightness in this case. Signed-off-by: Giedrius Statkevi?ius <giedrius.statkevicius@gmail.com> --- drivers/platform/x86/asus-laptop.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)