All of lore.kernel.org
 help / color / mirror / Atom feed
From: James Morse <james.morse@arm.com>
To: gengdongjiu <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,
	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,
	jonathan.cameron@huawei.com, shameerali.kolot
Subject: Re: [PATCH v6 5/7] arm64: kvm: route synchronous external abort exceptions to el2
Date: Thu, 14 Sep 2017 13:36:41 +0100	[thread overview]
Message-ID: <59BA77D9.4080201@arm.com> (raw)
In-Reply-To: <fb7da3e3-d0f7-7ac6-b088-888a563d7ee7@huawei.com>

Hi gengdongjiu,

On 14/09/17 12:12, gengdongjiu wrote:
> On 2017/9/8 0:31, James Morse wrote:
>> KVM already handles external aborts from lower exception levels, no more work
>> needs doing for TEA.

> If it is firmware first solution, that is SCR_EL3.EA=1, all SError interrupt and synchronous External
> Abort exceptions are taken to EL3, so EL3 firmware will handle it, KVM no needs to handle it.

... and presumably your firmware generates a fake-Synchronous-external-abort to
hand to EL2 as an APEI SEA notification? My point: this is fine, KVM already
handles synchronous-external aborts, no more work needed for this trap, (in
contrast to the TERR, which you've fixed)


> HCR_EL3.TEA is only for EL3 to check its value to decide to jump to hypervisor or kernel.

HCR_EL3!?!


>> What happens when a guest access the RAS-Error-Record registers?
>>
>> Before we can set HCR_EL2.TERR I think we need to add some minimal emulation for
>> the registers it traps. Most of them should be RAZ/WI, so it should be
>> straightforward. (I think KVMs default is to emulate an undef for unknown traps).

> Today I added the support to do some minimal emulation for RAS-Error-Record registers, thanks
> for the good suggestion.

Thanks. Software has the bad habit of living much longer than we think, if KVM
traps part of the architecture then we have to emulate it... Some bright spark
might boot a future Linux-v4.42 guest on a Linux-v4.16 host.

I had a run through the RAS spec: if we make ERRIDR_EL1 RAZ/WI then we can do
the same with ERRSELR_EL1. Then following the rules for 'If ERRSELR_EL1.SEL is
[>=]  ERRIDR_EL1.NUM' that makes the ERX* registers RAZ/WI too.


>> Eventually we will want to back this with a page of memory that lets
>> Qemu/kvmtool configure what the guest can see. (i.e. the emulated machine's
>> errors for kernel-first handling.)


Thanks,

James

WARNING: multiple messages have this Message-ID (diff)
From: James Morse <james.morse@arm.com>
To: gengdongjiu <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,
	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,
	jonathan.cameron@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 v6 5/7] arm64: kvm: route synchronous external abort exceptions to el2
Date: Thu, 14 Sep 2017 13:36:41 +0100	[thread overview]
Message-ID: <59BA77D9.4080201@arm.com> (raw)
In-Reply-To: <fb7da3e3-d0f7-7ac6-b088-888a563d7ee7@huawei.com>

Hi gengdongjiu,

On 14/09/17 12:12, gengdongjiu wrote:
> On 2017/9/8 0:31, James Morse wrote:
>> KVM already handles external aborts from lower exception levels, no more work
>> needs doing for TEA.

> If it is firmware first solution, that is SCR_EL3.EA=1, all SError interrupt and synchronous External
> Abort exceptions are taken to EL3, so EL3 firmware will handle it, KVM no needs to handle it.

... and presumably your firmware generates a fake-Synchronous-external-abort to
hand to EL2 as an APEI SEA notification? My point: this is fine, KVM already
handles synchronous-external aborts, no more work needed for this trap, (in
contrast to the TERR, which you've fixed)


> HCR_EL3.TEA is only for EL3 to check its value to decide to jump to hypervisor or kernel.

HCR_EL3!?!


>> What happens when a guest access the RAS-Error-Record registers?
>>
>> Before we can set HCR_EL2.TERR I think we need to add some minimal emulation for
>> the registers it traps. Most of them should be RAZ/WI, so it should be
>> straightforward. (I think KVMs default is to emulate an undef for unknown traps).

> Today I added the support to do some minimal emulation for RAS-Error-Record registers, thanks
> for the good suggestion.

Thanks. Software has the bad habit of living much longer than we think, if KVM
traps part of the architecture then we have to emulate it... Some bright spark
might boot a future Linux-v4.42 guest on a Linux-v4.16 host.

I had a run through the RAS spec: if we make ERRIDR_EL1 RAZ/WI then we can do
the same with ERRSELR_EL1. Then following the rules for 'If ERRSELR_EL1.SEL is
[>=]  ERRIDR_EL1.NUM' that makes the ERX* registers RAZ/WI too.


>> Eventually we will want to back this with a page of memory that lets
>> Qemu/kvmtool configure what the guest can see. (i.e. the emulated machine's
>> errors for kernel-first handling.)


Thanks,

James

WARNING: multiple messages have this Message-ID (diff)
From: james.morse@arm.com (James Morse)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v6 5/7] arm64: kvm: route synchronous external abort exceptions to el2
Date: Thu, 14 Sep 2017 13:36:41 +0100	[thread overview]
Message-ID: <59BA77D9.4080201@arm.com> (raw)
In-Reply-To: <fb7da3e3-d0f7-7ac6-b088-888a563d7ee7@huawei.com>

Hi gengdongjiu,

On 14/09/17 12:12, gengdongjiu wrote:
> On 2017/9/8 0:31, James Morse wrote:
>> KVM already handles external aborts from lower exception levels, no more work
>> needs doing for TEA.

> If it is firmware first solution, that is SCR_EL3.EA=1, all SError interrupt and synchronous External
> Abort exceptions are taken to EL3, so EL3 firmware will handle it, KVM no needs to handle it.

... and presumably your firmware generates a fake-Synchronous-external-abort to
hand to EL2 as an APEI SEA notification? My point: this is fine, KVM already
handles synchronous-external aborts, no more work needed for this trap, (in
contrast to the TERR, which you've fixed)


> HCR_EL3.TEA is only for EL3 to check its value to decide to jump to hypervisor or kernel.

HCR_EL3!?!


>> What happens when a guest access the RAS-Error-Record registers?
>>
>> Before we can set HCR_EL2.TERR I think we need to add some minimal emulation for
>> the registers it traps. Most of them should be RAZ/WI, so it should be
>> straightforward. (I think KVMs default is to emulate an undef for unknown traps).

> Today I added the support to do some minimal emulation for RAS-Error-Record registers, thanks
> for the good suggestion.

Thanks. Software has the bad habit of living much longer than we think, if KVM
traps part of the architecture then we have to emulate it... Some bright spark
might boot a future Linux-v4.42 guest on a Linux-v4.16 host.

I had a run through the RAS spec: if we make ERRIDR_EL1 RAZ/WI then we can do
the same with ERRSELR_EL1. Then following the rules for 'If ERRSELR_EL1.SEL is
[>=]  ERRIDR_EL1.NUM' that makes the ERX* registers RAZ/WI too.


>> Eventually we will want to back this with a page of memory that lets
>> Qemu/kvmtool configure what the guest can see. (i.e. the emulated machine's
>> errors for kernel-first handling.)


Thanks,

James

  reply	other threads:[~2017-09-14 12:38 UTC|newest]

Thread overview: 178+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-28 10:38 [PATCH v6 0/7] Add RAS virtualization support for SEA/SEI notification type in KVM Dongjiu Geng
2017-08-28 10:38 ` Dongjiu Geng
2017-08-28 10:38 ` Dongjiu Geng
2017-08-28 10:38 ` Dongjiu Geng
2017-08-28 10:38 ` [PATCH v6 1/7] arm64: cpufeature: Detect CPU RAS Extentions Dongjiu Geng
2017-08-28 10:38   ` Dongjiu Geng
2017-08-28 10:38   ` Dongjiu Geng
2017-08-28 10:38   ` Dongjiu Geng
2017-08-31 17:44   ` James Morse
2017-08-31 17:44     ` James Morse
2017-08-31 17:44     ` James Morse
2017-09-04 11:20     ` gengdongjiu
2017-09-04 11:20       ` gengdongjiu
2017-09-04 11:20       ` gengdongjiu
2017-09-04 11:20       ` gengdongjiu
2017-08-28 10:38 ` [PATCH v6 2/7] KVM: arm64: Save ESR_EL2 on guest SError Dongjiu Geng
2017-08-28 10:38   ` Dongjiu Geng
2017-08-28 10:38   ` Dongjiu Geng
2017-08-28 10:38   ` Dongjiu Geng
2017-08-28 10:38 ` [PATCH v6 3/7] acpi: apei: remove the unused code Dongjiu Geng
2017-08-28 10:38   ` Dongjiu Geng
2017-08-28 10:38   ` Dongjiu Geng
2017-08-28 10:38   ` Dongjiu Geng
2017-08-31 17:50   ` James Morse
2017-08-31 17:50     ` James Morse
2017-08-31 17:50     ` James Morse
2017-09-04 11:43     ` gengdongjiu
2017-09-04 11:43       ` gengdongjiu
2017-09-04 11:43       ` gengdongjiu
2017-09-04 11:43       ` gengdongjiu
2017-09-08 18:17       ` James Morse
2017-09-08 18:17         ` [Devel] " James Morse
2017-09-08 18:17         ` James Morse
2017-09-08 18:17         ` James Morse
2017-09-11 12:04         ` gengdongjiu
2017-09-11 12:04           ` [Devel] " gengdongjiu
2017-09-11 12:04           ` gengdongjiu
2017-09-11 12:04           ` gengdongjiu
2017-09-11 12:04           ` gengdongjiu
2017-09-14 12:35           ` James Morse
2017-09-14 12:35             ` James Morse
2017-09-14 12:35             ` James Morse
2017-09-14 12:51             ` gengdongjiu
2017-09-14 12:51               ` gengdongjiu
2017-09-14 12:51               ` gengdongjiu
2017-09-14 12:51               ` gengdongjiu
2017-08-28 10:38 ` [PATCH v6 4/7] arm64: kvm: support user space to query RAS extension feature Dongjiu Geng
2017-08-28 10:38   ` Dongjiu Geng
2017-08-28 10:38   ` Dongjiu Geng
2017-08-28 10:38   ` Dongjiu Geng
2017-08-31 18:04   ` James Morse
2017-08-31 18:04     ` James Morse
2017-08-31 18:04     ` James Morse
2017-09-05  7:18     ` gengdongjiu
2017-09-05  7:18       ` gengdongjiu
2017-09-05  7:18       ` gengdongjiu
2017-09-07 16:31       ` James Morse
2017-09-07 16:31         ` [Devel] " James Morse
2017-09-07 16:31         ` James Morse
2017-09-07 16:31         ` James Morse
2017-09-08 14:34         ` 答复: " gengdongjiu
2017-09-08 14:34           ` gengdongjiu
2017-09-08 14:34           ` gengdongjiu
2017-09-08 15:03           ` Peter Maydell
2017-09-08 15:03             ` Peter Maydell
2017-09-08 15:03             ` Peter Maydell
2017-09-14 12:34             ` James Morse
2017-09-14 12:34               ` James Morse
2017-09-14 12:34               ` James Morse
2017-09-08 17:36         ` gengdongjiu
2017-09-08 17:36           ` [Devel] " gengdongjiu
2017-09-08 17:36           ` gengdongjiu
2017-09-08 17:36           ` gengdongjiu
2017-09-14 12:38           ` James Morse
2017-09-14 12:38             ` James Morse
2017-09-14 12:38             ` James Morse
2017-08-28 10:38 ` [PATCH v6 5/7] arm64: kvm: route synchronous external abort exceptions to el2 Dongjiu Geng
2017-08-28 10:38   ` Dongjiu Geng
2017-08-28 10:38   ` Dongjiu Geng
2017-08-28 10:38   ` Dongjiu Geng
2017-09-07 16:31   ` James Morse
2017-09-07 16:31     ` [Devel] " James Morse
2017-09-07 16:31     ` James Morse
2017-09-07 16:31     ` James Morse
2017-09-13  8:12     ` gengdongjiu
2017-09-13  8:12       ` [Devel] " gengdongjiu
2017-09-13  8:12       ` gengdongjiu
2017-09-13  8:12       ` gengdongjiu
2017-09-13  8:12       ` gengdongjiu
2017-09-14 11:12     ` gengdongjiu
2017-09-14 11:12       ` gengdongjiu
2017-09-14 11:12       ` gengdongjiu
2017-09-14 11:12       ` gengdongjiu
2017-09-14 12:36       ` James Morse [this message]
2017-09-14 12:36         ` James Morse
2017-09-14 12:36         ` James Morse
2017-10-16 11:44       ` James Morse
2017-10-16 11:44         ` James Morse
2017-10-16 11:44         ` James Morse
2017-10-16 13:44         ` gengdongjiu
2017-10-16 13:44           ` gengdongjiu
2017-10-16 13:44           ` gengdongjiu
2017-08-28 10:38 ` [PATCH v6 6/7] KVM: arm64: allow get exception information from userspace Dongjiu Geng
2017-08-28 10:38   ` Dongjiu Geng
2017-08-28 10:38   ` Dongjiu Geng
2017-08-28 10:38   ` Dongjiu Geng
2017-09-07 16:30   ` James Morse
2017-09-07 16:30     ` [Devel] " James Morse
2017-09-07 16:30     ` James Morse
2017-09-07 16:30     ` James Morse
2017-09-13  7:32     ` gengdongjiu
2017-09-13  7:32       ` [Devel] " gengdongjiu
2017-09-13  7:32       ` gengdongjiu
2017-09-13  7:32       ` gengdongjiu
2017-09-13  7:32       ` gengdongjiu
2017-09-14 13:00       ` James Morse
2017-09-14 13:00         ` James Morse
2017-09-14 13:00         ` James Morse
2017-09-18 13:36         ` gengdongjiu
2017-09-18 13:36           ` gengdongjiu
2017-09-18 13:36           ` gengdongjiu
2017-09-18 13:36           ` gengdongjiu
2017-09-22 16:39           ` James Morse
2017-09-22 16:39             ` James Morse
2017-09-22 16:39             ` James Morse
2017-09-25 15:13             ` 答复: " gengdongjiu
2017-09-25 15:13               ` gengdongjiu
2017-09-25 15:13               ` gengdongjiu
2017-10-06 16:46               ` James Morse
2017-10-06 16:46                 ` James Morse
2017-10-06 16:46                 ` James Morse
2017-10-19  5:48                 ` gengdongjiu
2017-10-19  5:48                   ` gengdongjiu
2017-10-19  5:48                   ` gengdongjiu
2017-09-21  7:55         ` gengdongjiu
2017-09-21  7:55           ` gengdongjiu
2017-09-21  7:55           ` gengdongjiu
2017-09-21  7:55           ` gengdongjiu
2017-09-22 16:51           ` James Morse
2017-09-22 16:51             ` James Morse
2017-09-22 16:51             ` James Morse
2017-09-27 11:07             ` gengdongjiu
2017-09-27 11:07               ` gengdongjiu
2017-09-27 11:07               ` gengdongjiu
2017-09-27 11:07               ` gengdongjiu
2017-09-27 15:37               ` gengdongjiu
2017-09-27 15:37                 ` gengdongjiu
2017-09-27 15:37                 ` gengdongjiu
2017-10-06 17:31               ` James Morse
2017-10-06 17:31                 ` James Morse
2017-10-06 17:31                 ` James Morse
2017-10-19  7:49                 ` gengdongjiu
2017-10-19  7:49                   ` gengdongjiu
2017-10-19  7:49                   ` gengdongjiu
2017-10-19  7:49                   ` gengdongjiu
2017-08-28 10:38 ` [PATCH v6 7/7] arm64: kvm: handle SEI notification and pass the virtual syndrome Dongjiu Geng
2017-08-28 10:38   ` Dongjiu Geng
2017-08-28 10:38   ` Dongjiu Geng
2017-08-28 10:38   ` Dongjiu Geng
2017-08-31 17:43 ` [PATCH v6 0/7] Add RAS virtualization support for SEA/SEI notification type in KVM James Morse
2017-08-31 17:43   ` James Morse
2017-08-31 17:43   ` James Morse
2017-09-04 11:10   ` gengdongjiu
2017-09-04 11:10     ` gengdongjiu
2017-09-04 11:10     ` gengdongjiu
2017-09-04 11:10     ` gengdongjiu
2017-09-07 16:32     ` James Morse
2017-09-07 16:32       ` [Devel] " James Morse
2017-09-07 16:32       ` James Morse
2017-09-07 16:32       ` James Morse
2017-09-06 11:19 ` Peter Maydell
2017-09-06 11:19   ` Peter Maydell
2017-09-06 11:19   ` Peter Maydell
2017-09-06 11:29   ` gengdongjiu
2017-09-06 11:29     ` gengdongjiu
2017-09-06 11:29     ` gengdongjiu
2017-10-17 15:22 [PATCH v6 5/7] arm64: kvm: route synchronous external abort exceptions to el2 gengdongjiu
2017-10-17 15:22 ` 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=59BA77D9.4080201@arm.com \
    --to=james.morse@arm.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.org \
    --cc=gengdongjiu@huawei.com \
    --cc=john.garry@huawei.com \
    --cc=jonathan.cameron@huawei.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=mst@redhat.com \
    --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.