Received: by 2002:a5b:505:0:0:0:0:0 with SMTP id o5csp2082141ybp; Thu, 10 Oct 2019 01:52:30 -0700 (PDT) X-Google-Smtp-Source: APXvYqyv1jJWJRSQzwsnMVD0eUEvDuH+tsCQoTOMraeW6wRYihA1LpelecijxTAQ+ZgTRmT0wj3Y X-Received: by 2002:a17:906:d8c5:: with SMTP id re5mr7024825ejb.254.1570697550663; Thu, 10 Oct 2019 01:52:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1570697550; cv=none; d=google.com; s=arc-20160816; b=vmY/XqzmxWoiG/JKzERPqDQX5vReZiV7vv+ejjBAope9PaEgOg3Xe7j+1ICTrfsABL jX/zQhu8IVw3j6x22dWv/oXL0yLbWOw34VotGuvCmU6s0IQZ8lTQd7/pQcjsPOSdhYvB WxHUwXZ8kwm1RQ8xUC2lU0jRCdOHdLhzsLPFhQcfOJIA0HSYpQ4ZMayrnqOv/utDGb7x wMpmOeHneu6o3MB6gY1SSLBW+TgOo8VwFibXFkqb3j/eYC4ouloI8/MK3bI53vNIjpeO 5dD3LcC3au4LTaEADOpGjPwj9zad1QCqo+3FOSdROEW92WKfNv2orw4Y3PTbzvXaHYQh iZTA== 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=HIhaDXX4dWb5xqwUj2WLw0qfRoi3Z/fKLwGcYZZpaC0=; b=pPj+xYblqhFl3DTM3pxsJ0MxDvt7VyOg5t37Jyxk0DQb0C1i8Ie1SbVczYt3NVnUBX B8lVTCoLp2eQTrG6yDmLBTg2bW3Eo8ZMYYVRemisNcgFCc1tuuNnZvN5NmE68Gu16YUe 3mTktVj8/hQacbz7LYtYuGDhuJfUlsOuZtgeaBgB4TLaCOsxGmrclTIq+5RMaLD4P2h/ EjIRP339LyPT3Bzic5IiMeRPFXliLsV8hwRm4D2f5gwRsOglFc9+bgcNzE8063m9Lxim zDjIMEcR8pglkZcYWbzbr/ojYTM7cVRwMSKWC36juQfYXSn2ocx33iDqDJHbCjG1pvUJ mInQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=qRQt8+WA; 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 u11si2685371ejr.234.2019.10.10.01.52.07; Thu, 10 Oct 2019 01:52:30 -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=qRQt8+WA; 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 S2390202AbfJJIwF (ORCPT + 99 others); Thu, 10 Oct 2019 04:52:05 -0400 Received: from mail.kernel.org ([198.145.29.99]:59816 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2389853AbfJJIwD (ORCPT ); Thu, 10 Oct 2019 04:52:03 -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 8D4DC2064A; Thu, 10 Oct 2019 08:52:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1570697523; bh=jorbzplLFZs5KZv2OXDXaJe/w1cu8hny/AjZmBdg+Zc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=qRQt8+WA2ApCpCSx0sLIOcjK3Ue2uvzDrigBFY6Ot8mTVNPOvdBeIEyGo4u0iqSwS iKC7yZBpZ8YcPfZk+Xrht690lawxw0Pag3iPAZBF0vt5H6mfM3fHlm8e23KtL3sB+W Qxy0kERtpeEy27zfVBe5Q5RCE24hIzt2g+C/RN4A= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Andrew Murray , Suzuki K Poulose , Mathieu Poirier Subject: [PATCH 4.14 57/61] coresight: etm4x: Use explicit barriers on enable/disable Date: Thu, 10 Oct 2019 10:37:22 +0200 Message-Id: <20191010083525.202460400@linuxfoundation.org> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191010083449.500442342@linuxfoundation.org> References: <20191010083449.500442342@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: Andrew Murray commit 1004ce4c255fc3eb3ad9145ddd53547d1b7ce327 upstream. Synchronization is recommended before disabling the trace registers to prevent any start or stop points being speculative at the point of disabling the unit (section 7.3.77 of ARM IHI 0064D). Synchronization is also recommended after programming the trace registers to ensure all updates are committed prior to normal code resuming (section 4.3.7 of ARM IHI 0064D). Let's ensure these syncronization points are present in the code and clearly commented. Note that we could rely on the barriers in CS_LOCK and coresight_disclaim_device_unlocked or the context switch to user space - however coresight may be of use in the kernel. On armv8 the mb macro is defined as dsb(sy) - Given that the etm4x is only used on armv8 let's directly use dsb(sy) instead of mb(). This removes some ambiguity and makes it easier to correlate the code with the TRM. Signed-off-by: Andrew Murray Reviewed-by: Suzuki K Poulose [Fixed capital letter for "use" in title] Signed-off-by: Mathieu Poirier Link: https://lore.kernel.org/r/20190829202842.580-11-mathieu.poirier@linaro.org Cc: stable@vger.kernel.org # 4.9+ Signed-off-by: Mathieu Poirier Signed-off-by: Greg Kroah-Hartman --- drivers/hwtracing/coresight/coresight-etm4x.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) --- a/drivers/hwtracing/coresight/coresight-etm4x.c +++ b/drivers/hwtracing/coresight/coresight-etm4x.c @@ -181,6 +181,12 @@ static void etm4_enable_hw(void *info) if (coresight_timeout(drvdata->base, TRCSTATR, TRCSTATR_IDLE_BIT, 0)) dev_err(drvdata->dev, "timeout while waiting for Idle Trace Status\n"); + /* + * As recommended by section 4.3.7 ("Synchronization when using the + * memory-mapped interface") of ARM IHI 0064D + */ + dsb(sy); + isb(); CS_LOCK(drvdata->base); @@ -331,8 +337,12 @@ static void etm4_disable_hw(void *info) /* EN, bit[0] Trace unit enable bit */ control &= ~0x1; - /* make sure everything completes before disabling */ - mb(); + /* + * Make sure everything completes before disabling, as recommended + * by section 7.3.77 ("TRCVICTLR, ViewInst Main Control Register, + * SSTATUS") of ARM IHI 0064D + */ + dsb(sy); isb(); writel_relaxed(control, drvdata->base + TRCPRGCTLR);