[PATCH v2 2/2] drm/mgag200: Add an option to disable Write-Combine
Jocelyn Falempe
jfalempe at redhat.com
Tue May 21 07:44:14 UTC 2024
On 17/05/2024 17:16, Thomas Zimmermann wrote:
> 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.
Thanks for the review, I just merged it to drm-misc-next.
>
> 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;
>> }
>
More information about the dri-devel
mailing list