[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