gpu: nvgpu: Support GPC and FBP Floorsweeping

- Add gops_fbp_fs and gops_gpc_pg struct
- Add HALs to write to NV_FUSE_CTRL_OPT_FBP and
  NV_FUSE_CTRL_OPT_GPC fuses needed for floorsweeping
- Add set_fbp_mask and set_gpc_mask to probe FBP and GPC mask
  respectively during gpu probe
- Add sysfs node: fbp_fs_mask and gpc_fs_mask to store
  FBP and GPC floorsweeping mask sent from userspace
- Move the floorsweeping programming early in NVGPU’s GPU init
  function and then issue a PRI init.

JIRA NVGPU-6433

Change-Id: I84764d625c69914c107e1e8c7f29c476c2f64f78
Signed-off-by: Divya Singhatwaria <dsinghatwari@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/2499571
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: svc_kernel_abi <svc_kernel_abi@nvidia.com>
Reviewed-by: Vijayakumar Subbu <vsubbu@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
Divya Singhatwaria
2021-03-16 22:29:33 +05:30
committed by mobile promotions
parent 9f30609550
commit 842bef7124
14 changed files with 334 additions and 8 deletions

View File

@@ -1128,7 +1128,10 @@ static const struct gops_fuse gp10b_ops_fuse = {
.fuse_status_opt_fbp = gm20b_fuse_status_opt_fbp,
.fuse_status_opt_l2_fbp = gm20b_fuse_status_opt_l2_fbp,
.fuse_status_opt_tpc_gpc = gm20b_fuse_status_opt_tpc_gpc,
.fuse_status_opt_gpc = NULL,
.fuse_ctrl_opt_tpc_gpc = gm20b_fuse_ctrl_opt_tpc_gpc,
.fuse_ctrl_opt_fbp = NULL,
.fuse_ctrl_opt_gpc = NULL,
.fuse_opt_sec_debug_en = gm20b_fuse_opt_sec_debug_en,
.fuse_opt_priv_sec_en = gm20b_fuse_opt_priv_sec_en,
.read_vin_cal_fuse_rev = NULL,
@@ -1155,6 +1158,17 @@ static const struct gops_tpc gp10b_ops_tpc = {
.init_tpc_powergate = NULL,
.tpc_gr_pg = NULL,
};
static const struct gops_fbp_fs gp10b_ops_fbp_fs = {
.init_fbp_floorsweep = NULL,
.fbp_static_fs = NULL,
};
static const struct gops_gpc_pg gp10b_ops_gpc_pg = {
.init_gpc_powergate = NULL,
.gpc_static_pg = NULL,
};
#endif
static const struct gops_grmgr gp10b_ops_grmgr = {
@@ -1259,6 +1273,8 @@ int gp10b_init_hal(struct gk20a *g)
gops->top = gp10b_ops_top;
#ifdef CONFIG_NVGPU_STATIC_POWERGATE
gops->tpc = gp10b_ops_tpc;
gops->fbp_fs = gp10b_ops_fbp_fs;
gops->gpc_pg = gp10b_ops_gpc_pg;
#endif
gops->grmgr = gp10b_ops_grmgr;
gops->cic_mon = gp10b_ops_cic_mon;