From 00ab7abbb67d681bcac68fd9bcee90a05cc83ebc Mon Sep 17 00:00:00 2001 From: Jon Hunter Date: Fri, 9 Aug 2024 12:38:56 +0200 Subject: [PATCH] gpu/drm: tegra: Fix support for Linux v6.12 In Linux v6.12, commit 641bb4394f40 ("fs: move FMODE_UNSIGNED_OFFSET to fop_flags") moves the setting of the FMODE_UNSIGNED_OFFSET into the various drivers and renames this flag. This change is causing various tests to fail because opening the DRM device is failing. Use the presence of the new FOP_UNSIGNED_OFFSET flag in the kernel to determine if we need to set this flag in the Tegra DRM driver. Bug 4876974 Change-Id: Ie72a9340187b1c206f0cda6d7e3dab44d603a41c Signed-off-by: Jon Hunter Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3269063 Reviewed-by: Mikko Perttunen GVS: buildbot_gerritrpt --- drivers/gpu/drm/tegra/drm.c | 3 +++ scripts/conftest/Makefile | 1 + scripts/conftest/conftest.sh | 18 ++++++++++++++++++ 3 files changed, 22 insertions(+) diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c index b9119eea..b096d92e 100644 --- a/drivers/gpu/drm/tegra/drm.c +++ b/drivers/gpu/drm/tegra/drm.c @@ -823,6 +823,9 @@ static const struct file_operations tegra_drm_fops = { .read = drm_read, .compat_ioctl = drm_compat_ioctl, .llseek = noop_llseek, +#if defined(NV_FOP_UNSIGNED_OFFSET_PRESENT) /* Linux v6.12 */ + .fop_flags = FOP_UNSIGNED_OFFSET, +#endif }; static int tegra_drm_context_cleanup(int id, void *p, void *data) diff --git a/scripts/conftest/Makefile b/scripts/conftest/Makefile index d9086368..a10bcbaf 100644 --- a/scripts/conftest/Makefile +++ b/scripts/conftest/Makefile @@ -134,6 +134,7 @@ NV_CONFTEST_FUNCTION_COMPILE_TESTS += fd_empty NV_CONFTEST_FUNCTION_COMPILE_TESTS += fd_file NV_CONFTEST_FUNCTION_COMPILE_TESTS += file_struct_has_f_ref NV_CONFTEST_FUNCTION_COMPILE_TESTS += folio_entire_mapcount +NV_CONFTEST_FUNCTION_COMPILE_TESTS += fop_unsigned_offset NV_CONFTEST_FUNCTION_COMPILE_TESTS += genpd_xlate_t_has_const_of_phandle_args NV_CONFTEST_FUNCTION_COMPILE_TESTS += get_file_rcu_has_double_ptr_file_arg NV_CONFTEST_FUNCTION_COMPILE_TESTS += get_user_pages diff --git a/scripts/conftest/conftest.sh b/scripts/conftest/conftest.sh index 6f80936b..6b41aff7 100755 --- a/scripts/conftest/conftest.sh +++ b/scripts/conftest/conftest.sh @@ -7406,6 +7406,24 @@ compile_test() { compile_check_conftest "$CODE" "NV_FOLIO_ENTIRE_MAPCOUNT_PRESENT" "" "functions" ;; + fop_unsigned_offset) + # + # Determine if definition FOP_UNSIGNED_OFFSET is present. + # + # Commit 641bb4394f40 ("fs: move FMODE_UNSIGNED_OFFSET to fop_flags") + # added the definition FOP_UNSIGNED_OFFSET in Linux v6.12. + # + CODE=" + #include + int conftest(void) + { + return FOP_UNSIGNED_OFFSET; + }" + + compile_check_conftest "$CODE" "NV_FOP_UNSIGNED_OFFSET_PRESENT" "" "types" + ;; + + genpd_xlate_t_has_const_of_phandle_args) # # Determine if genpd_xlate_t function pointer has a