[PATCH 2/3] drm/amdkfd: Update get_wave_state() for GFX10
Felix Kuehling
felix.kuehling at amd.com
Tue Nov 12 21:52:57 UTC 2019
On 2019-11-11 6:25 p.m., Yong Zhao wrote:
> Given control stack is now in the userspace context save restore area
> on GFX10, the same as GFX8, it is not needed to copy it back to userspace.
>
> Change-Id: I063ddc3026eefa57713ec47b466a90f9bf9d49b8
> Signed-off-by: Yong Zhao <Yong.Zhao at amd.com>
Patches 1 and 2 are
Reviewed-by: Felix Kuehling <Felix.Kuehling at amd.com>
Patch 3 should arguably not be part of this series, because it does not
affect GFXv10.
Regards,
Felix
> ---
> drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v10.c | 14 +++++++++-----
> 1 file changed, 9 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v10.c b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v10.c
> index 4884cd6c65ce..954dc8ac4ff1 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v10.c
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v10.c
> @@ -251,18 +251,22 @@ static int get_wave_state(struct mqd_manager *mm, void *mqd,
> {
> struct v10_compute_mqd *m;
>
> - /* Control stack is located one page after MQD. */
> - void *mqd_ctl_stack = (void *)((uintptr_t)mqd + PAGE_SIZE);
> -
> m = get_mqd(mqd);
>
> + /* Control stack is written backwards, while workgroup context data
> + * is written forwards. Both starts from m->cp_hqd_cntl_stack_size.
> + * Current position is at m->cp_hqd_cntl_stack_offset and
> + * m->cp_hqd_wg_state_offset, respectively.
> + */
> *ctl_stack_used_size = m->cp_hqd_cntl_stack_size -
> m->cp_hqd_cntl_stack_offset;
> *save_area_used_size = m->cp_hqd_wg_state_offset -
> m->cp_hqd_cntl_stack_size;
>
> - if (copy_to_user(ctl_stack, mqd_ctl_stack, m->cp_hqd_cntl_stack_size))
> - return -EFAULT;
> + /* Control stack is not copied to user mode for GFXv10 because
> + * it's part of the context save area that is already
> + * accessible to user mode
> + */
>
> return 0;
> }
More information about the amd-gfx
mailing list