Blame view

kernel/linux-imx6_3.14.28/Documentation/virtual/kvm/s390-diag.txt 2.71 KB
6b13f685e   김민수   BSP 최초 추가
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
  The s390 DIAGNOSE call on KVM
  =============================
  
  KVM on s390 supports the DIAGNOSE call for making hypercalls, both for
  native hypercalls and for selected hypercalls found on other s390
  hypervisors.
  
  Note that bits are numbered as by the usual s390 convention (most significant
  bit on the left).
  
  
  General remarks
  ---------------
  
  DIAGNOSE calls by the guest cause a mandatory intercept. This implies
  all supported DIAGNOSE calls need to be handled by either KVM or its
  userspace.
  
  All DIAGNOSE calls supported by KVM use the RS-a format:
  
  --------------------------------------
  |  '83'  | R1 | R3 | B2 |     D2     |
  --------------------------------------
  0        8    12   16   20           31
  
  The second-operand address (obtained by the base/displacement calculation)
  is not used to address data. Instead, bits 48-63 of this address specify
  the function code, and bits 0-47 are ignored.
  
  The supported DIAGNOSE function codes vary by the userspace used. For
  DIAGNOSE function codes not specific to KVM, please refer to the
  documentation for the s390 hypervisors defining them.
  
  
  DIAGNOSE function code 'X'500' - KVM virtio functions
  -----------------------------------------------------
  
  If the function code specifies 0x500, various virtio-related functions
  are performed.
  
  General register 1 contains the virtio subfunction code. Supported
  virtio subfunctions depend on KVM's userspace. Generally, userspace
  provides either s390-virtio (subcodes 0-2) or virtio-ccw (subcode 3).
  
  Upon completion of the DIAGNOSE instruction, general register 2 contains
  the function's return code, which is either a return code or a subcode
  specific value.
  
  Subcode 0 - s390-virtio notification and early console printk
      Handled by userspace.
  
  Subcode 1 - s390-virtio reset
      Handled by userspace.
  
  Subcode 2 - s390-virtio set status
      Handled by userspace.
  
  Subcode 3 - virtio-ccw notification
      Handled by either userspace or KVM (ioeventfd case).
  
      General register 2 contains a subchannel-identification word denoting
      the subchannel of the virtio-ccw proxy device to be notified.
  
      General register 3 contains the number of the virtqueue to be notified.
  
      General register 4 contains a 64bit identifier for KVM usage (the
      kvm_io_bus cookie). If general register 4 does not contain a valid
      identifier, it is ignored.
  
      After completion of the DIAGNOSE call, general register 2 may contain
      a 64bit identifier (in the kvm_io_bus cookie case).
  
      See also the virtio standard for a discussion of this hypercall.
  
  
  DIAGNOSE function code 'X'501 - KVM breakpoint
  ----------------------------------------------
  
  If the function code specifies 0x501, breakpoint functions may be performed.
  This function code is handled by userspace.