> -----Original Message----- > From: amd-gfx [mailto:amd-gfx-bounces at lists.freedesktop.org] On Behalf > Of Monk Liu > Sent: Tuesday, February 07, 2017 1:11 AM > To: amd-gfx at lists.freedesktop.org > Cc: Liu, Monk > Subject: [PATCH 04/20] drm/amdgpu:imple mqd soft ini/fini > > Change-Id: I650a78c8d27f76997e1ef6e3934d0d7e043d4715 > Signed-off-by: Monk Liu <Monk.Liu at amd.com> Please add a better patch description. With that fixed, Reviewed-by: Alex Deucher <alexander.deucher at amd.com> > --- > drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | 52 > +++++++++++++++++++++++++++++++++++ > 1 file changed, 52 insertions(+) > > diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c > b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c > index 22bd155..0e2c906 100644 > --- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c > @@ -659,6 +659,8 @@ static u32 gfx_v8_0_get_csb_size(struct > amdgpu_device *adev); > static void gfx_v8_0_get_cu_info(struct amdgpu_device *adev); > static void gfx_v8_0_ring_emit_ce_meta_init(struct amdgpu_ring *ring, > uint64_t addr); > static void gfx_v8_0_ring_emit_de_meta_init(struct amdgpu_ring *ring, > uint64_t addr); > +static int gfx_v8_0_compute_mqd_soft_init(struct amdgpu_device *adev); > +static void gfx_v8_0_compute_mqd_soft_fini(struct amdgpu_device > *adev); > > static void gfx_v8_0_init_golden_registers(struct amdgpu_device *adev) > { > @@ -7322,3 +7324,53 @@ static void > gfx_v8_0_ring_emit_de_meta_init(struct amdgpu_ring *ring, uint64_t c > amdgpu_ring_write(ring, upper_32_bits(de_payload_addr)); > amdgpu_ring_write_multiple(ring, (void *)&de_payload, cnt_de - 2); > } > + > +/* create MQD for each compute queue */ > +static int gfx_v8_0_compute_mqd_soft_init(struct amdgpu_device *adev) > +{ > + struct amdgpu_ring *ring = NULL; > + int r, i; > + > + /* create MQD for KIQ */ > + ring = &adev->gfx.kiq.ring; > + if (!ring->mqd_obj) { > + r = amdgpu_bo_create_kernel(adev, sizeof(struct vi_mqd), > PAGE_SIZE, > + > AMDGPU_GEM_DOMAIN_GTT, &ring->mqd_obj, > + &ring->mqd_gpu_addr, (void > **)&ring->mqd_ptr); > + if (r) { > + dev_warn(adev->dev, "failed to create ring mqd ob > (%d)", r); > + return r; > + } > + } > + > + /* create MQD for each KCQ */ > + for (i = 0; i < adev->gfx.num_compute_rings; i++) > + { > + ring = &adev->gfx.compute_ring[i]; > + if (!ring->mqd_obj) { > + r = amdgpu_bo_create_kernel(adev, sizeof(struct > vi_mqd), PAGE_SIZE, > + > AMDGPU_GEM_DOMAIN_GTT, &ring->mqd_obj, > + &ring- > >mqd_gpu_addr, (void **)&ring->mqd_ptr); > + if (r) { > + dev_warn(adev->dev, "failed to create ring > mqd ob (%d)", r); > + return r; > + } > + } > + } > + > + return 0; > +} > + > +static void gfx_v8_0_compute_mqd_soft_fini(struct amdgpu_device > *adev) > +{ > + struct amdgpu_ring *ring = NULL; > + int i; > + > + for (i = 0; i < adev->gfx.num_compute_rings; i++) { > + ring = &adev->gfx.compute_ring[i]; > + amdgpu_bo_free_kernel(&ring->mqd_obj, &ring- > >mqd_gpu_addr, (void **)&ring->mqd_ptr); > + } > + > + ring = &adev->gfx.kiq.ring; > + amdgpu_bo_free_kernel(&ring->mqd_obj, &ring->mqd_gpu_addr, > (void **)&ring->mqd_ptr); > +} > \ No newline at end of file > -- > 2.7.4 > > _______________________________________________ > amd-gfx mailing list > amd-gfx at lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/amd-gfx