From fb84554a972c872013344e4d4028e5b1b5b10eb9 Mon Sep 17 00:00:00 2001 From: Vedashree Vidwans Date: Thu, 29 Sep 2022 11:26:35 -0700 Subject: [PATCH] tegra: hwpm: add missing ref to iosys-map.h dma_bf_map is renamed to iosys_map for kernels > 5.18. - Update mem_bytes map function to use iosys_map for kernel versions greater than 5.18. - Add missing reference to iosys-map.h to include iosys_map definition. Bug 3733730 Change-Id: I37f981dd8b2aa0154d783c35a645ab8d3d9faa3b Signed-off-by: Vedashree Vidwans Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2784481 Reviewed-by: Jonathan Hunter Reviewed-by: svc-mobile-coverity Reviewed-by: svc-mobile-cert Reviewed-by: Rohit Khanna Reviewed-by: Shanker Donthineni Reviewed-by: Seema Khowala GVS: Gerrit_Virtual_Submit --- os/linux/mem_mgmt_utils.c | 18 ++++++++---------- os/linux/mem_mgmt_utils.h | 9 +++++++++ 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/os/linux/mem_mgmt_utils.c b/os/linux/mem_mgmt_utils.c index 145242b..065355f 100644 --- a/os/linux/mem_mgmt_utils.c +++ b/os/linux/mem_mgmt_utils.c @@ -128,28 +128,26 @@ static int tegra_hwpm_dma_map_mem_bytes_buffer(struct tegra_soc_hwpm *hwpm, sg_dma_address(hwpm->mem_mgmt->mem_bytes_sgt->sgl); #if defined(CONFIG_TEGRA_HWPM_OOT) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0) + hwpm->mem_mgmt->mem_bytes_kernel = + (struct iosys_map *) &hwpm->mem_mgmt->mem_bytes_map; + err = dma_buf_vmap(hwpm->mem_mgmt->mem_bytes_dma_buf, + (struct iosys_map *)hwpm->mem_mgmt->mem_bytes_kernel); +#else hwpm->mem_mgmt->mem_bytes_kernel = (struct dma_buf_map *) &hwpm->mem_mgmt->mem_bytes_map; err = dma_buf_vmap(hwpm->mem_mgmt->mem_bytes_dma_buf, -#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0) - (struct iosys_map *)hwpm->mem_mgmt->mem_bytes_kernel); -#else (struct dma_buf_map *)hwpm->mem_mgmt->mem_bytes_kernel); #endif - if (err != 0) { - tegra_hwpm_err(hwpm, - "Unable to map mem_bytes buffer into kernel VA space"); - return -ENOMEM; - } -#else +#else /* !CONFIG_TEGRA_HWPM_OOT */ hwpm->mem_mgmt->mem_bytes_kernel = dma_buf_vmap(hwpm->mem_mgmt->mem_bytes_dma_buf); +#endif if (!hwpm->mem_mgmt->mem_bytes_kernel) { tegra_hwpm_err(hwpm, "Unable to map mem_bytes buffer into kernel VA space"); return -ENOMEM; } -#endif memset(hwpm->mem_mgmt->mem_bytes_kernel, 0, 32); diff --git a/os/linux/mem_mgmt_utils.h b/os/linux/mem_mgmt_utils.h index dd730b5..c6b63da 100644 --- a/os/linux/mem_mgmt_utils.h +++ b/os/linux/mem_mgmt_utils.h @@ -16,8 +16,13 @@ #include #if defined(CONFIG_TEGRA_HWPM_OOT) +#include +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0) +#include +#else #include #endif +#endif /* This macro is copy of TEGRA_SOC_HWPM_MEM_BYTES_INVALID */ #define TEGRA_HWPM_MEM_BYTES_INVALID 0xffffffff @@ -42,8 +47,12 @@ struct tegra_hwpm_mem_mgmt { u64 mem_bytes_buf_va; void *mem_bytes_kernel; #if defined(CONFIG_TEGRA_HWPM_OOT) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0) + struct iosys_map mem_bytes_map; +#else struct dma_buf_map mem_bytes_map; #endif +#endif }; struct tegra_hwpm_allowlist_map {