[PATCH RFC 0/1] drm/ttm: Allocate transparent huge pages without clearing __GFP_COMP

Christian König christian.koenig at amd.com
Thu Oct 1 07:19:01 UTC 2020


Hi Alex,

first of all accessing the underlying page of an exported DMA-buf is 
illegal! So I'm not 100% sure what you're intentions are here, please 
explain further.

Then the reason for TTM not using compound pages is that we can't 
guarantee that they are mapped as a whole to userspace.

The result is that the kernel sometimes tried to de-compound them which 
created a bunch of problems.

So yes this is completely intentional.

Regards,
Christian.

Am 01.10.20 um 00:18 schrieb Alex Goins:
> Hi Christian,
>
> I've been looking into the DMA-BUFs exported from AMDGPU / TTM. Would
> you mind giving some input on this?
>
> I noticed that your changes implementing transparent huge page support
> in TTM are allocating them as non-compound. I understand that using
> multiorder non-compound pages is common in device drivers, but I think
> this can cause a problem when these pages are exported to other drivers.
>
> It's possible for other drivers to access the DMA-BUF's pages via
> gem_prime_import_sg_table(), but without context from TTM, it's
> impossible for the importing driver to make sense of them; they simply
> appear as individual pages, with only the first page having a non-zero
> refcount. Making TTM's THP allocations compound puts them more in line
> with the standard definition of a THP, and allows DMA-BUF-importing
> drivers to make sense of the pages within.
>
> I would like to propose making these allocations compound, but based on
> patch history, it looks like the decision to make them non-compound was
> intentional, as there were difficulties figuring out how to map them
> into CPU page tables. I did some cursory testing with compound THPs, and
> nothing seems obviously broken. I was also able to map compound THP
> DMA-BUFs into userspace without issue, and access their contents. Are
> you aware of any other potential consequences?
>
> Commit 5c42c64f7d54 ("drm/ttm: fix the fix for huge compound pages") should
> probably also be reverted if this is applied.
>
> Thanks,
> Alex
>
> Alex Goins (1):
>    drm-ttm: Allocate compound transparent huge pages
>
>   drivers/gpu/drm/ttm/ttm_page_alloc.c | 5 ++---
>   1 file changed, 2 insertions(+), 3 deletions(-)
>



More information about the amd-gfx mailing list