From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-14.1 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D0981C433E6 for ; Wed, 27 Jan 2021 17:45:04 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 8346964DAB for ; Wed, 27 Jan 2021 17:45:04 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 8346964DAB Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References:Message-ID: Subject:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=GSCnefFutHc2wH6Lw7EW5e41UolgJyZnmapsB7W5d8E=; b=FpLvAMg9N1VR9BcTUaJy1F8mW slCDBHb0+04Q91Oa22+4hMWsJp1PP/dOlt9Sj0EBvPOmzMLk2N5j82Dm6EVa/Q8ztA+jKGh5NZU8w CJ9/2pHOchz8ELC3LSzRjoPDdsvQeolY9KQGWaWlC6DzNibON/AAncl7PSNTssM2wgWlbHAa4M2Js QkYDlDT1wTh6OYPcgMy8onNtc+WwqTi+rq5i3n5QWmNM2Zoz56BXd99qAtIJBDBRM1Ib5VVfy7w+E ryRw5pHSE+6qkUWIFFtkvTeD+A+q78mbPStQpQyaR9l79d489WgZ51mEJvtPkeJYpP47DmrhPXqZs 38mC2f1oQ==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1l4orA-0001vG-WD; Wed, 27 Jan 2021 17:43:53 +0000 Received: from mail-pf1-x434.google.com ([2607:f8b0:4864:20::434]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1l4or7-0001tE-EO for linux-arm-kernel@lists.infradead.org; Wed, 27 Jan 2021 17:43:50 +0000 Received: by mail-pf1-x434.google.com with SMTP id y205so1661691pfc.5 for ; Wed, 27 Jan 2021 09:43:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=7sj7pim5IetR456CHcvRdOi+mjzmrDoe/hWhqa9Dot0=; b=nZn951upXHINIYPKAhqqnA0gSx9fm6BFVM/jP6hftSq00DD9x0fQ79puVIjzJIf+Wy iz9lW1hiLD0uRu0nh13kS4yHg7O3hEcaW0s59nyCqYBxc053a/nqV04OX2KJSn7J44g+ V8moEFcNU3aSxiW1iWkOW/VanCas20nn/jHn9FJLLkkkc2maImUnd6Ldl7xHRe4sU/lS GjaY2uNfKEAvsh2J9AP/NRQp/iqK17FHew7+NCrz1GulAxqmMrqdpVNtJk6QyHIP20U6 NiRec482FiU3hQ8fIjjs06E1pqCY2G3DBMZqGbJBGe6TmcSLPnjcz+EIwl7eQWVhT1ll 84cA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=7sj7pim5IetR456CHcvRdOi+mjzmrDoe/hWhqa9Dot0=; b=A7unvP9L0+XtbNHS8nkKmoWjg9kwpy5SdSVaTqJkgQwa7rC28HW43kVuaPVSq4oRlD Hy3MeE/Y1qZ8X2PWTLrndeNvZaYyU9eDxGuIIk2RPbjdgjPlHNmGLXmWwmvICylK+8ve qkM4P8Bu4a1obNM+5KC1l/0VRF0vTUF4FLRACqxzenjhspg6ZSINMKKgy4ZzQ636r5Ig aR38BSKXwThz4PWYNRLkLcATUN/f+UM9k+RF+/HnaQc3iUrahQXPQOZ+o4u0tthN13A9 efIe6y4nQOAXNyAMcXO3kBJJp0wrgrK8zoka3gzPINugki9kNIz6L5lC0x+osuxtWsh9 kSiQ== X-Gm-Message-State: AOAM532ooroEXnqXnFss/wK8ICGYMDbs7pZU05DeAyZ7FnbzoUE5d+15 vOb7C9CijBOLjj1QWYVS9Z2JVw== X-Google-Smtp-Source: ABdhPJwjvSKmNhCa/kWyqmBXH7mVKkYXDuapfT2VYBLLHkHVh7PWO3Yk6lwHCS5IEBayb3JboBIycw== X-Received: by 2002:a05:6a00:2286:b029:1ae:6c7f:31ce with SMTP id f6-20020a056a002286b02901ae6c7f31cemr11645761pfe.6.1611769423153; Wed, 27 Jan 2021 09:43:43 -0800 (PST) Received: from xps15 (S0106889e681aac74.cg.shawcable.net. [68.147.0.187]) by smtp.gmail.com with ESMTPSA id 6sm2918057pfz.34.2021.01.27.09.43.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 27 Jan 2021 09:43:42 -0800 (PST) Date: Wed, 27 Jan 2021 10:43:40 -0700 From: Mathieu Poirier To: Suzuki K Poulose Subject: Re: [PATCH v2] coresight: etm4x: Handle accesses to TRCSTALLCTLR Message-ID: <20210127174340.GA1162729@xps15> References: <20210126145614.3607093-1-suzuki.poulose@arm.com> <20210127120032.3611851-1-suzuki.poulose@arm.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20210127120032.3611851-1-suzuki.poulose@arm.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210127_124349_597018_AFF04D06 X-CRM114-Status: GOOD ( 21.25 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: coresight@lists.linaro.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org, Leo Yan , linux-arm-kernel@lists.infradead.org, Mike Leach Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Good day, On Wed, Jan 27, 2021 at 12:00:32PM +0000, Suzuki K Poulose wrote: > TRCSTALLCTLR register is only implemented if > > TRCIDR3.STALLCTL == 0b1 > > Make sure the driver touches the register only it is implemented. > > Cc: stable@vger.kernel.org > Cc: Mathieu Poirier > Cc: Leo Yan > Cc: Mike Leach > Signed-off-by: Suzuki K Poulose > --- > Changes since v1: > - No change to the patch, fixed the stable email address and > added usual reviewers. > --- > drivers/hwtracing/coresight/coresight-etm4x-core.c | 9 ++++++--- > drivers/hwtracing/coresight/coresight-etm4x-sysfs.c | 3 +++ > 2 files changed, 9 insertions(+), 3 deletions(-) > > diff --git a/drivers/hwtracing/coresight/coresight-etm4x-core.c b/drivers/hwtracing/coresight/coresight-etm4x-core.c > index b40e3c2bf818..814b49dae0c7 100644 > --- a/drivers/hwtracing/coresight/coresight-etm4x-core.c > +++ b/drivers/hwtracing/coresight/coresight-etm4x-core.c > @@ -367,7 +367,8 @@ static int etm4_enable_hw(struct etmv4_drvdata *drvdata) > etm4x_relaxed_write32(csa, 0x0, TRCAUXCTLR); > etm4x_relaxed_write32(csa, config->eventctrl0, TRCEVENTCTL0R); > etm4x_relaxed_write32(csa, config->eventctrl1, TRCEVENTCTL1R); > - etm4x_relaxed_write32(csa, config->stall_ctrl, TRCSTALLCTLR); > + if (drvdata->stallctl) > + etm4x_relaxed_write32(csa, config->stall_ctrl, TRCSTALLCTLR); > etm4x_relaxed_write32(csa, config->ts_ctrl, TRCTSCTLR); > etm4x_relaxed_write32(csa, config->syncfreq, TRCSYNCPR); > etm4x_relaxed_write32(csa, config->ccctlr, TRCCCCTLR); > @@ -1545,7 +1546,8 @@ static int etm4_cpu_save(struct etmv4_drvdata *drvdata) > state->trcauxctlr = etm4x_read32(csa, TRCAUXCTLR); > state->trceventctl0r = etm4x_read32(csa, TRCEVENTCTL0R); > state->trceventctl1r = etm4x_read32(csa, TRCEVENTCTL1R); > - state->trcstallctlr = etm4x_read32(csa, TRCSTALLCTLR); > + if (drvdata->stallctl) > + state->trcstallctlr = etm4x_read32(csa, TRCSTALLCTLR); > state->trctsctlr = etm4x_read32(csa, TRCTSCTLR); > state->trcsyncpr = etm4x_read32(csa, TRCSYNCPR); > state->trcccctlr = etm4x_read32(csa, TRCCCCTLR); > @@ -1657,7 +1659,8 @@ static void etm4_cpu_restore(struct etmv4_drvdata *drvdata) > etm4x_relaxed_write32(csa, state->trcauxctlr, TRCAUXCTLR); > etm4x_relaxed_write32(csa, state->trceventctl0r, TRCEVENTCTL0R); > etm4x_relaxed_write32(csa, state->trceventctl1r, TRCEVENTCTL1R); > - etm4x_relaxed_write32(csa, state->trcstallctlr, TRCSTALLCTLR); > + if (drvdata->stallctl) > + etm4x_relaxed_write32(csa, state->trcstallctlr, TRCSTALLCTLR); > etm4x_relaxed_write32(csa, state->trctsctlr, TRCTSCTLR); > etm4x_relaxed_write32(csa, state->trcsyncpr, TRCSYNCPR); > etm4x_relaxed_write32(csa, state->trcccctlr, TRCCCCTLR); > diff --git a/drivers/hwtracing/coresight/coresight-etm4x-sysfs.c b/drivers/hwtracing/coresight/coresight-etm4x-sysfs.c > index 1c490bcef3ad..cd9249fbf913 100644 > --- a/drivers/hwtracing/coresight/coresight-etm4x-sysfs.c > +++ b/drivers/hwtracing/coresight/coresight-etm4x-sysfs.c > @@ -296,6 +296,9 @@ static ssize_t mode_store(struct device *dev, > if (kstrtoul(buf, 16, &val)) > return -EINVAL; > > + if ((val & ETM_MODE_ISTALL_EN) && !drvdata->stallctl) > + return -EINVAL; > + We have two choices here: 1) Follow what is already done in this function for implementation define options like ETM_MODE_BB, ETMv4_MODE_CTXID, ETM_MODE_RETURNSTACK and others. In that case we would have: /* bit[8], Instruction stall bit */ if ((config->mode & ETM_MODE_ISTALL_EN) && drvdata->stallctl == true)) config->stall_ctrl |= BIT(8); else config->stall_ctrl &= ~BIT(8); 2) Return -EINVAL when something is not supported, like you have above. In that case we'd have to enact the same behavior for all the options, which has the potential of breaking user space. I think option 1 is best. Thanks, Mathieu > spin_lock(&drvdata->spinlock); > config->mode = val & ETMv4_MODE_ALL; > > -- > 2.24.1 > _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel