From 2fa3162de1b4a39e73e44f923e65f816ea566bae Mon Sep 17 00:00:00 2001 From: Yang Bo Date: Wed, 28 May 2025 11:18:19 +0800 Subject: [PATCH 1/3] drm/ttm: Use dmacoherent allocations on ARM64 Various PCIe controllers on ARM64 platforms don't support cache snooping, which leads to numerous issues when attempting to use PCIe graphics cards. Switching ttm_prot_from_caching to return pgprot_dmacoherent for ttm_cached pages solves the issue, albeit with a performance hit. There is a second check in ttm_prot_from_caching that also needs updating. Signed-off-by: Yang Bo Signed-off-by: Dave Stevenson --- drivers/gpu/drm/ttm/ttm_bo_util.c | 3 ++- drivers/gpu/drm/ttm/ttm_module.c | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/ttm/ttm_bo_util.c b/drivers/gpu/drm/ttm/ttm_bo_util.c index bd0b23ac2cc4b5..5bc0c3d8f1dc93 100644 --- a/drivers/gpu/drm/ttm/ttm_bo_util.c +++ b/drivers/gpu/drm/ttm/ttm_bo_util.c @@ -356,7 +356,8 @@ static int ttm_bo_kmap_ttm(struct ttm_buffer_object *bo, if (ret) return ret; - if (num_pages == 1 && ttm->caching == ttm_cached && + if (!IS_ENABLED(CONFIG_ARM64) && + num_pages == 1 && ttm->caching == ttm_cached && !(man->use_tt && (ttm->page_flags & TTM_TT_FLAG_DECRYPTED))) { /* * We're mapping a single page, and the desired diff --git a/drivers/gpu/drm/ttm/ttm_module.c b/drivers/gpu/drm/ttm/ttm_module.c index aa137ead5cc596..cb7aeb9335bba0 100644 --- a/drivers/gpu/drm/ttm/ttm_module.c +++ b/drivers/gpu/drm/ttm/ttm_module.c @@ -63,7 +63,11 @@ pgprot_t ttm_prot_from_caching(enum ttm_caching caching, pgprot_t tmp) { /* Cached mappings need no adjustment */ if (caching == ttm_cached) +#ifdef CONFIG_ARM64 + return pgprot_dmacoherent(tmp); +#else return tmp; +#endif #if defined(__i386__) || defined(__x86_64__) if (caching == ttm_write_combined) From a6e096c59d882a987de06387844fc5ab4028504c Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 30 Sep 2025 15:02:52 +0100 Subject: [PATCH 2/3] defconfig: Add amdgpu and radeon drivers to 2711/2712 defconfig Also includes SND_HDA_* modules for audio on AMD GPUs. Signed-off-by: Dave Stevenson --- arch/arm64/configs/bcm2711_defconfig | 8 ++++++++ arch/arm64/configs/bcm2712_defconfig | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/arch/arm64/configs/bcm2711_defconfig b/arch/arm64/configs/bcm2711_defconfig index a3d85889e9afa9..0dce14e673084d 100644 --- a/arch/arm64/configs/bcm2711_defconfig +++ b/arch/arm64/configs/bcm2711_defconfig @@ -1076,6 +1076,11 @@ CONFIG_DRM_SIMPLE_BRIDGE=m CONFIG_DRM_TOSHIBA_TC358762=m CONFIG_DRM_TI_SN65DSI83=m CONFIG_DRM_GUD=m +CONFIG_DRM_RADEON=m +CONFIG_DRM_AMDGPU=m +CONFIG_DRM_AMDGPU_SI=y +CONFIG_DRM_AMDGPU_CIK=y +CONFIG_DRM_UDL=m CONFIG_DRM_PANEL_LVDS=m CONFIG_DRM_PANEL_ILITEK_IL79600A=m CONFIG_DRM_PANEL_ILITEK_ILI9806E_SPI=m @@ -1132,6 +1137,9 @@ CONFIG_SND_SERIAL_U16550=m CONFIG_SND_MPU401=m CONFIG_SND_PIMIDI=m CONFIG_SND_PISOUND_MICRO=m +CONFIG_SND_HDA_INTEL=m +CONFIG_SND_HDA_GENERIC=m +CONFIG_SND_HDA_CODEC_HDMI=m CONFIG_SND_USB_AUDIO=m CONFIG_SND_USB_AUDIO_MIDI_V2=y CONFIG_SND_USB_UA101=m diff --git a/arch/arm64/configs/bcm2712_defconfig b/arch/arm64/configs/bcm2712_defconfig index 70915373a812c0..b6280609a476da 100644 --- a/arch/arm64/configs/bcm2712_defconfig +++ b/arch/arm64/configs/bcm2712_defconfig @@ -1078,6 +1078,11 @@ CONFIG_DRM_SIMPLE_BRIDGE=m CONFIG_DRM_TOSHIBA_TC358762=m CONFIG_DRM_TI_SN65DSI83=m CONFIG_DRM_GUD=m +CONFIG_DRM_RADEON=m +CONFIG_DRM_AMDGPU=m +CONFIG_DRM_AMDGPU_SI=y +CONFIG_DRM_AMDGPU_CIK=y +CONFIG_DRM_UDL=m CONFIG_DRM_PANEL_LVDS=m CONFIG_DRM_PANEL_ILITEK_IL79600A=m CONFIG_DRM_PANEL_ILITEK_ILI9806E_SPI=m @@ -1134,6 +1139,9 @@ CONFIG_SND_SERIAL_U16550=m CONFIG_SND_MPU401=m CONFIG_SND_PIMIDI=m CONFIG_SND_PISOUND_MICRO=m +CONFIG_SND_HDA_INTEL=m +CONFIG_SND_HDA_GENERIC=m +CONFIG_SND_HDA_CODEC_HDMI=m CONFIG_SND_USB_AUDIO=m CONFIG_SND_USB_AUDIO_MIDI_V2=y CONFIG_SND_USB_UA101=m From 05f9b778abab7d330a40f6bf2ee642dc90aee1a7 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 22 Oct 2025 15:04:41 +0100 Subject: [PATCH 3/3] defconfigs: Add Intel XE graphics driver to 2711 and 2712 defconfigs. Signed-off-by: Dave Stevenson --- arch/arm64/configs/bcm2711_defconfig | 2 ++ arch/arm64/configs/bcm2712_defconfig | 2 ++ 2 files changed, 4 insertions(+) diff --git a/arch/arm64/configs/bcm2711_defconfig b/arch/arm64/configs/bcm2711_defconfig index 0dce14e673084d..a3ff1ca0cace86 100644 --- a/arch/arm64/configs/bcm2711_defconfig +++ b/arch/arm64/configs/bcm2711_defconfig @@ -1080,6 +1080,8 @@ CONFIG_DRM_RADEON=m CONFIG_DRM_AMDGPU=m CONFIG_DRM_AMDGPU_SI=y CONFIG_DRM_AMDGPU_CIK=y +CONFIG_DRM_XE=m +CONFIG_DRM_XE_FORCE_PROBE="*" CONFIG_DRM_UDL=m CONFIG_DRM_PANEL_LVDS=m CONFIG_DRM_PANEL_ILITEK_IL79600A=m diff --git a/arch/arm64/configs/bcm2712_defconfig b/arch/arm64/configs/bcm2712_defconfig index b6280609a476da..6832eb575a7fe7 100644 --- a/arch/arm64/configs/bcm2712_defconfig +++ b/arch/arm64/configs/bcm2712_defconfig @@ -1082,6 +1082,8 @@ CONFIG_DRM_RADEON=m CONFIG_DRM_AMDGPU=m CONFIG_DRM_AMDGPU_SI=y CONFIG_DRM_AMDGPU_CIK=y +CONFIG_DRM_XE=m +CONFIG_DRM_XE_FORCE_PROBE="*" CONFIG_DRM_UDL=m CONFIG_DRM_PANEL_LVDS=m CONFIG_DRM_PANEL_ILITEK_IL79600A=m