1 .. SPDX-License-Identifier: GPL-2.0 2 3 ============================= 4 The s390 DIAGNOSE call on KVM 5 ============================= 6 7 KVM on s390 supports the DIAGNOSE call for mak 8 native hypercalls and for selected hypercalls 9 hypervisors. 10 11 Note that bits are numbered as by the usual s3 12 bit on the left). 13 14 15 General remarks 16 --------------- 17 18 DIAGNOSE calls by the guest cause a mandatory 19 all supported DIAGNOSE calls need to be handle 20 userspace. 21 22 All DIAGNOSE calls supported by KVM use the RS 23 24 -------------------------------------- 25 | '83' | R1 | R3 | B2 | D2 | 26 -------------------------------------- 27 0 8 12 16 20 31 28 29 The second-operand address (obtained by the ba 30 is not used to address data. Instead, bits 48- 31 the function code, and bits 0-47 are ignored. 32 33 The supported DIAGNOSE function codes vary by 34 DIAGNOSE function codes not specific to KVM, p 35 documentation for the s390 hypervisors definin 36 37 38 DIAGNOSE function code 'X'500' - KVM virtio fu 39 ---------------------------------------------- 40 41 If the function code specifies 0x500, various 42 are performed. 43 44 General register 1 contains the virtio subfunc 45 virtio subfunctions depend on KVM's userspace. 46 provides either s390-virtio (subcodes 0-2) or 47 48 Upon completion of the DIAGNOSE instruction, g 49 the function's return code, which is either a 50 specific value. 51 52 Subcode 0 - s390-virtio notification and early 53 Handled by userspace. 54 55 Subcode 1 - s390-virtio reset 56 Handled by userspace. 57 58 Subcode 2 - s390-virtio set status 59 Handled by userspace. 60 61 Subcode 3 - virtio-ccw notification 62 Handled by either userspace or KVM (ioeven 63 64 General register 2 contains a subchannel-i 65 the subchannel of the virtio-ccw proxy dev 66 67 General register 3 contains the number of 68 69 General register 4 contains a 64bit identi 70 kvm_io_bus cookie). If general register 4 71 identifier, it is ignored. 72 73 After completion of the DIAGNOSE call, gen 74 a 64bit identifier (in the kvm_io_bus cook 75 error value, if an internal error occurred 76 77 See also the virtio standard for a discuss 78 79 80 DIAGNOSE function code 'X'501 - KVM breakpoint 81 ---------------------------------------------- 82 83 If the function code specifies 0x501, breakpoi 84 This function code is handled by userspace. 85 86 This diagnose function code has no subfunction 87 88 89 DIAGNOSE function code 'X'9C - Voluntary Time 90 ---------------------------------------------- 91 92 General register 1 contains the target CPU add 93 94 In a guest of a hypervisor like LPAR, KVM or z 95 DIAGNOSE with function code 0x9c may improve s 96 yielding the host CPU on which the guest CPU i 97 to another guest CPU, preferably the logical C 98 target CPU. 99 100 101 DIAG 'X'9C forwarding 102 +++++++++++++++++++++ 103 104 The guest may send a DIAGNOSE 0x9c in order to 105 other vcpu. An example is a Linux guest that t 106 that is currently holding a spinlock, but not 107 108 However, on the host the real cpu backing the 109 running. 110 Forwarding the DIAGNOSE 0x9c initially sent by 111 the backing cpu will hopefully cause that cpu, 112 the guest's vcpu, to be scheduled. 113 114 115 diag9c_forwarding_hz 116 KVM kernel parameter allowing to specify t 117 0x9c forwarding per second in the purpose 118 forwarding storm. 119 A value of 0 turns the forwarding off.
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.