From: christoffer.dall@linaro.org (Christoffer Dall)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 19/21] arm64: KVM: Turn system register numbers to an enum
Date: Wed, 2 Dec 2015 12:51:21 +0100 [thread overview]
Message-ID: <20151202115121.GE18376@cbox> (raw)
In-Reply-To: <1448650215-15218-20-git-send-email-marc.zyngier@arm.com>
On Fri, Nov 27, 2015 at 06:50:13PM +0000, Marc Zyngier wrote:
> Having the system register numbers as #defines has been a pain
> since day one, as the ordering is pretty fragile, and moving
> things around leads to renumbering and epic conflict resolutions.
>
> Now that we're mostly acessing the sysreg file in C, an enum is
> a much better type to use, and we can clean things up a bit.
>
> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
> ---
> arch/arm64/include/asm/kvm_asm.h | 76 ---------------------------------
> arch/arm64/include/asm/kvm_emulate.h | 1 -
> arch/arm64/include/asm/kvm_host.h | 81 +++++++++++++++++++++++++++++++++++-
> arch/arm64/include/asm/kvm_mmio.h | 1 -
> arch/arm64/kernel/asm-offsets.c | 1 +
> arch/arm64/kvm/guest.c | 1 -
> arch/arm64/kvm/handle_exit.c | 1 +
> arch/arm64/kvm/hyp/debug-sr.c | 1 +
> arch/arm64/kvm/hyp/entry.S | 3 +-
> arch/arm64/kvm/hyp/sysreg-sr.c | 1 +
> arch/arm64/kvm/sys_regs.c | 1 +
> virt/kvm/arm/vgic-v3.c | 1 +
> 12 files changed, 87 insertions(+), 82 deletions(-)
>
> diff --git a/arch/arm64/include/asm/kvm_asm.h b/arch/arm64/include/asm/kvm_asm.h
> index 5e37710..52b777b 100644
> --- a/arch/arm64/include/asm/kvm_asm.h
> +++ b/arch/arm64/include/asm/kvm_asm.h
> @@ -20,82 +20,6 @@
>
> #include <asm/virt.h>
>
> -/*
> - * 0 is reserved as an invalid value.
> - * Order *must* be kept in sync with the hyp switch code.
> - */
> -#define MPIDR_EL1 1 /* MultiProcessor Affinity Register */
> -#define CSSELR_EL1 2 /* Cache Size Selection Register */
> -#define SCTLR_EL1 3 /* System Control Register */
> -#define ACTLR_EL1 4 /* Auxiliary Control Register */
> -#define CPACR_EL1 5 /* Coprocessor Access Control */
> -#define TTBR0_EL1 6 /* Translation Table Base Register 0 */
> -#define TTBR1_EL1 7 /* Translation Table Base Register 1 */
> -#define TCR_EL1 8 /* Translation Control Register */
> -#define ESR_EL1 9 /* Exception Syndrome Register */
> -#define AFSR0_EL1 10 /* Auxilary Fault Status Register 0 */
> -#define AFSR1_EL1 11 /* Auxilary Fault Status Register 1 */
> -#define FAR_EL1 12 /* Fault Address Register */
> -#define MAIR_EL1 13 /* Memory Attribute Indirection Register */
> -#define VBAR_EL1 14 /* Vector Base Address Register */
> -#define CONTEXTIDR_EL1 15 /* Context ID Register */
> -#define TPIDR_EL0 16 /* Thread ID, User R/W */
> -#define TPIDRRO_EL0 17 /* Thread ID, User R/O */
> -#define TPIDR_EL1 18 /* Thread ID, Privileged */
> -#define AMAIR_EL1 19 /* Aux Memory Attribute Indirection Register */
> -#define CNTKCTL_EL1 20 /* Timer Control Register (EL1) */
> -#define PAR_EL1 21 /* Physical Address Register */
> -#define MDSCR_EL1 22 /* Monitor Debug System Control Register */
> -#define MDCCINT_EL1 23 /* Monitor Debug Comms Channel Interrupt Enable Reg */
> -
> -/* 32bit specific registers. Keep them at the end of the range */
> -#define DACR32_EL2 24 /* Domain Access Control Register */
> -#define IFSR32_EL2 25 /* Instruction Fault Status Register */
> -#define FPEXC32_EL2 26 /* Floating-Point Exception Control Register */
> -#define DBGVCR32_EL2 27 /* Debug Vector Catch Register */
> -#define NR_SYS_REGS 28
> -
> -/* 32bit mapping */
> -#define c0_MPIDR (MPIDR_EL1 * 2) /* MultiProcessor ID Register */
> -#define c0_CSSELR (CSSELR_EL1 * 2)/* Cache Size Selection Register */
> -#define c1_SCTLR (SCTLR_EL1 * 2) /* System Control Register */
> -#define c1_ACTLR (ACTLR_EL1 * 2) /* Auxiliary Control Register */
> -#define c1_CPACR (CPACR_EL1 * 2) /* Coprocessor Access Control */
> -#define c2_TTBR0 (TTBR0_EL1 * 2) /* Translation Table Base Register 0 */
> -#define c2_TTBR0_high (c2_TTBR0 + 1) /* TTBR0 top 32 bits */
> -#define c2_TTBR1 (TTBR1_EL1 * 2) /* Translation Table Base Register 1 */
> -#define c2_TTBR1_high (c2_TTBR1 + 1) /* TTBR1 top 32 bits */
> -#define c2_TTBCR (TCR_EL1 * 2) /* Translation Table Base Control R. */
> -#define c3_DACR (DACR32_EL2 * 2)/* Domain Access Control Register */
> -#define c5_DFSR (ESR_EL1 * 2) /* Data Fault Status Register */
> -#define c5_IFSR (IFSR32_EL2 * 2)/* Instruction Fault Status Register */
> -#define c5_ADFSR (AFSR0_EL1 * 2) /* Auxiliary Data Fault Status R */
> -#define c5_AIFSR (AFSR1_EL1 * 2) /* Auxiliary Instr Fault Status R */
> -#define c6_DFAR (FAR_EL1 * 2) /* Data Fault Address Register */
> -#define c6_IFAR (c6_DFAR + 1) /* Instruction Fault Address Register */
> -#define c7_PAR (PAR_EL1 * 2) /* Physical Address Register */
> -#define c7_PAR_high (c7_PAR + 1) /* PAR top 32 bits */
> -#define c10_PRRR (MAIR_EL1 * 2) /* Primary Region Remap Register */
> -#define c10_NMRR (c10_PRRR + 1) /* Normal Memory Remap Register */
> -#define c12_VBAR (VBAR_EL1 * 2) /* Vector Base Address Register */
> -#define c13_CID (CONTEXTIDR_EL1 * 2) /* Context ID Register */
> -#define c13_TID_URW (TPIDR_EL0 * 2) /* Thread ID, User R/W */
> -#define c13_TID_URO (TPIDRRO_EL0 * 2)/* Thread ID, User R/O */
> -#define c13_TID_PRIV (TPIDR_EL1 * 2) /* Thread ID, Privileged */
> -#define c10_AMAIR0 (AMAIR_EL1 * 2) /* Aux Memory Attr Indirection Reg */
> -#define c10_AMAIR1 (c10_AMAIR0 + 1)/* Aux Memory Attr Indirection Reg */
> -#define c14_CNTKCTL (CNTKCTL_EL1 * 2) /* Timer Control Register (PL1) */
> -
> -#define cp14_DBGDSCRext (MDSCR_EL1 * 2)
> -#define cp14_DBGBCR0 (DBGBCR0_EL1 * 2)
> -#define cp14_DBGBVR0 (DBGBVR0_EL1 * 2)
> -#define cp14_DBGBXVR0 (cp14_DBGBVR0 + 1)
> -#define cp14_DBGWCR0 (DBGWCR0_EL1 * 2)
> -#define cp14_DBGWVR0 (DBGWVR0_EL1 * 2)
> -#define cp14_DBGDCCINT (MDCCINT_EL1 * 2)
> -
> -#define NR_COPRO_REGS (NR_SYS_REGS * 2)
> -
> #define ARM_EXCEPTION_IRQ 0
> #define ARM_EXCEPTION_TRAP 1
>
> diff --git a/arch/arm64/include/asm/kvm_emulate.h b/arch/arm64/include/asm/kvm_emulate.h
> index 3ca894e..170e17d 100644
> --- a/arch/arm64/include/asm/kvm_emulate.h
> +++ b/arch/arm64/include/asm/kvm_emulate.h
> @@ -26,7 +26,6 @@
>
> #include <asm/esr.h>
> #include <asm/kvm_arm.h>
> -#include <asm/kvm_asm.h>
> #include <asm/kvm_mmio.h>
> #include <asm/ptrace.h>
> #include <asm/cputype.h>
> diff --git a/arch/arm64/include/asm/kvm_host.h b/arch/arm64/include/asm/kvm_host.h
> index a35ce72..2fae2d4 100644
> --- a/arch/arm64/include/asm/kvm_host.h
> +++ b/arch/arm64/include/asm/kvm_host.h
> @@ -25,7 +25,6 @@
> #include <linux/types.h>
> #include <linux/kvm_types.h>
> #include <asm/kvm.h>
> -#include <asm/kvm_asm.h>
> #include <asm/kvm_mmio.h>
>
> #define __KVM_HAVE_ARCH_INTC_INITIALIZED
> @@ -85,6 +84,86 @@ struct kvm_vcpu_fault_info {
> u64 hpfar_el2; /* Hyp IPA Fault Address Register */
> };
>
> +/*
> + * 0 is reserved as an invalid value.
> + * Order *must* be kept in sync with the hyp switch code.
do we still have such an ordering requirement?
> + */
> +enum vcpu_sysreg {
> + __INVALID_SYSREG__,
> + MPIDR_EL1, /* MultiProcessor Affinity Register */
> + CSSELR_EL1, /* Cache Size Selection Register */
> + SCTLR_EL1, /* System Control Register */
> + ACTLR_EL1, /* Auxiliary Control Register */
> + CPACR_EL1, /* Coprocessor Access Control */
> + TTBR0_EL1, /* Translation Table Base Register 0 */
> + TTBR1_EL1, /* Translation Table Base Register 1 */
> + TCR_EL1, /* Translation Control Register */
> + ESR_EL1, /* Exception Syndrome Register */
> + AFSR0_EL1, /* Auxilary Fault Status Register 0 */
> + AFSR1_EL1, /* Auxilary Fault Status Register 1 */
> + FAR_EL1, /* Fault Address Register */
> + MAIR_EL1, /* Memory Attribute Indirection Register */
> + VBAR_EL1, /* Vector Base Address Register */
> + CONTEXTIDR_EL1, /* Context ID Register */
> + TPIDR_EL0, /* Thread ID, User R/W */
> + TPIDRRO_EL0, /* Thread ID, User R/O */
> + TPIDR_EL1, /* Thread ID, Privileged */
> + AMAIR_EL1, /* Aux Memory Attribute Indirection Register */
> + CNTKCTL_EL1, /* Timer Control Register (EL1) */
> + PAR_EL1, /* Physical Address Register */
> + MDSCR_EL1, /* Monitor Debug System Control Register */
> + MDCCINT_EL1, /* Monitor Debug Comms Channel Interrupt Enable Reg */
> +
> + /* 32bit specific registers. Keep them at the end of the range */
> + DACR32_EL2, /* Domain Access Control Register */
> + IFSR32_EL2, /* Instruction Fault Status Register */
> + FPEXC32_EL2, /* Floating-Point Exception Control Register */
> + DBGVCR32_EL2, /* Debug Vector Catch Register */
> +
> + NR_SYS_REGS /* Nothing after this line! */
> +};
> +
> +/* 32bit mapping */
> +#define c0_MPIDR (MPIDR_EL1 * 2) /* MultiProcessor ID Register */
> +#define c0_CSSELR (CSSELR_EL1 * 2)/* Cache Size Selection Register */
> +#define c1_SCTLR (SCTLR_EL1 * 2) /* System Control Register */
> +#define c1_ACTLR (ACTLR_EL1 * 2) /* Auxiliary Control Register */
> +#define c1_CPACR (CPACR_EL1 * 2) /* Coprocessor Access Control */
> +#define c2_TTBR0 (TTBR0_EL1 * 2) /* Translation Table Base Register 0 */
> +#define c2_TTBR0_high (c2_TTBR0 + 1) /* TTBR0 top 32 bits */
> +#define c2_TTBR1 (TTBR1_EL1 * 2) /* Translation Table Base Register 1 */
> +#define c2_TTBR1_high (c2_TTBR1 + 1) /* TTBR1 top 32 bits */
> +#define c2_TTBCR (TCR_EL1 * 2) /* Translation Table Base Control R. */
> +#define c3_DACR (DACR32_EL2 * 2)/* Domain Access Control Register */
> +#define c5_DFSR (ESR_EL1 * 2) /* Data Fault Status Register */
> +#define c5_IFSR (IFSR32_EL2 * 2)/* Instruction Fault Status Register */
> +#define c5_ADFSR (AFSR0_EL1 * 2) /* Auxiliary Data Fault Status R */
> +#define c5_AIFSR (AFSR1_EL1 * 2) /* Auxiliary Instr Fault Status R */
> +#define c6_DFAR (FAR_EL1 * 2) /* Data Fault Address Register */
> +#define c6_IFAR (c6_DFAR + 1) /* Instruction Fault Address Register */
> +#define c7_PAR (PAR_EL1 * 2) /* Physical Address Register */
> +#define c7_PAR_high (c7_PAR + 1) /* PAR top 32 bits */
> +#define c10_PRRR (MAIR_EL1 * 2) /* Primary Region Remap Register */
> +#define c10_NMRR (c10_PRRR + 1) /* Normal Memory Remap Register */
> +#define c12_VBAR (VBAR_EL1 * 2) /* Vector Base Address Register */
> +#define c13_CID (CONTEXTIDR_EL1 * 2) /* Context ID Register */
> +#define c13_TID_URW (TPIDR_EL0 * 2) /* Thread ID, User R/W */
> +#define c13_TID_URO (TPIDRRO_EL0 * 2)/* Thread ID, User R/O */
> +#define c13_TID_PRIV (TPIDR_EL1 * 2) /* Thread ID, Privileged */
> +#define c10_AMAIR0 (AMAIR_EL1 * 2) /* Aux Memory Attr Indirection Reg */
> +#define c10_AMAIR1 (c10_AMAIR0 + 1)/* Aux Memory Attr Indirection Reg */
> +#define c14_CNTKCTL (CNTKCTL_EL1 * 2) /* Timer Control Register (PL1) */
> +
> +#define cp14_DBGDSCRext (MDSCR_EL1 * 2)
> +#define cp14_DBGBCR0 (DBGBCR0_EL1 * 2)
> +#define cp14_DBGBVR0 (DBGBVR0_EL1 * 2)
> +#define cp14_DBGBXVR0 (cp14_DBGBVR0 + 1)
> +#define cp14_DBGWCR0 (DBGWCR0_EL1 * 2)
> +#define cp14_DBGWVR0 (DBGWVR0_EL1 * 2)
> +#define cp14_DBGDCCINT (MDCCINT_EL1 * 2)
> +
> +#define NR_COPRO_REGS (NR_SYS_REGS * 2)
> +
> struct kvm_cpu_context {
> struct kvm_regs gp_regs;
> union {
> diff --git a/arch/arm64/include/asm/kvm_mmio.h b/arch/arm64/include/asm/kvm_mmio.h
> index 889c908..fe612a9 100644
> --- a/arch/arm64/include/asm/kvm_mmio.h
> +++ b/arch/arm64/include/asm/kvm_mmio.h
> @@ -19,7 +19,6 @@
> #define __ARM64_KVM_MMIO_H__
>
> #include <linux/kvm_host.h>
> -#include <asm/kvm_asm.h>
> #include <asm/kvm_arm.h>
>
> /*
> diff --git a/arch/arm64/kernel/asm-offsets.c b/arch/arm64/kernel/asm-offsets.c
> index 25de8b2..4b72231 100644
> --- a/arch/arm64/kernel/asm-offsets.c
> +++ b/arch/arm64/kernel/asm-offsets.c
> @@ -112,6 +112,7 @@ int main(void)
> DEFINE(CPU_ELR_EL1, offsetof(struct kvm_regs, elr_el1));
> DEFINE(CPU_SPSR, offsetof(struct kvm_regs, spsr));
> DEFINE(CPU_SYSREGS, offsetof(struct kvm_cpu_context, sys_regs));
> + DEFINE(VCPU_FPEXC32_EL2, offsetof(struct kvm_vcpu, arch.ctxt.sys_regs[FPEXC32_EL2]));
> DEFINE(VCPU_ESR_EL2, offsetof(struct kvm_vcpu, arch.fault.esr_el2));
> DEFINE(VCPU_FAR_EL2, offsetof(struct kvm_vcpu, arch.fault.far_el2));
> DEFINE(VCPU_HPFAR_EL2, offsetof(struct kvm_vcpu, arch.fault.hpfar_el2));
> diff --git a/arch/arm64/kvm/guest.c b/arch/arm64/kvm/guest.c
> index d250160..88e59f2 100644
> --- a/arch/arm64/kvm/guest.c
> +++ b/arch/arm64/kvm/guest.c
> @@ -28,7 +28,6 @@
> #include <asm/cputype.h>
> #include <asm/uaccess.h>
> #include <asm/kvm.h>
> -#include <asm/kvm_asm.h>
> #include <asm/kvm_emulate.h>
> #include <asm/kvm_coproc.h>
>
> diff --git a/arch/arm64/kvm/handle_exit.c b/arch/arm64/kvm/handle_exit.c
> index 68a0759..4323627 100644
> --- a/arch/arm64/kvm/handle_exit.c
> +++ b/arch/arm64/kvm/handle_exit.c
> @@ -23,6 +23,7 @@
> #include <linux/kvm_host.h>
>
> #include <asm/esr.h>
> +#include <asm/kvm_asm.h>
> #include <asm/kvm_coproc.h>
> #include <asm/kvm_emulate.h>
> #include <asm/kvm_mmu.h>
> diff --git a/arch/arm64/kvm/hyp/debug-sr.c b/arch/arm64/kvm/hyp/debug-sr.c
> index afd0a53..774a3f69 100644
> --- a/arch/arm64/kvm/hyp/debug-sr.c
> +++ b/arch/arm64/kvm/hyp/debug-sr.c
> @@ -18,6 +18,7 @@
> #include <linux/compiler.h>
> #include <linux/kvm_host.h>
>
> +#include <asm/kvm_asm.h>
> #include <asm/kvm_mmu.h>
>
> #include "hyp.h"
> diff --git a/arch/arm64/kvm/hyp/entry.S b/arch/arm64/kvm/hyp/entry.S
> index 7552922..599911c 100644
> --- a/arch/arm64/kvm/hyp/entry.S
> +++ b/arch/arm64/kvm/hyp/entry.S
> @@ -27,7 +27,6 @@
>
> #define CPU_GP_REG_OFFSET(x) (CPU_GP_REGS + x)
> #define CPU_XREG_OFFSET(x) CPU_GP_REG_OFFSET(CPU_USER_PT_REGS + 8*x)
> -#define CPU_SYSREG_OFFSET(x) (CPU_SYSREGS + 8*x)
>
> .text
> .pushsection .hyp.text, "ax"
> @@ -174,7 +173,7 @@ ENTRY(__fpsimd_guest_restore)
>
> mrs x1, hcr_el2
> tbnz x1, #HCR_RW_SHIFT, 1f
> - ldr x4, [x2, #CPU_SYSREG_OFFSET(FPEXC32_EL2)]
> + ldr x4, [x3, #VCPU_FPEXC32_EL2]
> msr fpexc32_el2, x4
> 1:
> pop x4, lr
> diff --git a/arch/arm64/kvm/hyp/sysreg-sr.c b/arch/arm64/kvm/hyp/sysreg-sr.c
> index 41b9d30..b893c45 100644
> --- a/arch/arm64/kvm/hyp/sysreg-sr.c
> +++ b/arch/arm64/kvm/hyp/sysreg-sr.c
> @@ -18,6 +18,7 @@
> #include <linux/compiler.h>
> #include <linux/kvm_host.h>
>
> +#include <asm/kvm_asm.h>
> #include <asm/kvm_mmu.h>
>
> #include "hyp.h"
> diff --git a/arch/arm64/kvm/sys_regs.c b/arch/arm64/kvm/sys_regs.c
> index 87a64e8..0db5311 100644
> --- a/arch/arm64/kvm/sys_regs.c
> +++ b/arch/arm64/kvm/sys_regs.c
> @@ -29,6 +29,7 @@
> #include <asm/debug-monitors.h>
> #include <asm/esr.h>
> #include <asm/kvm_arm.h>
> +#include <asm/kvm_asm.h>
> #include <asm/kvm_coproc.h>
> #include <asm/kvm_emulate.h>
> #include <asm/kvm_host.h>
> diff --git a/virt/kvm/arm/vgic-v3.c b/virt/kvm/arm/vgic-v3.c
> index 487d635..c8506a2 100644
> --- a/virt/kvm/arm/vgic-v3.c
> +++ b/virt/kvm/arm/vgic-v3.c
> @@ -28,6 +28,7 @@
>
> #include <asm/kvm_emulate.h>
> #include <asm/kvm_arm.h>
> +#include <asm/kvm_asm.h>
> #include <asm/kvm_mmu.h>
>
> /* These are for GICv2 emulation only */
> --
> 2.1.4
>
Apart from the comment:
Acked-by: Christoffer Dall <christoffer.dall@linaro.org>
next prev parent reply other threads:[~2015-12-02 11:51 UTC|newest]
Thread overview: 88+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-27 18:49 [PATCH v2 00/21] arm64: KVM: world switch in C Marc Zyngier
2015-11-27 18:49 ` [PATCH v2 01/21] arm64: Add macros to read/write system registers Marc Zyngier
2015-11-30 20:00 ` Christoffer Dall
2015-11-27 18:49 ` [PATCH v2 02/21] arm64: KVM: Add a HYP-specific header file Marc Zyngier
2015-11-30 20:00 ` Christoffer Dall
2015-12-01 11:41 ` Marc Zyngier
2015-12-01 11:47 ` Christoffer Dall
2015-11-27 18:49 ` [PATCH v2 03/21] arm64: KVM: Implement vgic-v2 save/restore Marc Zyngier
2015-11-30 20:00 ` Christoffer Dall
2015-12-01 11:39 ` Marc Zyngier
2015-11-27 18:49 ` [PATCH v2 04/21] arm64: KVM: Implement vgic-v3 save/restore Marc Zyngier
2015-11-30 9:59 ` Alex Bennée
2015-11-30 10:43 ` Marc Zyngier
2015-11-30 19:50 ` Christoffer Dall
2015-12-01 11:32 ` Marc Zyngier
2015-12-01 11:44 ` Christoffer Dall
2015-12-01 11:50 ` Christoffer Dall
2015-12-01 11:57 ` Marc Zyngier
2015-12-01 12:24 ` Christoffer Dall
2015-12-01 12:49 ` Marc Zyngier
2015-12-01 11:54 ` Marc Zyngier
2015-11-27 18:49 ` [PATCH v2 05/21] arm64: KVM: Implement timer save/restore Marc Zyngier
2015-11-30 19:59 ` Christoffer Dall
2015-12-01 11:34 ` Marc Zyngier
2015-11-27 18:50 ` [PATCH v2 06/21] arm64: KVM: Implement system register save/restore Marc Zyngier
2015-12-01 15:53 ` Christoffer Dall
2015-11-27 18:50 ` [PATCH v2 07/21] arm64: KVM: Implement 32bit " Marc Zyngier
2015-12-01 15:52 ` Christoffer Dall
2015-11-27 18:50 ` [PATCH v2 08/21] arm64: KVM: Implement debug save/restore Marc Zyngier
2015-11-30 12:00 ` Alex Bennée
2015-11-30 12:24 ` Marc Zyngier
2015-12-01 12:56 ` Christoffer Dall
2015-12-01 13:06 ` Marc Zyngier
2015-12-01 13:19 ` Alex Bennée
2015-12-01 13:34 ` Marc Zyngier
2015-12-01 14:47 ` Christoffer Dall
2015-12-01 14:56 ` Christoffer Dall
2015-12-01 15:01 ` Marc Zyngier
2015-12-01 15:41 ` Christoffer Dall
2015-12-01 18:34 ` Marc Zyngier
2015-11-27 18:50 ` [PATCH v2 09/21] arm64: KVM: Implement guest entry Marc Zyngier
2015-12-01 15:29 ` Christoffer Dall
2015-12-01 18:41 ` Marc Zyngier
2015-11-27 18:50 ` [PATCH v2 10/21] arm64: KVM: Add patchable function selector Marc Zyngier
2015-12-01 15:39 ` Christoffer Dall
2015-12-01 18:51 ` Marc Zyngier
2015-12-02 9:27 ` Christoffer Dall
2015-12-02 9:47 ` Marc Zyngier
2015-12-02 11:53 ` Christoffer Dall
2015-12-02 13:19 ` Marc Zyngier
2015-12-02 16:19 ` Christoffer Dall
2015-12-02 22:34 ` Andrew Jones
2015-12-03 8:18 ` Marc Zyngier
2015-11-27 18:50 ` [PATCH v2 11/21] arm64: KVM: Implement the core world switch Marc Zyngier
2015-12-01 15:55 ` Christoffer Dall
2015-11-27 18:50 ` [PATCH v2 12/21] arm64: KVM: Implement fpsimd save/restore Marc Zyngier
2015-12-02 11:53 ` Christoffer Dall
2015-12-02 15:29 ` Marc Zyngier
2015-12-02 16:19 ` Christoffer Dall
2015-11-27 18:50 ` [PATCH v2 13/21] arm64: KVM: Implement TLB handling Marc Zyngier
2015-12-02 11:53 ` Christoffer Dall
2015-11-27 18:50 ` [PATCH v2 14/21] arm64: KVM: HYP mode entry points Marc Zyngier
2015-12-02 11:53 ` Christoffer Dall
2015-11-27 18:50 ` [PATCH v2 15/21] arm64: KVM: Add panic handling Marc Zyngier
2015-12-02 11:53 ` Christoffer Dall
2015-11-27 18:50 ` [PATCH v2 16/21] arm64: KVM: Add compatibility aliases Marc Zyngier
2015-12-02 11:49 ` Christoffer Dall
2015-12-02 15:23 ` Marc Zyngier
2015-11-27 18:50 ` [PATCH v2 17/21] arm64: KVM: Map the kernel RO section into HYP Marc Zyngier
2015-12-02 11:49 ` Christoffer Dall
2015-11-27 18:50 ` [PATCH v2 18/21] arm64: KVM: Move away from the assembly version of the world switch Marc Zyngier
2015-12-02 11:49 ` Christoffer Dall
2015-11-27 18:50 ` [PATCH v2 19/21] arm64: KVM: Turn system register numbers to an enum Marc Zyngier
2015-12-02 11:51 ` Christoffer Dall [this message]
2015-12-02 15:26 ` Marc Zyngier
2015-11-27 18:50 ` [PATCH v2 20/21] arm64: KVM: Cleanup asm-offset.c Marc Zyngier
2015-12-02 11:51 ` Christoffer Dall
2015-11-27 18:50 ` [PATCH v2 21/21] arm64: KVM: Remove weak attributes Marc Zyngier
2015-12-02 11:47 ` Christoffer Dall
2015-12-02 15:21 ` Marc Zyngier
2015-12-02 16:21 ` Christoffer Dall
2015-12-02 17:52 ` Marc Zyngier
2015-11-30 20:33 ` [PATCH v2 00/21] arm64: KVM: world switch in C Christoffer Dall
2015-12-01 3:19 ` Mario Smarduch
2015-12-01 9:58 ` Marc Zyngier
2015-12-01 12:00 ` Christoffer Dall
2015-12-01 17:51 ` Marc Zyngier
2015-12-01 19:34 ` Christoffer Dall
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=20151202115121.GE18376@cbox \
--to=christoffer.dall@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).