mirror of
https://github.com/torvalds/linux.git
synced 2026-06-03 03:53:37 +02:00
drm/ttm: allocate dummy_read_page without DMA32 on fail
Some platforms may not have any memory in ZONE_DMA32 and use IOMMU to allow 32-bit-DMA-only device to work. Forcing GFP_DMA32 on dummy_read_page will fail on such platforms. Retry after fail will get this works on such platforms. Signed-off-by: Yangyu Chen <cyy@cyyself.name> Link: https://patchwork.freedesktop.org/patch/msgid/tencent_8637383EE0A2C7CC870036AAF01909B26A0A@qq.com Signed-off-by: Christian König <christian.koenig@amd.com>
This commit is contained in:
parent
3fc6c76a8d
commit
0a8c1feed3
|
|
@ -95,11 +95,17 @@ static int ttm_global_init(void)
|
|||
ttm_pool_mgr_init(num_pages);
|
||||
ttm_tt_mgr_init(num_pages, num_dma32);
|
||||
|
||||
glob->dummy_read_page = alloc_page(__GFP_ZERO | GFP_DMA32);
|
||||
glob->dummy_read_page = alloc_page(__GFP_ZERO | GFP_DMA32 |
|
||||
__GFP_NOWARN);
|
||||
|
||||
/* Retry without GFP_DMA32 for platforms DMA32 is not available */
|
||||
if (unlikely(glob->dummy_read_page == NULL)) {
|
||||
ret = -ENOMEM;
|
||||
goto out;
|
||||
glob->dummy_read_page = alloc_page(__GFP_ZERO);
|
||||
if (unlikely(glob->dummy_read_page == NULL)) {
|
||||
ret = -ENOMEM;
|
||||
goto out;
|
||||
}
|
||||
pr_warn("Using GFP_DMA32 fallback for dummy_read_page\n");
|
||||
}
|
||||
|
||||
INIT_LIST_HEAD(&glob->device_list);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user