On Wed, Mar 25, 2020 at 10:30 AM Andrey Grodzovsky <andrey.grodzovsky@xxxxxxx> wrote: > > This flag used to avoid calling mem_sync without need. > > Signed-off-by: Andrey Grodzovsky <andrey.grodzovsky@xxxxxxx> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 3 +++ > drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c | 4 ++++ > drivers/gpu/drm/amd/amdgpu/amdgpu_job.h | 3 +++ > include/uapi/drm/amdgpu_drm.h | 2 ++ > 4 files changed, 12 insertions(+) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c > index 8304d0c..d9ad841 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c > @@ -238,6 +238,9 @@ static int amdgpu_cs_parser_init(struct amdgpu_cs_parser *p, union drm_amdgpu_cs > > if (p->uf_entry.tv.bo) > p->job->uf_addr = uf_offset; > + > + p->job->sync_mem = cs->in.sync_mem; > + > kfree(chunk_array); > > /* Use this opportunity to fill in task info for the vm */ > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c > index bece01f..9168150 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c > @@ -182,6 +182,10 @@ int amdgpu_ib_schedule(struct amdgpu_ring *ring, unsigned num_ibs, > dma_fence_put(tmp); > } > > + if (job && job->sync_mem && ring->funcs->mem_sync) > + ring->funcs->mem_sync(ring); > + > if (ring->funcs->insert_start) > ring->funcs->insert_start(ring); > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.h > index 2e2110d..7b08a04 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.h > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.h > @@ -61,6 +61,9 @@ struct amdgpu_job { > /* user fence handling */ > uint64_t uf_addr; > uint64_t uf_sequence; > + > + /** UMD flag to flush and invalidate caches */ > + bool sync_mem; > }; > > int amdgpu_job_alloc(struct amdgpu_device *adev, unsigned num_ibs, > diff --git a/include/uapi/drm/amdgpu_drm.h b/include/uapi/drm/amdgpu_drm.h > index cfbec27..f04998d 100644 > --- a/include/uapi/drm/amdgpu_drm.h > +++ b/include/uapi/drm/amdgpu_drm.h > @@ -566,6 +566,8 @@ struct drm_amdgpu_cs_in { > __u32 flags; > /** this points to __u64 * which point to cs chunks */ > __u64 chunks; > + /** Tell KMD to flush and invalidate caches */ > + bool sync_mem; > }; I think it would be better to add this to drm_amdgpu_cs_chunk_ib.flags or drm_amdgpu_cs_in.flags. Alex > > struct drm_amdgpu_cs_out { > -- > 2.7.4 > > _______________________________________________ > amd-gfx mailing list > amd-gfx@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/amd-gfx _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx