diff mbox series

[4/4] drm/mgag200: Add module parameter to pin all buffers at offset 0

Message ID 20191126072545.22663-5-tzimmermann@suse.de (mailing list archive)
State New, archived
Headers show
Series drm/mgag200: Workaround HW bug with non-0 offset | expand

Commit Message

Thomas Zimmermann Nov. 26, 2019, 7:25 a.m. UTC
For hardware that does not interpret the startadd field correctly,
add the module parameter 'hw_bug_no_startadd', which enables the
workaround.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/mgag200/mgag200_drv.c | 8 ++++++++
 1 file changed, 8 insertions(+)

Comments

Daniel Vetter Nov. 26, 2019, 9:38 a.m. UTC | #1
On Tue, Nov 26, 2019 at 08:25:45AM +0100, Thomas Zimmermann wrote:
> For hardware that does not interpret the startadd field correctly,
> add the module parameter 'hw_bug_no_startadd', which enables the
> workaround.
> 
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---
>  drivers/gpu/drm/mgag200/mgag200_drv.c | 8 ++++++++
>  1 file changed, 8 insertions(+)
> 
> diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.c b/drivers/gpu/drm/mgag200/mgag200_drv.c
> index d43951caeea0..79836b09a54a 100644
> --- a/drivers/gpu/drm/mgag200/mgag200_drv.c
> +++ b/drivers/gpu/drm/mgag200/mgag200_drv.c
> @@ -27,6 +27,10 @@ int mgag200_modeset = -1;
>  MODULE_PARM_DESC(modeset, "Disable/Enable modesetting");
>  module_param_named(modeset, mgag200_modeset, int, 0400);
>  
> +int mgag200_hw_bug_no_startadd = -1;
> +MODULE_PARM_DESC(modeset, "HW does not interpret scanout-buffer start address correctly");
> +module_param_named(hw_bug_no_startadd, mgag200_hw_bug_no_startadd, int, 0400);
> +
>  static struct drm_driver driver;
>  
>  static const struct pci_device_id pciidlist[] = {
> @@ -64,6 +68,10 @@ DEFINE_DRM_GEM_FOPS(mgag200_driver_fops);
>  
>  static bool mgag200_pin_bo_at_0(const struct mga_device *mdev)
>  {

I'd add a infor printing if the module option is non-zero that people
should submit a bug report if this fixes their issue. We don't want people
fixing bugs with module options, stuff should work by default.

With that addressed:

Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>

> +	if (!mgag200_hw_bug_no_startadd)
> +		return false;
> +	else if (mgag200_hw_bug_no_startadd > 0)
> +		return true;
>  	return mdev->flags & MGAG200_FLAG_HW_BUG_NO_STARTADD;
>  }
>  
> -- 
> 2.23.0
>
diff mbox series

Patch

diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.c b/drivers/gpu/drm/mgag200/mgag200_drv.c
index d43951caeea0..79836b09a54a 100644
--- a/drivers/gpu/drm/mgag200/mgag200_drv.c
+++ b/drivers/gpu/drm/mgag200/mgag200_drv.c
@@ -27,6 +27,10 @@  int mgag200_modeset = -1;
 MODULE_PARM_DESC(modeset, "Disable/Enable modesetting");
 module_param_named(modeset, mgag200_modeset, int, 0400);
 
+int mgag200_hw_bug_no_startadd = -1;
+MODULE_PARM_DESC(modeset, "HW does not interpret scanout-buffer start address correctly");
+module_param_named(hw_bug_no_startadd, mgag200_hw_bug_no_startadd, int, 0400);
+
 static struct drm_driver driver;
 
 static const struct pci_device_id pciidlist[] = {
@@ -64,6 +68,10 @@  DEFINE_DRM_GEM_FOPS(mgag200_driver_fops);
 
 static bool mgag200_pin_bo_at_0(const struct mga_device *mdev)
 {
+	if (!mgag200_hw_bug_no_startadd)
+		return false;
+	else if (mgag200_hw_bug_no_startadd > 0)
+		return true;
 	return mdev->flags & MGAG200_FLAG_HW_BUG_NO_STARTADD;
 }