aboutsummaryrefslogtreecommitdiffstats
path: root/include/uapi/linux
diff options
context:
space:
mode:
authorCornelia Huck <cornelia.huck@de.ibm.com>2012-12-20 09:32:12 -0500
committerMarcelo Tosatti <mtosatti@redhat.com>2013-01-07 16:53:43 -0500
commitfa6b7fe9928d50444c29b29c8563746c6b0c6299 (patch)
tree0be284cf322eb82eefdb3df2743740e5578ba5c4 /include/uapi/linux
parentd6712df95bcfea597fc3ea2405ec13e8b69a7b8c (diff)
KVM: s390: Add support for channel I/O instructions.
Add a new capability, KVM_CAP_S390_CSS_SUPPORT, which will pass intercepts for channel I/O instructions to userspace. Only I/O instructions interacting with I/O interrupts need to be handled in-kernel: - TEST PENDING INTERRUPTION (tpi) dequeues and stores pending interrupts entirely in-kernel. - TEST SUBCHANNEL (tsch) dequeues pending interrupts in-kernel and exits via KVM_EXIT_S390_TSCH to userspace for subchannel- related processing. Reviewed-by: Marcelo Tosatti <mtosatti@redhat.com> Reviewed-by: Alexander Graf <agraf@suse.de> Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com> Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Diffstat (limited to 'include/uapi/linux')
-rw-r--r--include/uapi/linux/kvm.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/include/uapi/linux/kvm.h b/include/uapi/linux/kvm.h
index 80bb3b801116..8bb0bf83afc5 100644
--- a/include/uapi/linux/kvm.h
+++ b/include/uapi/linux/kvm.h
@@ -168,6 +168,7 @@ struct kvm_pit_config {
168#define KVM_EXIT_PAPR_HCALL 19 168#define KVM_EXIT_PAPR_HCALL 19
169#define KVM_EXIT_S390_UCONTROL 20 169#define KVM_EXIT_S390_UCONTROL 20
170#define KVM_EXIT_WATCHDOG 21 170#define KVM_EXIT_WATCHDOG 21
171#define KVM_EXIT_S390_TSCH 22
171 172
172/* For KVM_EXIT_INTERNAL_ERROR */ 173/* For KVM_EXIT_INTERNAL_ERROR */
173/* Emulate instruction failed. */ 174/* Emulate instruction failed. */
@@ -285,6 +286,15 @@ struct kvm_run {
285 __u64 ret; 286 __u64 ret;
286 __u64 args[9]; 287 __u64 args[9];
287 } papr_hcall; 288 } papr_hcall;
289 /* KVM_EXIT_S390_TSCH */
290 struct {
291 __u16 subchannel_id;
292 __u16 subchannel_nr;
293 __u32 io_int_parm;
294 __u32 io_int_word;
295 __u32 ipb;
296 __u8 dequeued;
297 } s390_tsch;
288 /* Fix the size of the union. */ 298 /* Fix the size of the union. */
289 char padding[256]; 299 char padding[256];
290 }; 300 };
@@ -645,6 +655,7 @@ struct kvm_ppc_smmu_info {
645#define KVM_CAP_IRQFD_RESAMPLE 82 655#define KVM_CAP_IRQFD_RESAMPLE 82
646#define KVM_CAP_PPC_BOOKE_WATCHDOG 83 656#define KVM_CAP_PPC_BOOKE_WATCHDOG 83
647#define KVM_CAP_PPC_HTAB_FD 84 657#define KVM_CAP_PPC_HTAB_FD 84
658#define KVM_CAP_S390_CSS_SUPPORT 85
648 659
649#ifdef KVM_CAP_IRQ_ROUTING 660#ifdef KVM_CAP_IRQ_ROUTING
650 661