From a8777837dde0255166c814b7eb4f26bc45c221ea Mon Sep 17 00:00:00 2001 From: Jon Hunter Date: Wed, 16 Oct 2024 17:27:18 +0100 Subject: [PATCH] drm/tegra: Fix aperture support for Linux v6.13 In Linux v6.13, commit 689274a56c0c ("drm: Remove DRM aperture helpers") removed the DRM aperture helper functions and drivers should simply use the existing video helpers. Update the Tegra DRM driver to use aperture_remove_all_conflicting_devices() if available to align with upstream. Bug 4991705 Change-Id: Ie4b78a4ea519ffcaaf972417ec2cbe7c436eb808 Signed-off-by: Jon Hunter Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3261694 GVS: buildbot_gerritrpt Reviewed-by: Mikko Perttunen --- drivers/gpu/drm/tegra/drm.c | 8 +++++++- scripts/conftest/Makefile | 2 ++ scripts/conftest/conftest.sh | 22 ++++++++++++++++++++++ 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c index 3f5f6fd7..b820d66c 100644 --- a/drivers/gpu/drm/tegra/drm.c +++ b/drivers/gpu/drm/tegra/drm.c @@ -16,7 +16,11 @@ #include #include +#if defined(NV_APERTURE_REMOVE_ALL_CONFLICTING_DEVICES_PRESENT) /* Linux v6.0 */ +#include +#else #include +#endif #include #include #include @@ -1315,7 +1319,9 @@ static int host1x_drm_probe(struct host1x_device *dev) drm_mode_config_reset(drm); if (drm->mode_config.num_crtc > 0) { -#if defined(NV_DRM_APERTURE_REMOVE_FRAMEBUFFERS_HAS_NO_PRIMARY_ARG) /* Linux v6.5 */ +#if defined(NV_APERTURE_REMOVE_ALL_CONFLICTING_DEVICES_PRESENT) /* Linux v6.0 */ + err = aperture_remove_all_conflicting_devices(tegra_drm_driver.name); +#elif defined(NV_DRM_APERTURE_REMOVE_FRAMEBUFFERS_HAS_NO_PRIMARY_ARG) /* Linux v6.5 */ err = drm_aperture_remove_framebuffers(&tegra_drm_driver); #elif defined(NV_DRM_APERTURE_REMOVE_FRAMEBUFFERS_HAS_DRM_DRIVER_ARG) /* Linux v5.15 */ err = drm_aperture_remove_framebuffers(false, &tegra_drm_driver); diff --git a/scripts/conftest/Makefile b/scripts/conftest/Makefile index b97aa06d..f96fb53c 100644 --- a/scripts/conftest/Makefile +++ b/scripts/conftest/Makefile @@ -90,6 +90,7 @@ endef NV_CONFTEST_FUNCTION_COMPILE_TESTS += __alloc_disk_node_has_lkclass_arg NV_CONFTEST_FUNCTION_COMPILE_TESTS += __assign_str_has_no_src_arg +NV_CONFTEST_FUNCTION_COMPILE_TESTS += aperture_remove_all_conflicting_devices NV_CONFTEST_FUNCTION_COMPILE_TESTS += blk_execute_rq_has_no_gendisk_arg NV_CONFTEST_FUNCTION_COMPILE_TESTS += blk_mq_alloc_disk_for_queue NV_CONFTEST_FUNCTION_COMPILE_TESTS += blk_mq_alloc_queue @@ -244,6 +245,7 @@ NV_HEADER_PRESENCE_TESTS = \ drm/drm_dp_aux_bus.h \ drm/drm_eld.h \ generated/autoconf.h \ + linux/aperture.h \ linux/kconfig.h \ linux/iosys-map.h \ linux/tegra_prod.h \ diff --git a/scripts/conftest/conftest.sh b/scripts/conftest/conftest.sh index 459dcb1d..7be573f4 100755 --- a/scripts/conftest/conftest.sh +++ b/scripts/conftest/conftest.sh @@ -6534,6 +6534,28 @@ compile_test() { compile_check_conftest "$CODE" "NV___ALLOC_DISK_NODE_HAS_LKCLASS_ARG" "" "types" ;; + aperture_remove_all_conflicting_devices) + # + # Determine if the function aperture_remove_all_conflicting_devices() + # is present. + # + # In Linux v6.0, commit 7283f862bd99 ("drm: Implement DRM aperture + # helpers under video/") added the function + # aperture_remove_all_conflicting_devices(). + # + CODE=" + #if defined(NV_LINUX_APERTURE_H_PRESENT) + #include + #else + #error \"linux/aperture.h not found!\" + #endif + void conftest_aperture_remove_all_conflicting_devices(const char *name) { + aperture_remove_all_conflicting_devices(name); + }" + + compile_check_conftest "$CODE" "NV_APERTURE_REMOVE_ALL_CONFLICTING_DEVICES_PRESENT" "" "types" + ;; + blk_execute_rq_has_no_gendisk_arg) # # Determine if the function blk_execute_rq() has an argument of