Thread (49 messages) 49 messages, 4 authors, 2017-10-19

Re: [PATCH v6 5/7] arm64: kvm: route synchronous external abort exceptions to el2

From: James Morse <james.morse@arm.com>
Date: 2017-09-07 16:32:40
Also in: kvm, kvmarm, linux-arm-kernel, lkml

Hi Dongjiu Geng,

On 28/08/17 11:38, Dongjiu Geng wrote:
ARMv8.2 adds a new bit HCR_EL2.TEA which controls to
route synchronous external aborts to EL2, and adds a
trap control bit HCR_EL2.TERR which controls to
trap all Non-secure EL1&0 error record accesses to EL2.

This patch enables the two bits for the guest OS.
when an synchronous abort is generated in the guest OS,
it will trap to EL3 firmware, EL3 firmware will check the
HCR_EL2.TEA value to decide to jump to hypervisor or host
OS.
(This is what you are using this for, the patch has nothing to do with EL3.)

Enabling HCR_EL2.TERR makes error record access
from guest trap to EL2.

KVM already handles external aborts from lower exception levels, no more work
needs doing for TEA.

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).

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help