@@ -1288,16 +1288,48 @@ ARM64:
User space may need to inject several types of events to the guest.
+Inject SError
+~~~~~~~~~~~~~
+
Set the pending SError exception state for this VCPU. It is not possible to
'cancel' an Serror that has been made pending.
-If the guest performed an access to I/O memory which could not be handled by
-userspace, for example because of missing instruction syndrome decode
-information or because there is no device mapped at the accessed IPA, then
-userspace can ask the kernel to inject an external abort using the address
-from the exiting fault on the VCPU. It is a programming error to set
-ext_dabt_pending after an exit which was not either KVM_EXIT_MMIO or
-KVM_EXIT_ARM_NISV. This feature is only available if the system supports
+Inject SEA
+~~~~~~~~~~
+
+- If the guest performed an access to I/O memory which could not be handled by
+ userspace, for example because of missing instruction syndrome decode
+ information or because there is no device mapped at the accessed IPA, then
+ userspace can ask the kernel to inject an external abort using the address
+ from the exiting fault on the VCPU.
+
+- If the guest consumed an uncorrectable memory error, and RAS extension in
+ Trusted Firmware choosed to notify PE with SEA, KVM and core kernel may have
+ to handle the memory poison consumption when host APEI was unable to claim
+ the SEA. For the following type of faults, KVM sends SIGBUS to current thread
+ (i.e. VMM in EL0) with si_code=BUS_OBJERR:
+
+ - Synchronous External abort, not on translation table walk or hardware
+ update of translation table.
+
+ - Synchronous External abort on translation table walk or hardware update of
+ translation table, level 1.
+
+ - Synchronous parity or ECC error on memory access, not on translation table
+ walk.
+
+ - Synchronous parity or ECC error on memory access on translation table walk
+ or hardware update of translation table, level 1.
+
+ If the memory error's physical address is available, si_addr will be the
+ error's host virtual address in VM's memory space; otherwise si_addr is zero.
+ When userspace VMM is interrupted by such SIGBUS, it can ask KVM to replay
+ an external abort into guest.
+
+It is a programming error to set ext_dabt_pending after an exit which was not
+KVM_EXIT_MMIO, not KVM_EXIT_ARM_NISV, and not interrupted by BUS_OBJERR SIGBUS.
+
+This feature is only available if the system supports
KVM_CAP_ARM_INJECT_EXT_DABT. This is a helper which provides commonality in
how userspace reports accesses for the above cases to guests, across different
userspace implementations. Nevertheless, userspace can still emulate all Arm
Add the documentation for new UAPI when guest consumes uncorrectable but recoverable memory error (UER). This new UAPI enables userspace to inject SEA into the guest. Tested: make htmldocs and proofreading Signed-off-by: Jiaqi Yan <jiaqiyan@google.com> --- Documentation/virt/kvm/api.rst | 46 ++++++++++++++++++++++++++++------ 1 file changed, 39 insertions(+), 7 deletions(-)