From 0fa55ffac91620b7b44f4e11bd6094fc787bce81 Mon Sep 17 00:00:00 2001 From: Thomas Fleury Date: Mon, 16 Mar 2020 18:24:05 -0400 Subject: [PATCH] gpu: nvgpu: units: pramin build issues for dGPU Fix pramin related build issues in unit tests, when enabling dGPU in safety build. pram_data032_r is now defined as a macro which cannot be used to initialize g->ops.pramin.data032_r in unit tests. Instead, use nvgpu_pramin_ops_init, and check that g->ops.pramin.data032_r is non NULL. Jira NVGPU-4661 Change-Id: I33522fc42bfe5f8c23b579126a21680fd5880fd8 Signed-off-by: Thomas Fleury Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/2314206 Reviewed-by: automaticguardword Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: svc-mobile-coverity Reviewed-by: svc-mobile-misra Reviewed-by: Alex Waterman Reviewed-by: mobile promotions GVS: Gerrit_Virtual_Submit Tested-by: mobile promotions --- .../units/mm/allocators/buddy_allocator/buddy_allocator.c | 4 +++- userspace/units/mm/dma/dma.c | 4 +++- userspace/units/mm/nvgpu_mem/nvgpu_mem.c | 4 +++- userspace/units/pramin/nvgpu-pramin.c | 7 ++++--- 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/userspace/units/mm/allocators/buddy_allocator/buddy_allocator.c b/userspace/units/mm/allocators/buddy_allocator/buddy_allocator.c index 98967c2fb..8c729c155 100644 --- a/userspace/units/mm/allocators/buddy_allocator/buddy_allocator.c +++ b/userspace/units/mm/allocators/buddy_allocator/buddy_allocator.c @@ -34,6 +34,7 @@ #include #include +#include #include #include "buddy_allocator.h" @@ -79,7 +80,8 @@ static struct vm_gk20a *init_vm_env(struct unit_module *m, struct gk20a *g, #ifdef CONFIG_NVGPU_DGPU /* Minimum HAL init for PRAMIN */ g->ops.bus.set_bar0_window = gk20a_bus_set_bar0_window; - g->ops.pramin.data032_r = pram_data032_r; + nvgpu_pramin_ops_init(g); + unit_assert(g->ops.pramin.data032_r != NULL, return NULL); #endif /* vm should init with SYSMEM */ diff --git a/userspace/units/mm/dma/dma.c b/userspace/units/mm/dma/dma.c index 9cd7303ac..4b659caa7 100644 --- a/userspace/units/mm/dma/dma.c +++ b/userspace/units/mm/dma/dma.c @@ -50,6 +50,7 @@ #include "hal/fifo/ramin_gk20a.h" #include "hal/fifo/ramin_gm20b.h" #include "hal/fifo/ramin_gp10b.h" +#include "hal/pramin/pramin_init.h" #include @@ -240,7 +241,8 @@ int test_mm_dma_init(struct unit_module *m, struct gk20a *g, void *args) #ifdef CONFIG_NVGPU_DGPU /* Minimum HAL init for PRAMIN */ g->ops.bus.set_bar0_window = gk20a_bus_set_bar0_window; - g->ops.pramin.data032_r = pram_data032_r; + nvgpu_pramin_ops_init(g); + unit_assert(g->ops.pramin.data032_r != NULL, return UNIT_FAIL); #endif /* Register space: BUS_BAR0 */ diff --git a/userspace/units/mm/nvgpu_mem/nvgpu_mem.c b/userspace/units/mm/nvgpu_mem/nvgpu_mem.c index 428eead19..880569f53 100644 --- a/userspace/units/mm/nvgpu_mem/nvgpu_mem.c +++ b/userspace/units/mm/nvgpu_mem/nvgpu_mem.c @@ -36,6 +36,7 @@ #include #include +#include #include #include @@ -112,7 +113,8 @@ static int init_vidmem_env(struct unit_module *m, struct gk20a *g) /* Minimum HAL init for PRAMIN */ g->ops.bus.set_bar0_window = gk20a_bus_set_bar0_window; - g->ops.pramin.data032_r = pram_data032_r; + nvgpu_pramin_ops_init(g); + unit_assert(g->ops.pramin.data032_r != NULL, return -EINVAL); err = nvgpu_dma_alloc_vid_at(g, TEST_SIZE, test_mem, 0); if (err != 0) { diff --git a/userspace/units/pramin/nvgpu-pramin.c b/userspace/units/pramin/nvgpu-pramin.c index 98dabe885..a6ca38787 100644 --- a/userspace/units/pramin/nvgpu-pramin.c +++ b/userspace/units/pramin/nvgpu-pramin.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018-2019, NVIDIA CORPORATION. All rights reserved. + * Copyright (c) 2018-2020, NVIDIA CORPORATION. All rights reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -37,6 +37,7 @@ #include #include "hal/bus/bus_gk20a.h" +#include "hal/pramin/pramin_init.h" #include #include @@ -66,7 +67,6 @@ static u32 *vidmem; /* Simple pattern for memset operations */ #define MEMSET_PATTERN 0x12345678 - static bool is_PRAM_range(struct gk20a *g, u32 addr) { if ((addr >= pram_data032_r(0)) && @@ -192,7 +192,8 @@ static int init_test_env(struct unit_module *m, struct gk20a *g) /* Minimum HAL init for PRAMIN */ g->ops.bus.set_bar0_window = gk20a_bus_set_bar0_window; - g->ops.pramin.data032_r = pram_data032_r; + nvgpu_pramin_ops_init(g); + unit_assert(g->ops.pramin.data032_r != NULL, return -EINVAL); /* Register space: BUS_BAR0 */ if (nvgpu_posix_io_add_reg_space(g, bus_bar0_window_r(), 0x100) != 0) {