Received: by 2002:ac0:b08d:0:0:0:0:0 with SMTP id l13csp4902157imc; Mon, 25 Feb 2019 13:17:22 -0800 (PST) X-Google-Smtp-Source: AHgI3IYlUyiaU597ewZkjZT1MRORylksTC2Yvp7IqULwqUHBWKH24/jY5KGmcH3ilTJ1nAq+LP1B X-Received: by 2002:a63:6244:: with SMTP id w65mr20618844pgb.300.1551129442841; Mon, 25 Feb 2019 13:17:22 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1551129442; cv=none; d=google.com; s=arc-20160816; b=l8QCBHXJh9A6L8fCXIWxgILZM0Wjvi4+Bdg6X+6If1/gIaGnSU4+TYSEG2t32CiQi3 Wq1td1CGrfp11wwktVioQRk7RhlXbBbfFNyVxBoAy+5lbjH+VX9BUI2EeqXhMfFbKu9p TMj/ZOFoM3E/o1U3xHHI2p9WUv/PWbY19gqaf+3Rqeit5inQB0Eu3AUiceIt42zFpYOy 8hQewcpesYLBfvUTji2TPOvYGTJ57abvA56C8x2PyPf8hONOrNRzH/OfX9JmrRdNhUNi vPqmITAzz5Xq05mL7RSwVyVzrkDS6afbVYK7AvZ2xFh+986VxAy/CZwLl4gwz5u/0hQV SF3w== 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=fBqsMIXyfP2bTn6jBgG6zGy9RPgB7OvFUnfRAq5aL5A=; b=BsAwZkZNbgr1t+rKb0hszwohPnOkz2Te0ahYpezmn5xMIMVKYy6/BsPe53ofbmP4FN zNS1c+i0wjaUDeJ3oixKpwBwwfV+T06Gn6ydGLhxCJC9NXEHQ0R77jkF09TBoBL5/eHX h/o5hOSsjqBQ2oARO9zh8wq4ixdtERvwgzC5OGNOHuNWTsqGBt5zBzBFWYTuyLt83W3P yC7I/mCl5IlogBOZ7ZFCODAcc0UwTgsSGv9NvTlgYDZ49dp9sNQ7A8y6IIReLLyRvARM Co0569Lxa1T19bBmtQ3RacKNIBGhwe57s4HzXnwixlF2KP/C+avyf4UcxCwBWvz7kYA3 6F5A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=APWSSSrH; 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 130si10974057pfy.262.2019.02.25.13.17.07; Mon, 25 Feb 2019 13:17:22 -0800 (PST) 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=APWSSSrH; 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 S1729608AbfBYVPw (ORCPT + 99 others); Mon, 25 Feb 2019 16:15:52 -0500 Received: from mail.kernel.org ([198.145.29.99]:47222 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729598AbfBYVPu (ORCPT ); Mon, 25 Feb 2019 16:15:50 -0500 Received: from localhost (5356596B.cm-6-7b.dynamic.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 7E1CF2147C; Mon, 25 Feb 2019 21:15:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1551129349; bh=t9xsvH0qA1VrbomtFIbts/9uaUmsbCHGkiE6UdeghHU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=APWSSSrHHb+NpVVgRD6WWeD/goPpPdbRsxhbJCPdFBD7lyx2JtiItaRzZQpMO2G6A Z9ye9RdHe73sVkBKbvsCiUVFYalFYe/T/yfIqr5IwD+3PVDd8edBrZWGGoW63lgNOJ BpAgXOKcGosTYvZUYUaOUL4trfBgS8QSdpgbwNyw= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Mark Rutland , Will Deacon , Marc Zyngier , Nathan Chancellor Subject: [PATCH 4.9 55/63] irqchip/gic-v3: Convert arm64 GIC accessors to {read,write}_sysreg_s Date: Mon, 25 Feb 2019 22:11:55 +0100 Message-Id: <20190225195040.035747848@linuxfoundation.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190225195035.713274200@linuxfoundation.org> References: <20190225195035.713274200@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review X-Patchwork-Hint: ignore 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 4.9-stable review patch. If anyone has any objections, please let me know. ------------------ From: Will Deacon commit d44ffa5ae70a15a15190aa9ffa6f6acdeae1d25c upstream. The GIC system registers are accessed using open-coded wrappers around the mrs_s/msr_s asm macros. This patch moves the code over to the {read,wrote}_sysreg_s accessors instead, reducing the amount of explicit asm blocks in the arch headers. Reviewed-by: Mark Rutland Signed-off-by: Will Deacon Signed-off-by: Marc Zyngier [nc: Also fix gic_write_bpr1, which was incidentally fixed in 0e9884fe63c6 ("arm64: sysreg: subsume GICv3 sysreg definitions")] Signed-off-by: Nathan Chancellor Signed-off-by: Greg Kroah-Hartman --- arch/arm64/include/asm/arch_gicv3.h | 47 +++++++++++++----------------------- 1 file changed, 18 insertions(+), 29 deletions(-) --- a/arch/arm64/include/asm/arch_gicv3.h +++ b/arch/arm64/include/asm/arch_gicv3.h @@ -80,18 +80,8 @@ #include #include -#define read_gicreg(r) \ - ({ \ - u64 reg; \ - asm volatile("mrs_s %0, " __stringify(r) : "=r" (reg)); \ - reg; \ - }) - -#define write_gicreg(v,r) \ - do { \ - u64 __val = (v); \ - asm volatile("msr_s " __stringify(r) ", %0" : : "r" (__val));\ - } while (0) +#define read_gicreg read_sysreg_s +#define write_gicreg write_sysreg_s /* * Low-level accessors @@ -102,13 +92,13 @@ static inline void gic_write_eoir(u32 irq) { - asm volatile("msr_s " __stringify(ICC_EOIR1_EL1) ", %0" : : "r" ((u64)irq)); + write_sysreg_s(irq, ICC_EOIR1_EL1); isb(); } static inline void gic_write_dir(u32 irq) { - asm volatile("msr_s " __stringify(ICC_DIR_EL1) ", %0" : : "r" ((u64)irq)); + write_sysreg_s(irq, ICC_DIR_EL1); isb(); } @@ -116,7 +106,7 @@ static inline u64 gic_read_iar_common(vo { u64 irqstat; - asm volatile("mrs_s %0, " __stringify(ICC_IAR1_EL1) : "=r" (irqstat)); + irqstat = read_sysreg_s(ICC_IAR1_EL1); dsb(sy); return irqstat; } @@ -134,10 +124,12 @@ static inline u64 gic_read_iar_cavium_th asm volatile( "nop;nop;nop;nop\n\t" - "nop;nop;nop;nop\n\t" - "mrs_s %0, " __stringify(ICC_IAR1_EL1) "\n\t" - "nop;nop;nop;nop" - : "=r" (irqstat)); + "nop;nop;nop;nop"); + + irqstat = read_sysreg_s(ICC_IAR1_EL1); + + asm volatile( + "nop;nop;nop;nop"); mb(); return irqstat; @@ -145,43 +137,40 @@ static inline u64 gic_read_iar_cavium_th static inline void gic_write_pmr(u32 val) { - asm volatile("msr_s " __stringify(ICC_PMR_EL1) ", %0" : : "r" ((u64)val)); + write_sysreg_s(val, ICC_PMR_EL1); } static inline void gic_write_ctlr(u32 val) { - asm volatile("msr_s " __stringify(ICC_CTLR_EL1) ", %0" : : "r" ((u64)val)); + write_sysreg_s(val, ICC_CTLR_EL1); isb(); } static inline void gic_write_grpen1(u32 val) { - asm volatile("msr_s " __stringify(ICC_GRPEN1_EL1) ", %0" : : "r" ((u64)val)); + write_sysreg_s(val, ICC_GRPEN1_EL1); isb(); } static inline void gic_write_sgi1r(u64 val) { - asm volatile("msr_s " __stringify(ICC_SGI1R_EL1) ", %0" : : "r" (val)); + write_sysreg_s(val, ICC_SGI1R_EL1); } static inline u32 gic_read_sre(void) { - u64 val; - - asm volatile("mrs_s %0, " __stringify(ICC_SRE_EL1) : "=r" (val)); - return val; + return read_sysreg_s(ICC_SRE_EL1); } static inline void gic_write_sre(u32 val) { - asm volatile("msr_s " __stringify(ICC_SRE_EL1) ", %0" : : "r" ((u64)val)); + write_sysreg_s(val, ICC_SRE_EL1); isb(); } static inline void gic_write_bpr1(u32 val) { - asm volatile("msr_s " __stringify(ICC_BPR1_EL1) ", %0" : : "r" (val)); + write_sysreg_s(val, ICC_BPR1_EL1); } #define gic_read_typer(c) readq_relaxed(c)