From 0c8deb74aff6d0781cdf3278f56d7bce42b16a67 Mon Sep 17 00:00:00 2001 From: Deepak Nibade Date: Tue, 30 Jan 2018 04:05:36 -0800 Subject: gpu: nvgpu: add characteristic flag for syncpoint address support Add characteristic flag NVGPU_GPU_FLAGS_SUPPORT_SYNCPOINT_ADDRESS to indicate if platform supports semaphore GPU_VA address for a syncpoint Define NVGPU_SUPPORT_SYNCPOINT_ADDRESS for core driver book keeping Set this flag for both GV100 and GV11B since Xavier SoC supports a semaphore GPU_VA address for a syncpoint through syncpoint SHIM Bug 200327559 Change-Id: I1f31673c9fd59f493d0b35a80d23151fc063ae06 Signed-off-by: Deepak Nibade Reviewed-on: https://git-master.nvidia.com/r/1649364 Reviewed-by: svc-mobile-coverity GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/common/linux/ioctl_ctrl.c | 2 ++ drivers/gpu/nvgpu/gv100/hal_gv100.c | 1 + drivers/gpu/nvgpu/gv11b/gv11b.c | 1 + drivers/gpu/nvgpu/include/nvgpu/enabled.h | 6 +++++- include/uapi/linux/nvgpu.h | 2 ++ 5 files changed, 11 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/nvgpu/common/linux/ioctl_ctrl.c b/drivers/gpu/nvgpu/common/linux/ioctl_ctrl.c index 398823f3..f5f467b3 100644 --- a/drivers/gpu/nvgpu/common/linux/ioctl_ctrl.c +++ b/drivers/gpu/nvgpu/common/linux/ioctl_ctrl.c @@ -156,6 +156,8 @@ static struct nvgpu_flags_mapping flags_mapping[] = { NVGPU_SUPPORT_DETERMINISTIC_SUBMIT_FULL}, {NVGPU_GPU_FLAGS_SUPPORT_DETERMINISTIC_OPTS, NVGPU_SUPPORT_DETERMINISTIC_OPTS}, + {NVGPU_GPU_FLAGS_SUPPORT_SYNCPOINT_ADDRESS, + NVGPU_SUPPORT_SYNCPOINT_ADDRESS}, {NVGPU_GPU_FLAGS_SUPPORT_IO_COHERENCE, NVGPU_SUPPORT_IO_COHERENCE}, {NVGPU_GPU_FLAGS_SUPPORT_RESCHEDULE_RUNLIST, diff --git a/drivers/gpu/nvgpu/gv100/hal_gv100.c b/drivers/gpu/nvgpu/gv100/hal_gv100.c index 0f966adb..f75e6ff9 100644 --- a/drivers/gpu/nvgpu/gv100/hal_gv100.c +++ b/drivers/gpu/nvgpu/gv100/hal_gv100.c @@ -248,6 +248,7 @@ int gv100_init_gpu_characteristics(struct gk20a *g) return err; __nvgpu_set_enabled(g, NVGPU_SUPPORT_TSG_SUBCONTEXTS, true); + __nvgpu_set_enabled(g, NVGPU_SUPPORT_SYNCPOINT_ADDRESS, true); return 0; } diff --git a/drivers/gpu/nvgpu/gv11b/gv11b.c b/drivers/gpu/nvgpu/gv11b/gv11b.c index ab4b7fcd..2670c986 100644 --- a/drivers/gpu/nvgpu/gv11b/gv11b.c +++ b/drivers/gpu/nvgpu/gv11b/gv11b.c @@ -154,5 +154,6 @@ int gv11b_init_gpu_characteristics(struct gk20a *g) __nvgpu_set_enabled(g, NVGPU_SUPPORT_TSG_SUBCONTEXTS, true); __nvgpu_set_enabled(g, NVGPU_SUPPORT_IO_COHERENCE, true); __nvgpu_set_enabled(g, NVGPU_SUPPORT_SCG, true); + __nvgpu_set_enabled(g, NVGPU_SUPPORT_SYNCPOINT_ADDRESS, true); return 0; } diff --git a/drivers/gpu/nvgpu/include/nvgpu/enabled.h b/drivers/gpu/nvgpu/include/nvgpu/enabled.h index edf38a6a..cdfd0c55 100644 --- a/drivers/gpu/nvgpu/include/nvgpu/enabled.h +++ b/drivers/gpu/nvgpu/include/nvgpu/enabled.h @@ -152,10 +152,14 @@ struct gk20a; #define NVGPU_SUPPORT_TSG_SUBCONTEXTS 63 /* Simultaneous Compute and Graphics (SCG) is available */ #define NVGPU_SUPPORT_SCG 64 + +/* GPU_VA address of a syncpoint is supported */ +#define NVGPU_SUPPORT_SYNCPOINT_ADDRESS 65 + /* * Must be greater than the largest bit offset in the above list. */ -#define NVGPU_MAX_ENABLED_BITS 65 +#define NVGPU_MAX_ENABLED_BITS 66 /** * nvgpu_is_enabled - Check if the passed flag is enabled. diff --git a/include/uapi/linux/nvgpu.h b/include/uapi/linux/nvgpu.h index 95acc63c..6821af07 100644 --- a/include/uapi/linux/nvgpu.h +++ b/include/uapi/linux/nvgpu.h @@ -154,6 +154,8 @@ struct nvgpu_gpu_zbc_query_table_args { #define NVGPU_GPU_FLAGS_SUPPORT_DETERMINISTIC_OPTS (1ULL << 24) /* SCG support is available */ #define NVGPU_GPU_FLAGS_SUPPORT_SCG (1ULL << 25) +/* GPU_VA address of a syncpoint is supported */ +#define NVGPU_GPU_FLAGS_SUPPORT_SYNCPOINT_ADDRESS (1ULL << 26) /* SM LRF ECC is enabled */ #define NVGPU_GPU_FLAGS_ECC_ENABLED_SM_LRF (1ULL << 60) /* SM SHM ECC is enabled */ -- cgit v1.2.2