From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753537AbcADLzI (ORCPT ); Mon, 4 Jan 2016 06:55:08 -0500 Received: from foss.arm.com ([217.140.101.70]:52277 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753311AbcADLzG (ORCPT ); Mon, 4 Jan 2016 06:55:06 -0500 From: "Suzuki K. Poulose" To: linux-arm-kernel@lists.infradead.org Cc: linux-kernel@vger.kernel.org, arm@kernel.org, mark.rutland@arm.com, punit.agrawal@arm.com, peterz@infradead.org, "Suzuki K. Poulose" Subject: [PATCH v5 02/11] arm-cci: Refactor pmu_write_counter Date: Mon, 4 Jan 2016 11:54:41 +0000 Message-Id: <1451908490-2615-3-git-send-email-suzuki.poulose@arm.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1451908490-2615-1-git-send-email-suzuki.poulose@arm.com> References: <1451908490-2615-1-git-send-email-suzuki.poulose@arm.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Refactor pmu_write_counter to add __pmu_write_counter() which will actually write to the counter once the event is validated. This can be used by hooks specific to CCI PMU model to program the counter, where the event is already validated. Cc: Mark Rutland Cc: Punit Agrawal Signed-off-by: Suzuki K. Poulose --- drivers/bus/arm-cci.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/drivers/bus/arm-cci.c b/drivers/bus/arm-cci.c index 3786879..ce0d3ef 100644 --- a/drivers/bus/arm-cci.c +++ b/drivers/bus/arm-cci.c @@ -767,16 +767,22 @@ static u32 pmu_read_counter(struct perf_event *event) return value; } +static void __pmu_write_counter(struct cci_pmu *cci_pmu, u32 value, int idx) +{ + pmu_write_register(cci_pmu, value, idx, CCI_PMU_CNTR); +} + static void pmu_write_counter(struct perf_event *event, u32 value) { struct cci_pmu *cci_pmu = to_cci_pmu(event->pmu); struct hw_perf_event *hw_counter = &event->hw; int idx = hw_counter->idx; - if (unlikely(!pmu_is_valid_counter(cci_pmu, idx))) + if (unlikely(!pmu_is_valid_counter(cci_pmu, idx))) { dev_err(&cci_pmu->plat_device->dev, "Invalid CCI PMU counter %d\n", idx); - else - pmu_write_register(cci_pmu, value, idx, CCI_PMU_CNTR); + return; + } + __pmu_write_counter(cci_pmu, value, idx); } static u64 pmu_event_update(struct perf_event *event) -- 1.7.9.5