Received: by 2002:ac0:a582:0:0:0:0:0 with SMTP id m2-v6csp5469472imm; Tue, 16 Oct 2018 10:42:22 -0700 (PDT) X-Google-Smtp-Source: ACcGV62lirtqJwixq2JQNvu2VBxLf4SfM7S0+nKTfEcjloWThtsVQT8lNr8oHFvpcFy0pxsMe3+G X-Received: by 2002:a63:5e01:: with SMTP id s1-v6mr20686204pgb.92.1539711742337; Tue, 16 Oct 2018 10:42:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1539711742; cv=none; d=google.com; s=arc-20160816; b=SVJqWr8h3WqvdJPyvBILcji39UA1E4tP1fngR4ocZfS1nHh0Ymp69RPSY40iM7g44S RZWBjpbHp2iIMlv481O1hO4FjBqp+LolokpgqK7KSWhaTHMX6lmFAvBi1GHEVJFduAvL ATNOwN9R+9eSNxZEZLdAFuuU5eXVINkfF61yCABfCU+dfh3bsXdKQYHWqPKeYe77vBce 3WpGezO6b42cy2DgvvwjXlSiFxTQWHOEYXbKCHAX0dwAlMP6X3T2WSgSiVzhTV//pcJv cDvcrVRTMY801XuJz1mXRUUmmX2k+v9JxvfG1o//1NWIM2HmUps969n0d16+wJBxaj09 VPYg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=+iD54KOh6PDueN88MQ5ctRLep+ZtFZBohj/Ldnf/C5A=; b=hoXInqScexHqPFytsZw1SqhFUIXr8oe54cI/EfYB7djYbp/UCXlD3zexgUPW0BEYaG c0SV9WMJyTvOJodLIhLo4F8UakVOlbsq3dRp2F6aVdA6YIWyAKoSq+vMsSZC8Z9h4Wla lNPTPtQb8U88Hum1LN3L98bJaMgn8xIXXdzVe8W+irC9CvyWF7IAerk6qglMqk4huctW Lq/pYPSwf5oEuFIkz0lOX7NaSjPe1OB4N5gWrKqqfoxfpHzBZ/upq8FEKQqryQLqeeNQ ++SP9YP9IyqFVxYGN+V+eAxH3Hx/INnPUi0Fb52YXxXhNJZgM9URE/mj65LI03KHmdS0 MYqg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=0nvWZIyl; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id s5-v6si14538200pgm.448.2018.10.16.10.42.06; Tue, 16 Oct 2018 10:42:22 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=0nvWZIyl; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729339AbeJQBGm (ORCPT + 99 others); Tue, 16 Oct 2018 21:06:42 -0400 Received: from mail.kernel.org ([198.145.29.99]:50714 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728331AbeJQBGl (ORCPT ); Tue, 16 Oct 2018 21:06:41 -0400 Received: from localhost (ip-213-127-77-176.ip.prioritytelecom.net [213.127.77.176]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 1D56320866; Tue, 16 Oct 2018 17:15:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1539710117; bh=+NunGR7hKWRiuoagQOVvXp3AyU78eTavFN7fhxo1Akk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=0nvWZIylf2YCgvNxy7DpUFmX52F8PkxpQyxqU0g+m6PH5Yl4PvFwUHGTBuGIWvuCV vO7Hk5qOmplCAVQ0aae9xR0T7ouHUYBp+TuEKcw95ke2pBqkY6GM9zzpvAawFm0Xcr XFjr+l313W9iurcEYrGupGYQ8is5wOkwziSaZDE0= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Alex Deucher , Yong Zhao , Felix Kuehling , Sasha Levin Subject: [PATCH 4.18 107/135] drm/amdkfd: Change the control stack MTYPE from UC to NC on GFX9 Date: Tue, 16 Oct 2018 19:05:37 +0200 Message-Id: <20181016170522.753364106@linuxfoundation.org> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20181016170515.447235311@linuxfoundation.org> References: <20181016170515.447235311@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.18-stable review patch. If anyone has any objections, please let me know. ------------------ From: Yong Zhao [ Upstream commit 15426dbb65c5b37680d27e84d58a1ed3b8532518 ] CWSR fails on Raven if the control stack is MTYPE_UC, which is used for regular GART mappings. As a workaround we map it using MTYPE_NC. The MEC firmware expects the control stack at one page offset from the start of the MQD so it is part of the MQD allocation on GFXv9. AMDGPU added a memory allocation flag just for this purpose. Acked-by: Alex Deucher Signed-off-by: Yong Zhao Reviewed-by: Felix Kuehling Signed-off-by: Felix Kuehling Signed-off-by: Alex Deucher Signed-off-by: Sasha Levin Signed-off-by: Greg Kroah-Hartman --- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c | 6 +++++- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h | 2 +- drivers/gpu/drm/amd/amdkfd/kfd_device.c | 3 ++- drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c | 2 +- drivers/gpu/drm/amd/include/kgd_kfd_interface.h | 2 +- 5 files changed, 10 insertions(+), 5 deletions(-) --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c @@ -245,7 +245,7 @@ int amdgpu_amdkfd_resume(struct amdgpu_d int alloc_gtt_mem(struct kgd_dev *kgd, size_t size, void **mem_obj, uint64_t *gpu_addr, - void **cpu_ptr) + void **cpu_ptr, bool mqd_gfx9) { struct amdgpu_device *adev = (struct amdgpu_device *)kgd; struct amdgpu_bo *bo = NULL; @@ -261,6 +261,10 @@ int alloc_gtt_mem(struct kgd_dev *kgd, s bp.flags = AMDGPU_GEM_CREATE_CPU_GTT_USWC; bp.type = ttm_bo_type_kernel; bp.resv = NULL; + + if (mqd_gfx9) + bp.flags |= AMDGPU_GEM_CREATE_MQD_GFX9; + r = amdgpu_bo_create(adev, &bp, &bo); if (r) { dev_err(adev->dev, --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h @@ -129,7 +129,7 @@ bool amdgpu_amdkfd_is_kfd_vmid(struct am /* Shared API */ int alloc_gtt_mem(struct kgd_dev *kgd, size_t size, void **mem_obj, uint64_t *gpu_addr, - void **cpu_ptr); + void **cpu_ptr, bool mqd_gfx9); void free_gtt_mem(struct kgd_dev *kgd, void *mem_obj); void get_local_mem_info(struct kgd_dev *kgd, struct kfd_local_mem_info *mem_info); --- a/drivers/gpu/drm/amd/amdkfd/kfd_device.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_device.c @@ -423,7 +423,8 @@ bool kgd2kfd_device_init(struct kfd_dev if (kfd->kfd2kgd->init_gtt_mem_allocation( kfd->kgd, size, &kfd->gtt_mem, - &kfd->gtt_start_gpu_addr, &kfd->gtt_start_cpu_ptr)){ + &kfd->gtt_start_gpu_addr, &kfd->gtt_start_cpu_ptr, + false)) { dev_err(kfd_device, "Could not allocate %d bytes\n", size); goto out; } --- a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c @@ -63,7 +63,7 @@ static int init_mqd(struct mqd_manager * ALIGN(sizeof(struct v9_mqd), PAGE_SIZE), &((*mqd_mem_obj)->gtt_mem), &((*mqd_mem_obj)->gpu_addr), - (void *)&((*mqd_mem_obj)->cpu_ptr)); + (void *)&((*mqd_mem_obj)->cpu_ptr), true); } else retval = kfd_gtt_sa_allocate(mm->dev, sizeof(struct v9_mqd), mqd_mem_obj); --- a/drivers/gpu/drm/amd/include/kgd_kfd_interface.h +++ b/drivers/gpu/drm/amd/include/kgd_kfd_interface.h @@ -266,7 +266,7 @@ struct tile_config { struct kfd2kgd_calls { int (*init_gtt_mem_allocation)(struct kgd_dev *kgd, size_t size, void **mem_obj, uint64_t *gpu_addr, - void **cpu_ptr); + void **cpu_ptr, bool mqd_gfx9); void (*free_gtt_mem)(struct kgd_dev *kgd, void *mem_obj);