Received: by 2002:ad5:4acb:0:0:0:0:0 with SMTP id n11csp4492977imw; Tue, 12 Jul 2022 08:53:57 -0700 (PDT) X-Google-Smtp-Source: AGRyM1suH+VgWW4ZfCEqBd68yGNq8G8vpkljoJ+25XfIh6kCvZsi+gia+hITiSPusSvfPkxIFoBO X-Received: by 2002:a05:6402:11d1:b0:43a:8c33:f549 with SMTP id j17-20020a05640211d100b0043a8c33f549mr33114515edw.354.1657641236845; Tue, 12 Jul 2022 08:53:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1657641236; cv=none; d=google.com; s=arc-20160816; b=gC4skD8Ym+7OWsEjSC0L2p/qDLPAih8Uoyq3RgzYQmCzpxBOJBjylJ7DUvoSAnMt4C FrZOyqrSJGPYEH+HbabMy0pvVgRznV8NEAA08DXz6hcmbsX/x0U1+KWWkD1nNK+Vb0HL H/YdAFXD+qYVbFgIGEr+IULD1ohVS2N/LGL6ITvB5rKu0WcQ6o2qEUHK/0OsqrsnMlf2 VdpG0Aw41NMD5GhFtzuTMd14eqeIF/OeZOk8NbgcjksL6/vcl7HQl9MnmlqVe4K32E5G xocVbgqKZPK56WK33qfftQiC2Um0mYly6bu0noT3iLAlZ/xaR8Hwf3zhsTJ0h6zyiApN ARug== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:to:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:from :dkim-signature; bh=Vf/3yHlE8nmhl21f428ErMevUpktoya/HQQVcUhrzNY=; b=JjI5Z9VwEdhXivIw66+GhAz4iI0XYGqdaqHZeVZbJH5uNUwfN8D7caEZ106xBbDF7v xWZ56xvyR3vLSB0T0v3RdkbKeXMJ26iqiEqzs0wQ1WAiCHuKiqRJQmtl3LaGAKcyqlNL gZbqnIFEjYAvktIF0yZfH94C5yyqa+QX/vAduVhYjj7LQ4TtjC/E+7qHCkVQPAoyqm36 8ByEgw+aBJwOlsdZyJZfPRNUhOdwfJ4qMop7fq96VGBcIwTZWoptFyDHh8xpk/elS8Nu ifoPKu0DhwK+e02fxQRLkyKgYwQydOeZuRHimhfUNHPnSu8YrX5vlB7Nq1BFZPAtiuR/ gVbg== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@kernel.org header.s=k20201202 header.b=LJrD1yF7; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id y3-20020a50eb83000000b00439b7929369si12297682edr.56.2022.07.12.08.53.29; Tue, 12 Jul 2022 08:53:56 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=fail header.i=@kernel.org header.s=k20201202 header.b=LJrD1yF7; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233414AbiGLPX1 (ORCPT + 99 others); Tue, 12 Jul 2022 11:23:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55418 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233195AbiGLPWy (ORCPT ); Tue, 12 Jul 2022 11:22:54 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8F103C6347; Tue, 12 Jul 2022 08:21:40 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 036BDB819D2; Tue, 12 Jul 2022 15:21:39 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id A2ED1C3411C; Tue, 12 Jul 2022 15:21:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1657639297; bh=rkXgJ+KICcuhKcKXnRDTJXzdLqQQSf48ZLKv0N9h2VE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=LJrD1yF7DdDe3y8ZRgPCSF6+QqTm7E4u8GjTX2lMWlo6opticpjiL49FU8bRCXn2K CQxJ7hM8UcmA9+lncnDYWoS91gRCHNQAcEBZ8sw2Lvm48U4oE9IyB+uwfnx/u9iTCt 65f/9W6jEiWyXv/IjJOs4YsHPFU6ajfLxxP8ESFuAr1cescNFD766rzCcZ0yvN7m20 zAGrg4j710rM7WAQr6IN82ns2OMElR09+mbVAMka5tTaPQMYhzO7MyZm07wAy9fWz/ pGTeDE+z57QxEVPbNJXZBp2D+bUEkgUzPxE2BoMrdQMDXDYd3yj4mw6BZwN7J5vrC5 ABoIqTCIuIljQ== Received: from mchehab by mail.kernel.org with local (Exim 4.95) (envelope-from ) id 1oBHhe-004k26-Bj; Tue, 12 Jul 2022 16:21:34 +0100 From: Mauro Carvalho Chehab Cc: Chris Wilson , Andi Shyti , Daniel Vetter , Daniele Ceraolo Spurio , Dave Airlie , David Airlie , Jani Nikula , John Harrison , Joonas Lahtinen , Lucas De Marchi , Matt Roper , Rodrigo Vivi , Tvrtko Ursulin , dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org, Mauro Carvalho Chehab , =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= Subject: [PATCH v5 2/2] drm/i915/gt: Serialize TLB invalidates with GT resets Date: Tue, 12 Jul 2022 16:21:33 +0100 Message-Id: <1e59a7c45dd919a530256b9ac721ac6ea86c0677.1657639152.git.mchehab@kernel.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-7.7 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net To: unlisted-recipients:; (no To-header on input) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Chris Wilson Avoid trying to invalidate the TLB in the middle of performing an engine reset, as this may result in the reset timing out. Currently, the TLB invalidate is only serialised by its own mutex, forgoing the uncore lock, but we can take the uncore->lock as well to serialise the mmio access, thereby serialising with the GDRST. Tested on a NUC5i7RYB, BIOS RYBDWi35.86A.0380.2019.0517.1530 with i915 selftest/hangcheck. Cc: stable@vger.kernel.org # v4.4 and upper Fixes: 7938d61591d3 ("drm/i915: Flush TLBs before releasing backing store") Reported-by: Mauro Carvalho Chehab Tested-by: Mauro Carvalho Chehab Reviewed-by: Mauro Carvalho Chehab Signed-off-by: Chris Wilson Cc: Tvrtko Ursulin Reviewed-by: Andi Shyti Acked-by: Thomas Hellström Signed-off-by: Mauro Carvalho Chehab --- See [PATCH v5 0/2] at: https://lore.kernel.org/all/cover.1657639152.git.mchehab@kernel.org/ drivers/gpu/drm/i915/gt/intel_gt.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/gt/intel_gt.c b/drivers/gpu/drm/i915/gt/intel_gt.c index 8da3314bb6bf..68c2b0d8f187 100644 --- a/drivers/gpu/drm/i915/gt/intel_gt.c +++ b/drivers/gpu/drm/i915/gt/intel_gt.c @@ -952,6 +952,20 @@ void intel_gt_invalidate_tlbs(struct intel_gt *gt) mutex_lock(>->tlb_invalidate_lock); intel_uncore_forcewake_get(uncore, FORCEWAKE_ALL); + spin_lock_irq(&uncore->lock); /* serialise invalidate with GT reset */ + + for_each_engine(engine, gt, id) { + struct reg_and_bit rb; + + rb = get_reg_and_bit(engine, regs == gen8_regs, regs, num); + if (!i915_mmio_reg_offset(rb.reg)) + continue; + + intel_uncore_write_fw(uncore, rb.reg, rb.bit); + } + + spin_unlock_irq(&uncore->lock); + for_each_engine(engine, gt, id) { /* * HW architecture suggest typical invalidation time at 40us, @@ -966,7 +980,6 @@ void intel_gt_invalidate_tlbs(struct intel_gt *gt) if (!i915_mmio_reg_offset(rb.reg)) continue; - intel_uncore_write_fw(uncore, rb.reg, rb.bit); if (__intel_wait_for_register_fw(uncore, rb.reg, rb.bit, 0, timeout_us, timeout_ms, -- 2.36.1