Received: by 2002:a25:8b12:0:0:0:0:0 with SMTP id i18csp5224146ybl; Tue, 27 Aug 2019 01:05:08 -0700 (PDT) X-Google-Smtp-Source: APXvYqwRMPITBgJN9rgFQYK7LPxTPv27bGsrxjpRuHfiKildjdk2zLrdZNlcq+OUQE4DCaK1dvCs X-Received: by 2002:a65:5183:: with SMTP id h3mr19103971pgq.250.1566893108763; Tue, 27 Aug 2019 01:05:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1566893108; cv=none; d=google.com; s=arc-20160816; b=o9BXbzaYMZ+6bLXq9LuO08xr6oyTWJuHS0xfxn8T9sHYkHd9GeC+BpRXOOpTzhI7VW tPEPOdrg8d0/UYKZ5vux+gT2/uFMmOLdsgDaGUjBIXuPI18H5jVXoWtcabyOBn6SgxV9 K1hOCMF/q5fG0GaclBZ0y0RNk449OQ7mRUZk9z7Kv8ESM5lSsT05JWrEmY7eIubaYqUz 2HDCGDhQkC4tRvOPws0PtvUJVADCYI3aL7LFfatVlixdr3zgqeXr+yIb+OmIgy3l9+cI dwFUGML7aH5POh8IWaD6kMVSspkn14geomtRx8t3M5BjIiwxadv5ps2U+xZIf0HK1R8Q hbIg== 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=njBDu7m26lzuHTmNDtKsUfnCKwQ3Bug46MmdVMrxGwA=; b=EihM8UwJEbyLulzwFb5YhyFtitHKST+9Ap0Zgy+dlZYRftkB8wpbKSVvBv5GBU9BiY ld2PuRN0ar40zmFNry6ksSUIjl6l+NTLVQZpwI5N1LdaupcvhWoESuPHE6fURo/Ygk7b g9fVSI8Z7PXClKCRf4mzS7drMWih/8G7LtmX6k+xGifxr+c99C+kC/sBnHnusIAXjz5q 1zU6L5bTcU6fpWUt1P9FEmLwjtZHezmyJ+1GYp9OGXUMbFvPTGpwRlUEYMSaQwX1DUix A6adlb+mxH6aOBnniTTjgjOtGbdjh0jTLqyGlaAGsoEXCoFHxJlsUUdWMBjmshVYCeAk IW1w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=rAaOrfNd; 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 d8si11953252pla.206.2019.08.27.01.04.52; Tue, 27 Aug 2019 01:05:08 -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=rAaOrfNd; 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 S1732342AbfH0IDo (ORCPT + 99 others); Tue, 27 Aug 2019 04:03:44 -0400 Received: from mail.kernel.org ([198.145.29.99]:32932 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731544AbfH0IDl (ORCPT ); Tue, 27 Aug 2019 04:03:41 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (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 053FF206BA; Tue, 27 Aug 2019 08:03:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1566893021; bh=gzfEi06O/WlgoD9nlxsUDqj2SCZQELiibpe/EqFoojc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=rAaOrfNdnNhz5C8zvimjcjYK6Y2poFusV71BNDGZBiNBC3pxYE1yVR9s68PbuCjN1 r9VgyFUFfUlgjVwks4578IuQLWY/W12p/mZ6oiOKQB8mrOiNRlAIBwiwNHfCKFwFE8 dwa+fN27qKgNXKXL/gwfRuLauMg+XV7fWi5rEXfw= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Likun Gao , Paul Gover , Feifei Xu , Xiaojie Yuan , Alex Deucher , Sasha Levin Subject: [PATCH 5.2 092/162] drm/amdgpu: pin the csb buffer on hw init for gfx v8 Date: Tue, 27 Aug 2019 09:50:20 +0200 Message-Id: <20190827072741.383013060@linuxfoundation.org> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20190827072738.093683223@linuxfoundation.org> References: <20190827072738.093683223@linuxfoundation.org> User-Agent: quilt/0.66 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 [ Upstream commit 72cda9bb5e219aea0f2f62f56ae05198c59022a7 ] Without this pin, the csb buffer will be filled with inconsistent data after S3 resume. And that will causes gfx hang on gfxoff exit since this csb will be executed then. Signed-off-by: Likun Gao Tested-by: Paul Gover Reviewed-by: Feifei Xu Reviewed-by: Xiaojie Yuan Signed-off-by: Alex Deucher Signed-off-by: Sasha Levin --- drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | 40 +++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c index 02955e6e9dd9e..c21ef99cc590f 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c @@ -1317,6 +1317,39 @@ static int gfx_v8_0_rlc_init(struct amdgpu_device *adev) return 0; } +static int gfx_v8_0_csb_vram_pin(struct amdgpu_device *adev) +{ + int r; + + r = amdgpu_bo_reserve(adev->gfx.rlc.clear_state_obj, false); + if (unlikely(r != 0)) + return r; + + r = amdgpu_bo_pin(adev->gfx.rlc.clear_state_obj, + AMDGPU_GEM_DOMAIN_VRAM); + if (!r) + adev->gfx.rlc.clear_state_gpu_addr = + amdgpu_bo_gpu_offset(adev->gfx.rlc.clear_state_obj); + + amdgpu_bo_unreserve(adev->gfx.rlc.clear_state_obj); + + return r; +} + +static void gfx_v8_0_csb_vram_unpin(struct amdgpu_device *adev) +{ + int r; + + if (!adev->gfx.rlc.clear_state_obj) + return; + + r = amdgpu_bo_reserve(adev->gfx.rlc.clear_state_obj, true); + if (likely(r == 0)) { + amdgpu_bo_unpin(adev->gfx.rlc.clear_state_obj); + amdgpu_bo_unreserve(adev->gfx.rlc.clear_state_obj); + } +} + static void gfx_v8_0_mec_fini(struct amdgpu_device *adev) { amdgpu_bo_free_kernel(&adev->gfx.mec.hpd_eop_obj, NULL, NULL); @@ -4777,6 +4810,10 @@ static int gfx_v8_0_hw_init(void *handle) gfx_v8_0_init_golden_registers(adev); gfx_v8_0_constants_init(adev); + r = gfx_v8_0_csb_vram_pin(adev); + if (r) + return r; + r = adev->gfx.rlc.funcs->resume(adev); if (r) return r; @@ -4893,6 +4930,9 @@ static int gfx_v8_0_hw_fini(void *handle) else pr_err("rlc is busy, skip halt rlc\n"); amdgpu_gfx_rlc_exit_safe_mode(adev); + + gfx_v8_0_csb_vram_unpin(adev); + return 0; } -- 2.20.1