forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge tag 'kvm-s390-20131211' of git://git.kernel.org/pub/scm/linux/k…
…ernel/git/kvms390/linux into kvm-next Some further s390 patches for kvm-next. Various improvements and bugfixes in the signal processor handling. Document kvm support for diagnose (s390 hypercalls). And last but not least, fix a bug in the s390 ioeventfd backend that was causing us grief in scenarios with 4G+ memory.
- Loading branch information
Showing
5 changed files
with
139 additions
and
12 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,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. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters