From aee51acfea8217f9ecdffed88616220e1e813b46 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 (cherry picked from commit 671f7a39d26449bcbf8fe242bdff7534b9aece63) Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3475287 Reviewed-by: Brad Griffis GVS: buildbot_gerritrpt Tested-by: Brad Griffis --- 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 605bbe68..ad5b599c 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 @@ -1308,7 +1312,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 49c4475a..fd67ff8f 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 += bin_attribute_struct_mmap_has_const_bin_attribute_arg NV_CONFTEST_FUNCTION_COMPILE_TESTS += blk_execute_rq_has_no_gendisk_arg NV_CONFTEST_FUNCTION_COMPILE_TESTS += blk_mq_alloc_disk_for_queue @@ -230,6 +231,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 \ net/gso.h \ diff --git a/scripts/conftest/conftest.sh b/scripts/conftest/conftest.sh index 4b22822e..ed0e1858 100755 --- a/scripts/conftest/conftest.sh +++ b/scripts/conftest/conftest.sh @@ -6518,6 +6518,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" + ;; + bin_attribute_struct_mmap_has_const_bin_attribute_arg) # # Determine if the 'bin_attribute' structure 'mmap' function pointer