From d8714b7da45b43b9ce96ce8b7cbc70ddef399f05 Mon Sep 17 00:00:00 2001 From: Chris Dragan Date: Tue, 7 Jun 2022 06:24:41 -0700 Subject: [PATCH] misc: mods: add support for kstable Bug 3660609 Change-Id: Iaa6e4e048afc1a1e26d5dccc361a18322a23b47e Signed-off-by: Chris Dragan Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2726143 Reviewed-by: svcacv Reviewed-by: svc_kernel_abi Reviewed-by: Rohit Khanna Reviewed-by: Sachin Nikam GVS: Gerrit_Virtual_Submit --- drivers/misc/mods/Makefile | 42 +++++++++++++++++++++---------- drivers/misc/mods/mods_internal.h | 12 ++++++--- drivers/misc/mods/mods_krnl.c | 13 +++++++--- drivers/misc/mods/mods_mem.c | 5 ---- 4 files changed, 47 insertions(+), 25 deletions(-) diff --git a/drivers/misc/mods/Makefile b/drivers/misc/mods/Makefile index 522528d7..201e1c3e 100644 --- a/drivers/misc/mods/Makefile +++ b/drivers/misc/mods/Makefile @@ -1,19 +1,35 @@ +# SPDX-License-Identifier: GPL-2.0 + +ccflags-y += -I$(srctree.nvidia)/include + +ifeq ($(CONFIG_TEGRA_OOT_MODULE),m) +CONFIG_MODS := m +endif + obj-$(CONFIG_MODS) := mods.o -mods-y := mods_krnl.o + +mods-y := mods_irq.o +mods-y += mods_krnl.o mods-y += mods_mem.o -mods-y += mods_irq.o -mods-$(CONFIG_TRUSTY) += mods_tz.o -mods-$(CONFIG_COMMON_CLK) += mods_clock.o -mods-$(CONFIG_ARCH_TEGRA) += mods_tegraprod.o -mods-$(CONFIG_ARCH_TEGRA_19x_SOC) += mods_ras.o -mods-$(CONFIG_PCI) += mods_pci.o + mods-$(CONFIG_ACPI) += mods_acpi.o -mods-$(CONFIG_DMA_SHARED_BUFFER) += mods_dmabuf.o -mods-$(CONFIG_ARCH_TEGRA) += mods_smmu_drv.o -mods-$(CONFIG_ARCH_TEGRA) += mods_oist.o -mods-$(CONFIG_DMA_ENGINE) += mods_dma.o -mods-$(CONFIG_DEBUG_FS) += mods_debugfs.o -mods-$(CONFIG_TEGRA_DC) += mods_tegradc.o mods-$(CONFIG_TEGRA_NVADSP) += mods_adsp.o +mods-$(CONFIG_COMMON_CLK) += mods_clock.o +mods-$(CONFIG_DEBUG_FS) += mods_debugfs.o +mods-$(CONFIG_DMA_ENGINE) += mods_dma.o mods-$(CONFIG_NET) += mods_netdevice.o +mods-$(CONFIG_ARCH_TEGRA) += mods_oist.o +mods-$(CONFIG_PCI) += mods_pci.o +mods-$(CONFIG_ARCH_TEGRA_19x_SOC) += mods_ras.o +mods-$(CONFIG_ARCH_TEGRA) += mods_smmu_drv.o +mods-$(CONFIG_TEGRA_DC) += mods_tegradc.o +mods-$(CONFIG_TRUSTY) += mods_tz.o + mods-objs := mods.dtb.o + +ifneq ($(CONFIG_TEGRA_OOT_MODULE),m) +ccflags-y += -DMODS_HAS_DMABUF +ccflags-y += -DMODS_HAS_PROD +mods-$(CONFIG_DMA_SHARED_BUFFER) += mods_dmabuf.o +mods-$(CONFIG_ARCH_TEGRA) += mods_tegraprod.o +endif diff --git a/drivers/misc/mods/mods_internal.h b/drivers/misc/mods/mods_internal.h index a7eface5..56cef48b 100644 --- a/drivers/misc/mods/mods_internal.h +++ b/drivers/misc/mods/mods_internal.h @@ -600,13 +600,15 @@ int esc_mods_register_irq_4(struct mods_client *client, int esc_mods_query_irq_3(struct mods_client *client, struct MODS_QUERY_IRQ_3 *p); -#ifdef MODS_HAS_TEGRA - +#ifdef MODS_HAS_PROD /* bpmp uphy */ int esc_mods_bpmp_set_pcie_state(struct mods_client *client, struct MODS_SET_PCIE_STATE *p); int esc_mods_bpmp_init_pcie_ep_pll(struct mods_client *client, struct MODS_INIT_PCIE_EP_PLL *p); +#endif + +#ifdef MODS_HAS_TEGRA /* clock */ int esc_mods_get_clock_handle(struct mods_client *client, @@ -674,7 +676,7 @@ int esc_mods_net_force_link(struct mods_client *client, struct MODS_NET_DEVICE_NAME *p); #endif -#if defined(MODS_HAS_TEGRA) && defined(CONFIG_DMA_SHARED_BUFFER) +#if defined(MODS_HAS_DMABUF) && defined(CONFIG_DMA_SHARED_BUFFER) int esc_mods_dmabuf_get_phys_addr(struct mods_client *client, struct MODS_DMABUF_GET_PHYSICAL_ADDRESS *p); #else @@ -691,6 +693,7 @@ int esc_mods_adsp_run_app(struct mods_client *client, struct MODS_ADSP_RUN_APP_INFO *p); #endif +#ifdef MODS_HAS_PROD /* prod */ int mods_tegra_prod_init(const struct miscdevice *misc_dev); int esc_mods_tegra_prod_iterate_dt(struct mods_client *client, @@ -705,6 +708,7 @@ int esc_mods_tegra_prod_set_prod_by_name(struct mods_client *client, struct MODS_TEGRA_PROD_SET_TUPLE *tuple); int esc_mods_tegra_prod_set_prod_exact(struct mods_client *client, struct MODS_TEGRA_PROD_SET_TUPLE *tuple); +#endif #ifdef CONFIG_TRUSTY /* trustzone app call */ @@ -724,7 +728,7 @@ static inline int mods_create_debugfs(struct miscdevice *modsdev) static inline void mods_remove_debugfs(void) {} #endif /* CONFIG_DEBUG_FS */ -#if defined(MODS_HAS_TEGRA) && defined(CONFIG_DMA_SHARED_BUFFER) +#if defined(MODS_HAS_DMABUF) && defined(CONFIG_DMA_SHARED_BUFFER) int mods_init_dmabuf(void); void mods_exit_dmabuf(void); #else diff --git a/drivers/misc/mods/mods_krnl.c b/drivers/misc/mods/mods_krnl.c index 65df7238..2fbce034 100644 --- a/drivers/misc/mods/mods_krnl.c +++ b/drivers/misc/mods/mods_krnl.c @@ -465,8 +465,10 @@ static int __init mods_init_module(void) if (rc < 0) return rc; +#if defined(MODS_HAS_PROD) /* tegra prod */ mods_tegra_prod_init(&mods_dev); +#endif #if defined(CONFIG_DMA_ENGINE) mods_init_dma(); @@ -2377,7 +2379,7 @@ static long mods_krnl_ioctl(struct file *fp, MODS_GET_RESET_HANDLE); break; #endif -#if defined(MODS_HAS_TEGRA) +#if defined(MODS_HAS_PROD) case MODS_ESC_BPMP_SET_PCIE_STATE: MODS_IOCTL(MODS_ESC_BPMP_SET_PCIE_STATE, esc_mods_bpmp_set_pcie_state, @@ -2389,6 +2391,8 @@ static long mods_krnl_ioctl(struct file *fp, esc_mods_bpmp_init_pcie_ep_pll, MODS_INIT_PCIE_EP_PLL); break; +#endif +#if defined(MODS_HAS_TEGRA) case MODS_ESC_DMA_ALLOC_COHERENT: MODS_IOCTL(MODS_ESC_DMA_ALLOC_COHERENT, esc_mods_dma_alloc_coherent, @@ -2474,7 +2478,7 @@ static long mods_krnl_ioctl(struct file *fp, MODS_FLUSH_CPU_CACHE_RANGE); break; #endif -#ifdef MODS_HAS_TEGRA +#if defined(MODS_HAS_DMABUF) case MODS_ESC_DMABUF_GET_PHYSICAL_ADDRESS: MODS_IOCTL(MODS_ESC_DMABUF_GET_PHYSICAL_ADDRESS, esc_mods_dmabuf_get_phys_addr, @@ -2534,7 +2538,7 @@ static long mods_krnl_ioctl(struct file *fp, break; #endif -#if defined(MODS_HAS_TEGRA) +#if defined(MODS_HAS_PROD) case MODS_ESC_TEGRA_PROD_IS_SUPPORTED: MODS_IOCTL(MODS_ESC_TEGRA_PROD_IS_SUPPORTED, esc_mods_tegra_prod_is_supported, @@ -2570,6 +2574,9 @@ static long mods_krnl_ioctl(struct file *fp, esc_mods_tegra_prod_iterate_dt, MODS_TEGRA_PROD_ITERATOR); break; +#endif + +#if defined(MODS_HAS_TEGRA) #ifdef CONFIG_TRUSTY case MODS_ESC_SEND_TZ_MSG: diff --git a/drivers/misc/mods/mods_mem.c b/drivers/misc/mods/mods_mem.c index c4f9a889..bf7fee38 100644 --- a/drivers/misc/mods/mods_mem.c +++ b/drivers/misc/mods/mods_mem.c @@ -2244,10 +2244,6 @@ static void clear_contiguous_cache(struct mods_client *client, u64 phys_start, u32 size) { -#ifdef MODS_HAS_TEGRA - __flush_dcache_area((void *)(size_t)(virt_start), size); -#else - /* __flush_dcache_area is not exported in upstream kernels */ u64 end = virt_start + size; u64 cur; u32 d_line_shift = 4; /* Fallback for kernel 5.9 or older */ @@ -2267,7 +2263,6 @@ static void clear_contiguous_cache(struct mods_client *client, do { asm volatile("dc civac, %0" : : "r" (cur) : "memory"); } while (cur += d_size, cur < end); -#endif cl_debug(DEBUG_MEM_DETAILED, "clear cache virt 0x%llx phys 0x%llx size 0x%x\n",