[PATCH v2 2/2] drm/mgag200: Add an option to disable Write-Combine

Thomas Zimmermann tzimmermann at suse.de
Fri May 17 15:16:22 UTC 2024


Hi

Am 17.05.24 um 17:09 schrieb Jocelyn Falempe:
> Unfortunately, the G200 ioburst workaround doesn't work on some
> servers like Dell poweredge XR11, XR5610, or HPE XL260. In this case
> completely disabling WC is the only option to achieve low-latency.
> So this adds a new Kconfig option to disable WC mapping of the G200.
>
> Signed-off-by: Jocelyn Falempe <jfalempe at redhat.com>

Reviewed-by: Thomas Zimmermann <tzimmermann at suse.de>

Thanks a lot for the fix.

Best regards
Thomas

> ---
>   drivers/gpu/drm/mgag200/Kconfig       | 10 ++++++++++
>   drivers/gpu/drm/mgag200/mgag200_drv.c |  6 ++++++
>   2 files changed, 16 insertions(+)
>
> diff --git a/drivers/gpu/drm/mgag200/Kconfig b/drivers/gpu/drm/mgag200/Kconfig
> index b28c5e4828f47..3096944a8f0ab 100644
> --- a/drivers/gpu/drm/mgag200/Kconfig
> +++ b/drivers/gpu/drm/mgag200/Kconfig
> @@ -11,3 +11,13 @@ config DRM_MGAG200
>   	 MGA G200 desktop chips and the server variants. It requires 0.3.0
>   	 of the modesetting userspace driver, and a version of mga driver
>   	 that will fail on KMS enabled devices.
> +
> +config DRM_MGAG200_DISABLE_WRITECOMBINE
> +	bool "Disable Write Combine mapping of VRAM"
> +	depends on DRM_MGAG200 && PREEMPT_RT
> +	help
> +	  The VRAM of the G200 is mapped with Write-Combine to improve
> +	  performances. This can interfere with real-time tasks; even if they
> +	  are running on other CPU cores than the graphics output.
> +	  Enable this option only if you run realtime tasks on a server with a
> +	  Matrox G200.
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.c b/drivers/gpu/drm/mgag200/mgag200_drv.c
> index 3883f25ca4d8b..62080cf0f2da4 100644
> --- a/drivers/gpu/drm/mgag200/mgag200_drv.c
> +++ b/drivers/gpu/drm/mgag200/mgag200_drv.c
> @@ -146,12 +146,18 @@ int mgag200_device_preinit(struct mga_device *mdev)
>   	}
>   	mdev->vram_res = res;
>   
> +#if defined(CONFIG_DRM_MGAG200_DISABLE_WRITECOMBINE)
> +	mdev->vram = devm_ioremap(dev->dev, res->start, resource_size(res));
> +	if (!mdev->vram)
> +		return -ENOMEM;
> +#else
>   	mdev->vram = devm_ioremap_wc(dev->dev, res->start, resource_size(res));
>   	if (!mdev->vram)
>   		return -ENOMEM;
>   
>   	/* Don't fail on errors, but performance might be reduced. */
>   	devm_arch_phys_wc_add(dev->dev, res->start, resource_size(res));
> +#endif
>   
>   	return 0;
>   }

-- 
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstrasse 146, 90461 Nuernberg, Germany
GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman
HRB 36809 (AG Nuernberg)



More information about the dri-devel mailing list