mirror of
https://github.com/torvalds/linux.git
synced 2026-05-25 15:41:52 +02:00
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 <bskeggs@nvidia.com> Reviewed-by: Dave Airlie <airlied@redhat.com> Reviewed-by: Timur Tabi <ttabi@nvidia.com> Tested-by: Timur Tabi <ttabi@nvidia.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
f82fb646e1
commit
9c86a6010a
|
|
@ -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,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user