Received: by 2002:a5b:505:0:0:0:0:0 with SMTP id o5csp2088635ybp; Thu, 10 Oct 2019 02:00:18 -0700 (PDT) X-Google-Smtp-Source: APXvYqzc+igsUk0jpyzAxMmxBoPcaCnoBApgR9MECn0MTXxcET0s4BzJQ0ib2v2UZq8Z0DIEBMuB X-Received: by 2002:aa7:ce08:: with SMTP id d8mr7259127edv.260.1570698018524; Thu, 10 Oct 2019 02:00:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1570698018; cv=none; d=google.com; s=arc-20160816; b=kvWbQ9oTu/+JVYqRH9eYb8aDiMKTUlCIe4X0gP/jkC4Ee+X58sFcGAcAI5nmK00NIa 1+RsBD57oSTX15Rd99JbAyPz8S/FfiU3ZjTzXs5zD4e+FtWQKnJHPyeuqkzmM1RkUppm 5cK0wrgIKl6AAxJzy6JbXH+AuznM4Wzx4q6GRbmDYhTBxhjy6faNItEaV3Gyg++ihD6h Q9/8Z2VO0P+ex+ZALE6Lj80ZxKQBR52x1JzuUkH95JrFy/4qDuZVToh43WsD2kqGJ3OV ntXz66c+KpxJ1eeoOFVHuJmihTDos4jW68VaFF+X6vRjV+NLnlYeqYbNI+tYT7emBUda spqw== 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=6bquWyNT6Xe1GsAxHYihmmuwPbFeS7FTQtIeviPXv9I=; b=WbDRponhLoyyiSGTf+RZv0GnE9T5zk1K/xdVfNjRtnABf5wqyHemkEuTKuPcBIWhxJ FHWFm+ikxkd5Q3uEjtd7tW54vVhpVoiazsMUorkiX+tSH+cYmpsB7zFd45xY075sle7g C1Bx+VT6ttuUPyRK0XE7dpf8XNTGkKVozIXawdkIJtE3ZOSVx8LnNIVW/YF35eGrfgYB 9ixCSWTRHbNbr6zbJW1m+pxLEAh57ablK+am78WU+ylrWHGqFKsiInP7a9DU80+LADrs p2scehSzD5RUzz14dBYWECg/E3tsjdd3B8hICXOvIlI7MF3sWb40r02uB3bH2upamRry qfYg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=fQuO2gSo; 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 c6si3477152edc.291.2019.10.10.01.59.55; Thu, 10 Oct 2019 02:00:18 -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=fQuO2gSo; 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 S2388815AbfJJInv (ORCPT + 99 others); Thu, 10 Oct 2019 04:43:51 -0400 Received: from mail.kernel.org ([198.145.29.99]:48752 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388145AbfJJInu (ORCPT ); Thu, 10 Oct 2019 04:43:50 -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 C105F2054F; Thu, 10 Oct 2019 08:43:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1570697029; bh=oW5Rfbl6SsO+qi24/vZmZMOz5+wZgp/IY5u2ko0W1Ek=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=fQuO2gSo39WWv2TAQMK4EFvN/uItKohonoAiOmZpc07oJirF3YyPzjlWj3TPGWASh BrBESR6gpRleJqRkST3RJg/7yYl4glZRkPrqrGyq9dLRdWqJhjJk9s7miaMevTAtVw LYbVvD5Ob8h1Bvnq3p97TJYnhdqRLf0Il3L6iGsM= 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 5.3 142/148] coresight: etm4x: Use explicit barriers on enable/disable Date: Thu, 10 Oct 2019 10:36:43 +0200 Message-Id: <20191010083620.916764208@linuxfoundation.org> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191010083609.660878383@linuxfoundation.org> References: <20191010083609.660878383@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 Signed-off-by: Greg Kroah-Hartman Signed-off-by: Greg Kroah-Hartman --- drivers/hwtracing/coresight/coresight-etm4x.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) --- a/drivers/hwtracing/coresight/coresight-etm4x.c +++ b/drivers/hwtracing/coresight/coresight-etm4x.c @@ -188,6 +188,13 @@ static int etm4_enable_hw(struct etmv4_d dev_err(etm_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(); + done: CS_LOCK(drvdata->base); @@ -453,8 +460,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);