aboutsummaryrefslogtreecommitdiffstats
path: root/virt/kvm
diff options
context:
space:
mode:
authorDongjiu Geng <gengdongjiu@huawei.com>2018-07-19 11:24:22 -0400
committerMarc Zyngier <marc.zyngier@arm.com>2018-07-21 11:02:30 -0400
commitb7b27facc7b50a5fce0afaa3df56157136ce181a (patch)
tree16536d93e55ccbdc8561c78ffab9d69966859c61 /virt/kvm
parent327432c2469e0069679009886556d15eeddeb0cc (diff)
arm/arm64: KVM: Add KVM_GET/SET_VCPU_EVENTS
For the migrating VMs, user space may need to know the exception state. For example, in the machine A, KVM make an SError pending, when migrate to B, KVM also needs to pend an SError. This new IOCTL exports user-invisible states related to SError. Together with appropriate user space changes, user space can get/set the SError exception state to do migrate/snapshot/suspend. Signed-off-by: Dongjiu Geng <gengdongjiu@huawei.com> Reviewed-by: James Morse <james.morse@arm.com> [expanded documentation wording] Signed-off-by: James Morse <james.morse@arm.com> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Diffstat (limited to 'virt/kvm')
-rw-r--r--virt/kvm/arm/arm.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/virt/kvm/arm/arm.c b/virt/kvm/arm/arm.c
index 8e66b89a3db2..1c72247aeb1d 100644
--- a/virt/kvm/arm/arm.c
+++ b/virt/kvm/arm/arm.c
@@ -1130,6 +1130,27 @@ long kvm_arch_vcpu_ioctl(struct file *filp,
1130 r = kvm_arm_vcpu_has_attr(vcpu, &attr); 1130 r = kvm_arm_vcpu_has_attr(vcpu, &attr);
1131 break; 1131 break;
1132 } 1132 }
1133#ifdef __KVM_HAVE_VCPU_EVENTS
1134 case KVM_GET_VCPU_EVENTS: {
1135 struct kvm_vcpu_events events;
1136
1137 if (kvm_arm_vcpu_get_events(vcpu, &events))
1138 return -EINVAL;
1139
1140 if (copy_to_user(argp, &events, sizeof(events)))
1141 return -EFAULT;
1142
1143 return 0;
1144 }
1145 case KVM_SET_VCPU_EVENTS: {
1146 struct kvm_vcpu_events events;
1147
1148 if (copy_from_user(&events, argp, sizeof(events)))
1149 return -EFAULT;
1150
1151 return kvm_arm_vcpu_set_events(vcpu, &events);
1152 }
1153#endif
1133 default: 1154 default:
1134 r = -EINVAL; 1155 r = -EINVAL;
1135 } 1156 }