mirror of
git://nv-tegra.nvidia.com/linux-nv-oot.git
synced 2025-12-22 17:25:35 +03:00
nvmap: Remove use of __dma_flush_area
__dma_flush_area is defined in downstream, we need maintenance effort when kernel version is upgraded. Instead, use arch_invalidate_pmem function provided by the upstream. Bug 3855165 Change-Id: Ie62935aba7f3c31e6e233816b3bff507197d3f86 Signed-off-by: Ketan Patil <ketanp@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2804844 Reviewed-by: svcacv <svcacv@nvidia.com> Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com> Reviewed-by: Jonathan Hunter <jonathanh@nvidia.com> Reviewed-by: Sachin Nikam <snikam@nvidia.com> GVS: Gerrit_Virtual_Submit <buildbot_gerritrpt@nvidia.com>
This commit is contained in:
committed by
Laxman Dewangan
parent
596156cc4b
commit
9045984efb
@@ -37,6 +37,13 @@ ifneq ($(CONFIG_DMA_SHARED_BUFFER),y)
|
|||||||
$(error CONFIG_DMA_SHARED_BUFFER is not set)
|
$(error CONFIG_DMA_SHARED_BUFFER is not set)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# Check if CONFIG_ARCH_HAS_PMEM_API enabled for OOT/Kstable kernel
|
||||||
|
# CONFIG_ARCH_HAS_PMEM_API is needed for arch_invalidate_pmem
|
||||||
|
ifeq ($(CONFIG_TEGRA_OOT_MODULE),m)
|
||||||
|
ifneq ($(CONFIG_ARCH_HAS_PMEM_API),y)
|
||||||
|
$(error CONFIG_ARCH_HAS_PMEM_API is not set)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
################################################################################
|
################################################################################
|
||||||
# Section 2
|
# Section 2
|
||||||
# This config is used to include the memory management driver for the
|
# This config is used to include the memory management driver for the
|
||||||
|
|||||||
@@ -34,6 +34,9 @@
|
|||||||
#endif
|
#endif
|
||||||
#endif /* !NVMAP_LOADABLE_MODULE */
|
#endif /* !NVMAP_LOADABLE_MODULE */
|
||||||
|
|
||||||
|
#ifdef NVMAP_UPSTREAM_KERNEL
|
||||||
|
#include <linux/libnvdimm.h>
|
||||||
|
#endif /* NVMAP_UPSTREAM_KERNEL */
|
||||||
#include "nvmap_priv.h"
|
#include "nvmap_priv.h"
|
||||||
|
|
||||||
bool nvmap_convert_carveout_to_iovmm;
|
bool nvmap_convert_carveout_to_iovmm;
|
||||||
@@ -719,7 +722,11 @@ static void alloc_handle(struct nvmap_client *client,
|
|||||||
MEMREMAP_WB);
|
MEMREMAP_WB);
|
||||||
if (cpu_addr != NULL) {
|
if (cpu_addr != NULL) {
|
||||||
memset(cpu_addr, 0, h->size);
|
memset(cpu_addr, 0, h->size);
|
||||||
|
#ifdef NVMAP_UPSTREAM_KERNEL
|
||||||
|
arch_invalidate_pmem(cpu_addr, h->size);
|
||||||
|
#else
|
||||||
__dma_flush_area(cpu_addr, h->size);
|
__dma_flush_area(cpu_addr, h->size);
|
||||||
|
#endif
|
||||||
memunmap(cpu_addr);
|
memunmap(cpu_addr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,6 +25,10 @@
|
|||||||
#include <soc/tegra/fuse.h>
|
#include <soc/tegra/fuse.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef NVMAP_UPSTREAM_KERNEL
|
||||||
|
#include <linux/libnvdimm.h>
|
||||||
|
#endif /* NVMAP_UPSTREAM_KERNEL */
|
||||||
|
|
||||||
#include <linux/sys_soc.h>
|
#include <linux/sys_soc.h>
|
||||||
#ifdef NVMAP_LOADABLE_MODULE
|
#ifdef NVMAP_LOADABLE_MODULE
|
||||||
__weak struct arm64_ftr_reg arm64_ftr_reg_ctrel0;
|
__weak struct arm64_ftr_reg arm64_ftr_reg_ctrel0;
|
||||||
@@ -63,7 +67,11 @@ void nvmap_clean_cache(struct page **pages, int numpages)
|
|||||||
void inner_cache_maint(unsigned int op, void *vaddr, size_t size)
|
void inner_cache_maint(unsigned int op, void *vaddr, size_t size)
|
||||||
{
|
{
|
||||||
if (op == NVMAP_CACHE_OP_WB_INV)
|
if (op == NVMAP_CACHE_OP_WB_INV)
|
||||||
|
#ifdef NVMAP_UPSTREAM_KERNEL
|
||||||
|
arch_invalidate_pmem(vaddr, size);
|
||||||
|
#else
|
||||||
__dma_flush_area(vaddr, size);
|
__dma_flush_area(vaddr, size);
|
||||||
|
#endif
|
||||||
else if (op == NVMAP_CACHE_OP_INV)
|
else if (op == NVMAP_CACHE_OP_INV)
|
||||||
__dma_map_area(vaddr, size, DMA_FROM_DEVICE);
|
__dma_map_area(vaddr, size, DMA_FROM_DEVICE);
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -31,6 +31,9 @@
|
|||||||
|
|
||||||
#include <linux/nvmap.h>
|
#include <linux/nvmap.h>
|
||||||
#include <trace/events/nvmap.h>
|
#include <trace/events/nvmap.h>
|
||||||
|
#ifdef NVMAP_UPSTREAM_KERNEL
|
||||||
|
#include <linux/libnvdimm.h>
|
||||||
|
#endif /* NVMAP_UPSTREAM_KERNEL */
|
||||||
|
|
||||||
#include "nvmap_priv.h"
|
#include "nvmap_priv.h"
|
||||||
|
|
||||||
@@ -122,7 +125,11 @@ void __nvmap_kunmap(struct nvmap_handle *h, unsigned int pagenum,
|
|||||||
|
|
||||||
if (h->flags != NVMAP_HANDLE_UNCACHEABLE &&
|
if (h->flags != NVMAP_HANDLE_UNCACHEABLE &&
|
||||||
h->flags != NVMAP_HANDLE_WRITE_COMBINE) {
|
h->flags != NVMAP_HANDLE_WRITE_COMBINE) {
|
||||||
|
#ifdef NVMAP_UPSTREAM_KERNEL
|
||||||
|
arch_invalidate_pmem(addr, PAGE_SIZE);
|
||||||
|
#else
|
||||||
__dma_flush_area(addr, PAGE_SIZE);
|
__dma_flush_area(addr, PAGE_SIZE);
|
||||||
|
#endif
|
||||||
outer_flush_range(paddr, paddr + PAGE_SIZE); /* FIXME */
|
outer_flush_range(paddr, paddr + PAGE_SIZE); /* FIXME */
|
||||||
}
|
}
|
||||||
iounmap((void __iomem *)addr);
|
iounmap((void __iomem *)addr);
|
||||||
|
|||||||
Reference in New Issue
Block a user