diff options
author | Fei Li <sherrylf@linux.vnet.ibm.com> | 2017-01-19 17:02:26 +0100 |
---|---|---|
committer | Christian Borntraeger <borntraeger@de.ibm.com> | 2017-04-06 13:15:36 +0200 |
commit | 08fab50da669e5ee5a542592895fcb63be3cd7b1 (patch) | |
tree | 5a5a6da1eabfa35708d2f96e4c510f2433374052 /arch/s390 | |
parent | 4e0b1ab72b8af961bcaca9ec1475279c1cd9579c (diff) | |
download | linux-stable-08fab50da669e5ee5a542592895fcb63be3cd7b1.tar.gz linux-stable-08fab50da669e5ee5a542592895fcb63be3cd7b1.tar.bz2 linux-stable-08fab50da669e5ee5a542592895fcb63be3cd7b1.zip |
KVM: s390: interface for suppressible I/O adapters
In order to properly implement adapter-interruption suppression, we
need a way for userspace to specify which adapters are subject to
suppression. Let's convert the existing (and unused) 'pad' field into
a 'flags' field and define a flag value for suppressible adapters.
Besides, add documentation for the interface.
Signed-off-by: Fei Li <sherrylf@linux.vnet.ibm.com>
Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Diffstat (limited to 'arch/s390')
-rw-r--r-- | arch/s390/include/asm/kvm_host.h | 1 | ||||
-rw-r--r-- | arch/s390/include/uapi/asm/kvm.h | 4 | ||||
-rw-r--r-- | arch/s390/kvm/interrupt.c | 2 |
3 files changed, 6 insertions, 1 deletions
diff --git a/arch/s390/include/asm/kvm_host.h b/arch/s390/include/asm/kvm_host.h index 1af090d93bf5..499c72c2280d 100644 --- a/arch/s390/include/asm/kvm_host.h +++ b/arch/s390/include/asm/kvm_host.h @@ -621,6 +621,7 @@ struct s390_io_adapter { bool maskable; bool masked; bool swap; + bool suppressible; struct rw_semaphore maps_lock; struct list_head maps; atomic_t nr_maps; diff --git a/arch/s390/include/uapi/asm/kvm.h b/arch/s390/include/uapi/asm/kvm.h index 5bd23cfd9ae5..5fa144d1df0a 100644 --- a/arch/s390/include/uapi/asm/kvm.h +++ b/arch/s390/include/uapi/asm/kvm.h @@ -41,9 +41,11 @@ struct kvm_s390_io_adapter { __u8 isc; __u8 maskable; __u8 swap; - __u8 pad; + __u8 flags; }; +#define KVM_S390_ADAPTER_SUPPRESSIBLE 0x01 + #define KVM_S390_IO_ADAPTER_MASK 1 #define KVM_S390_IO_ADAPTER_MAP 2 #define KVM_S390_IO_ADAPTER_UNMAP 3 diff --git a/arch/s390/kvm/interrupt.c b/arch/s390/kvm/interrupt.c index 311eef0df855..dba51ad62570 100644 --- a/arch/s390/kvm/interrupt.c +++ b/arch/s390/kvm/interrupt.c @@ -1997,6 +1997,8 @@ static int register_io_adapter(struct kvm_device *dev, adapter->maskable = adapter_info.maskable; adapter->masked = false; adapter->swap = adapter_info.swap; + adapter->suppressible = (adapter_info.flags) & + KVM_S390_ADAPTER_SUPPRESSIBLE; dev->kvm->arch.adapters[adapter->id] = adapter; return 0; |