Received: by 2002:a05:6a10:c604:0:0:0:0 with SMTP id y4csp2949186pxt; Mon, 9 Aug 2021 12:49:53 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwBW0hBU5scIEv0es9/Pge/dNFK37Zl2amiiAisqm2HrVMmxxWgEDIB93YQAkF8uGjT7i8j X-Received: by 2002:a17:906:d0d5:: with SMTP id bq21mr5201217ejb.470.1628538593192; Mon, 09 Aug 2021 12:49:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1628538593; cv=none; d=google.com; s=arc-20160816; b=STwphaOBXUkIvSfzmUw9/EDdsTXgEOSMX7B00tr4ULusapmbEn83/EbjNo5E/Iz9iL fv7DNt6owY3Tvk900NCa0MG4JPd3Uxc1e+aoRs3uN7aZX4UgH+hpBndQZwg//vvXp4KM TKF0ocPlT57dOqCZTdePV/DgayrTJ+8DrVk5EJBBGLVGcHnjwgApuLB5KaH24mhjcpYU n3Jwx1rKM/PuGJP0cqUS1KTP2JZA+5vv7kUKojdcAQggIhNPqn5dZKNHbI5XpgRhbvwL WkX9448qbCz63BqxI5wTWgip8obr5bpJ36Boi16W/r02m54P6xUkOOFX99H/Ki5m8MnN rpFA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=6jSDpZUCZ1dg7fAdLrTCYUVicI6VDHMgxlA+sO7ZB2o=; b=OCF/h+KW8bzLK3mgkTpZRo9sZSPJv79nByoIt6mhNQomGDqPBag3KknVslpMAzLQa1 Rzy+PTIK8PNuvFJoRpvVgVigA3dBNkbacuO6B44c6i1MltqWXFC2YqPyZNguJLVK3Gti T4vf4asywvEfMC2IgVK/EPwzIm3Oggv9kxXlpEVuQQeSWe9SSNzHrfh4GwmIwHOC7g8s eFNvlq9AvP//WIH6NMuj7hFHM0WU8dYfLNhbA5ryW2aebdol4SpMzXdTmyZVX5qedNc2 YCL+hypZZpwts+rdF+KjjnVo39TKhNZxQ1kpt60Oi2XW48QULqk1LBJRg451bH7yDqJX UlMQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id t12si11442892ejt.509.2021.08.09.12.49.29; Mon, 09 Aug 2021 12:49:53 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235811AbhHIPtg (ORCPT + 99 others); Mon, 9 Aug 2021 11:49:36 -0400 Received: from mail.kernel.org ([198.145.29.99]:51016 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235742AbhHIPsm (ORCPT ); Mon, 9 Aug 2021 11:48:42 -0400 Received: from disco-boy.misterjones.org (disco-boy.misterjones.org [51.254.78.96]) (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 4D76561056; Mon, 9 Aug 2021 15:48:21 +0000 (UTC) Received: from sofa.misterjones.org ([185.219.108.64] helo=why.lan) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1mD7B5-003qjI-2h; Mon, 09 Aug 2021 16:26:59 +0100 From: Marc Zyngier To: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: Mark Rutland , Daniel Lezcano , Thomas Gleixner , Peter Shier , Raghavendra Rao Ananta , Ricardo Koller , Oliver Upton , Will Deacon , Catalin Marinas , Linus Walleij , kernel-team@android.com Subject: [PATCH 10/13] clocksource/arm_arch_timer: Drop unnecessary ISB on CVAL programming Date: Mon, 9 Aug 2021 16:26:48 +0100 Message-Id: <20210809152651.2297337-11-maz@kernel.org> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210809152651.2297337-1-maz@kernel.org> References: <20210809152651.2297337-1-maz@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SA-Exim-Connect-IP: 185.219.108.64 X-SA-Exim-Rcpt-To: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, mark.rutland@arm.com, daniel.lezcano@linaro.org, tglx@linutronix.de, pshier@google.com, rananta@google.com, ricarkol@google.com, oupton@google.com, will@kernel.org, catalin.marinas@arm.com, linus.walleij@linaro.org, kernel-team@android.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Switching from TVAL to CVAL has a small drawback: we need an ISB before reading the counter. We cannot get rid of it, but we can instead remove the one that comes just after writing to CVAL. This reduces the number of ISBs from 3 to 2 when programming the timer. Signed-off-by: Marc Zyngier --- arch/arm/include/asm/arch_timer.h | 4 ++-- arch/arm64/include/asm/arch_timer.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/arch/arm/include/asm/arch_timer.h b/arch/arm/include/asm/arch_timer.h index f014630259cb..787a98ed0716 100644 --- a/arch/arm/include/asm/arch_timer.h +++ b/arch/arm/include/asm/arch_timer.h @@ -31,6 +31,7 @@ void arch_timer_reg_write_cp15(int access, enum arch_timer_reg reg, u64 val) switch (reg) { case ARCH_TIMER_REG_CTRL: asm volatile("mcr p15, 0, %0, c14, c2, 1" : : "r" ((u32)val)); + isb(); break; case ARCH_TIMER_REG_CVAL: asm volatile("mcrr p15, 2, %Q0, %R0, c14" : : "r" (val)); @@ -40,14 +41,13 @@ void arch_timer_reg_write_cp15(int access, enum arch_timer_reg reg, u64 val) switch (reg) { case ARCH_TIMER_REG_CTRL: asm volatile("mcr p15, 0, %0, c14, c3, 1" : : "r" ((u32)val)); + isb(); break; case ARCH_TIMER_REG_CVAL: asm volatile("mcrr p15, 3, %Q0, %R0, c14" : : "r" (val)); break; } } - - isb(); } static __always_inline diff --git a/arch/arm64/include/asm/arch_timer.h b/arch/arm64/include/asm/arch_timer.h index 861cafc4aca5..b2f056db1225 100644 --- a/arch/arm64/include/asm/arch_timer.h +++ b/arch/arm64/include/asm/arch_timer.h @@ -95,6 +95,7 @@ void arch_timer_reg_write_cp15(int access, enum arch_timer_reg reg, u64 val) switch (reg) { case ARCH_TIMER_REG_CTRL: write_sysreg(val, cntp_ctl_el0); + isb(); break; case ARCH_TIMER_REG_CVAL: write_sysreg(val, cntp_cval_el0); @@ -104,14 +105,13 @@ void arch_timer_reg_write_cp15(int access, enum arch_timer_reg reg, u64 val) switch (reg) { case ARCH_TIMER_REG_CTRL: write_sysreg(val, cntv_ctl_el0); + isb(); break; case ARCH_TIMER_REG_CVAL: write_sysreg(val, cntv_cval_el0); break; } } - - isb(); } static __always_inline -- 2.30.2