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

Jocelyn Falempe jfalempe at redhat.com
Fri May 17 15:04:06 UTC 2024



On 17/05/2024 11:39, Thomas Zimmermann wrote:
> Hi,
> 
> just nits below.
> 
> Am 16.05.24 um 18:17 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
> 
> The formatting look off. Maybe make this one single paragraph.

Ok,
> 
> No comma after 'option'.
Ok,
> 
>>
>> Signed-off-by: Jocelyn Falempe <jfalempe at redhat.com>
>> ---
>>   drivers/gpu/drm/mgag200/Kconfig       | 10 ++++++++++
>>   drivers/gpu/drm/mgag200/mgag200_drv.c |  7 +++++++
>>   2 files changed, 17 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/mgag200/Kconfig 
>> b/drivers/gpu/drm/mgag200/Kconfig
>> index b28c5e4828f47..73ab5730b74d9 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
> No comma after Write-Combine

Ok
>> +      performances. However this increases the system latency a lot, 
>> even
> Just say "This can interfere with real-time tasks; even if they are 
> running on other CPU cores then the graphics output."

Ok
> 
>> +      for realtime tasks running on other CPU cores. Typically 40us-80us
>> +      latencies are measured with hwlat when Write Combine is enabled.
> 
> Leave out the next sentence: "Typically ..." The measureed numbers 
> depend on the hardware and everyone is encouraged to test on their own 
> system. You could mention  the numbers in the commit description, as you 
> already mention the affected systems there.

Ok
> 
>> +      Recommended if you run realtime tasks on a server with a Matrox 
>> G200.
> 
> I still think that we should not encourage anyone to use this option. 
> Maybe say "Enable this option only if you run..."

Agreed, I will change this.
> 
>> \ 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..7461e3f984eff 100644
>> --- a/drivers/gpu/drm/mgag200/mgag200_drv.c
>> +++ b/drivers/gpu/drm/mgag200/mgag200_drv.c
>> @@ -146,12 +146,19 @@ int mgag200_device_preinit(struct mga_device *mdev)
>>       }
>>       mdev->vram_res = res;
>> +#if defined(CONFIG_DRM_MGAG200_DISABLE_WRITECOMBINE)
>> +    drm_info(dev, "Disable Write Combine\n");
> 
> I would not print this drm_info() here. The user has selected the config 
> option, so they should know what happens. It's also listed in /proc/mtrr 
> IIRC.

Sure, I can remove the drm_info().

Thanks for the review, I will send a v2 shortly.
> 
> Best regards
> Thomas
> 
>> +    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