From e91b43420c366e783b57947238cc304aedb8c52d Mon Sep 17 00:00:00 2001 From: Laxman Dewangan Date: Tue, 5 Dec 2023 11:29:55 +0000 Subject: [PATCH] drm/tegra: Use conftest for drm_debugfs_remove_files() The function drm_debugfs_remove_file() has extra argument in Linux 6.7 with change commit 8e455145d8f16 ("drm/debugfs: rework drm_debugfs_create_files implementation v2") Use conftest to findout this new argument presence. Bug 4346767 Change-Id: I77346a85c8841f915f4a8f3f471af1e03240fa62 Signed-off-by: Laxman Dewangan Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3028576 (cherry picked from commit 1ae406004fe8b3d6976bdfb0da228984afb19606) Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3031239 Reviewed-by: Jonathan Hunter Tested-by: Jonathan Hunter GVS: Gerrit_Virtual_Submit --- Makefile | 6 ------ drivers/gpu/drm/tegra/dc.c | 5 ++++- drivers/gpu/drm/tegra/dsi.c | 14 +++++--------- drivers/gpu/drm/tegra/hdmi.c | 14 +++++--------- drivers/gpu/drm/tegra/sor.c | 12 +++--------- scripts/conftest/Makefile | 1 + scripts/conftest/conftest.sh | 19 +++++++++++++++++++ 7 files changed, 37 insertions(+), 34 deletions(-) diff --git a/Makefile b/Makefile index 7e591c48..deb62465 100644 --- a/Makefile +++ b/Makefile @@ -51,12 +51,6 @@ subdir-ccflags-y += -DNV_V4L2_ASYNC_NF_SUBDEVICE_INIT_RENAME export CONFIG_SKIP_CRYPTO=y endif -# Changes done in Linux 6.7 onwards -ifeq ($(shell test $(LINUX_VERSION) -ge $(LINUX_VERSION_6_7); echo $$?),0) -# drm_debugfs_remove_files has root argument -subdir-ccflags-y += -DNV_DRM_DEBUGFS_REMOVE_HAS_ROOT_ARGS -endif - ifeq ($(CONFIG_TEGRA_VIRTUALIZATION),y) subdir-ccflags-y += -DCONFIG_TEGRA_VIRTUALIZATION endif diff --git a/drivers/gpu/drm/tegra/dc.c b/drivers/gpu/drm/tegra/dc.c index e6091681..3ca7e0f5 100644 --- a/drivers/gpu/drm/tegra/dc.c +++ b/drivers/gpu/drm/tegra/dc.c @@ -4,6 +4,8 @@ * Copyright (C) 2012 NVIDIA CORPORATION. All rights reserved. */ +#include + #include #include #include @@ -1746,7 +1748,8 @@ static void tegra_dc_early_unregister(struct drm_crtc *crtc) unsigned int count = ARRAY_SIZE(debugfs_files); struct drm_minor *minor = crtc->dev->primary; struct tegra_dc *dc = to_tegra_dc(crtc); -#if defined(NV_DRM_DEBUGFS_REMOVE_HAS_ROOT_ARGS) + +#if defined(NV_DRM_DEBUGFS_REMOVE_FILES_HAS_ROOT_ARG) /* Linux v6.7 */ struct dentry *root; #ifdef CONFIG_DEBUG_FS diff --git a/drivers/gpu/drm/tegra/dsi.c b/drivers/gpu/drm/tegra/dsi.c index 053fd1e9..1e4f0920 100644 --- a/drivers/gpu/drm/tegra/dsi.c +++ b/drivers/gpu/drm/tegra/dsi.c @@ -3,6 +3,8 @@ * Copyright (C) 2013 NVIDIA Corporation */ +#include + #include #include #include @@ -254,17 +256,11 @@ static void tegra_dsi_early_unregister(struct drm_connector *connector) struct tegra_output *output = connector_to_output(connector); unsigned int count = ARRAY_SIZE(debugfs_files); struct tegra_dsi *dsi = to_dsi(output); -#if defined(NV_DRM_DEBUGFS_REMOVE_HAS_ROOT_ARGS) - struct dentry *root; - -#ifdef CONFIG_DEBUG_FS - root = connector->debugfs_entry; -#else - root = NULL; -#endif +#if defined(NV_DRM_DEBUGFS_REMOVE_FILES_HAS_ROOT_ARG) /* Linux v6.7 */ drm_debugfs_remove_files(dsi->debugfs_files, count, - root, connector->dev->primary); + connector->debugfs_entry, + connector->dev->primary); #else drm_debugfs_remove_files(dsi->debugfs_files, count, connector->dev->primary); diff --git a/drivers/gpu/drm/tegra/hdmi.c b/drivers/gpu/drm/tegra/hdmi.c index 1b7c5a12..c85c7fdd 100644 --- a/drivers/gpu/drm/tegra/hdmi.c +++ b/drivers/gpu/drm/tegra/hdmi.c @@ -4,6 +4,8 @@ * Copyright (C) 2012 NVIDIA CORPORATION. All rights reserved. */ +#include + #include #include #include @@ -1121,16 +1123,10 @@ static void tegra_hdmi_early_unregister(struct drm_connector *connector) struct drm_minor *minor = connector->dev->primary; unsigned int count = ARRAY_SIZE(debugfs_files); struct tegra_hdmi *hdmi = to_hdmi(output); -#if defined(NV_DRM_DEBUGFS_REMOVE_HAS_ROOT_ARGS) - struct dentry *root; -#ifdef CONFIG_DEBUG_FS - root = connector->debugfs_entry; -#else - root = NULL; -#endif - - drm_debugfs_remove_files(hdmi->debugfs_files, count, root, minor); +#if defined(NV_DRM_DEBUGFS_REMOVE_FILES_HAS_ROOT_ARG) /* Linux v6.7 */ + drm_debugfs_remove_files(hdmi->debugfs_files, count, + connector->debugfs_entry, minor); #else drm_debugfs_remove_files(hdmi->debugfs_files, count, minor); #endif diff --git a/drivers/gpu/drm/tegra/sor.c b/drivers/gpu/drm/tegra/sor.c index 890d915c..794ae1ea 100644 --- a/drivers/gpu/drm/tegra/sor.c +++ b/drivers/gpu/drm/tegra/sor.c @@ -1717,17 +1717,11 @@ static void tegra_sor_early_unregister(struct drm_connector *connector) struct tegra_output *output = connector_to_output(connector); unsigned int count = ARRAY_SIZE(debugfs_files); struct tegra_sor *sor = to_sor(output); -#if defined(NV_DRM_DEBUGFS_REMOVE_HAS_ROOT_ARGS) - struct dentry *root; - -#ifdef CONFIG_DEBUG_FS - root = connector->debugfs_entry; -#else - root = NULL; -#endif +#if defined(NV_DRM_DEBUGFS_REMOVE_FILES_HAS_ROOT_ARG) /* Linux v6.7 */ drm_debugfs_remove_files(sor->debugfs_files, count, - root, connector->dev->primary); + connector->debugfs_entry, + connector->dev->primary); #else drm_debugfs_remove_files(sor->debugfs_files, count, diff --git a/scripts/conftest/Makefile b/scripts/conftest/Makefile index dab9ce16..b8752751 100644 --- a/scripts/conftest/Makefile +++ b/scripts/conftest/Makefile @@ -105,6 +105,7 @@ NV_CONFTEST_FUNCTION_COMPILE_TESTS += devm_thermal_of_zone_register NV_CONFTEST_FUNCTION_COMPILE_TESTS += disk_check_media_change NV_CONFTEST_FUNCTION_COMPILE_TESTS += dma_slave_config_struct_has_slave_id NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_aperture_remove_framebuffers +NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_debugfs_remove_files_has_root_arg NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_driver_struct_has_irq_enabled_arg NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_fb_helper_alloc_info NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_fb_helper_prepare_has_preferred_bpp_arg diff --git a/scripts/conftest/conftest.sh b/scripts/conftest/conftest.sh index a0e17c3f..97cd442a 100755 --- a/scripts/conftest/conftest.sh +++ b/scripts/conftest/conftest.sh @@ -6655,6 +6655,25 @@ compile_test() { compile_check_conftest "$CODE" "NV_DRM_APERTURE_REMOVE_FRAMEBUFFERS_HAS_NO_PRIMARY_ARG" "" "types" ;; + drm_debugfs_remove_files_has_root_arg) + # + # Determine if the function drm_debugfs_remove_files() has the 'root' argument. + # + # Commit 8e455145d8f1 ("drm/debugfs: rework drm_debugfs_create_files + # implementation v2") added a 'root' argument to the function + # drm_debugfs_remove_files() in Linux v6.7. + # + CODE=" + #include + int conftest_drm_debugfs_remove_files_has_root_arg(const struct drm_info_list *files, + int count, struct dentry *root, + struct drm_minor *minor) { + return drm_debugfs_remove_files(files, count, root, minor); + }" + + compile_check_conftest "$CODE" "NV_DRM_DEBUGFS_REMOVE_FILES_HAS_ROOT_ARG" "" "types" + ;; + drm_driver_struct_has_irq_enabled_arg) # # Determine if the 'drm_driver' structure