Received: by 2002:a05:6a10:1d13:0:0:0:0 with SMTP id pp19csp335760pxb; Mon, 16 Aug 2021 06:35:18 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwNNIgui3PxU+JklDk19fQnh4cqSEkUSayxDy03gTCpLcq+Z9ZhTBE4vZPRr24tu+QXG7wR X-Received: by 2002:a02:2348:: with SMTP id u69mr15416112jau.141.1629120918418; Mon, 16 Aug 2021 06:35:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1629120918; cv=none; d=google.com; s=arc-20160816; b=Xja7HavTmn/hY8X33JOX0ersW9RoVXcqQxW/HG95UBlPRASM694V3QbBcCHaJdKv+o Blrb84wsorRQMEm4AMfJcFAwkXVsNyF6xoUOJVNNfBv8Q4JX+8Lq+Gt/XQA4QRdzvtVP yzoaPDgrnXy45/K3kKCoZKbW6Hmv+eQTPBvTt55RXXf3X9Hlw49U01dHXyjKrrr4/lab dUpTxFUOohUbpH9JjoNXs6l45cfrPDMTH+tETk33qoKbVVVKceuriZ67HAsgWoOYBQlO KyHSNDouuji/qhR2SDM/U/umlh+bt5tQ5GM6Gs3pzl2G70ZjmbrNMsoKhghW1pxkWN9G ctbQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=IfxbGxISvxZbVjV9QNMnaw35zyde7Sn8EXZxWGOkApk=; b=Cowol252r1mM0UEQXnCEIlSY0wi0wNzF9elXtXoCRGIX5CyhjTD9YhxmtQMt48/4Fh pCpHt8h8JNAylDW3iC4VSKVXsoK7VqLhgOFSMkvMxnwVdnwu8G+KVUfk5qAxZmro3F1f TpUekmnK/mdY7O0kxHh9z75o769+mN9XvmDDWwIrYGZIto8XJFPN2iSrqLieL6toMKdd D/BmD2ODK7UOKVQvl+BAzaWtnpCglehdoB1EsqqTonC5fr/GpBpdkPQMtEuKIFSvd/zN 7siIecJYqM5zfThxXF1dP7Bf17J8Kroh/2RxXJng5NgdEFiTqyTDQXIQ3q782MMkq2xT Tb+w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b="dYUX4F/6"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id f14si11515741jaj.115.2021.08.16.06.35.07; Mon, 16 Aug 2021 06:35:18 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b="dYUX4F/6"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239917AbhHPNbq (ORCPT + 99 others); Mon, 16 Aug 2021 09:31:46 -0400 Received: from mail.kernel.org ([198.145.29.99]:44514 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238847AbhHPNSh (ORCPT ); Mon, 16 Aug 2021 09:18:37 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 685D7632A5; Mon, 16 Aug 2021 13:14:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1629119653; bh=xnEEbijOMfrHTmOYRQd4OYxJJkSRALWwLLcgr77o9ns=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=dYUX4F/6nWuJd2xn047vJZ0vJkGquy3wzW7o3nhjt3RRIPebFphXwMJ9SM4E8cvSb GYxIhpP3Hy+0qB42HPaG/cdPENDao2M+k+h+nKDeaJyM/tad1QhZ4bB6xq2NHFLocj uYHaj5xEXSVlXSxqtpASjlWGfdVisFpJ5fXO0X+c= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Daniele Ceraolo Spurio , Mika Kuoppala , Matt Roper , =?UTF-8?q?Jos=C3=A9=20Roberto=20de=20Souza?= , Rodrigo Vivi , Sasha Levin Subject: [PATCH 5.13 110/151] drm/i915: Only access SFC_DONE when media domain is not fused off Date: Mon, 16 Aug 2021 15:02:20 +0200 Message-Id: <20210816125447.685646043@linuxfoundation.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210816125444.082226187@linuxfoundation.org> References: <20210816125444.082226187@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Matt Roper [ Upstream commit 24d032e2359e3abc926b3d423f49a7c33e0b7836 ] The SFC_DONE register lives within the corresponding VD0/VD2/VD4/VD6 forcewake domain and is not accessible if the vdbox in that domain is fused off and the forcewake is not initialized. This mistake went unnoticed because until recently we were using the wrong register offset for the SFC_DONE register; once the register offset was corrected, we started hitting errors like <4> [544.989065] i915 0000:cc:00.0: Uninitialized forcewake domain(s) 0x80 accessed at 0x1ce000 on parts with fused-off vdbox engines. Fixes: e50dbdbfd9fb ("drm/i915/tgl: Add SFC instdone to error state") Fixes: 9c9c6d0ab08a ("drm/i915: Correct SFC_DONE register offset") Cc: Daniele Ceraolo Spurio Cc: Mika Kuoppala Signed-off-by: Matt Roper Link: https://patchwork.freedesktop.org/patch/msgid/20210806174130.1058960-1-matthew.d.roper@intel.com Reviewed-by: José Roberto de Souza (cherry picked from commit c5589bb5dccb0c5cb74910da93663f489589f3ce) Signed-off-by: Rodrigo Vivi [Changed Fixes tag to match the cherry-picked 82929a2140eb] Signed-off-by: Sasha Levin --- drivers/gpu/drm/i915/i915_gpu_error.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/i915_gpu_error.c b/drivers/gpu/drm/i915/i915_gpu_error.c index bb181fe5d47e..725f241a428c 100644 --- a/drivers/gpu/drm/i915/i915_gpu_error.c +++ b/drivers/gpu/drm/i915/i915_gpu_error.c @@ -728,9 +728,18 @@ static void err_print_gt(struct drm_i915_error_state_buf *m, if (INTEL_GEN(m->i915) >= 12) { int i; - for (i = 0; i < GEN12_SFC_DONE_MAX; i++) + for (i = 0; i < GEN12_SFC_DONE_MAX; i++) { + /* + * SFC_DONE resides in the VD forcewake domain, so it + * only exists if the corresponding VCS engine is + * present. + */ + if (!HAS_ENGINE(gt->_gt, _VCS(i * 2))) + continue; + err_printf(m, " SFC_DONE[%d]: 0x%08x\n", i, gt->sfc_done[i]); + } err_printf(m, " GAM_DONE: 0x%08x\n", gt->gam_done); } @@ -1586,6 +1595,14 @@ static void gt_record_regs(struct intel_gt_coredump *gt) if (INTEL_GEN(i915) >= 12) { for (i = 0; i < GEN12_SFC_DONE_MAX; i++) { + /* + * SFC_DONE resides in the VD forcewake domain, so it + * only exists if the corresponding VCS engine is + * present. + */ + if (!HAS_ENGINE(gt->_gt, _VCS(i * 2))) + continue; + gt->sfc_done[i] = intel_uncore_read(uncore, GEN12_SFC_DONE(i)); } -- 2.30.2