€•/+Œ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/coco/tdx-guest”Œ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/coco/tdx-guest”Œ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/coco/tdx-guest”Œ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/coco/tdx-guest”Œ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/coco/tdx-guest”Œ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/coco/tdx-guest”Œ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ŸŒA/var/lib/git/docbuild/linux/Documentation/virt/coco/tdx-guest.rst”h KubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒTDX Guest API Documentation”h]”hŒTDX Guest API Documentation”…””}”(hh»hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hh¶hžhhŸh³h Kubhµ)”}”(hhh]”(hº)”}”(hŒ1. General description”h]”hŒ1. General description”…””}”(hhÌhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hhÉhžhhŸh³h KubhŒ paragraph”“”)”}”(hŒŽThe TDX guest driver exposes IOCTL interfaces via the /dev/tdx-guest misc device to allow userspace to get certain TDX guest-specific details.”h]”hŒŽThe TDX guest driver exposes IOCTL interfaces via the /dev/tdx-guest misc device to allow userspace to get certain TDX guest-specific details.”…””}”(hhÜhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhŸh³h K hhÉhžhubeh}”(h]”Œgeneral-description”ah ]”h"]”Œ1. general description”ah$]”h&]”uh1h´hh¶hžhhŸh³h Kubhµ)”}”(hhh]”(hº)”}”(hŒ2. API description”h]”hŒ2. API description”…””}”(hhõhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hhòhžhhŸh³h KubhÛ)”}”(hŒrIn this section, for each supported IOCTL, the following information is provided along with a generic description.”h]”hŒrIn this section, for each supported IOCTL, the following information is provided along with a generic description.”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhŸh³h KhhòhžhubhŒ field_list”“”)”}”(hhh]”(hŒfield”“”)”}”(hhh]”(hŒ field_name”“”)”}”(hŒInput parameters”h]”hŒInput parameters”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjhŸh³h KubhŒ field_body”“”)”}”(hŒ3Parameters passed to the IOCTL and related details.”h]”hÛ)”}”(hj/h]”hŒ3Parameters passed to the IOCTL and related details.”…””}”(hj1hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhŸh³h Khj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhŸh³h Khjhžhubj)”}”(hhh]”(j)”}”(hŒOutput”h]”hŒOutput”…””}”(hjMhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjJhŸh³h Kubj,)”}”(hŒ]Details about output data and return value (with details about the non common error values). ”h]”hÛ)”}”(hŒ\Details about output data and return value (with details about the non common error values).”h]”hŒ\Details about output data and return value (with details about the non common error values).”…””}”(hj_hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhŸh³h Khj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjJubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhŸh³h Khjhžhubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhhòhžhhŸh³h Kubhµ)”}”(hhh]”(hº)”}”(hŒ2.1 TDX_CMD_GET_REPORT0”h]”hŒ2.1 TDX_CMD_GET_REPORT0”…””}”(hj‚hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hjhžhhŸh³h Kubj)”}”(hhh]”(j)”}”(hhh]”(j)”}”(hŒInput parameters”h]”hŒInput parameters”…””}”(hj–hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj“hŸh³h Kubj,)”}”(hŒstruct tdx_report_req”h]”hÛ)”}”(hj¦h]”hŒstruct tdx_report_req”…””}”(hj¨hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhŸh³h Khj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhŸh³h Khjhžhubj)”}”(hhh]”(j)”}”(hŒOutput”h]”hŒOutput”…””}”(hjÄhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÁhŸh³h Kubj,)”}”(hŒËUpon successful execution, TDREPORT data is copied to tdx_report_req.tdreport and return 0. Return -EINVAL for invalid operands, -EIO on TDCALL failure or standard error number on other common failures. ”h]”hÛ)”}”(hŒÊUpon successful execution, TDREPORT data is copied to tdx_report_req.tdreport and return 0. Return -EINVAL for invalid operands, -EIO on TDCALL failure or standard error number on other common failures.”h]”hŒÊUpon successful execution, TDREPORT data is copied to tdx_report_req.tdreport and return 0. Return -EINVAL for invalid operands, -EIO on TDCALL failure or standard error number on other common failures.”…””}”(hjÖhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhŸh³h KhjÒubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÁubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhŸh³h Khjhžhubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjhžhhŸh³h KubhÛ)”}”(hŒ§The TDX_CMD_GET_REPORT0 IOCTL can be used by the attestation software to get the TDREPORT0 (a.k.a. TDREPORT subtype 0) from the TDX module using TDCALL[TDG.MR.REPORT].”h]”hŒ§The TDX_CMD_GET_REPORT0 IOCTL can be used by the attestation software to get the TDREPORT0 (a.k.a. TDREPORT subtype 0) from the TDX module using TDCALL[TDG.MR.REPORT].”…””}”(hjöhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhŸh³h K hjhžhubhÛ)”}”(hXWA subtype index is added at the end of this IOCTL CMD to uniquely identify the subtype-specific TDREPORT request. Although the subtype option is mentioned in the TDX Module v1.0 specification, section titled "TDG.MR.REPORT", it is not currently used, and it expects this value to be 0. So to keep the IOCTL implementation simple, the subtype option was not included as part of the input ABI. However, in the future, if the TDX Module supports more than one subtype, a new IOCTL CMD will be created to handle it. To keep the IOCTL naming consistent, a subtype index is added as part of the IOCTL CMD.”h]”hX[A subtype index is added at the end of this IOCTL CMD to uniquely identify the subtype-specific TDREPORT request. Although the subtype option is mentioned in the TDX Module v1.0 specification, section titled “TDG.MR.REPORTâ€, it is not currently used, and it expects this value to be 0. So to keep the IOCTL implementation simple, the subtype option was not included as part of the input ABI. However, in the future, if the TDX Module supports more than one subtype, a new IOCTL CMD will be created to handle it. To keep the IOCTL naming consistent, a subtype index is added as part of the IOCTL CMD.”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhŸh³h K$hjhžhubeh}”(h]”Œtdx-cmd-get-report0”ah ]”h"]”Œ2.1 tdx_cmd_get_report0”ah$]”h&]”uh1h´hhòhžhhŸh³h Kubhµ)”}”(hhh]”(hº)”}”(hŒ Reference”h]”hŒ Reference”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hjhžhhŸh³h K.ubhÛ)”}”(hŒ)TDX reference material is collected here:”h]”hŒ)TDX reference material is collected here:”…””}”(hj+hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhŸh³h K0hjhžhubhÛ)”}”(hŒghttps://www.intel.com/content/www/us/en/developer/articles/technical/intel-trust-domain-extensions.html”h]”hŒ reference”“”)”}”(hj;h]”hŒghttps://www.intel.com/content/www/us/en/developer/articles/technical/intel-trust-domain-extensions.html”…””}”(hj?hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”j;uh1j=hj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhŸh³h K2hjhžhubhÛ)”}”(hŒUThe driver is based on TDX module specification v1.0 and TDX GHCI specification v1.0.”h]”hŒUThe driver is based on TDX module specification v1.0 and TDX GHCI specification v1.0.”…””}”(hjShžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhŸh³h K4hjhžhubeh}”(h]”Œ reference”ah ]”h"]”Œ reference”ah$]”h&]”uh1h´hhòhžhhŸh³h K.ubeh}”(h]”Œapi-description”ah ]”h"]”Œ2. api description”ah$]”h&]”uh1h´hh¶hžhhŸh³h Kubeh}”(h]”Œtdx-guest-api-documentation”ah ]”h"]”Œtdx guest api documentation”ah$]”h&]”uh1h´hhhžhhŸh³h Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”h³uh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)”}”(h¹NŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”jœŒerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”h³Œ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”(jvjshïhìjnjkjjjfjcuŒ nametypes”}”(jv‰hï‰jn‰j‰jf‰uh}”(jsh¶hìhÉjkhòjjjcjuŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nhžhub.