From 096d8063683857b27f0ede346a8bfeb104441d18 Mon Sep 17 00:00:00 2001 From: Yang Bo Date: Wed, 28 May 2025 11:18:19 +0800 Subject: [PATCH 1/5] 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 acbbca9d5c92f0..7c694b887df652 100644 --- a/drivers/gpu/drm/ttm/ttm_bo_util.c +++ b/drivers/gpu/drm/ttm/ttm_bo_util.c @@ -359,7 +359,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 b3fffe7b5062a9..6966495bdd499b 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 6bf3935b87928b21eff51eff4944a089cd55a662 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 30 Sep 2025 15:02:52 +0100 Subject: [PATCH 2/5] 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 | 7 +++++++ arch/arm64/configs/bcm2712_defconfig | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/arch/arm64/configs/bcm2711_defconfig b/arch/arm64/configs/bcm2711_defconfig index 7ff3838b59975a..554ff765065279 100644 --- a/arch/arm64/configs/bcm2711_defconfig +++ b/arch/arm64/configs/bcm2711_defconfig @@ -1064,6 +1064,10 @@ CONFIG_AUXDISPLAY=y CONFIG_HD44780=m CONFIG_DRM=m CONFIG_DRM_LOAD_EDID_FIRMWARE=y +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_ILI9806E=m @@ -1126,6 +1130,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_UA101=m CONFIG_SND_USB_CAIAQ=m diff --git a/arch/arm64/configs/bcm2712_defconfig b/arch/arm64/configs/bcm2712_defconfig index 593a1af178e9c8..2423857bdff2f4 100644 --- a/arch/arm64/configs/bcm2712_defconfig +++ b/arch/arm64/configs/bcm2712_defconfig @@ -1066,6 +1066,10 @@ CONFIG_AUXDISPLAY=y CONFIG_HD44780=m CONFIG_DRM=m CONFIG_DRM_LOAD_EDID_FIRMWARE=y +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_ILI9806E=m @@ -1128,6 +1132,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_UA101=m CONFIG_SND_USB_CAIAQ=m From 76c8048584342649a447ffa84f4ec526f67f40af Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 1 Oct 2025 15:48:14 +0100 Subject: [PATCH 3/5] drm/i915: Only reset console if enabled Taken from https://github.com/chimera-linux/cports/blob/master/main/linux-stable/patches/xe-nonx86.patch Signed-off-by: Dave Stevenson --- drivers/gpu/drm/i915/display/intel_vga.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/gpu/drm/i915/display/intel_vga.c b/drivers/gpu/drm/i915/display/intel_vga.c index 6e125564db34c9..31d3f1f504d26f 100644 --- a/drivers/gpu/drm/i915/display/intel_vga.c +++ b/drivers/gpu/drm/i915/display/intel_vga.c @@ -78,6 +78,7 @@ void intel_vga_disable(struct intel_display *display) void intel_vga_reset_io_mem(struct intel_display *display) { +#if defined(CONFIG_VGA_CONSOLE) struct pci_dev *pdev = to_pci_dev(display->drm->dev); /* @@ -93,6 +94,7 @@ void intel_vga_reset_io_mem(struct intel_display *display) vga_get_uninterruptible(pdev, VGA_RSRC_LEGACY_IO); outb(inb(VGA_MIS_R), VGA_MIS_W); vga_put(pdev, VGA_RSRC_LEGACY_IO); +#endif } int intel_vga_register(struct intel_display *display) From 604a0c3143c63dc88cf7e3194001f5a858ca19d5 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 1 Oct 2025 18:42:42 +0100 Subject: [PATCH 4/5] drm/i915: Another legacy path to be nuked Signed-off-by: Dave Stevenson --- drivers/gpu/drm/i915/display/intel_display.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c index 56781819f9143b..3296dd412dca52 100644 --- a/drivers/gpu/drm/i915/display/intel_display.c +++ b/drivers/gpu/drm/i915/display/intel_display.c @@ -7653,6 +7653,7 @@ int intel_atomic_commit(struct drm_device *dev, struct drm_atomic_state *_state, * FIXME: Cut over to (async) commit helpers instead of hand-rolling * everything. */ +#if defined(CONFIG_VGA_CONSOLE) if (state->base.legacy_cursor_update) { struct intel_crtc_state *new_crtc_state; struct intel_crtc *crtc; @@ -7661,7 +7662,7 @@ int intel_atomic_commit(struct drm_device *dev, struct drm_atomic_state *_state, for_each_new_intel_crtc_in_state(state, crtc, new_crtc_state, i) complete_all(&new_crtc_state->uapi.commit->flip_done); } - +#endif ret = intel_atomic_prepare_commit(state); if (ret) { drm_dbg_atomic(display->drm, From 40759d30cde03dfa27d44fc912563d895cc8e5c4 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 22 Oct 2025 15:04:41 +0100 Subject: [PATCH 5/5] 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 554ff765065279..5d968cafb8ac81 100644 --- a/arch/arm64/configs/bcm2711_defconfig +++ b/arch/arm64/configs/bcm2711_defconfig @@ -1068,6 +1068,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_ILI9806E=m diff --git a/arch/arm64/configs/bcm2712_defconfig b/arch/arm64/configs/bcm2712_defconfig index 2423857bdff2f4..193849c2a8f04f 100644 --- a/arch/arm64/configs/bcm2712_defconfig +++ b/arch/arm64/configs/bcm2712_defconfig @@ -1070,6 +1070,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_ILI9806E=m