|
@@ -835,11 +835,13 @@ struct kvm_clock_data {
|
|
|
|
|
|
Capability: KVM_CAP_VCPU_EVENTS
|
|
|
Extended by: KVM_CAP_INTR_SHADOW
|
|
|
-Architectures: x86
|
|
|
-Type: vm ioctl
|
|
|
+Architectures: x86, arm64
|
|
|
+Type: vcpu ioctl
|
|
|
Parameters: struct kvm_vcpu_event (out)
|
|
|
Returns: 0 on success, -1 on error
|
|
|
|
|
|
+X86:
|
|
|
+
|
|
|
Gets currently pending exceptions, interrupts, and NMIs as well as related
|
|
|
states of the vcpu.
|
|
|
|
|
@@ -881,15 +883,52 @@ Only two fields are defined in the flags field:
|
|
|
- KVM_VCPUEVENT_VALID_SMM may be set in the flags field to signal that
|
|
|
smi contains a valid state.
|
|
|
|
|
|
+ARM64:
|
|
|
+
|
|
|
+If the guest accesses a device that is being emulated by the host kernel in
|
|
|
+such a way that a real device would generate a physical SError, KVM may make
|
|
|
+a virtual SError pending for that VCPU. This system error interrupt remains
|
|
|
+pending until the guest takes the exception by unmasking PSTATE.A.
|
|
|
+
|
|
|
+Running the VCPU may cause it to take a pending SError, or make an access that
|
|
|
+causes an SError to become pending. The event's description is only valid while
|
|
|
+the VPCU is not running.
|
|
|
+
|
|
|
+This API provides a way to read and write the pending 'event' state that is not
|
|
|
+visible to the guest. To save, restore or migrate a VCPU the struct representing
|
|
|
+the state can be read then written using this GET/SET API, along with the other
|
|
|
+guest-visible registers. It is not possible to 'cancel' an SError that has been
|
|
|
+made pending.
|
|
|
+
|
|
|
+A device being emulated in user-space may also wish to generate an SError. To do
|
|
|
+this the events structure can be populated by user-space. The current state
|
|
|
+should be read first, to ensure no existing SError is pending. If an existing
|
|
|
+SError is pending, the architecture's 'Multiple SError interrupts' rules should
|
|
|
+be followed. (2.5.3 of DDI0587.a "ARM Reliability, Availability, and
|
|
|
+Serviceability (RAS) Specification").
|
|
|
+
|
|
|
+struct kvm_vcpu_events {
|
|
|
+ struct {
|
|
|
+ __u8 serror_pending;
|
|
|
+ __u8 serror_has_esr;
|
|
|
+ /* Align it to 8 bytes */
|
|
|
+ __u8 pad[6];
|
|
|
+ __u64 serror_esr;
|
|
|
+ } exception;
|
|
|
+ __u32 reserved[12];
|
|
|
+};
|
|
|
+
|
|
|
4.32 KVM_SET_VCPU_EVENTS
|
|
|
|
|
|
Capability: KVM_CAP_VCPU_EVENTS
|
|
|
Extended by: KVM_CAP_INTR_SHADOW
|
|
|
-Architectures: x86
|
|
|
-Type: vm ioctl
|
|
|
+Architectures: x86, arm64
|
|
|
+Type: vcpu ioctl
|
|
|
Parameters: struct kvm_vcpu_event (in)
|
|
|
Returns: 0 on success, -1 on error
|
|
|
|
|
|
+X86:
|
|
|
+
|
|
|
Set pending exceptions, interrupts, and NMIs as well as related states of the
|
|
|
vcpu.
|
|
|
|
|
@@ -910,6 +949,13 @@ shall be written into the VCPU.
|
|
|
|
|
|
KVM_VCPUEVENT_VALID_SMM can only be set if KVM_CAP_X86_SMM is available.
|
|
|
|
|
|
+ARM64:
|
|
|
+
|
|
|
+Set the pending SError exception state for this VCPU. It is not possible to
|
|
|
+'cancel' an Serror that has been made pending.
|
|
|
+
|
|
|
+See KVM_GET_VCPU_EVENTS for the data structure.
|
|
|
+
|
|
|
|
|
|
4.33 KVM_GET_DEBUGREGS
|
|
|
|