Thread (19 messages) 19 messages, 5 authors, 2017-06-26
STALE3281d

[PATCH v3 2/3] arm64: kvm: inject SError with virtual syndrome

From: gengdongjiu <hidden>
Date: 2017-05-21 09:08:15
Also in: kvm, kvmarm, qemu-arm, qemu-devel

2017-05-13 1:24 GMT+08:00, James Morse [off-list ref]:
Hi gengdongjiu,

On 05/05/17 14:19, gengdongjiu wrote:
quoted
On 2017/5/2 23:37, James Morse wrote:
quoted
... I think you expect an SError to arrive at EL2 and have its ESR
recorded in
vcpu->arch.fault.vsesr_el2. Some time later KVM decides to inject an
SError into
the guest, and this ESR is reused...

We shouldn't do this. Qemu/kvmtool may want to inject a virtual-SError
that
never started as a physical-SError. Qemu/kvmtool may choose to notify
the guest
of RAS events via another mechanism, or not at all.

KVM should not give the guest an ESR value of its choice. For SError the
ESR
describes whether the error is corrected, correctable or fatal.
Qemu/kvmtool
must choose this.
quoted
Below is my previous solution:
For the SError, CPU will firstly trap to EL3 firmware and records the
syndrome to ESR_EL3.
Before jumping to El2 hypervisors, it will copy the esr_el3 to esr_el2.
(Copying the ESR value won't always be the right thing to do.)
  James,  thanks for your kindly explanation, understand you  thought.
quoted
so in order to pass this syndrome to vsesr_el2, using the esr_el2 value to
assign it.
quoted
If Qemu/kvmtool chooses the ESR value and ESR only describes whether the
error is corrected/correctable/fatal,
whether the information is not enough for the guest?
So the API should specify which of these three severities to use? I think
this
is too specific. The API should be useful for anything the VSE/VSESR
hardware
can do.

VSESR_EL2 is described in the RAS spec: 4.4.12 [0], its a 64 bit register.
I
think we should let Qemu/kvmtool specify any 64bit value here, but KVM
should
reject values that try to set bits described as RES0.

This would let Qemu/kvmtool specify any SError ISS, either setting
ESR_ELx.IDS
and some virtual-machine specific value, or encoding any severity in AET
and
choosing the DFSC/EA bits appropriately.
   it sounds reasonable
quoted
quoted
quoted
I think we need an API that allows Qemu/kvmtool to inject SError into a
guest,
but that isn't quite what you have here.
quoted
KVM provides APIs to inject the SError, Qemu/kvmtool call the API though
IOCTL, may be OK?
(just the one API call), yes.
   Ok, have added.

Thanks,

James

[0]
https://static.docs.arm.com/ddi0587/a/RAS%20Extension-release%20candidate_march_29.pdf

_______________________________________________
kvmarm mailing list
kvmarm at lists.cs.columbia.edu
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help