gpu: nvgpu: Fix boardobj allocation size

In current implementation we are allocating boardobj
in nvgpu_boardobj_construct_super for all units and assigning
that pointer to boardobj type, as the size differe for different
units assigning the boardobj pointer to a common type will
give violations. Fixing them by allocating mem a head
and later call construct_super for elements initialization.

NVGPU-4484

Change-Id: I9b5ed1a6d8418fec48a29eee38d55fc7d83fcfab
Signed-off-by: rmylavarapu <rmylavarapu@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/2335989
Reviewed-by: automaticguardword <automaticguardword@nvidia.com>
Reviewed-by: Mahantesh Kumbar <mkumbar@nvidia.com>
Reviewed-by: svc-mobile-coverity <svc-mobile-coverity@nvidia.com>
Reviewed-by: svc-mobile-misra <svc-mobile-misra@nvidia.com>
Reviewed-by: svc-mobile-cert <svc-mobile-cert@nvidia.com>
Reviewed-by: Vaibhav Kachore <vkachore@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
This commit is contained in:
rmylavarapu
2020-04-29 12:00:28 +05:30
committed by Alex Waterman
parent 0115c26f1b
commit 8e545ef04b
18 changed files with 165 additions and 83 deletions

View File

@@ -40,8 +40,8 @@ int nvgpu_boardobj_pmu_data_init_super(struct gk20a *g, struct boardobj
* Constructor for the base Board Object. Called by each device-specific
* implementation of the BOARDOBJ interface to initialize the board object.
*/
int nvgpu_boardobj_construct_super(struct gk20a *g, struct boardobj
**ppboardobj, size_t size, void *args);
int pmu_boardobj_construct_super(struct gk20a *g, struct boardobj *ppboardobj,
void *args);
/*
* Base Class for all physical or logical device on the PCB.