All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jonathan Cameron <Jonathan.Cameron@huawei.com>
To: Dongjiu Geng <gengdongjiu@huawei.com>
Cc: christoffer.dall@linaro.org, marc.zyngier@arm.com,
	rkrcmar@redhat.com, linux@armlinux.org.uk,
	catalin.marinas@arm.com, will.deacon@arm.com, lenb@kernel.org,
	robert.moore@intel.com, lv.zheng@intel.com, mark.rutland@arm.com,
	james.morse@arm.com, xiexiuqi@huawei.com, cov@codeaurora.org,
	david.daney@cavium.com, suzuki.poulose@arm.com,
	stefan@hello-penguin.com, Dave.Martin@arm.com,
	kristina.martsenko@arm.com, wangkefeng.wang@huawei.com,
	tbaicar@codeaurora.org, ard.biesheuvel@linaro.org,
	mingo@kernel.org, bp@suse.de, shiju.jose@huawei.com,
	zjzhang@codeaurora.org, linux-arm-kernel@lists.infradead.org,
	kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org,
	devel@acpica
Subject: Re: [PATCH v5 6/7] KVM: arm64: Allow get exception information from userspace
Date: Tue, 22 Aug 2017 08:57:23 +0100	[thread overview]
Message-ID: <20170822085723.0000670e@huawei.com> (raw)
In-Reply-To: <1503065517-7920-7-git-send-email-gengdongjiu@huawei.com>

On Fri, 18 Aug 2017 22:11:56 +0800
Dongjiu Geng <gengdongjiu@huawei.com> wrote:

> when userspace gets SIGBUS signal, it does not know whether
> this is a synchronous external abort or SError, so needs
> to get the exception syndrome. so this patch allows userspace
> can get this values. For syndrome, only give userspace
> syndrome EC and ISS.
> 
> Now we move the synchronous external abort injection logic to
> userspace, when userspace injects the SEA exception to guest
> OS, it needs to specify the far_el1 value, so this patch give
> the exception virtual address to user space.
> 
> Signed-off-by: Dongjiu Geng <gengdongjiu@huawei.com>
> Signed-off-by: Quanming Wu <wuquanming@huawei.com>

A couple of really trivial formatting points inline.

> ---
>  arch/arm64/include/uapi/asm/kvm.h |  5 +++++
>  arch/arm64/kvm/guest.c            | 35 +++++++++++++++++++++++++++++++++++
>  2 files changed, 40 insertions(+)
> 
> diff --git a/arch/arm64/include/uapi/asm/kvm.h b/arch/arm64/include/uapi/asm/kvm.h
> index 9f3ca24bbcc6..514261f682b8 100644
> --- a/arch/arm64/include/uapi/asm/kvm.h
> +++ b/arch/arm64/include/uapi/asm/kvm.h
> @@ -181,6 +181,11 @@ struct kvm_arch_memory_slot {
>  #define KVM_REG_ARM64_SYSREG_OP2_MASK	0x0000000000000007
>  #define KVM_REG_ARM64_SYSREG_OP2_SHIFT	0
>  
> +/* AArch64 fault registers */
> +#define KVM_REG_ARM64_FAULT		(0x0014 << KVM_REG_ARM_COPROC_SHIFT)
> +#define KVM_REG_ARM64_FAULT_ESR_EC_ISS	(0)
> +#define KVM_REG_ARM64_FAULT_FAR		(1)
> +
>  #define ARM64_SYS_REG_SHIFT_MASK(x,n) \
>  	(((x) << KVM_REG_ARM64_SYSREG_ ## n ## _SHIFT) & \
>  	KVM_REG_ARM64_SYSREG_ ## n ## _MASK)
> diff --git a/arch/arm64/kvm/guest.c b/arch/arm64/kvm/guest.c
> index 5c7f657dd207..cb383c310f18 100644
> --- a/arch/arm64/kvm/guest.c
> +++ b/arch/arm64/kvm/guest.c
> @@ -128,6 +128,38 @@ static int set_core_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg)
>  out:
>  	return err;
>  }
> +static int get_fault_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg)
> +{
> +	void __user *uaddr = (void __user *)(unsigned long)reg->addr;
> +	u32 ec, value;
> +	u32 id = reg->id & ~(KVM_REG_ARCH_MASK |
> +			KVM_REG_SIZE_MASK | KVM_REG_ARM64_FAULT);
> +
> +	switch (id) {
> +	case KVM_REG_ARM64_FAULT_ESR_EC_ISS:
> +		/* The user space needs to know the fault exception
> +		 * class field
> +		 */

The rest of this file uses the multiline comment syntax
/*
 * The user...
 */

> +		ec = kvm_vcpu_get_hsr(vcpu) & ESR_ELx_EC_MASK;
> +		value = ec | (kvm_vcpu_get_hsr(vcpu) & ESR_ELx_ISS_MASK);
Same as

value = kvm_vpcu_get_hsr(vcpu) & (ESR_ELx_EC_MASK | ESR_ELx_ISS_MASK);

?

> +
> +		if (copy_to_user(uaddr, &value, KVM_REG_SIZE(reg->id)) != 0)
> +			return -EFAULT;
> +		break;
> +	case KVM_REG_ARM64_FAULT_FAR:
> +		/* when user space injects synchronized abort, it needs
> +		 * to inject the fault address.
> +		 */

Again, multiline comment syntax.

> +		if (copy_to_user(uaddr, &(vcpu->arch.fault.far_el2),
> +				KVM_REG_SIZE(reg->id)) != 0)
> +			return -EFAULT;
> +		break;
> +	default:
> +		return -ENOENT;
> +	}
> +	return 0;
> +}
> +
>  
>  int kvm_arch_vcpu_ioctl_get_regs(struct kvm_vcpu *vcpu, struct kvm_regs *regs)
>  {
> @@ -243,6 +275,9 @@ int kvm_arm_get_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg)
>  	if ((reg->id & KVM_REG_ARM_COPROC_MASK) == KVM_REG_ARM_CORE)
>  		return get_core_reg(vcpu, reg);
>  
> +	if ((reg->id & KVM_REG_ARM_COPROC_MASK) == KVM_REG_ARM64_FAULT)
> +		return get_fault_reg(vcpu, reg);
> +
>  	if (is_timer_reg(reg->id))
>  		return get_timer_reg(vcpu, reg);
>  

WARNING: multiple messages have this Message-ID (diff)
From: Jonathan.Cameron@huawei.com (Jonathan Cameron)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v5 6/7] KVM: arm64: Allow get exception information from userspace
Date: Tue, 22 Aug 2017 08:57:23 +0100	[thread overview]
Message-ID: <20170822085723.0000670e@huawei.com> (raw)
In-Reply-To: <1503065517-7920-7-git-send-email-gengdongjiu@huawei.com>

On Fri, 18 Aug 2017 22:11:56 +0800
Dongjiu Geng <gengdongjiu@huawei.com> wrote:

> when userspace gets SIGBUS signal, it does not know whether
> this is a synchronous external abort or SError, so needs
> to get the exception syndrome. so this patch allows userspace
> can get this values. For syndrome, only give userspace
> syndrome EC and ISS.
> 
> Now we move the synchronous external abort injection logic to
> userspace, when userspace injects the SEA exception to guest
> OS, it needs to specify the far_el1 value, so this patch give
> the exception virtual address to user space.
> 
> Signed-off-by: Dongjiu Geng <gengdongjiu@huawei.com>
> Signed-off-by: Quanming Wu <wuquanming@huawei.com>

A couple of really trivial formatting points inline.

> ---
>  arch/arm64/include/uapi/asm/kvm.h |  5 +++++
>  arch/arm64/kvm/guest.c            | 35 +++++++++++++++++++++++++++++++++++
>  2 files changed, 40 insertions(+)
> 
> diff --git a/arch/arm64/include/uapi/asm/kvm.h b/arch/arm64/include/uapi/asm/kvm.h
> index 9f3ca24bbcc6..514261f682b8 100644
> --- a/arch/arm64/include/uapi/asm/kvm.h
> +++ b/arch/arm64/include/uapi/asm/kvm.h
> @@ -181,6 +181,11 @@ struct kvm_arch_memory_slot {
>  #define KVM_REG_ARM64_SYSREG_OP2_MASK	0x0000000000000007
>  #define KVM_REG_ARM64_SYSREG_OP2_SHIFT	0
>  
> +/* AArch64 fault registers */
> +#define KVM_REG_ARM64_FAULT		(0x0014 << KVM_REG_ARM_COPROC_SHIFT)
> +#define KVM_REG_ARM64_FAULT_ESR_EC_ISS	(0)
> +#define KVM_REG_ARM64_FAULT_FAR		(1)
> +
>  #define ARM64_SYS_REG_SHIFT_MASK(x,n) \
>  	(((x) << KVM_REG_ARM64_SYSREG_ ## n ## _SHIFT) & \
>  	KVM_REG_ARM64_SYSREG_ ## n ## _MASK)
> diff --git a/arch/arm64/kvm/guest.c b/arch/arm64/kvm/guest.c
> index 5c7f657dd207..cb383c310f18 100644
> --- a/arch/arm64/kvm/guest.c
> +++ b/arch/arm64/kvm/guest.c
> @@ -128,6 +128,38 @@ static int set_core_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg)
>  out:
>  	return err;
>  }
> +static int get_fault_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg)
> +{
> +	void __user *uaddr = (void __user *)(unsigned long)reg->addr;
> +	u32 ec, value;
> +	u32 id = reg->id & ~(KVM_REG_ARCH_MASK |
> +			KVM_REG_SIZE_MASK | KVM_REG_ARM64_FAULT);
> +
> +	switch (id) {
> +	case KVM_REG_ARM64_FAULT_ESR_EC_ISS:
> +		/* The user space needs to know the fault exception
> +		 * class field
> +		 */

The rest of this file uses the multiline comment syntax
/*
 * The user...
 */

> +		ec = kvm_vcpu_get_hsr(vcpu) & ESR_ELx_EC_MASK;
> +		value = ec | (kvm_vcpu_get_hsr(vcpu) & ESR_ELx_ISS_MASK);
Same as

value = kvm_vpcu_get_hsr(vcpu) & (ESR_ELx_EC_MASK | ESR_ELx_ISS_MASK);

?

> +
> +		if (copy_to_user(uaddr, &value, KVM_REG_SIZE(reg->id)) != 0)
> +			return -EFAULT;
> +		break;
> +	case KVM_REG_ARM64_FAULT_FAR:
> +		/* when user space injects synchronized abort, it needs
> +		 * to inject the fault address.
> +		 */

Again, multiline comment syntax.

> +		if (copy_to_user(uaddr, &(vcpu->arch.fault.far_el2),
> +				KVM_REG_SIZE(reg->id)) != 0)
> +			return -EFAULT;
> +		break;
> +	default:
> +		return -ENOENT;
> +	}
> +	return 0;
> +}
> +
>  
>  int kvm_arch_vcpu_ioctl_get_regs(struct kvm_vcpu *vcpu, struct kvm_regs *regs)
>  {
> @@ -243,6 +275,9 @@ int kvm_arm_get_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg)
>  	if ((reg->id & KVM_REG_ARM_COPROC_MASK) == KVM_REG_ARM_CORE)
>  		return get_core_reg(vcpu, reg);
>  
> +	if ((reg->id & KVM_REG_ARM_COPROC_MASK) == KVM_REG_ARM64_FAULT)
> +		return get_fault_reg(vcpu, reg);
> +
>  	if (is_timer_reg(reg->id))
>  		return get_timer_reg(vcpu, reg);
>  

WARNING: multiple messages have this Message-ID (diff)
From: Jonathan Cameron <Jonathan.Cameron@huawei.com>
To: Dongjiu Geng <gengdongjiu@huawei.com>
Cc: <christoffer.dall@linaro.org>, <marc.zyngier@arm.com>,
	<rkrcmar@redhat.com>, <linux@armlinux.org.uk>,
	<catalin.marinas@arm.com>, <will.deacon@arm.com>,
	<lenb@kernel.org>, <robert.moore@intel.com>, <lv.zheng@intel.com>,
	<mark.rutland@arm.com>, <james.morse@arm.com>,
	<xiexiuqi@huawei.com>, <cov@codeaurora.org>,
	<david.daney@cavium.com>, <suzuki.poulose@arm.com>,
	<stefan@hello-penguin.com>, <Dave.Martin@arm.com>,
	<kristina.martsenko@arm.com>, <wangkefeng.wang@huawei.com>,
	<tbaicar@codeaurora.org>, <ard.biesheuvel@linaro.org>,
	<mingo@kernel.org>, <bp@suse.de>, <shiju.jose@huawei.com>,
	<zjzhang@codeaurora.org>, <linux-arm-kernel@lists.infradead.org>,
	<kvmarm@lists.cs.columbia.edu>, <kvm@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>, <linux-acpi@vger.kernel.org>,
	<devel@acpica
Subject: Re: [PATCH v5 6/7] KVM: arm64: Allow get exception information from userspace
Date: Tue, 22 Aug 2017 08:57:23 +0100	[thread overview]
Message-ID: <20170822085723.0000670e@huawei.com> (raw)
In-Reply-To: <1503065517-7920-7-git-send-email-gengdongjiu@huawei.com>

On Fri, 18 Aug 2017 22:11:56 +0800
Dongjiu Geng <gengdongjiu@huawei.com> wrote:

> when userspace gets SIGBUS signal, it does not know whether
> this is a synchronous external abort or SError, so needs
> to get the exception syndrome. so this patch allows userspace
> can get this values. For syndrome, only give userspace
> syndrome EC and ISS.
> 
> Now we move the synchronous external abort injection logic to
> userspace, when userspace injects the SEA exception to guest
> OS, it needs to specify the far_el1 value, so this patch give
> the exception virtual address to user space.
> 
> Signed-off-by: Dongjiu Geng <gengdongjiu@huawei.com>
> Signed-off-by: Quanming Wu <wuquanming@huawei.com>

A couple of really trivial formatting points inline.

> ---
>  arch/arm64/include/uapi/asm/kvm.h |  5 +++++
>  arch/arm64/kvm/guest.c            | 35 +++++++++++++++++++++++++++++++++++
>  2 files changed, 40 insertions(+)
> 
> diff --git a/arch/arm64/include/uapi/asm/kvm.h b/arch/arm64/include/uapi/asm/kvm.h
> index 9f3ca24bbcc6..514261f682b8 100644
> --- a/arch/arm64/include/uapi/asm/kvm.h
> +++ b/arch/arm64/include/uapi/asm/kvm.h
> @@ -181,6 +181,11 @@ struct kvm_arch_memory_slot {
>  #define KVM_REG_ARM64_SYSREG_OP2_MASK	0x0000000000000007
>  #define KVM_REG_ARM64_SYSREG_OP2_SHIFT	0
>  
> +/* AArch64 fault registers */
> +#define KVM_REG_ARM64_FAULT		(0x0014 << KVM_REG_ARM_COPROC_SHIFT)
> +#define KVM_REG_ARM64_FAULT_ESR_EC_ISS	(0)
> +#define KVM_REG_ARM64_FAULT_FAR		(1)
> +
>  #define ARM64_SYS_REG_SHIFT_MASK(x,n) \
>  	(((x) << KVM_REG_ARM64_SYSREG_ ## n ## _SHIFT) & \
>  	KVM_REG_ARM64_SYSREG_ ## n ## _MASK)
> diff --git a/arch/arm64/kvm/guest.c b/arch/arm64/kvm/guest.c
> index 5c7f657dd207..cb383c310f18 100644
> --- a/arch/arm64/kvm/guest.c
> +++ b/arch/arm64/kvm/guest.c
> @@ -128,6 +128,38 @@ static int set_core_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg)
>  out:
>  	return err;
>  }
> +static int get_fault_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg)
> +{
> +	void __user *uaddr = (void __user *)(unsigned long)reg->addr;
> +	u32 ec, value;
> +	u32 id = reg->id & ~(KVM_REG_ARCH_MASK |
> +			KVM_REG_SIZE_MASK | KVM_REG_ARM64_FAULT);
> +
> +	switch (id) {
> +	case KVM_REG_ARM64_FAULT_ESR_EC_ISS:
> +		/* The user space needs to know the fault exception
> +		 * class field
> +		 */

The rest of this file uses the multiline comment syntax
/*
 * The user...
 */

> +		ec = kvm_vcpu_get_hsr(vcpu) & ESR_ELx_EC_MASK;
> +		value = ec | (kvm_vcpu_get_hsr(vcpu) & ESR_ELx_ISS_MASK);
Same as

value = kvm_vpcu_get_hsr(vcpu) & (ESR_ELx_EC_MASK | ESR_ELx_ISS_MASK);

?

> +
> +		if (copy_to_user(uaddr, &value, KVM_REG_SIZE(reg->id)) != 0)
> +			return -EFAULT;
> +		break;
> +	case KVM_REG_ARM64_FAULT_FAR:
> +		/* when user space injects synchronized abort, it needs
> +		 * to inject the fault address.
> +		 */

Again, multiline comment syntax.

> +		if (copy_to_user(uaddr, &(vcpu->arch.fault.far_el2),
> +				KVM_REG_SIZE(reg->id)) != 0)
> +			return -EFAULT;
> +		break;
> +	default:
> +		return -ENOENT;
> +	}
> +	return 0;
> +}
> +
>  
>  int kvm_arch_vcpu_ioctl_get_regs(struct kvm_vcpu *vcpu, struct kvm_regs *regs)
>  {
> @@ -243,6 +275,9 @@ int kvm_arm_get_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg)
>  	if ((reg->id & KVM_REG_ARM_COPROC_MASK) == KVM_REG_ARM_CORE)
>  		return get_core_reg(vcpu, reg);
>  
> +	if ((reg->id & KVM_REG_ARM_COPROC_MASK) == KVM_REG_ARM64_FAULT)
> +		return get_fault_reg(vcpu, reg);
> +
>  	if (is_timer_reg(reg->id))
>  		return get_timer_reg(vcpu, reg);
>  

WARNING: multiple messages have this Message-ID (diff)
From: Jonathan Cameron <Jonathan.Cameron@huawei.com>
To: Dongjiu Geng <gengdongjiu@huawei.com>
Cc: <christoffer.dall@linaro.org>, <marc.zyngier@arm.com>,
	<rkrcmar@redhat.com>, <linux@armlinux.org.uk>,
	<catalin.marinas@arm.com>, <will.deacon@arm.com>,
	<lenb@kernel.org>, <robert.moore@intel.com>, <lv.zheng@intel.com>,
	<mark.rutland@arm.com>, <james.morse@arm.com>,
	<xiexiuqi@huawei.com>, <cov@codeaurora.org>,
	<david.daney@cavium.com>, <suzuki.poulose@arm.com>,
	<stefan@hello-penguin.com>, <Dave.Martin@arm.com>,
	<kristina.martsenko@arm.com>, <wangkefeng.wang@huawei.com>,
	<tbaicar@codeaurora.org>, <ard.biesheuvel@linaro.org>,
	<mingo@kernel.org>, <bp@suse.de>, <shiju.jose@huawei.com>,
	<zjzhang@codeaurora.org>, <linux-arm-kernel@lists.infradead.org>,
	<kvmarm@lists.cs.columbia.edu>, <kvm@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>, <linux-acpi@vger.kernel.org>,
	<devel@acpica.org>, <mst@redhat.com>, <john.garry@huawei.com>,
	<shameerali.kolothum.thodi@huawei.com>,
	<huangdaode@hisilicon.com>, <wangzhou1@hisilicon.com>,
	<huangshaoyu@huawei.com>, <wuquanming@huawei.com>,
	<linuxarm@huawei.com>, <zhengqiang10@huawei.com>
Subject: Re: [PATCH v5 6/7] KVM: arm64: Allow get exception information from userspace
Date: Tue, 22 Aug 2017 08:57:23 +0100	[thread overview]
Message-ID: <20170822085723.0000670e@huawei.com> (raw)
In-Reply-To: <1503065517-7920-7-git-send-email-gengdongjiu@huawei.com>

On Fri, 18 Aug 2017 22:11:56 +0800
Dongjiu Geng <gengdongjiu@huawei.com> wrote:

> when userspace gets SIGBUS signal, it does not know whether
> this is a synchronous external abort or SError, so needs
> to get the exception syndrome. so this patch allows userspace
> can get this values. For syndrome, only give userspace
> syndrome EC and ISS.
> 
> Now we move the synchronous external abort injection logic to
> userspace, when userspace injects the SEA exception to guest
> OS, it needs to specify the far_el1 value, so this patch give
> the exception virtual address to user space.
> 
> Signed-off-by: Dongjiu Geng <gengdongjiu@huawei.com>
> Signed-off-by: Quanming Wu <wuquanming@huawei.com>

A couple of really trivial formatting points inline.

> ---
>  arch/arm64/include/uapi/asm/kvm.h |  5 +++++
>  arch/arm64/kvm/guest.c            | 35 +++++++++++++++++++++++++++++++++++
>  2 files changed, 40 insertions(+)
> 
> diff --git a/arch/arm64/include/uapi/asm/kvm.h b/arch/arm64/include/uapi/asm/kvm.h
> index 9f3ca24bbcc6..514261f682b8 100644
> --- a/arch/arm64/include/uapi/asm/kvm.h
> +++ b/arch/arm64/include/uapi/asm/kvm.h
> @@ -181,6 +181,11 @@ struct kvm_arch_memory_slot {
>  #define KVM_REG_ARM64_SYSREG_OP2_MASK	0x0000000000000007
>  #define KVM_REG_ARM64_SYSREG_OP2_SHIFT	0
>  
> +/* AArch64 fault registers */
> +#define KVM_REG_ARM64_FAULT		(0x0014 << KVM_REG_ARM_COPROC_SHIFT)
> +#define KVM_REG_ARM64_FAULT_ESR_EC_ISS	(0)
> +#define KVM_REG_ARM64_FAULT_FAR		(1)
> +
>  #define ARM64_SYS_REG_SHIFT_MASK(x,n) \
>  	(((x) << KVM_REG_ARM64_SYSREG_ ## n ## _SHIFT) & \
>  	KVM_REG_ARM64_SYSREG_ ## n ## _MASK)
> diff --git a/arch/arm64/kvm/guest.c b/arch/arm64/kvm/guest.c
> index 5c7f657dd207..cb383c310f18 100644
> --- a/arch/arm64/kvm/guest.c
> +++ b/arch/arm64/kvm/guest.c
> @@ -128,6 +128,38 @@ static int set_core_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg)
>  out:
>  	return err;
>  }
> +static int get_fault_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg)
> +{
> +	void __user *uaddr = (void __user *)(unsigned long)reg->addr;
> +	u32 ec, value;
> +	u32 id = reg->id & ~(KVM_REG_ARCH_MASK |
> +			KVM_REG_SIZE_MASK | KVM_REG_ARM64_FAULT);
> +
> +	switch (id) {
> +	case KVM_REG_ARM64_FAULT_ESR_EC_ISS:
> +		/* The user space needs to know the fault exception
> +		 * class field
> +		 */

The rest of this file uses the multiline comment syntax
/*
 * The user...
 */

> +		ec = kvm_vcpu_get_hsr(vcpu) & ESR_ELx_EC_MASK;
> +		value = ec | (kvm_vcpu_get_hsr(vcpu) & ESR_ELx_ISS_MASK);
Same as

value = kvm_vpcu_get_hsr(vcpu) & (ESR_ELx_EC_MASK | ESR_ELx_ISS_MASK);

?

> +
> +		if (copy_to_user(uaddr, &value, KVM_REG_SIZE(reg->id)) != 0)
> +			return -EFAULT;
> +		break;
> +	case KVM_REG_ARM64_FAULT_FAR:
> +		/* when user space injects synchronized abort, it needs
> +		 * to inject the fault address.
> +		 */

Again, multiline comment syntax.

> +		if (copy_to_user(uaddr, &(vcpu->arch.fault.far_el2),
> +				KVM_REG_SIZE(reg->id)) != 0)
> +			return -EFAULT;
> +		break;
> +	default:
> +		return -ENOENT;
> +	}
> +	return 0;
> +}
> +
>  
>  int kvm_arch_vcpu_ioctl_get_regs(struct kvm_vcpu *vcpu, struct kvm_regs *regs)
>  {
> @@ -243,6 +275,9 @@ int kvm_arm_get_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg)
>  	if ((reg->id & KVM_REG_ARM_COPROC_MASK) == KVM_REG_ARM_CORE)
>  		return get_core_reg(vcpu, reg);
>  
> +	if ((reg->id & KVM_REG_ARM_COPROC_MASK) == KVM_REG_ARM64_FAULT)
> +		return get_fault_reg(vcpu, reg);
> +
>  	if (is_timer_reg(reg->id))
>  		return get_timer_reg(vcpu, reg);
>  

  reply	other threads:[~2017-08-22  7:57 UTC|newest]

Thread overview: 67+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-18 14:11 [PATCH v5 0/7] Add RAS virtualization support to SEA/SEI notification type Dongjiu Geng
2017-08-18 14:11 ` Dongjiu Geng
2017-08-18 14:11 ` Dongjiu Geng
2017-08-18 14:11 ` Dongjiu Geng
2017-08-18 14:11 ` [PATCH v5 1/7] arm64: cpufeature: Detect CPU RAS Extentions Dongjiu Geng
2017-08-18 14:11   ` Dongjiu Geng
2017-08-18 14:11   ` Dongjiu Geng
2017-08-18 14:11   ` Dongjiu Geng
2017-08-22  7:54   ` Jonathan Cameron
2017-08-22  7:54     ` Jonathan Cameron
2017-08-22  7:54     ` Jonathan Cameron
2017-08-22  7:54     ` Jonathan Cameron
2017-08-18 14:11 ` [PATCH v5 2/7] KVM: arm64: Save ESR_EL2 on guest SError Dongjiu Geng
2017-08-18 14:11   ` Dongjiu Geng
2017-08-18 14:11   ` Dongjiu Geng
2017-08-18 14:11   ` Dongjiu Geng
2017-08-18 14:11 ` [PATCH v5 3/7] acpi: apei: Add SEI notification type support for ARMv8 Dongjiu Geng
2017-08-18 14:11   ` Dongjiu Geng
2017-08-18 14:11   ` Dongjiu Geng
2017-08-18 14:11   ` Dongjiu Geng
2017-08-22  7:56   ` Jonathan Cameron
2017-08-22  7:56     ` Jonathan Cameron
2017-08-22  7:56     ` Jonathan Cameron
2017-08-22  7:56     ` Jonathan Cameron
2017-08-18 14:11 ` [PATCH v5 4/7] support user space to query RAS extension feature Dongjiu Geng
2017-08-18 14:11   ` Dongjiu Geng
2017-08-18 14:11   ` Dongjiu Geng
2017-08-18 14:11   ` Dongjiu Geng
2017-08-21 21:08   ` Christoffer Dall
2017-08-21 21:08     ` Christoffer Dall
2017-08-21 21:08     ` Christoffer Dall
2017-08-22  1:20     ` gengdongjiu
2017-08-22  1:20       ` gengdongjiu
2017-08-22  1:20       ` gengdongjiu
2017-08-22  1:20       ` gengdongjiu
2017-08-22  7:56   ` Jonathan Cameron
2017-08-22  7:56     ` Jonathan Cameron
2017-08-22  7:56     ` Jonathan Cameron
2017-08-22  7:56     ` Jonathan Cameron
2017-08-18 14:11 ` [PATCH v5 5/7] arm64: kvm: route synchronous external abort exceptions to el2 Dongjiu Geng
2017-08-18 14:11   ` Dongjiu Geng
2017-08-18 14:11   ` Dongjiu Geng
2017-08-18 14:11   ` Dongjiu Geng
2017-08-18 14:11 ` [PATCH v5 6/7] KVM: arm64: Allow get exception information from userspace Dongjiu Geng
2017-08-18 14:11   ` Dongjiu Geng
2017-08-18 14:11   ` Dongjiu Geng
2017-08-18 14:11   ` Dongjiu Geng
2017-08-22  7:57   ` Jonathan Cameron [this message]
2017-08-22  7:57     ` Jonathan Cameron
2017-08-22  7:57     ` Jonathan Cameron
2017-08-22  7:57     ` Jonathan Cameron
2017-08-18 14:11 ` [PATCH v5 7/7] arm64: kvm: handle SEI notification and inject virtual SError Dongjiu Geng
2017-08-18 14:11   ` Dongjiu Geng
2017-08-18 14:11   ` Dongjiu Geng
2017-08-18 14:11   ` Dongjiu Geng
2017-08-22  7:57   ` Jonathan Cameron
2017-08-22  7:57     ` Jonathan Cameron
2017-08-22  7:57     ` Jonathan Cameron
2017-08-22  7:57     ` Jonathan Cameron
2017-08-22  7:54 ` [PATCH v5 0/7] Add RAS virtualization support to SEA/SEI notification type Jonathan Cameron
2017-08-22  7:54   ` Jonathan Cameron
2017-08-22  7:54   ` Jonathan Cameron
2017-08-22  7:54   ` Jonathan Cameron
2017-08-23  2:01   ` gengdongjiu
2017-08-23  2:01     ` gengdongjiu
2017-08-23  2:01     ` gengdongjiu
2017-08-23  2:01     ` gengdongjiu

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=20170822085723.0000670e@huawei.com \
    --to=jonathan.cameron@huawei.com \
    --cc=Dave.Martin@arm.com \
    --cc=ard.biesheuvel@linaro.org \
    --cc=bp@suse.de \
    --cc=catalin.marinas@arm.com \
    --cc=christoffer.dall@linaro.org \
    --cc=cov@codeaurora.org \
    --cc=david.daney@cavium.com \
    --cc=devel@acpica \
    --cc=gengdongjiu@huawei.com \
    --cc=james.morse@arm.com \
    --cc=kristina.martsenko@arm.com \
    --cc=kvm@vger.kernel.org \
    --cc=kvmarm@lists.cs.columbia.edu \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=lv.zheng@intel.com \
    --cc=marc.zyngier@arm.com \
    --cc=mark.rutland@arm.com \
    --cc=mingo@kernel.org \
    --cc=rkrcmar@redhat.com \
    --cc=robert.moore@intel.com \
    --cc=shiju.jose@huawei.com \
    --cc=stefan@hello-penguin.com \
    --cc=suzuki.poulose@arm.com \
    --cc=tbaicar@codeaurora.org \
    --cc=wangkefeng.wang@huawei.com \
    --cc=will.deacon@arm.com \
    --cc=xiexiuqi@huawei.com \
    --cc=zjzhang@codeaurora.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 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.