Message ID | 20241004194207.1013744-1-sui.jingfeng@linux.dev (mailing list archive) |
---|---|
Headers | show |
Series | Fix GPU virtual address collosion when CPU page size != GPU page size | expand |
Hi Sui, Am Samstag, dem 05.10.2024 um 03:42 +0800 schrieb Sui Jingfeng: > Etnaviv assumes that GPU page size is 4KiB, however, when using > softpin capable GPUs on a different CPU page size configuration. > Userspace still doing the allocation with 4KiB page as unit. This > results in userspace allocated GPU virtual address ranges collision > and therefore unable to be inserted to the specified hole exactly. > > The root cause is that kernel side BO takes up bigger address space > than userspace assumes when the size of it is not CPU page size aligned. > > To solve it with no GPU VA range space wasting, we first track the size > of a buffer that userspace/GPU think of it is, then partially map and/or > unmap the tail physical page with respect to this 'user size'. Ensure > that GPU VA is fully mapped and/or unmapped. > Would you be able to get me a updated series with the feedback taken care of? I would like to add this series to the next upstream pull request, if possible. Regards, Lucas > Sui Jingfeng (3): > drm/etnaviv: Track GPU VA size separately > drm/etnaviv: Map and unmap the GPU VA range with respect to its user > size > drm/etnaviv: Print an error message if inserting IOVA range fails > > drivers/gpu/drm/etnaviv/etnaviv_gem.c | 8 +++-- > drivers/gpu/drm/etnaviv/etnaviv_gem.h | 1 + > drivers/gpu/drm/etnaviv/etnaviv_mmu.c | 42 ++++++++++++--------------- > 3 files changed, 24 insertions(+), 27 deletions(-) >