From patchwork Mon Jul 18 19:51:27 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mathieu Poirier X-Patchwork-Id: 72249 Delivered-To: patch@linaro.org Received: by 10.140.29.52 with SMTP id a49csp290794qga; Mon, 18 Jul 2016 12:51:59 -0700 (PDT) X-Received: by 10.66.149.66 with SMTP id ty2mr58686679pab.153.1468871513615; Mon, 18 Jul 2016 12:51:53 -0700 (PDT) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id v12si5016786pfi.276.2016.07.18.12.51.53; Mon, 18 Jul 2016 12:51:53 -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=@linaro.org; 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; dmarc=pass (p=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752421AbcGRTvu (ORCPT + 29 others); Mon, 18 Jul 2016 15:51:50 -0400 Received: from mail-io0-f182.google.com ([209.85.223.182]:33936 "EHLO mail-io0-f182.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752259AbcGRTvl (ORCPT ); Mon, 18 Jul 2016 15:51:41 -0400 Received: by mail-io0-f182.google.com with SMTP id q83so425671iod.1 for ; Mon, 18 Jul 2016 12:51:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=tvLsOGgrV+wGf5u35/r/N/zDP5tXrWWY69UEEVygaaI=; b=gIxaCWlCcsmqPg4wWv2+rNKUN41kB3BJSDGbPiGRlSr7HJNPxWI60IY3fzXcUaPbPL 0BP6+049YZ7fz9EF0dpDQ3yv6KUF2bxTVIbuBat99QNnhm0LmoQGQWbl+IF1Svtchvgk +4qGqJkCj9LIzjKnubuuUklTqyybl9+/IVouY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=tvLsOGgrV+wGf5u35/r/N/zDP5tXrWWY69UEEVygaaI=; b=bk5ug2JD57iS46M/y3lc4R6BGWRG/+n7zqMk+pj0qtvUlKItL0F7B0hjBmo4HBDcwb o7sSI52Bzbk3Qeh8hXCCsGA8uihoE90EU83XhNneJc4h4T4CQtEjf+HmLUc5DfdAvl4g o8Tov/870YOLvXUE73A5vX1zPVI2A+QqSfk4aeLB2/jcnl7zB23WYRM0cJVOyzi90EXx K1AZObdWd0Z/lh99ySxAhZT8dsdiuuaIXgAp8so1a7Cy8jN04G2chZmufX2jf2I6iu3d T0ZCRyw4s42XTybVyY7lcnnw1c93kegPTcaWGj61Jlj9wr2Kpfdxi2u8KnJIp2NTUHpi mXCw== X-Gm-Message-State: ALyK8tLWML0Todpe/KT6KxIcNGBalmxKRYVnyG26lVZEOD6zEfvWTBKF6zgwpIoA4j9vZCXc X-Received: by 10.107.179.9 with SMTP id c9mr27356965iof.170.1468871500642; Mon, 18 Jul 2016 12:51:40 -0700 (PDT) Received: from t430.cg.shawcable.net (S0106002369de4dac.cg.shawcable.net. [68.147.8.254]) by smtp.gmail.com with ESMTPSA id r128sm5270676ita.6.2016.07.18.12.51.39 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 18 Jul 2016 12:51:40 -0700 (PDT) From: Mathieu Poirier To: linux-arm-kernel@lists.infradead.org Cc: linux-kernel@vger.kernel.org, alexander.shishkin@linux.intel.com, Mathieu Poirier Subject: [PATCH 06/10] coresight: etm4x: adding range filter configuration function Date: Mon, 18 Jul 2016 13:51:27 -0600 Message-Id: <1468871491-10997-7-git-send-email-mathieu.poirier@linaro.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1468871491-10997-1-git-send-email-mathieu.poirier@linaro.org> References: <1468871491-10997-1-git-send-email-mathieu.poirier@linaro.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Introducing a new function to do address range configuration generic enough to work for any address range and any comparator. Signed-off-by: Mathieu Poirier --- drivers/hwtracing/coresight/coresight-etm4x.c | 56 ++++++++++++++++++--------- 1 file changed, 38 insertions(+), 18 deletions(-) -- 2.7.4 diff --git a/drivers/hwtracing/coresight/coresight-etm4x.c b/drivers/hwtracing/coresight/coresight-etm4x.c index e348c18086f5..4a4d2ef35ad6 100644 --- a/drivers/hwtracing/coresight/coresight-etm4x.c +++ b/drivers/hwtracing/coresight/coresight-etm4x.c @@ -584,16 +584,10 @@ static void etm4_set_default_config(struct etmv4_config *config) config->vinst_ctrl |= BIT(0); } -static void etm4_set_default_filter(struct etmv4_config *config) +static void etm4_set_comparator_filter(struct etmv4_config *config, + u64 start, u64 stop, int comparator) { - u64 start, stop, access_type = 0; - - /* - * Configure address range comparator '0' to encompass all - * possible addresses. - */ - start = 0x0; - stop = ~0x0; + u64 access_type = 0; /* EXLEVEL_NS, bits[12:15], always stay away from hypervisor mode. */ access_type = ETM_EXLEVEL_NS_HYP; @@ -607,20 +601,46 @@ static void etm4_set_default_filter(struct etmv4_config *config) ETM_EXLEVEL_S_HYP); /* First half of default address comparator */ - config->addr_val[ETM_DEFAULT_ADDR_COMP] = start; - config->addr_acc[ETM_DEFAULT_ADDR_COMP] = access_type; - config->addr_type[ETM_DEFAULT_ADDR_COMP] = ETM_ADDR_TYPE_RANGE; + config->addr_val[comparator] = start; + config->addr_acc[comparator] = access_type; + config->addr_type[comparator] = ETM_ADDR_TYPE_RANGE; /* Second half of default address comparator */ - config->addr_val[ETM_DEFAULT_ADDR_COMP + 1] = stop; - config->addr_acc[ETM_DEFAULT_ADDR_COMP + 1] = access_type; - config->addr_type[ETM_DEFAULT_ADDR_COMP + 1] = ETM_ADDR_TYPE_RANGE; + config->addr_val[comparator + 1] = stop; + config->addr_acc[comparator + 1] = access_type; + config->addr_type[comparator + 1] = ETM_ADDR_TYPE_RANGE; + + /* + * Configure the ViewInst function to include this address range + * comparator. + * + * @comparator is divided by two since it is the index in the + * etmv4_config::addr_val array but register TRCVIIECTLR deals with + * address range comparator _pairs_. + * + * Therefore: + * index 0 -> compatator pair 0 + * index 2 -> comparator pair 1 + * index 4 -> comparator pair 2 + * ... + * index 14 -> comparator pair 7 + */ + config->viiectlr |= BIT(comparator / 2); +} + +static void etm4_set_default_filter(struct etmv4_config *config) +{ + u64 start, stop; /* - * Configure the ViewInst function to filter on address range - * comparator '0'. + * Configure address range comparator '0' to encompass all + * possible addresses. */ - config->viiectlr = BIT(0); + start = 0x0; + stop = ~0x0; + + etm4_set_comparator_filter(config, start, stop, + ETM_DEFAULT_ADDR_COMP); /* * TRCVICTLR::SSSTATUS == 1, the start-stop logic is