Skip to content

Commit 9c86a60

Browse files
Ben Skeggsairlied
authored andcommitted
drm/nouveau/gsp: add hal for gsp.sr_data_size()
570.86.15 uses a slightly different calculation for the size of the sysmem buffer needed to store GSP-RM's vidmem data across suspend. Signed-off-by: Ben Skeggs <[email protected]> Reviewed-by: Dave Airlie <[email protected]> Reviewed-by: Timur Tabi <[email protected]> Tested-by: Timur Tabi <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
1 parent f82fb64 commit 9c86a60

File tree

2 files changed

+11
-2
lines changed
  • drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm

2 files changed

+11
-2
lines changed

drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/gsp.c

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1700,15 +1700,22 @@ nvkm_gsp_radix3_sg(struct nvkm_gsp *gsp, struct sg_table *sgt, u64 size,
17001700
return ret;
17011701
}
17021702

1703+
static u32
1704+
r535_gsp_sr_data_size(struct nvkm_gsp *gsp)
1705+
{
1706+
GspFwWprMeta *meta = gsp->wpr_meta.data;
1707+
1708+
return meta->gspFwWprEnd - meta->gspFwWprStart;
1709+
}
1710+
17031711
int
17041712
r535_gsp_fini(struct nvkm_gsp *gsp, bool suspend)
17051713
{
17061714
struct nvkm_rm *rm = gsp->rm;
17071715
int ret;
17081716

17091717
if (suspend) {
1710-
GspFwWprMeta *meta = gsp->wpr_meta.data;
1711-
u64 len = meta->gspFwWprEnd - meta->gspFwWprStart;
1718+
u32 len = rm->api->gsp->sr_data_size(gsp);
17121719
GspFwSRMeta *sr;
17131720

17141721
ret = nvkm_gsp_sg(gsp->subdev.device, len, &gsp->sr.sgt);
@@ -2167,4 +2174,5 @@ r535_gsp = {
21672174
.get_static_info = r535_gsp_get_static_info,
21682175
.xlat_mc_engine_idx = r535_gsp_xlat_mc_engine_idx,
21692176
.drop_send_user_shared_data = r535_gsp_drop_send_user_shared_data,
2177+
.sr_data_size = r535_gsp_sr_data_size,
21702178
};

drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/rm.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ struct nvkm_rm_api {
3434
int (*get_static_info)(struct nvkm_gsp *);
3535
bool (*xlat_mc_engine_idx)(u32 mc_engine_idx, enum nvkm_subdev_type *, int *inst);
3636
void (*drop_send_user_shared_data)(struct nvkm_gsp *);
37+
u32 (*sr_data_size)(struct nvkm_gsp *);
3738
} *gsp;
3839

3940
const struct nvkm_rm_api_rpc {

0 commit comments

Comments
 (0)