diff mbox series

drm/aspeed: Fix vga_pw sysfs output

Message ID 20211117010145.297253-1-joel@jms.id.au
State Not Applicable, archived
Headers show
Series drm/aspeed: Fix vga_pw sysfs output | expand

Commit Message

Joel Stanley Nov. 17, 2021, 1:01 a.m. UTC
Before the drm driver had support for this file there was a driver that
exposed the contents of the vga password register to userspace. It would
present the entire register instead of interpreting it.

The drm implementation chose to mask of the lower bit, without explaining
why. This breaks the existing userspace, which is looking for 0xa8 in
the lower byte.

Change our implementation to expose the entire register.

Fixes: 696029eb36c0 ("drm/aspeed: Add sysfs for output settings")
Reported-by: Oskar Senft <osk@google.com>
Signed-off-by: Joel Stanley <joel@jms.id.au>
---
 drivers/gpu/drm/aspeed/aspeed_gfx_drv.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Oskar Senft Nov. 17, 2021, 2:28 a.m. UTC | #1
On Tue, Nov 16, 2021 at 8:02 PM Joel Stanley <joel@jms.id.au> wrote:
>
> Before the drm driver had support for this file there was a driver that
> exposed the contents of the vga password register to userspace. It would
> present the entire register instead of interpreting it.
>
> The drm implementation chose to mask of the lower bit, without explaining
> why. This breaks the existing userspace, which is looking for 0xa8 in
> the lower byte.
>
> Change our implementation to expose the entire register.
>
> Fixes: 696029eb36c0 ("drm/aspeed: Add sysfs for output settings")
> Reported-by: Oskar Senft <osk@google.com>
> Signed-off-by: Joel Stanley <joel@jms.id.au>
> ---
>  drivers/gpu/drm/aspeed/aspeed_gfx_drv.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> index b53fee6f1c17..65f172807a0d 100644
> --- a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> +++ b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> @@ -291,7 +291,7 @@ vga_pw_show(struct device *dev, struct device_attribute *attr, char *buf)
>         if (rc)
>                 return rc;
>
> -       return sprintf(buf, "%u\n", reg & 1);
> +       return sprintf(buf, "%u\n", reg);
>  }
>  static DEVICE_ATTR_RO(vga_pw);
>
> --
> 2.33.0
>

Tested-by: Oskar Senft <osk@google.com>
Jeremy Kerr Nov. 19, 2021, 6:54 a.m. UTC | #2
Hi Joel,

> Before the drm driver had support for this file there was a driver
> that exposed the contents of the vga password register to userspace.
> It would present the entire register instead of interpreting it.
> 
> The drm implementation chose to mask of the lower bit, without
> explaining why. This breaks the existing userspace, which is looking
> for 0xa8 in the lower byte.
> 
> Change our implementation to expose the entire register.

As a userspace consumer of this:

Reviewed-by: Jeremy Kerr <jk@codeconstruct.com.au>

Thanks!


Jeremy
Joel Stanley Nov. 19, 2021, 7:07 a.m. UTC | #3
Hi David, Daniel,

On Fri, 19 Nov 2021 at 06:54, Jeremy Kerr <jk@codeconstruct.com.au> wrote:
>
> Hi Joel,
>
> > Before the drm driver had support for this file there was a driver
> > that exposed the contents of the vga password register to userspace.
> > It would present the entire register instead of interpreting it.
> >
> > The drm implementation chose to mask of the lower bit, without
> > explaining why. This breaks the existing userspace, which is looking
> > for 0xa8 in the lower byte.
> >
> > Change our implementation to expose the entire register.
>
> As a userspace consumer of this:
>
> Reviewed-by: Jeremy Kerr <jk@codeconstruct.com.au>

Am I okay to apply this to drm-misc-fixes? I've not applied a patch to
the fixes tree before, so I wanted to check if there is some process
I've missed.

Cheers,

Joel
Maxime Ripard Nov. 19, 2021, 11 a.m. UTC | #4
On Wed, 17 Nov 2021 09:01:45 +0800, Joel Stanley wrote:
> Before the drm driver had support for this file there was a driver that
> exposed the contents of the vga password register to userspace. It would
> present the entire register instead of interpreting it.
> 
> The drm implementation chose to mask of the lower bit, without explaining
> why. This breaks the existing userspace, which is looking for 0xa8 in
> the lower byte.
> 
> [...]

Applied to drm/drm-misc (drm-misc-fixes).

Thanks!
Maxime
diff mbox series

Patch

diff --git a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
index b53fee6f1c17..65f172807a0d 100644
--- a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
+++ b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
@@ -291,7 +291,7 @@  vga_pw_show(struct device *dev, struct device_attribute *attr, char *buf)
 	if (rc)
 		return rc;
 
-	return sprintf(buf, "%u\n", reg & 1);
+	return sprintf(buf, "%u\n", reg);
 }
 static DEVICE_ATTR_RO(vga_pw);