From: Mark Rutland <mark.rutland@arm.com>
To: Geoff Levand <geoff@infradead.org>,
marc.zyngier@arm.com, christoffer.dall@linaro.org
Cc: Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will.deacon@arm.com>,
AKASHI Takahiro <takahiro.akashi@linaro.org>,
James Morse <james.morse@arm.com>,
kexec@lists.infradead.org, linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 04/19] arm64: Cleanup SCTLR flags
Date: Fri, 15 Jan 2016 20:07:27 +0000 [thread overview]
Message-ID: <20160115200727.GQ3262@leverpostej> (raw)
In-Reply-To: <701b44f00cdb8dbc7881c12508f55e993b9ce6dd.1452884156.git.geoff@infradead.org>
[Adding Marc as this touches KVM code]
On Fri, Jan 15, 2016 at 07:18:37PM +0000, Geoff Levand wrote:
> We currently have macros defining flags for the arm64 sctlr registers in both
> kvm_arm.h and sysreg.h. To clean things up and simplify move the definitions
> of the SCTLR_EL2 flags from kvm_arm.h to sysreg.h, rename any SCTLR_EL1 or
> SCTLR_EL2 flags that are common to both registers to be SCTLR_ELx, with 'x'
> indicating a common flag, and fixup all files to include the proper header or
> to use the new macro names.
I am certainly in favour of having consistently named and located macros
for register fields.
> Signed-off-by: Geoff Levand <geoff@infradead.org>
> ---
> arch/arm64/include/asm/kvm_arm.h | 11 -----------
> arch/arm64/include/asm/sysreg.h | 19 +++++++++++++++----
> arch/arm64/kvm/hyp-init.S | 6 +++---
> 3 files changed, 18 insertions(+), 18 deletions(-)
>
> diff --git a/arch/arm64/include/asm/kvm_arm.h b/arch/arm64/include/asm/kvm_arm.h
> index 5e6857b..92ef6f6 100644
> --- a/arch/arm64/include/asm/kvm_arm.h
> +++ b/arch/arm64/include/asm/kvm_arm.h
> @@ -83,17 +83,6 @@
> #define HCR_INT_OVERRIDE (HCR_FMO | HCR_IMO)
>
>
> -/* Hyp System Control Register (SCTLR_EL2) bits */
> -#define SCTLR_EL2_EE (1 << 25)
> -#define SCTLR_EL2_WXN (1 << 19)
> -#define SCTLR_EL2_I (1 << 12)
> -#define SCTLR_EL2_SA (1 << 3)
> -#define SCTLR_EL2_C (1 << 2)
> -#define SCTLR_EL2_A (1 << 1)
> -#define SCTLR_EL2_M 1
> -#define SCTLR_EL2_FLAGS (SCTLR_EL2_M | SCTLR_EL2_A | SCTLR_EL2_C | \
> - SCTLR_EL2_SA | SCTLR_EL2_I)
SCTLR_EL2_FLAGS is a KVM-specific value (i.e. the SCTLR_EL2 flags which
KVM wants to set), even if it consists solely of common fields.
I believe it should stay here (with an include for <asm/sysreg.h>),
perhaps with a KVM_ prefix to imply it's not as generic as one might
assume it is.
> -
> /* TCR_EL2 Registers bits */
> #define TCR_EL2_RES1 ((1 << 31) | (1 << 23))
> #define TCR_EL2_TBI (1 << 20)
> diff --git a/arch/arm64/include/asm/sysreg.h b/arch/arm64/include/asm/sysreg.h
> index d48ab5b..109d46e 100644
> --- a/arch/arm64/include/asm/sysreg.h
> +++ b/arch/arm64/include/asm/sysreg.h
> @@ -80,10 +80,21 @@
> #define SET_PSTATE_PAN(x) __inst_arm(0xd5000000 | REG_PSTATE_PAN_IMM |\
> (!!x)<<8 | 0x1f)
>
> -/* SCTLR_EL1 */
> -#define SCTLR_EL1_CP15BEN (0x1 << 5)
> -#define SCTLR_EL1_SED (0x1 << 8)
> -#define SCTLR_EL1_SPAN (0x1 << 23)
> +/* Common SCTLR_ELx flags. */
> +#define SCTLR_ELx_EE (1 << 25)
> +#define SCTLR_ELx_I (1 << 12)
> +#define SCTLR_ELx_SA (1 << 3)
> +#define SCTLR_ELx_C (1 << 2)
> +#define SCTLR_ELx_A (1 << 1)
> +#define SCTLR_ELx_M 1
For consistency, (1 << 0) would be preferable.
> +
> +#define SCTLR_ELx_FLAGS (SCTLR_ELx_M | SCTLR_ELx_A | SCTLR_ELx_C | \
> + SCTLR_ELx_SA | SCTLR_ELx_I)
> +
> +/* SCTLR_EL1 specific flags. */
> +#define SCTLR_EL1_SPAN (1 << 23)
> +#define SCTLR_EL1_SED (1 << 8)
> +#define SCTLR_EL1_CP15BEN (1 << 5)
>
>
> /* id_aa64isar0 */
> diff --git a/arch/arm64/kvm/hyp-init.S b/arch/arm64/kvm/hyp-init.S
> index 178ba22..1d7e502 100644
> --- a/arch/arm64/kvm/hyp-init.S
> +++ b/arch/arm64/kvm/hyp-init.S
> @@ -20,7 +20,7 @@
> #include <asm/assembler.h>
> #include <asm/kvm_arm.h>
> #include <asm/kvm_mmu.h>
> -#include <asm/pgtable-hwdef.h>
> +#include <asm/sysreg.h>
>
> .text
> .pushsection .hyp.idmap.text, "ax"
> @@ -105,8 +105,8 @@ __do_hyp_init:
> dsb sy
>
> mrs x4, sctlr_el2
> - and x4, x4, #SCTLR_EL2_EE // preserve endianness of EL2
> - ldr x5, =SCTLR_EL2_FLAGS
> + and x4, x4, #SCTLR_ELx_EE // preserve endianness of EL2
> + ldr x5, =SCTLR_ELx_FLAGS
Marc, Christoffer, I note that in SCTLR_EL2_FLAGS we don't set the RES1
bits of SCTLR_EL2 (not in head.S el2_setup). Should we perhaps be doing
so so as to avoid any future surprises?
Thanks,
Mark.
> orr x4, x4, x5
> msr sctlr_el2, x4
> isb
> --
> 2.5.0
>
>
_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec
WARNING: multiple messages have this Message-ID (diff)
From: mark.rutland@arm.com (Mark Rutland)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 04/19] arm64: Cleanup SCTLR flags
Date: Fri, 15 Jan 2016 20:07:27 +0000 [thread overview]
Message-ID: <20160115200727.GQ3262@leverpostej> (raw)
In-Reply-To: <701b44f00cdb8dbc7881c12508f55e993b9ce6dd.1452884156.git.geoff@infradead.org>
[Adding Marc as this touches KVM code]
On Fri, Jan 15, 2016 at 07:18:37PM +0000, Geoff Levand wrote:
> We currently have macros defining flags for the arm64 sctlr registers in both
> kvm_arm.h and sysreg.h. To clean things up and simplify move the definitions
> of the SCTLR_EL2 flags from kvm_arm.h to sysreg.h, rename any SCTLR_EL1 or
> SCTLR_EL2 flags that are common to both registers to be SCTLR_ELx, with 'x'
> indicating a common flag, and fixup all files to include the proper header or
> to use the new macro names.
I am certainly in favour of having consistently named and located macros
for register fields.
> Signed-off-by: Geoff Levand <geoff@infradead.org>
> ---
> arch/arm64/include/asm/kvm_arm.h | 11 -----------
> arch/arm64/include/asm/sysreg.h | 19 +++++++++++++++----
> arch/arm64/kvm/hyp-init.S | 6 +++---
> 3 files changed, 18 insertions(+), 18 deletions(-)
>
> diff --git a/arch/arm64/include/asm/kvm_arm.h b/arch/arm64/include/asm/kvm_arm.h
> index 5e6857b..92ef6f6 100644
> --- a/arch/arm64/include/asm/kvm_arm.h
> +++ b/arch/arm64/include/asm/kvm_arm.h
> @@ -83,17 +83,6 @@
> #define HCR_INT_OVERRIDE (HCR_FMO | HCR_IMO)
>
>
> -/* Hyp System Control Register (SCTLR_EL2) bits */
> -#define SCTLR_EL2_EE (1 << 25)
> -#define SCTLR_EL2_WXN (1 << 19)
> -#define SCTLR_EL2_I (1 << 12)
> -#define SCTLR_EL2_SA (1 << 3)
> -#define SCTLR_EL2_C (1 << 2)
> -#define SCTLR_EL2_A (1 << 1)
> -#define SCTLR_EL2_M 1
> -#define SCTLR_EL2_FLAGS (SCTLR_EL2_M | SCTLR_EL2_A | SCTLR_EL2_C | \
> - SCTLR_EL2_SA | SCTLR_EL2_I)
SCTLR_EL2_FLAGS is a KVM-specific value (i.e. the SCTLR_EL2 flags which
KVM wants to set), even if it consists solely of common fields.
I believe it should stay here (with an include for <asm/sysreg.h>),
perhaps with a KVM_ prefix to imply it's not as generic as one might
assume it is.
> -
> /* TCR_EL2 Registers bits */
> #define TCR_EL2_RES1 ((1 << 31) | (1 << 23))
> #define TCR_EL2_TBI (1 << 20)
> diff --git a/arch/arm64/include/asm/sysreg.h b/arch/arm64/include/asm/sysreg.h
> index d48ab5b..109d46e 100644
> --- a/arch/arm64/include/asm/sysreg.h
> +++ b/arch/arm64/include/asm/sysreg.h
> @@ -80,10 +80,21 @@
> #define SET_PSTATE_PAN(x) __inst_arm(0xd5000000 | REG_PSTATE_PAN_IMM |\
> (!!x)<<8 | 0x1f)
>
> -/* SCTLR_EL1 */
> -#define SCTLR_EL1_CP15BEN (0x1 << 5)
> -#define SCTLR_EL1_SED (0x1 << 8)
> -#define SCTLR_EL1_SPAN (0x1 << 23)
> +/* Common SCTLR_ELx flags. */
> +#define SCTLR_ELx_EE (1 << 25)
> +#define SCTLR_ELx_I (1 << 12)
> +#define SCTLR_ELx_SA (1 << 3)
> +#define SCTLR_ELx_C (1 << 2)
> +#define SCTLR_ELx_A (1 << 1)
> +#define SCTLR_ELx_M 1
For consistency, (1 << 0) would be preferable.
> +
> +#define SCTLR_ELx_FLAGS (SCTLR_ELx_M | SCTLR_ELx_A | SCTLR_ELx_C | \
> + SCTLR_ELx_SA | SCTLR_ELx_I)
> +
> +/* SCTLR_EL1 specific flags. */
> +#define SCTLR_EL1_SPAN (1 << 23)
> +#define SCTLR_EL1_SED (1 << 8)
> +#define SCTLR_EL1_CP15BEN (1 << 5)
>
>
> /* id_aa64isar0 */
> diff --git a/arch/arm64/kvm/hyp-init.S b/arch/arm64/kvm/hyp-init.S
> index 178ba22..1d7e502 100644
> --- a/arch/arm64/kvm/hyp-init.S
> +++ b/arch/arm64/kvm/hyp-init.S
> @@ -20,7 +20,7 @@
> #include <asm/assembler.h>
> #include <asm/kvm_arm.h>
> #include <asm/kvm_mmu.h>
> -#include <asm/pgtable-hwdef.h>
> +#include <asm/sysreg.h>
>
> .text
> .pushsection .hyp.idmap.text, "ax"
> @@ -105,8 +105,8 @@ __do_hyp_init:
> dsb sy
>
> mrs x4, sctlr_el2
> - and x4, x4, #SCTLR_EL2_EE // preserve endianness of EL2
> - ldr x5, =SCTLR_EL2_FLAGS
> + and x4, x4, #SCTLR_ELx_EE // preserve endianness of EL2
> + ldr x5, =SCTLR_ELx_FLAGS
Marc, Christoffer, I note that in SCTLR_EL2_FLAGS we don't set the RES1
bits of SCTLR_EL2 (not in head.S el2_setup). Should we perhaps be doing
so so as to avoid any future surprises?
Thanks,
Mark.
> orr x4, x4, x5
> msr sctlr_el2, x4
> isb
> --
> 2.5.0
>
>
next prev parent reply other threads:[~2016-01-15 20:07 UTC|newest]
Thread overview: 174+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-15 19:18 [PATCH 00/19] arm64 kexec kernel patches v13 Geoff Levand
2016-01-15 19:18 ` Geoff Levand
2016-01-15 19:18 ` [PATCH 02/19] arm64: kernel: Include _AC definition in page.h Geoff Levand
2016-01-15 19:18 ` Geoff Levand
2016-01-18 10:05 ` Mark Rutland
2016-01-18 10:05 ` Mark Rutland
2016-01-15 19:18 ` [PATCH 03/19] arm64: Add new asm macro copy_page Geoff Levand
2016-01-15 19:18 ` Geoff Levand
2016-01-20 14:01 ` James Morse
2016-01-20 14:01 ` James Morse
2016-01-15 19:18 ` [PATCH 09/19] Revert "arm64: remove dead code" Geoff Levand
2016-01-15 19:18 ` Geoff Levand
2016-01-15 19:55 ` Mark Rutland
2016-01-15 19:55 ` Mark Rutland
2016-01-20 21:18 ` Geoff Levand
2016-01-20 21:18 ` Geoff Levand
2016-01-15 19:18 ` [PATCH 08/19] Revert "arm64: mm: remove unused cpu_set_idmap_tcr_t0sz function" Geoff Levand
2016-01-15 19:18 ` Geoff Levand
2016-01-15 19:18 ` [PATCH 01/19] arm64: Fold proc-macros.S into assembler.h Geoff Levand
2016-01-15 19:18 ` Geoff Levand
2016-01-15 19:18 ` [PATCH 05/19] arm64: Convert hcalls to use HVC immediate value Geoff Levand
2016-01-15 19:18 ` Geoff Levand
2016-01-15 19:18 ` [PATCH 07/19] arm64: Add back cpu_reset routines Geoff Levand
2016-01-15 19:18 ` Geoff Levand
2016-01-15 19:18 ` [PATCH 06/19] arm64: Add new hcall HVC_CALL_FUNC Geoff Levand
2016-01-15 19:18 ` Geoff Levand
2016-01-15 19:18 ` [PATCH 04/19] arm64: Cleanup SCTLR flags Geoff Levand
2016-01-15 19:18 ` Geoff Levand
2016-01-15 20:07 ` Mark Rutland [this message]
2016-01-15 20:07 ` Mark Rutland
2016-01-18 10:12 ` Marc Zyngier
2016-01-18 10:12 ` Marc Zyngier
2016-01-19 11:59 ` Dave Martin
2016-01-19 11:59 ` Dave Martin
2016-01-25 15:09 ` James Morse
2016-01-25 15:09 ` James Morse
2016-01-15 19:18 ` [PATCH 19/19] arm64: kdump: relax BUG_ON() if more than one cpus are still active Geoff Levand
2016-01-15 19:18 ` Geoff Levand
2016-01-15 19:18 ` [PATCH 12/19] arm64/kexec: Enable kexec in the arm64 defconfig Geoff Levand
2016-01-15 19:18 ` Geoff Levand
2016-01-15 19:18 ` [PATCH 11/19] arm64/kexec: Add core kexec support Geoff Levand
2016-01-15 19:18 ` Geoff Levand
2016-01-15 19:18 ` [PATCH 15/19] arm64: kdump: implement machine_crash_shutdown() Geoff Levand
2016-01-15 19:18 ` Geoff Levand
2016-01-15 19:18 ` [PATCH 13/19] arm64/kexec: Add pr_debug output Geoff Levand
2016-01-15 19:18 ` Geoff Levand
2016-01-15 19:18 ` [PATCH 14/19] arm64: kdump: reserve memory for crash dump kernel Geoff Levand
2016-01-15 19:18 ` Geoff Levand
2016-01-15 19:18 ` [PATCH 18/19] arm64: kdump: update a kernel doc Geoff Levand
2016-01-15 19:18 ` Geoff Levand
2016-01-15 20:16 ` Mark Rutland
2016-01-15 20:16 ` Mark Rutland
2016-01-18 10:26 ` AKASHI Takahiro
2016-01-18 10:26 ` AKASHI Takahiro
2016-01-18 11:29 ` Mark Rutland
2016-01-18 11:29 ` Mark Rutland
2016-01-19 5:31 ` AKASHI Takahiro
2016-01-19 5:31 ` AKASHI Takahiro
2016-01-19 12:10 ` Mark Rutland
2016-01-19 12:10 ` Mark Rutland
2016-01-20 4:34 ` AKASHI Takahiro
2016-01-20 4:34 ` AKASHI Takahiro
2016-01-19 1:43 ` Dave Young
2016-01-19 1:43 ` Dave Young
2016-01-19 1:50 ` Dave Young
2016-01-19 1:50 ` Dave Young
2016-01-19 5:35 ` AKASHI Takahiro
2016-01-19 5:35 ` AKASHI Takahiro
2016-01-19 12:28 ` Dave Young
2016-01-19 12:28 ` Dave Young
2016-01-19 12:51 ` Mark Rutland
2016-01-19 12:51 ` Mark Rutland
2016-01-19 13:45 ` Dave Young
2016-01-19 13:45 ` Dave Young
2016-01-19 14:01 ` Mark Rutland
2016-01-19 14:01 ` Mark Rutland
2016-01-20 2:49 ` Dave Young
2016-01-20 2:49 ` Dave Young
2016-01-20 6:07 ` AKASHI Takahiro
2016-01-20 6:07 ` AKASHI Takahiro
2016-01-20 6:38 ` Dave Young
2016-01-20 6:38 ` Dave Young
2016-01-20 7:00 ` Dave Young
2016-01-20 7:00 ` Dave Young
2016-01-20 8:01 ` AKASHI Takahiro
2016-01-20 8:01 ` AKASHI Takahiro
2016-01-20 8:26 ` Dave Young
2016-01-20 8:26 ` Dave Young
2016-01-20 11:54 ` Mark Rutland
2016-01-20 11:54 ` Mark Rutland
2016-01-21 2:57 ` Dave Young
2016-01-21 2:57 ` Dave Young
2016-01-21 3:03 ` Dave Young
2016-01-21 3:03 ` Dave Young
2016-01-20 11:49 ` Mark Rutland
2016-01-20 11:49 ` Mark Rutland
2016-01-21 6:53 ` AKASHI Takahiro
2016-01-21 6:53 ` AKASHI Takahiro
2016-01-21 12:02 ` Mark Rutland
2016-01-21 12:02 ` Mark Rutland
2016-01-22 6:23 ` AKASHI Takahiro
2016-01-22 6:23 ` AKASHI Takahiro
2016-01-22 11:13 ` Mark Rutland
2016-01-22 11:13 ` Mark Rutland
2016-02-02 5:18 ` AKASHI Takahiro
2016-02-02 5:18 ` AKASHI Takahiro
2016-01-25 3:19 ` Dave Young
2016-01-25 3:19 ` Dave Young
2016-01-25 4:23 ` Dave Young
2016-01-25 4:23 ` Dave Young
2016-01-20 11:28 ` Mark Rutland
2016-01-20 11:28 ` Mark Rutland
2016-01-21 2:54 ` Dave Young
2016-01-21 2:54 ` Dave Young
2016-01-20 5:25 ` AKASHI Takahiro
2016-01-20 5:25 ` AKASHI Takahiro
2016-01-20 12:02 ` Mark Rutland
2016-01-20 12:02 ` Mark Rutland
2016-01-20 12:36 ` Mark Rutland
2016-01-20 12:36 ` Mark Rutland
2016-01-20 14:59 ` Ard Biesheuvel
2016-01-20 14:59 ` Ard Biesheuvel
2016-01-20 15:04 ` Mark Rutland
2016-01-20 15:04 ` Mark Rutland
2016-01-21 5:43 ` AKASHI Takahiro
2016-01-21 5:43 ` AKASHI Takahiro
2016-01-21 13:02 ` Mark Rutland
2016-01-21 13:02 ` Mark Rutland
2016-01-19 12:17 ` Mark Rutland
2016-01-19 12:17 ` Mark Rutland
2016-01-19 13:52 ` Dave Young
2016-01-19 13:52 ` Dave Young
2016-01-19 14:05 ` Mark Rutland
2016-01-19 14:05 ` Mark Rutland
2016-01-20 2:54 ` Dave Young
2016-01-20 2:54 ` Dave Young
2016-01-15 19:18 ` [PATCH 17/19] arm64: kdump: enable kdump in the arm64 defconfig Geoff Levand
2016-01-15 19:18 ` Geoff Levand
2016-01-15 19:18 ` [PATCH 10/19] arm64: kvm: allows kvm cpu hotplug Geoff Levand
2016-01-15 19:18 ` Geoff Levand
2016-01-26 17:42 ` James Morse
2016-01-26 17:42 ` James Morse
2016-01-27 7:37 ` AKASHI Takahiro
2016-01-27 7:37 ` AKASHI Takahiro
2016-01-15 19:18 ` [PATCH 16/19] arm64: kdump: add kdump support Geoff Levand
2016-01-15 19:18 ` Geoff Levand
2016-01-21 14:17 ` James Morse
2016-01-21 14:17 ` James Morse
2016-01-22 4:50 ` AKASHI Takahiro
2016-01-22 4:50 ` AKASHI Takahiro
2016-01-19 12:32 ` [PATCH 00/19] arm64 kexec kernel patches v13 Dave Young
2016-01-19 12:32 ` Dave Young
2016-01-20 0:15 ` Geoff Levand
2016-01-20 0:15 ` Geoff Levand
2016-01-20 2:56 ` Dave Young
2016-01-20 2:56 ` Dave Young
2016-01-20 21:15 ` Geoff Levand
2016-01-20 21:15 ` Geoff Levand
2016-01-21 12:11 ` Mark Rutland
2016-01-21 12:11 ` Mark Rutland
[not found] ` <c7575f853ccc491bb0212e025aab1cc9@NASANEXM01H.na.qualcomm.com>
2016-03-01 17:54 ` Azriel Samson
2016-03-01 17:54 ` Azriel Samson
2016-03-02 1:17 ` Geoff Levand
2016-03-02 1:17 ` Geoff Levand
2016-03-02 1:38 ` Will Deacon
2016-03-02 1:38 ` Will Deacon
2016-03-02 2:28 ` AKASHI Takahiro
2016-03-02 2:28 ` AKASHI Takahiro
2016-03-02 8:07 ` Marc Zyngier
2016-03-02 8:07 ` Marc Zyngier
2016-03-02 12:33 ` Pratyush Anand
2016-03-02 12:33 ` Pratyush Anand
2016-03-02 16:51 ` Azriel Samson
2016-03-02 16:51 ` Azriel Samson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160115200727.GQ3262@leverpostej \
--to=mark.rutland@arm.com \
--cc=catalin.marinas@arm.com \
--cc=christoffer.dall@linaro.org \
--cc=geoff@infradead.org \
--cc=james.morse@arm.com \
--cc=kexec@lists.infradead.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=marc.zyngier@arm.com \
--cc=takahiro.akashi@linaro.org \
--cc=will.deacon@arm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.