From 3fdb6d2e31389db65a71cad25ba907a1306e052b Mon Sep 17 00:00:00 2001 From: Alex Waterman Date: Wed, 25 Oct 2017 09:41:52 -0700 Subject: gpu: nvgpu: Remove Linux headers from mm_gk20a.h Delte the Linux headers and make some modifications to get rid of the minor compilation issues that resulted. - Add to os_linux.h - Delete #if 0 code that "flushed" a buffer in gr_gk20a.c - Delete FLUSH_CPU_DCACHE() macro - Move the cache flush definitions to and include this header in sim_gk20a.c. This file will not be used by QNX so this should be fine. - Add to gp106/bios_gp106.c and gp106/mclk_gp106.c. - Move function to common/linux/dmabuf.h since it is a dmabuf related function and uses a struct device pointer as an argument. JIRA NVGPU-30 Change-Id: I11f56b98524c7fac3efa91b4686592130e5f8a46 Signed-off-by: Alex Waterman Reviewed-on: https://git-master.nvidia.com/r/1585510 Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/common/linux/dmabuf.h | 3 +++ drivers/gpu/nvgpu/common/linux/ioctl_ctrl.c | 1 + drivers/gpu/nvgpu/common/linux/os_linux.h | 2 ++ drivers/gpu/nvgpu/gk20a/gr_gk20a.c | 8 -------- drivers/gpu/nvgpu/gk20a/mm_gk20a.h | 20 +------------------- drivers/gpu/nvgpu/gk20a/sim_gk20a.c | 5 +++-- drivers/gpu/nvgpu/gp106/bios_gp106.c | 3 ++- drivers/gpu/nvgpu/gp106/mclk_gp106.c | 1 + drivers/gpu/nvgpu/include/nvgpu/linux/vm.h | 12 ++++++++++++ 9 files changed, 25 insertions(+), 30 deletions(-) (limited to 'drivers') diff --git a/drivers/gpu/nvgpu/common/linux/dmabuf.h b/drivers/gpu/nvgpu/common/linux/dmabuf.h index 718386c5..b4b61459 100644 --- a/drivers/gpu/nvgpu/common/linux/dmabuf.h +++ b/drivers/gpu/nvgpu/common/linux/dmabuf.h @@ -70,4 +70,7 @@ int gk20a_dmabuf_alloc_drvdata(struct dma_buf *dmabuf, struct device *dev); int gk20a_dmabuf_get_state(struct dma_buf *dmabuf, struct gk20a *g, u64 offset, struct gk20a_buffer_state **state); +int gk20a_mm_get_buffer_info(struct device *dev, int dmabuf_fd, + u64 *buffer_id, u64 *buffer_len); + #endif diff --git a/drivers/gpu/nvgpu/common/linux/ioctl_ctrl.c b/drivers/gpu/nvgpu/common/linux/ioctl_ctrl.c index 6c9fc26f..1e5a9d59 100644 --- a/drivers/gpu/nvgpu/common/linux/ioctl_ctrl.c +++ b/drivers/gpu/nvgpu/common/linux/ioctl_ctrl.c @@ -43,6 +43,7 @@ #include "gk20a/fence_gk20a.h" #include "os_linux.h" +#include "dmabuf.h" #define HZ_TO_MHZ(a) ((a > 0xF414F9CD7ULL) ? 0xffff : (a >> 32) ? \ (u32) ((a * 0x10C8ULL) >> 32) : (u16) ((u32) a/MHZ)) diff --git a/drivers/gpu/nvgpu/common/linux/os_linux.h b/drivers/gpu/nvgpu/common/linux/os_linux.h index 9bb9e9f4..07be7edc 100644 --- a/drivers/gpu/nvgpu/common/linux/os_linux.h +++ b/drivers/gpu/nvgpu/common/linux/os_linux.h @@ -13,10 +13,12 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ + #ifndef NVGPU_OS_LINUX_H #define NVGPU_OS_LINUX_H #include +#include #ifdef CONFIG_TEGRA_19x_GPU #include diff --git a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c index 3c3ddc80..1ea59a9d 100644 --- a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c @@ -7980,14 +7980,6 @@ int __gr_gk20a_exec_ctx_ops(struct channel_gk20a *ch, ctx_op_nr++; } } -#if 0 - /* flush cpu caches for the ctx buffer? only if cpu cached, of course. - * they aren't, yet */ - if (cached) { - FLUSH_CPU_DCACHE(ctx_ptr, - sg_phys(ch_ctx->gr_ctx.mem.ref), size); - } -#endif cleanup: if (offsets) diff --git a/drivers/gpu/nvgpu/gk20a/mm_gk20a.h b/drivers/gpu/nvgpu/gk20a/mm_gk20a.h index 434fc422..183d6211 100644 --- a/drivers/gpu/nvgpu/gk20a/mm_gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/mm_gk20a.h @@ -21,14 +21,10 @@ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ + #ifndef MM_GK20A_H #define MM_GK20A_H -#include -#include -#include -#include - #include #include #include @@ -36,17 +32,6 @@ #include #include -#ifdef CONFIG_ARM64 -#define outer_flush_range(a, b) -#define __cpuc_flush_dcache_area __flush_dcache_area -#endif - -#define FLUSH_CPU_DCACHE(va, pa, size) \ - do { \ - __cpuc_flush_dcache_area((void *)(va), (size_t)(size)); \ - outer_flush_range(pa, pa + (size_t)(size)); \ - } while (0) - struct gpfifo_desc { struct nvgpu_mem mem; u32 entry_num; @@ -198,7 +183,4 @@ void gk20a_mm_init_pdb(struct gk20a *g, struct nvgpu_mem *mem, extern const struct gk20a_mmu_level gk20a_mm_levels_64k[]; extern const struct gk20a_mmu_level gk20a_mm_levels_128k[]; -int gk20a_mm_get_buffer_info(struct device *dev, int dmabuf_fd, - u64 *buffer_id, u64 *buffer_len); - #endif /* MM_GK20A_H */ diff --git a/drivers/gpu/nvgpu/gk20a/sim_gk20a.c b/drivers/gpu/nvgpu/gk20a/sim_gk20a.c index 7eb0aafe..34ca5add 100644 --- a/drivers/gpu/nvgpu/gk20a/sim_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/sim_gk20a.c @@ -24,11 +24,12 @@ #include #include +#include +#include + #include "gk20a.h" #include "platform_gk20a.h" -#include - #include static inline void sim_writel(struct gk20a *g, u32 r, u32 v) diff --git a/drivers/gpu/nvgpu/gp106/bios_gp106.c b/drivers/gpu/nvgpu/gp106/bios_gp106.c index a5a244e8..9d75249d 100644 --- a/drivers/gpu/nvgpu/gp106/bios_gp106.c +++ b/drivers/gpu/nvgpu/gp106/bios_gp106.c @@ -20,6 +20,8 @@ * DEALINGS IN THE SOFTWARE. */ +#include + #include #include #include @@ -248,4 +250,3 @@ free_firmware: nvgpu_vfree(g, g->bios.data); return err; } - diff --git a/drivers/gpu/nvgpu/gp106/mclk_gp106.c b/drivers/gpu/nvgpu/gp106/mclk_gp106.c index e058b02f..b7a2c91d 100644 --- a/drivers/gpu/nvgpu/gp106/mclk_gp106.c +++ b/drivers/gpu/nvgpu/gp106/mclk_gp106.c @@ -21,6 +21,7 @@ */ #include +#include #include #include diff --git a/drivers/gpu/nvgpu/include/nvgpu/linux/vm.h b/drivers/gpu/nvgpu/include/nvgpu/linux/vm.h index 91f0cf09..7aacf496 100644 --- a/drivers/gpu/nvgpu/include/nvgpu/linux/vm.h +++ b/drivers/gpu/nvgpu/include/nvgpu/linux/vm.h @@ -19,6 +19,18 @@ #include +#include + +/* + * Couple of places explicitly flush caches still. Any DMA buffer we allocate + * from within the GPU is writecombine and as a result does not need this but + * there seem to be exceptions. + */ +#ifdef CONFIG_ARM64 +#define outer_flush_range(a, b) +#define __cpuc_flush_dcache_area __flush_dcache_area +#endif + struct sg_table; struct dma_buf; -- cgit v1.2.2