tegra: hwpm: os: linux: update kernel vers. check

This is needed when building HWPM driver locally without
NVIDIA build system.

- driver.c: use kernel version check to select the correct
  signature of class:devnode
- mem_mgmt_utils.c:
  - use kernel version check to provide correct parameter
    of MODULE_IMPORT_NS macro
  - use kernel version check to select the correct signature
    of get_user_pages function
- mem_mgmt_utils.h: use kernel version check to select
  between iosys-map or dma-buf-map

Bug 5120925

Change-Id: Ib33afc4d99056d5b872f0d4362e0e6c25eb7b64a
Signed-off-by: Besar Wicaksono <bwicaksono@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-hwpm/+/3306471
GVS: buildbot_gerritrpt <buildbot_gerritrpt@nvidia.com>
Reviewed-by: Yifei Wan <ywan@nvidia.com>
Reviewed-by: Vasuki Shankar <vasukis@nvidia.com>
This commit is contained in:
Besar Wicaksono
2025-02-19 22:18:18 +00:00
committed by mobile promotions
parent 47aa6ea0b9
commit 547508653d
3 changed files with 13 additions and 10 deletions

View File

@@ -1,4 +1,4 @@
/* SPDX-FileCopyrightText: Copyright (c) 2021-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. /* SPDX-FileCopyrightText: Copyright (c) 2021-2025 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
@@ -21,6 +21,7 @@
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/dma-buf.h> #include <linux/dma-buf.h>
#include <linux/debugfs.h> #include <linux/debugfs.h>
#include <linux/version.h>
#include <tegra_hwpm.h> #include <tegra_hwpm.h>
#include <tegra_hwpm_ip.h> #include <tegra_hwpm_ip.h>
@@ -53,7 +54,8 @@ static const struct of_device_id tegra_soc_hwpm_of_match[] = {
}; };
MODULE_DEVICE_TABLE(of, tegra_soc_hwpm_of_match); MODULE_DEVICE_TABLE(of, tegra_soc_hwpm_of_match);
#if defined(NV_CLASS_STRUCT_DEVNODE_HAS_CONST_DEV_ARG) #if defined(NV_CLASS_STRUCT_DEVNODE_HAS_CONST_DEV_ARG) || \
LINUX_VERSION_CODE >= KERNEL_VERSION(6, 2, 0)
static char *tegra_hwpm_get_devnode(const struct device *dev, umode_t *mode) static char *tegra_hwpm_get_devnode(const struct device *dev, umode_t *mode)
#else #else
static char *tegra_hwpm_get_devnode(struct device *dev, umode_t *mode) static char *tegra_hwpm_get_devnode(struct device *dev, umode_t *mode)

View File

@@ -1,5 +1,5 @@
// SPDX-License-Identifier: GPL-2.0-only // SPDX-License-Identifier: GPL-2.0-only
// SPDX-FileCopyrightText: Copyright (c) 2021-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-FileCopyrightText: Copyright (c) 2021-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
#include <nvidia/conftest.h> #include <nvidia/conftest.h>
@@ -25,7 +25,8 @@
#include <os/linux/driver.h> #include <os/linux/driver.h>
#if defined(NV_MODULE_IMPORT_NS_CALLS_STRINGIFY) #if defined(NV_MODULE_IMPORT_NS_CALLS_STRINGIFY) || \
LINUX_VERSION_CODE < KERNEL_VERSION(6, 13, 0)
MODULE_IMPORT_NS(DMA_BUF); MODULE_IMPORT_NS(DMA_BUF);
#else #else
MODULE_IMPORT_NS("DMA_BUF"); MODULE_IMPORT_NS("DMA_BUF");
@@ -460,7 +461,7 @@ int tegra_hwpm_map_update_allowlist(struct tegra_soc_hwpm *hwpm,
goto fail; goto fail;
} }
#if defined(NV_GET_USER_PAGES_HAS_ARGS_FLAGS) /* Linux v6.5 */ #if defined(NV_GET_USER_PAGES_HAS_ARGS_FLAGS) || LINUX_VERSION_CODE >= KERNEL_VERSION(6, 5, 0)
pinned_pages = get_user_pages(user_va & PAGE_MASK, pinned_pages = get_user_pages(user_va & PAGE_MASK,
hwpm->alist_map->num_pages, 0, hwpm->alist_map->pages); hwpm->alist_map->num_pages, 0, hwpm->alist_map->pages);
#else #else

View File

@@ -1,6 +1,6 @@
/* SPDX-License-Identifier: GPL-2.0-only */ /* SPDX-License-Identifier: GPL-2.0-only */
/* /*
* SPDX-FileCopyrightText: Copyright (c) 2022-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-FileCopyrightText: Copyright (c) 2022-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* *
* 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
* under the terms and conditions of the GNU General Public License, * under the terms and conditions of the GNU General Public License,
@@ -23,8 +23,10 @@
#include <linux/types.h> #include <linux/types.h>
#include <linux/version.h> #include <linux/version.h>
#if defined(NV_LINUX_IOSYS_MAP_H_PRESENT) #if defined(NV_LINUX_IOSYS_MAP_H_PRESENT) || \
LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0)
#include <linux/iosys-map.h> #include <linux/iosys-map.h>
#define HWPM_IOSYS_MAP_PRESENT 1
#else #else
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 11, 0) #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 11, 0)
#include <linux/dma-buf-map.h> #include <linux/dma-buf-map.h>
@@ -53,13 +55,11 @@ struct tegra_hwpm_mem_mgmt {
struct dma_buf *mem_bytes_dma_buf; struct dma_buf *mem_bytes_dma_buf;
struct dma_buf_attachment *mem_bytes_attach; struct dma_buf_attachment *mem_bytes_attach;
void *mem_bytes_kernel; void *mem_bytes_kernel;
#if defined(NV_LINUX_IOSYS_MAP_H_PRESENT) #if defined(HWPM_IOSYS_MAP_PRESENT)
struct iosys_map mem_bytes_map; struct iosys_map mem_bytes_map;
#else #else
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 11, 0)
struct dma_buf_map mem_bytes_map; struct dma_buf_map mem_bytes_map;
#endif #endif
#endif
}; };
struct tegra_hwpm_allowlist_map { struct tegra_hwpm_allowlist_map {