[PATCH 2/5] drm/gem: Add a mountpoint parameter to drm_gem_object_init()

Christian König christian.koenig at amd.com
Tue Mar 12 13:48:31 UTC 2024


Am 12.03.24 um 14:09 schrieb Tvrtko Ursulin:
>
> On 12/03/2024 10:37, Christian König wrote:
>> Am 12.03.24 um 11:31 schrieb Tvrtko Ursulin:
>>>
>>> On 12/03/2024 10:23, Christian König wrote:
>>>> Am 12.03.24 um 10:30 schrieb Tvrtko Ursulin:
>>>>>
>>>>> On 12/03/2024 08:59, Christian König wrote:
>>>>>> Am 12.03.24 um 09:51 schrieb Tvrtko Ursulin:
>>>>>>>
>>>>>>> Hi Maira,
>>>>>>>
>>>>>>> On 11/03/2024 10:05, Maíra Canal wrote:
>>>>>>>> For some applications, such as using huge pages, we might want 
>>>>>>>> to have a
>>>>>>>> different mountpoint, for which we pass in mount flags that 
>>>>>>>> better match
>>>>>>>> our usecase.
>>>>>>>>
>>>>>>>> Therefore, add a new parameter to drm_gem_object_init() that 
>>>>>>>> allow us to
>>>>>>>> define the tmpfs mountpoint where the GEM object will be 
>>>>>>>> created. If
>>>>>>>> this parameter is NULL, then we fallback to shmem_file_setup().
>>>>>>>
>>>>>>> One strategy for reducing churn, and so the number of drivers 
>>>>>>> this patch touches, could be to add a lower level 
>>>>>>> drm_gem_object_init() (which takes vfsmount, call it 
>>>>>>> __drm_gem_object_init(), or drm__gem_object_init_mnt(), and make 
>>>>>>> drm_gem_object_init() call that one with a NULL argument.
>>>>>>
>>>>>> I would even go a step further into the other direction. The 
>>>>>> shmem backed GEM object is just some special handling as far as I 
>>>>>> can see.
>>>>>>
>>>>>> So I would rather suggest to rename all drm_gem_* function which 
>>>>>> only deal with the shmem backed GEM object into drm_gem_shmem_*.
>>>>>
>>>>> That makes sense although it would be very churny. I at least 
>>>>> would be on the fence regarding the cost vs benefit.
>>>>
>>>> Yeah, it should clearly not be part of this patch here.
>>>>
>>>>>
>>>>>> Also the explanation why a different mount point helps with 
>>>>>> something isn't very satisfying.
>>>>>
>>>>> Not satisfying as you think it is not detailed enough to say 
>>>>> driver wants to use huge pages for performance? Or not satisying 
>>>>> as you question why huge pages would help?
>>>>
>>>> That huge pages are beneficial is clear to me, but I'm missing the 
>>>> connection why a different mount point helps with using huge pages.
>>>
>>> Ah right, same as in i915, one needs to mount a tmpfs instance 
>>> passing huge=within_size or huge=always option. Default is 'never', 
>>> see man 5 tmpfs.
>>
>> Thanks for the explanation, I wasn't aware of that.
>>
>> Mhm, shouldn't we always use huge pages? Is there a reason for a DRM 
>> device to not use huge pages with the shmem backend?
>
> AFAIU, according to b901bb89324a ("drm/i915/gemfs: enable THP"), back 
> then the understanding was within_size may overallocate, meaning there 
> would be some space wastage, until the memory pressure makes the thp 
> code split the trailing huge page. I haven't checked if that still 
> applies.
>
> Other than that I don't know if some drivers/platforms could have 
> problems if they have some limitations or hardcoded assumptions when 
> they iterate the sg list.

Yeah, that was the whole point behind my question. As far as I can see 
this isn't driver specific, but platform specific.

I might be wrong here, but I think we should then probably not have that 
handling in each individual driver, but rather centralized in the DRM code.

Regards,
Christian.


>
> Te Cc is plenty large so perhaps someone else will have additional 
> information. :)
>
> Regards,
>
> Tvrtko
>
>>
>> I mean it would make this patch here even smaller.
>>
>> Regards,
>> Christian.
>>
>>>
>>>
>>> Regards,
>>>
>>> Tvrtko
>>



More information about the dri-devel mailing list