€•!SŒsphinx.addnodes”Œdocument”“”)”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)”}”(hhh]”(hŒ pending_xref”“”)”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…””}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ+/translations/zh_CN/virt/kvm/s390/s390-diag”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)”}”(hhh]”hŒChinese (Traditional)”…””}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ+/translations/zh_TW/virt/kvm/s390/s390-diag”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒItalian”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ+/translations/it_IT/virt/kvm/s390/s390-diag”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ+/translations/ja_JP/virt/kvm/s390/s390-diag”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ+/translations/ko_KR/virt/kvm/s390/s390-diag”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒPortuguese (Brazilian)”…””}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ+/translations/pt_BR/virt/kvm/s390/s390-diag”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒSpanish”…””}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ+/translations/sp_SP/virt/kvm/s390/s390-diag”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)”}”(hŒ SPDX-License-Identifier: GPL-2.0”h]”hŒ SPDX-License-Identifier: GPL-2.0”…””}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒE/var/lib/git/docbuild/linux/Documentation/virt/kvm/s390/s390-diag.rst”h´KubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒThe s390 DIAGNOSE call on KVM”h]”hŒThe s390 DIAGNOSE call on KVM”…””}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhŒ paragraph”“”)”}”(hŒ•KVM on s390 supports the DIAGNOSE call for making hypercalls, both for native hypercalls and for selected hypercalls found on other s390 hypervisors.”h]”hŒ•KVM on s390 supports the DIAGNOSE call for making hypercalls, both for native hypercalls and for selected hypercalls found on other s390 hypervisors.”…””}”(hhßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhhÊh²hubhÞ)”}”(hŒ_Note that bits are numbered as by the usual s390 convention (most significant bit on the left).”h]”hŒ_Note that bits are numbered as by the usual s390 convention (most significant bit on the left).”…””}”(hhíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K hhÊh²hubhÉ)”}”(hhh]”(hÎ)”}”(hŒGeneral remarks”h]”hŒGeneral remarks”…””}”(hhþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhûh²hh³hÇh´KubhÞ)”}”(hŒ•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.”h]”hŒ•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.”…””}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khhûh²hubhÞ)”}”(hŒ9All DIAGNOSE calls supported by KVM use the RS-a format::”h]”hŒ8All DIAGNOSE calls supported by KVM use the RS-a format:”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khhûh²hubhŒ literal_block”“”)”}”(hŒœ-------------------------------------- | '83' | R1 | R3 | B2 | D2 | -------------------------------------- 0 8 12 16 20 31”h]”hŒœ-------------------------------------- | '83' | R1 | R3 | B2 | D2 | -------------------------------------- 0 8 12 16 20 31”…””}”hj*sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j(h³hÇh´Khhûh²hubhÞ)”}”(hŒÁ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.”h]”hŒÁ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.”…””}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khhûh²hubhÞ)”}”(hŒ¼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.”h]”hŒ¼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.”…””}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K!hhûh²hubeh}”(h]”Œgeneral-remarks”ah ]”h"]”Œgeneral remarks”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KubhÉ)”}”(hhh]”(hÎ)”}”(hŒ.DIAGNOSE function code 'X'500' - KVM functions”h]”hŒ4DIAGNOSE function code ‘X’500’ - KVM functions”…””}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj\h²hh³hÇh´K'ubhÞ)”}”(hŒoIf the function code specifies 0x500, various KVM-specific functions are performed, including virtio functions.”h]”hŒoIf the function code specifies 0x500, various KVM-specific functions are performed, including virtio functions.”…””}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K)hj\h²hubhÞ)”}”(hŒÜGeneral register 1 contains the subfunction code. Supported subfunctions depend on KVM's userspace. Regarding virtio subfunctions, generally userspace provides either s390-virtio (subcodes 0-2) or virtio-ccw (subcode 3).”h]”hŒÞGeneral register 1 contains the subfunction code. Supported subfunctions depend on KVM’s userspace. Regarding virtio subfunctions, generally userspace provides either s390-virtio (subcodes 0-2) or virtio-ccw (subcode 3).”…””}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K,hj\h²hubhÞ)”}”(hŒŸ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.”h]”hŒ¡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.”…””}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K1hj\h²hubhÞ)”}”(hŒ[If the specified subfunction is not supported, a SPECIFICATION exception will be triggered.”h]”hŒ[If the specified subfunction is not supported, a SPECIFICATION exception will be triggered.”…””}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K5hj\h²hubhŒdefinition_list”“”)”}”(hhh]”(hŒdefinition_list_item”“”)”}”(hŒTSubcode 0 - s390-virtio notification and early console printk Handled by userspace. ”h]”(hŒterm”“”)”}”(hŒ=Subcode 0 - s390-virtio notification and early console printk”h]”hŒ=Subcode 0 - s390-virtio notification and early console printk”…””}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j°h³hÇh´K9hj¬ubhŒ definition”“”)”}”(hhh]”hÞ)”}”(hŒHandled by userspace.”h]”hŒHandled by userspace.”…””}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K9hjÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jªh³hÇh´K9hj§ubj«)”}”(hŒ4Subcode 1 - s390-virtio reset Handled by userspace. ”h]”(j±)”}”(hŒSubcode 1 - s390-virtio reset”h]”hŒSubcode 1 - s390-virtio reset”…””}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j°h³hÇh´K