From 2eb6dcb4694c8b83e22c50d9fd4d3fdd85b93c46 Mon Sep 17 00:00:00 2001 From: Terje Bergstrom Date: Thu, 16 Oct 2014 15:15:11 +0300 Subject: gpu: nvgpu: Implement 64k large page support Implement support for 64kB large page size. Add an API to create an address space via IOCTL so that we can accept flags, and assign one flag for enabling 64kB large page size. Also adds APIs to set per-context large page size. This is possible only on Maxwell, so return error if caller tries to set large page size on Kepler. Default large page size is still 128kB. Change-Id: I20b51c8f6d4a984acae8411ace3de9000c78e82f Signed-off-by: Terje Bergstrom --- drivers/gpu/nvgpu/gk20a/gk20a.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'drivers/gpu/nvgpu/gk20a/gk20a.h') diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.h b/drivers/gpu/nvgpu/gk20a/gk20a.h index 8ebf6711..04a4cf66 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/gk20a.h @@ -141,6 +141,7 @@ struct gpu_ops { void (*reset)(struct gk20a *g); void (*init_uncompressed_kind_map)(struct gk20a *g); void (*init_kind_attr)(struct gk20a *g); + void (*set_mmu_page_size)(struct gk20a *g); } fb; struct { void (*slcg_bus_load_gating_prod)(struct gk20a *g, bool prod); @@ -291,13 +292,16 @@ struct gpu_ops { bool va_allocated, int rw_flag); void (*vm_remove)(struct vm_gk20a *vm); - int (*vm_alloc_share)(struct gk20a_as_share *as_share); + int (*vm_alloc_share)(struct gk20a_as_share *as_share, + u32 flags); int (*vm_bind_channel)(struct gk20a_as_share *as_share, struct channel_gk20a *ch); int (*fb_flush)(struct gk20a *g); void (*l2_invalidate)(struct gk20a *g); void (*l2_flush)(struct gk20a *g, bool invalidate); void (*tlb_invalidate)(struct vm_gk20a *vm); + void (*set_big_page_size)(struct gk20a *g, + void *inst_ptr, int size); } mm; struct { int (*prepare_ucode)(struct gk20a *g); -- cgit v1.2.2