Skip to content

Commit da9a144

Browse files
committed
KVM: s390: provide a capability for AIS state migration
The AIS capability was introduced in 4.12, while the interface to migrate the state was added in 4.13. Unfortunately it is not possible for userspace to detect the migration capability without creating a flic kvm device. As in QEMU the cpu model detection runs on the "none" machine this will result in cpu model issues regarding the "ais" capability. To get the "ais" capability properly let's add a new KVM capability that tells userspace that AIS states can be migrated. Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com> Reviewed-by: Cornelia Huck <cohuck@redhat.com> Reviewed-by: David Hildenbrand <david@redhat.com> Acked-by: Halil Pasic <pasic@linux.vnet.ibm.com>
1 parent 4dd6f17 commit da9a144

File tree

4 files changed

+13
-0
lines changed

4 files changed

+13
-0
lines changed

Documentation/virtual/kvm/api.txt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4347,3 +4347,12 @@ This capability indicates that userspace can load HV_X64_MSR_VP_INDEX msr. Its
43474347
value is used to denote the target vcpu for a SynIC interrupt. For
43484348
compatibilty, KVM initializes this msr to KVM's internal vcpu index. When this
43494349
capability is absent, userspace can still query this msr's value.
4350+
4351+
8.13 KVM_CAP_S390_AIS_MIGRATION
4352+
4353+
Architectures: s390
4354+
Parameters: none
4355+
4356+
This capability indicates if the flic device will be able to get/set the
4357+
AIS states for migration via the KVM_DEV_FLIC_AISM_ALL attribute and allows
4358+
to discover this without having to create a flic device.

Documentation/virtual/kvm/devices/s390_flic.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,8 @@ struct kvm_s390_ais_all {
151151
to an ISC (MSB0 bit 0 to ISC 0 and so on). The combination of simm bit and
152152
nimm bit presents AIS mode for a ISC.
153153

154+
KVM_DEV_FLIC_AISM_ALL is indicated by KVM_CAP_S390_AIS_MIGRATION.
155+
154156
Note: The KVM_SET_DEVICE_ATTR/KVM_GET_DEVICE_ATTR device ioctls executed on
155157
FLIC with an unknown group or attribute gives the error code EINVAL (instead of
156158
ENXIO, as specified in the API documentation). It is not possible to conclude

arch/s390/kvm/kvm-s390.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -395,6 +395,7 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext)
395395
case KVM_CAP_S390_USER_INSTR0:
396396
case KVM_CAP_S390_CMMA_MIGRATION:
397397
case KVM_CAP_S390_AIS:
398+
case KVM_CAP_S390_AIS_MIGRATION:
398399
r = 1;
399400
break;
400401
case KVM_CAP_S390_MEM_OP:

include/uapi/linux/kvm.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -930,6 +930,7 @@ struct kvm_ppc_resize_hpt {
930930
#define KVM_CAP_PPC_SMT_POSSIBLE 147
931931
#define KVM_CAP_HYPERV_SYNIC2 148
932932
#define KVM_CAP_HYPERV_VP_INDEX 149
933+
#define KVM_CAP_S390_AIS_MIGRATION 150
933934

934935
#ifdef KVM_CAP_IRQ_ROUTING
935936

0 commit comments

Comments
 (0)