mirror of
git://nv-tegra.nvidia.com/linux-nv-oot.git
synced 2025-12-22 09:11:26 +03:00
virt: hvc_sysfs: Fix build for Linux v6.13
In Linux v6.13, commit 94a20fb9af16 ("sysfs: treewide: constify
attribute callback of bin_attribute::mmap()") changed the type of the
'struct bin_attribute' argument of the bin_attribute:mmap function
pointer to const. Use conftest to detect if this argument is const or
not in the kernel the driver is being compiled against to fix the build.
Bug 4991705
Change-Id: I791d6c9dde50f1444d0339ebd8a18434045f9026
Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3261699
Reviewed-by: Manish Bhardwaj <mbhardwaj@nvidia.com>
GVS: buildbot_gerritrpt <buildbot_gerritrpt@nvidia.com>
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* SPDX-FileCopyrightText: Copyright (c) 2022-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
* SPDX-FileCopyrightText: Copyright (c) 2022-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||||
* SPDX-License-Identifier: GPL-2.0-only
|
* SPDX-License-Identifier: GPL-2.0-only
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify it
|
* This program is free software; you can redistribute it and/or modify it
|
||||||
@@ -15,6 +15,8 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <nvidia/conftest.h>
|
||||||
|
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/errno.h>
|
#include <linux/errno.h>
|
||||||
@@ -52,7 +54,12 @@ static struct hyp_shared_memory_info hyp_shared_memory_attrs[HYP_SHM_ID_NUM];
|
|||||||
|
|
||||||
/* Map the HV trace buffer to the calling user process */
|
/* Map the HV trace buffer to the calling user process */
|
||||||
static int hvc_sysfs_mmap(struct file *fp, struct kobject *ko,
|
static int hvc_sysfs_mmap(struct file *fp, struct kobject *ko,
|
||||||
struct bin_attribute *attr, struct vm_area_struct *vma)
|
#if defined(NV_BIN_ATTRIBUTE_STRUCT_MMAP_HAS_CONST_BIN_ATTRIBUTE_ARG) /* Linux v6.13 */
|
||||||
|
const struct bin_attribute *attr,
|
||||||
|
#else
|
||||||
|
struct bin_attribute *attr,
|
||||||
|
#endif
|
||||||
|
struct vm_area_struct *vma)
|
||||||
{
|
{
|
||||||
struct hyp_shared_memory_info *hyp_shm_info =
|
struct hyp_shared_memory_info *hyp_shm_info =
|
||||||
container_of(attr, struct hyp_shared_memory_info, attr);
|
container_of(attr, struct hyp_shared_memory_info, attr);
|
||||||
|
|||||||
@@ -91,6 +91,7 @@ endef
|
|||||||
NV_CONFTEST_FUNCTION_COMPILE_TESTS += __alloc_disk_node_has_lkclass_arg
|
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 += __assign_str_has_no_src_arg
|
||||||
NV_CONFTEST_FUNCTION_COMPILE_TESTS += aperture_remove_all_conflicting_devices
|
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_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_disk_for_queue
|
||||||
NV_CONFTEST_FUNCTION_COMPILE_TESTS += blk_mq_alloc_queue
|
NV_CONFTEST_FUNCTION_COMPILE_TESTS += blk_mq_alloc_queue
|
||||||
|
|||||||
@@ -6556,6 +6556,27 @@ compile_test() {
|
|||||||
compile_check_conftest "$CODE" "NV_APERTURE_REMOVE_ALL_CONFLICTING_DEVICES_PRESENT" "" "types"
|
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
|
||||||
|
# has const 'struct bin_attribute' argument.
|
||||||
|
#
|
||||||
|
# Commit 94a20fb9af16 ("sysfs: treewide: constify attribute callback
|
||||||
|
# of bin_attribute::mmap()") updated the 'mmap' function pointer to
|
||||||
|
# take a const 'bin_attribute' structure in Linux v6.13.
|
||||||
|
#
|
||||||
|
CODE="
|
||||||
|
#include <linux/sysfs.h>
|
||||||
|
void conftest(struct bin_attribute *attr) {
|
||||||
|
int (*fn)(struct file *, struct kobject *,
|
||||||
|
const struct bin_attribute *,
|
||||||
|
struct vm_area_struct *) = attr->mmap;
|
||||||
|
}"
|
||||||
|
|
||||||
|
compile_check_conftest "$CODE" \
|
||||||
|
"NV_BIN_ATTRIBUTE_STRUCT_MMAP_HAS_CONST_BIN_ATTRIBUTE_ARG" "" "types"
|
||||||
|
;;
|
||||||
|
|
||||||
blk_execute_rq_has_no_gendisk_arg)
|
blk_execute_rq_has_no_gendisk_arg)
|
||||||
#
|
#
|
||||||
# Determine if the function blk_execute_rq() has an argument of
|
# Determine if the function blk_execute_rq() has an argument of
|
||||||
|
|||||||
Reference in New Issue
Block a user