Commit 9c86a601 authored by Ben Skeggs's avatar Ben Skeggs Committed by Dave Airlie
Browse files

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: default avatarBen Skeggs <bskeggs@nvidia.com>
Reviewed-by: default avatarDave Airlie <airlied@redhat.com>
Reviewed-by: default avatarTimur Tabi <ttabi@nvidia.com>
Tested-by: default avatarTimur Tabi <ttabi@nvidia.com>
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent f82fb646
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -1700,6 +1700,14 @@ nvkm_gsp_radix3_sg(struct nvkm_gsp *gsp, struct sg_table *sgt, u64 size,
	return ret;
}

static u32
r535_gsp_sr_data_size(struct nvkm_gsp *gsp)
{
	GspFwWprMeta *meta = gsp->wpr_meta.data;

	return meta->gspFwWprEnd - meta->gspFwWprStart;
}

int
r535_gsp_fini(struct nvkm_gsp *gsp, bool suspend)
{
@@ -1707,8 +1715,7 @@ r535_gsp_fini(struct nvkm_gsp *gsp, bool suspend)
	int ret;

	if (suspend) {
		GspFwWprMeta *meta = gsp->wpr_meta.data;
		u64 len = meta->gspFwWprEnd - meta->gspFwWprStart;
		u32 len = rm->api->gsp->sr_data_size(gsp);
		GspFwSRMeta *sr;

		ret = nvkm_gsp_sg(gsp->subdev.device, len, &gsp->sr.sgt);
@@ -2167,4 +2174,5 @@ r535_gsp = {
	.get_static_info = r535_gsp_get_static_info,
	.xlat_mc_engine_idx = r535_gsp_xlat_mc_engine_idx,
	.drop_send_user_shared_data = r535_gsp_drop_send_user_shared_data,
	.sr_data_size = r535_gsp_sr_data_size,
};
+1 −0
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ struct nvkm_rm_api {
		int (*get_static_info)(struct nvkm_gsp *);
		bool (*xlat_mc_engine_idx)(u32 mc_engine_idx, enum nvkm_subdev_type *, int *inst);
		void (*drop_send_user_shared_data)(struct nvkm_gsp *);
		u32 (*sr_data_size)(struct nvkm_gsp *);
	} *gsp;

	const struct nvkm_rm_api_rpc {