From f78df7fa595b8d5839dfec6c6f4f493ea6fc953f Mon Sep 17 00:00:00 2001 From: Jon Hunter Date: Tue, 26 Mar 2024 13:45:31 +0000 Subject: [PATCH] video: tegra: virt: Fix build for Linux v6.9 The definition SLAB_MEM_SPREAD was removed in Linux v6.9 and this breaks the compilation of the Tegra Graphics Virtualization Comms driver. Add a test to conftest to detect if SLAB_MEM_SPREAD is defined and update the driver accordingly to fix the build. Bug 4471899 Change-Id: Ibcac2dbc6538bcda92e818b333a9db6b8234f1d7 Signed-off-by: Jon Hunter Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3104558 (cherry picked from commit 7acb2551121b5666b4ab382605ee85e48bda03de) Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3104650 Tested-by: mobile promotions Reviewed-by: mobile promotions --- drivers/video/tegra/virt/tegra_gr_comm.c | 10 ++++++++-- scripts/conftest/Makefile | 1 + scripts/conftest/conftest.sh | 17 +++++++++++++++++ 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/drivers/video/tegra/virt/tegra_gr_comm.c b/drivers/video/tegra/virt/tegra_gr_comm.c index 69ec7743..d34693ae 100644 --- a/drivers/video/tegra/virt/tegra_gr_comm.c +++ b/drivers/video/tegra/virt/tegra_gr_comm.c @@ -1,10 +1,12 @@ // SPDX-License-Identifier: GPL-2.0-only +// SPDX-FileCopyrightText: Copyright (c) 2013-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. + /* - * Copyright (c) 2013-2023, NVIDIA Corporation. All rights reserved. - * * Tegra Graphics Virtualization Communication Framework */ +#include + #include #include #include @@ -361,7 +363,11 @@ int tegra_gr_comm_init(struct device *dev, struct device_node *dn, u32 elems, queue->element_cache = kmem_cache_create(name, sizeof(struct gr_comm_element) + size, 0, +#if defined(NV_SLAB_MEM_SPREAD) SLAB_RECLAIM_ACCOUNT | SLAB_MEM_SPREAD, NULL); +#else + SLAB_RECLAIM_ACCOUNT, NULL); +#endif if (!queue->element_cache) { ret = -ENOMEM; diff --git a/scripts/conftest/Makefile b/scripts/conftest/Makefile index a160858a..6277a089 100644 --- a/scripts/conftest/Makefile +++ b/scripts/conftest/Makefile @@ -142,6 +142,7 @@ NV_CONFTEST_FUNCTION_COMPILE_TESTS += pci_enable_pcie_error_reporting NV_CONFTEST_FUNCTION_COMPILE_TESTS += pci_epf_driver_struct_probe_has_id_arg NV_CONFTEST_FUNCTION_COMPILE_TESTS += register_shrinker_has_fmt_arg NV_CONFTEST_FUNCTION_COMPILE_TESTS += shrinker_alloc +NV_CONFTEST_FUNCTION_COMPILE_TESTS += slab_mem_spread NV_CONFTEST_FUNCTION_COMPILE_TESTS += snd_soc_card_jack_new_has_no_snd_soc_jack_pins NV_CONFTEST_FUNCTION_COMPILE_TESTS += snd_soc_component_driver_struct_has_non_legacy_dai_naming NV_CONFTEST_FUNCTION_COMPILE_TESTS += snd_soc_dai_link_struct_has_c2c_params_arg diff --git a/scripts/conftest/conftest.sh b/scripts/conftest/conftest.sh index c38306fb..e797b120 100755 --- a/scripts/conftest/conftest.sh +++ b/scripts/conftest/conftest.sh @@ -7329,6 +7329,23 @@ compile_test() { compile_check_conftest "$CODE" "NV_SHRINKER_ALLOC_PRESENT" "" "functions" ;; + slab_mem_spread) + # + # Determine if SLAB_MEM_SPREAD is defined. + # + # Commit f88c3fb81c4b ("mm, slab: remove last vestiges of + # SLAB_MEM_SPREAD") removed the definition SLAB_MEM_SPREAD in + # Linux v6.9. This definition is no longer supported and can + # be removed for v6.9+ kernels. + CODE=" + #include + void conftest_slab_mem_spread(void) { + slab_flags_t flags = SLAB_MEM_SPREAD; + }" + + compile_check_conftest "$CODE" "NV_SLAB_MEM_SPREAD" "" "functions" + ;; + snd_soc_card_jack_new_has_no_snd_soc_jack_pins) # # Determine if the function snd_soc_card_jack_new() has 'pins' and