Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp32265ybl; Tue, 7 Jan 2020 13:31:16 -0800 (PST) X-Google-Smtp-Source: APXvYqxAUQLvWoC1qYNOdn5EVUesSxGQqnK8XiAjeBr/SKGaZTMDcEj9BVdw/0k7bTxrclzJufbU X-Received: by 2002:aca:1309:: with SMTP id e9mr409461oii.7.1578432676628; Tue, 07 Jan 2020 13:31:16 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1578432676; cv=none; d=google.com; s=arc-20160816; b=Y9qLLHW39oaywMy7SnB96HNOhCIaADWuGzYX+HuZlkRj2nh85tJhMXa1YJHtlj2ndz +gqgS3SOCGWt/LyedqVw/Ng1QKaxmx/fC8ttZxy1+WltM63ms+nc3FeRQFXQWxwHYCo0 PEzKEdOhZZJGMJ0EJeNZYjsyK2ZUKTpWIGMyzpUiw4I0+GtSWTlyDOyPFh8gqy9TXp7f aDdb9NS2L/k6NOkkwLqNghPCzaV1f7XpyNXnvhnB9RNsf4S6/Jbi3O5ItfFthKrGGF4j CVq/om6qZkkbYUcUfUckc12QJHNDzkzns8Ko8aA+p9OTIIudQ/TjqHhWXTjlB7KmbTFm qVVw== 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=Vz2iv9RciO+/O4Cz7F6flSgLfoxeH/KSSRwKi7owcjQ=; b=tTZYbyxKU3UjGwRopV9qN3BjDwZ7Xg0ttOSRRO++qSW6Nby9zTHdTGH/RmYKhTGEcA gHNcHd4VSX7U+wKQwspMNK5Ga7hlDqWpelSpd3gIvJnzmHnOxRtWJ80sfMHAsvdupfzw psOTr1z/aodc7asH/QXTn7byuzha20vswWtlNpnvlF85f4aAswCUE5yifTJxHdVCRE5A 9OfLIkPQBREkYL9GP+8SCsjxaYsbLJibKrYixatlV27pOGlE/ZtUqKiWgyBd9hD0UlQd m58ynuBGs+XBd/9qliT2Rl4SoPJeLyfvkQQ7/uPhOVKAoZqoYS3wzJBUqrRfKCF4QCbb 1cQQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=G24lTAjo; 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 l10si562702otr.159.2020.01.07.13.30.47; Tue, 07 Jan 2020 13:31:16 -0800 (PST) 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=G24lTAjo; 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 S1727221AbgAGU4g (ORCPT + 99 others); Tue, 7 Jan 2020 15:56:36 -0500 Received: from mail.kernel.org ([198.145.29.99]:52090 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727192AbgAGU4c (ORCPT ); Tue, 7 Jan 2020 15:56:32 -0500 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 3A0872081E; Tue, 7 Jan 2020 20:56:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1578430591; bh=5BDH2OtEN2ptYmOVRek6RZcBR+CsB+tafPzud33I/ks=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=G24lTAjoiW8X6ohWNf3KXN/7dLG0Lj/HVa8ZNvbwobpg/zkJfMsWGFTrcetd8+jpH R9GEn7q1nx12ZbJvyUQVLajCEd1YY37xcR6IAO6abEwAc6ICAluOqzpOP+eLxid2RE yveYLOwm1FpOixV5oVuh7y0lBUL6i13QgmpnWwXI= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Pierre-Eric Pelloux-Prayer , Alex Deucher , Sasha Levin Subject: [PATCH 5.4 006/191] drm/amdgpu: add cache flush workaround to gfx8 emit_fence Date: Tue, 7 Jan 2020 21:52:06 +0100 Message-Id: <20200107205333.346955333@linuxfoundation.org> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200107205332.984228665@linuxfoundation.org> References: <20200107205332.984228665@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 From: Pierre-Eric Pelloux-Prayer [ Upstream commit bf26da927a1cd57c9deb2db29ae8cf276ba8b17b ] The same workaround is used for gfx7. Both PAL and Mesa use it for gfx8 too, so port this commit to gfx_v8_0_ring_emit_fence_gfx. Signed-off-by: Pierre-Eric Pelloux-Prayer Reviewed-by: Alex Deucher Signed-off-by: Alex Deucher Signed-off-by: Sasha Levin --- drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c index 87dd55e9d72b..cc88ba76a8d4 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c @@ -6184,7 +6184,23 @@ static void gfx_v8_0_ring_emit_fence_gfx(struct amdgpu_ring *ring, u64 addr, bool write64bit = flags & AMDGPU_FENCE_FLAG_64BIT; bool int_sel = flags & AMDGPU_FENCE_FLAG_INT; - /* EVENT_WRITE_EOP - flush caches, send int */ + /* Workaround for cache flush problems. First send a dummy EOP + * event down the pipe with seq one below. + */ + amdgpu_ring_write(ring, PACKET3(PACKET3_EVENT_WRITE_EOP, 4)); + amdgpu_ring_write(ring, (EOP_TCL1_ACTION_EN | + EOP_TC_ACTION_EN | + EOP_TC_WB_ACTION_EN | + EVENT_TYPE(CACHE_FLUSH_AND_INV_TS_EVENT) | + EVENT_INDEX(5))); + amdgpu_ring_write(ring, addr & 0xfffffffc); + amdgpu_ring_write(ring, (upper_32_bits(addr) & 0xffff) | + DATA_SEL(1) | INT_SEL(0)); + amdgpu_ring_write(ring, lower_32_bits(seq - 1)); + amdgpu_ring_write(ring, upper_32_bits(seq - 1)); + + /* Then send the real EOP event down the pipe: + * EVENT_WRITE_EOP - flush caches, send int */ amdgpu_ring_write(ring, PACKET3(PACKET3_EVENT_WRITE_EOP, 4)); amdgpu_ring_write(ring, (EOP_TCL1_ACTION_EN | EOP_TC_ACTION_EN | @@ -6926,7 +6942,7 @@ static const struct amdgpu_ring_funcs gfx_v8_0_ring_funcs_gfx = { 5 + /* COND_EXEC */ 7 + /* PIPELINE_SYNC */ VI_FLUSH_GPU_TLB_NUM_WREG * 5 + 9 + /* VM_FLUSH */ - 8 + /* FENCE for VM_FLUSH */ + 12 + /* FENCE for VM_FLUSH */ 20 + /* GDS switch */ 4 + /* double SWITCH_BUFFER, the first COND_EXEC jump to the place just @@ -6938,7 +6954,7 @@ static const struct amdgpu_ring_funcs gfx_v8_0_ring_funcs_gfx = { 31 + /* DE_META */ 3 + /* CNTX_CTRL */ 5 + /* HDP_INVL */ - 8 + 8 + /* FENCE x2 */ + 12 + 12 + /* FENCE x2 */ 2, /* SWITCH_BUFFER */ .emit_ib_size = 4, /* gfx_v8_0_ring_emit_ib_gfx */ .emit_ib = gfx_v8_0_ring_emit_ib_gfx, -- 2.20.1