sphinx.addnodesdocument)}( rawsourcechildren](docutils.nodessubstitution_definition)}(h&.. |AArch32| replace:: :term:`AArch32`h]h pending_xref)}(h:term:`AArch32`h]h inline)}(hhh]h TextAArch32}(hhparenthuba attributes}(ids]classes](xrefstdstd-termenames]dupnames]backrefs]utagnamehh!hubah"}(h$]h&]h+]h-]h/]refdoccomponents/debugfs-design refdomainh)reftypeterm refexplicitrefwarn reftargetAArch32uh1hsource lineKh!h ubah"}(h$]h&]h+]AArch32ah-]h/]uh1h hAhBhCKh!hhhubh )}(h&.. |AArch64| replace:: :term:`AArch64`h]h)}(h:term:`AArch64`h]h)}(hhQh]hAArch64}(hhh!hSubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!hOubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainh]reftypeterm refexplicitrefwarnh?AArch64uh1hhAhBhCKh!hKubah"}(h$]h&]h+]AArch64ah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |AMU| replace:: :term:`AMU`h]h)}(h :term:`AMU`h]h)}(hh|h]hAMU}(hhh!h~ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!hzubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainhreftypeterm refexplicitrefwarnh?AMUuh1hhAhBhCKh!hvubah"}(h$]h&]h+]AMUah-]h/]uh1h hAhBhCKh!hhhubh )}(h&.. |AMUs| replace:: :term:`AMUs `h]h)}(h:term:`AMUs `h]h)}(hhh]hAMUs}(hhh!hubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!hubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainhreftypeterm refexplicitrefwarnh?AMUuh1hhAhBhCKh!hubah"}(h$]h&]h+]AMUsah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |API| replace:: :term:`API`h]h)}(h :term:`API`h]h)}(hhh]hAPI}(hhh!hubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!hubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainhތreftypeterm refexplicitrefwarnh?APIuh1hhAhBhCKh!hubah"}(h$]h&]h+]APIah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |BTI| replace:: :term:`BTI`h]h)}(h :term:`BTI`h]h)}(hhh]hBTI}(hhh!hubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!hubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj reftypeterm refexplicitrefwarnh?BTIuh1hhAhBhCKh!hubah"}(h$]h&]h+]BTIah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |CoT| replace:: :term:`CoT`h]h)}(h :term:`CoT`h]h)}(hj(h]hCoT}(hhh!j*ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j&ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj4reftypeterm refexplicitrefwarnh?CoTuh1hhAhBhCKh!j"ubah"}(h$]h&]h+]CoTah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |COT| replace:: :term:`COT`h]h)}(h :term:`COT`h]h)}(hjSh]hCOT}(hhh!jUubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jQubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj_reftypeterm refexplicitrefwarnh?COTuh1hhAhBhCKh!jMubah"}(h$]h&]h+]COTah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |CSS| replace:: :term:`CSS`h]h)}(h :term:`CSS`h]h)}(hj~h]hCSS}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j|ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?CSSuh1hhAhBhCK h!jxubah"}(h$]h&]h+]CSSah-]h/]uh1h hAhBhCK h!hhhubh )}(h.. |CVE| replace:: :term:`CVE`h]h)}(h :term:`CVE`h]h)}(hjh]hCVE}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?CVEuh1hhAhBhCK h!jubah"}(h$]h&]h+]CVEah-]h/]uh1h hAhBhCK h!hhhubh )}(h.. |DTB| replace:: :term:`DTB`h]h)}(h :term:`DTB`h]h)}(hjh]hDTB}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?DTBuh1hhAhBhCK h!jubah"}(h$]h&]h+]DTBah-]h/]uh1h hAhBhCK h!hhhubh )}(h .. |DS-5| replace:: :term:`DS-5`h]h)}(h :term:`DS-5`h]h)}(hjh]hDS-5}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj reftypeterm refexplicitrefwarnh?DS-5uh1hhAhBhCK h!jubah"}(h$]h&]h+]DS-5ah-]h/]uh1h hAhBhCK h!hhhubh )}(h.. |DSU| replace:: :term:`DSU`h]h)}(h :term:`DSU`h]h)}(hj*h]hDSU}(hhh!j,ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j(ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj6reftypeterm refexplicitrefwarnh?DSUuh1hhAhBhCK h!j$ubah"}(h$]h&]h+]DSUah-]h/]uh1h hAhBhCK h!hhhubh )}(h.. |DT| replace:: :term:`DT`h]h)}(h :term:`DT`h]h)}(hjUh]hDT}(hhh!jWubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jSubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjareftypeterm refexplicitrefwarnh?DTuh1hhAhBhCKh!jOubah"}(h$]h&]h+]DTah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |EL| replace:: :term:`EL`h]h)}(h :term:`EL`h]h)}(hjh]hEL}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j~ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?ELuh1hhAhBhCKh!jzubah"}(h$]h&]h+]ELah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |EHF| replace:: :term:`EHF`h]h)}(h :term:`EHF`h]h)}(hjh]hEHF}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?EHFuh1hhAhBhCKh!jubah"}(h$]h&]h+]EHFah-]h/]uh1h hAhBhCKh!hhhubh )}(h".. |FCONF| replace:: :term:`FCONF`h]h)}(h :term:`FCONF`h]h)}(hjh]hFCONF}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?FCONFuh1hhAhBhCKh!jubah"}(h$]h&]h+]FCONFah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |FDT| replace:: :term:`FDT`h]h)}(h :term:`FDT`h]h)}(hjh]hFDT}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj reftypeterm refexplicitrefwarnh?FDTuh1hhAhBhCKh!jubah"}(h$]h&]h+]FDTah-]h/]uh1h hAhBhCKh!hhhubh )}(h .. |FF-A| replace:: :term:`FF-A`h]h)}(h :term:`FF-A`h]h)}(hj,h]hFF-A}(hhh!j.ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j*ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj8reftypeterm refexplicitrefwarnh?FF-Auh1hhAhBhCKh!j&ubah"}(h$]h&]h+]FF-Aah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |FIP| replace:: :term:`FIP`h]h)}(h :term:`FIP`h]h)}(hjWh]hFIP}(hhh!jYubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jUubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjcreftypeterm refexplicitrefwarnh?FIPuh1hhAhBhCKh!jQubah"}(h$]h&]h+]FIPah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |FVP| replace:: :term:`FVP`h]h)}(h :term:`FVP`h]h)}(hjh]hFVP}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?FVPuh1hhAhBhCKh!j|ubah"}(h$]h&]h+]FVPah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |FWU| replace:: :term:`FWU`h]h)}(h :term:`FWU`h]h)}(hjh]hFWU}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?FWUuh1hhAhBhCKh!jubah"}(h$]h&]h+]FWUah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |GIC| replace:: :term:`GIC`h]h)}(h :term:`GIC`h]h)}(hjh]hGIC}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?GICuh1hhAhBhCKh!jubah"}(h$]h&]h+]GICah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |ISA| replace:: :term:`ISA`h]h)}(h :term:`ISA`h]h)}(hjh]hISA}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?ISAuh1hhAhBhCKh!jubah"}(h$]h&]h+]ISAah-]h/]uh1h hAhBhCKh!hhhubh )}(h$.. |Linaro| replace:: :term:`Linaro`h]h)}(h:term:`Linaro`h]h)}(hj.h]hLinaro}(hhh!j0ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j,ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj:reftypeterm refexplicitrefwarnh?Linarouh1hhAhBhCKh!j(ubah"}(h$]h&]h+]Linaroah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |MMU| replace:: :term:`MMU`h]h)}(h :term:`MMU`h]h)}(hjYh]hMMU}(hhh!j[ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jWubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjereftypeterm refexplicitrefwarnh?MMUuh1hhAhBhCKh!jSubah"}(h$]h&]h+]MMUah-]h/]uh1h hAhBhCKh!hhhubh )}(h .. |MPAM| replace:: :term:`MPAM`h]h)}(h :term:`MPAM`h]h)}(hjh]hMPAM}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?MPAMuh1hhAhBhCKh!j~ubah"}(h$]h&]h+]MPAMah-]h/]uh1h hAhBhCKh!hhhubh )}(h .. |MPMM| replace:: :term:`MPMM`h]h)}(h :term:`MPMM`h]h)}(hjh]hMPMM}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?MPMMuh1hhAhBhCKh!jubah"}(h$]h&]h+]MPMMah-]h/]uh1h hAhBhCKh!hhhubh )}(h".. |MPIDR| replace:: :term:`MPIDR`h]h)}(h :term:`MPIDR`h]h)}(hjh]hMPIDR}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?MPIDRuh1hhAhBhCKh!jubah"}(h$]h&]h+]MPIDRah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |MTE| replace:: :term:`MTE`h]h)}(h :term:`MTE`h]h)}(hjh]hMTE}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?MTEuh1hhAhBhCKh!jubah"}(h$]h&]h+]MTEah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |OEN| replace:: :term:`OEN`h]h)}(h :term:`OEN`h]h)}(hj0h]hOEN}(hhh!j2ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j.ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj<reftypeterm refexplicitrefwarnh?OENuh1hhAhBhCKh!j*ubah"}(h$]h&]h+]OENah-]h/]uh1h hAhBhCKh!hhhubh )}(h$.. |OP-TEE| replace:: :term:`OP-TEE`h]h)}(h:term:`OP-TEE`h]h)}(hj[h]hOP-TEE}(hhh!j]ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jYubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjgreftypeterm refexplicitrefwarnh?OP-TEEuh1hhAhBhCK h!jUubah"}(h$]h&]h+]OP-TEEah-]h/]uh1h hAhBhCK h!hhhubh )}(h.. |OTE| replace:: :term:`OTE`h]h)}(h :term:`OTE`h]h)}(hjh]hOTE}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?OTEuh1hhAhBhCK!h!jubah"}(h$]h&]h+]OTEah-]h/]uh1h hAhBhCK!h!hhhubh )}(h.. |PDD| replace:: :term:`PDD`h]h)}(h :term:`PDD`h]h)}(hjh]hPDD}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?PDDuh1hhAhBhCK"h!jubah"}(h$]h&]h+]PDDah-]h/]uh1h hAhBhCK"h!hhhubh )}(h".. |PAUTH| replace:: :term:`PAUTH`h]h)}(h :term:`PAUTH`h]h)}(hjh]hPAUTH}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?PAUTHuh1hhAhBhCK#h!jubah"}(h$]h&]h+]PAUTHah-]h/]uh1h hAhBhCK#h!hhhubh )}(h.. |PMF| replace:: :term:`PMF`h]h)}(h :term:`PMF`h]h)}(hjh]hPMF}(hhh!j ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?PMFuh1hhAhBhCK$h!jubah"}(h$]h&]h+]PMFah-]h/]uh1h hAhBhCK$h!hhhubh )}(h .. |PSCI| replace:: :term:`PSCI`h]h)}(h :term:`PSCI`h]h)}(hj2h]hPSCI}(hhh!j4ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j0ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj>reftypeterm refexplicitrefwarnh?PSCIuh1hhAhBhCK%h!j,ubah"}(h$]h&]h+]PSCIah-]h/]uh1h hAhBhCK%h!hhhubh )}(h.. |RAS| replace:: :term:`RAS`h]h)}(h :term:`RAS`h]h)}(hj]h]hRAS}(hhh!j_ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j[ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjireftypeterm refexplicitrefwarnh?RASuh1hhAhBhCK&h!jWubah"}(h$]h&]h+]RASah-]h/]uh1h hAhBhCK&h!hhhubh )}(h.. |ROT| replace:: :term:`ROT`h]h)}(h :term:`ROT`h]h)}(hjh]hROT}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?ROTuh1hhAhBhCK'h!jubah"}(h$]h&]h+]ROTah-]h/]uh1h hAhBhCK'h!hhhubh )}(h .. |SCMI| replace:: :term:`SCMI`h]h)}(h :term:`SCMI`h]h)}(hjh]hSCMI}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?SCMIuh1hhAhBhCK(h!jubah"}(h$]h&]h+]SCMIah-]h/]uh1h hAhBhCK(h!hhhubh )}(h.. |SCP| replace:: :term:`SCP`h]h)}(h :term:`SCP`h]h)}(hjh]hSCP}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?SCPuh1hhAhBhCK)h!jubah"}(h$]h&]h+]SCPah-]h/]uh1h hAhBhCK)h!hhhubh )}(h .. |SDEI| replace:: :term:`SDEI`h]h)}(h :term:`SDEI`h]h)}(hj h]hSDEI}(hhh!j ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?SDEIuh1hhAhBhCK*h!jubah"}(h$]h&]h+]SDEIah-]h/]uh1h hAhBhCK*h!hhhubh )}(h.. |SDS| replace:: :term:`SDS`h]h)}(h :term:`SDS`h]h)}(hj4h]hSDS}(hhh!j6ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j2ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj@reftypeterm refexplicitrefwarnh?SDSuh1hhAhBhCK+h!j.ubah"}(h$]h&]h+]SDSah-]h/]uh1h hAhBhCK+h!hhhubh )}(h.. |SEA| replace:: :term:`SEA`h]h)}(h :term:`SEA`h]h)}(hj_h]hSEA}(hhh!jaubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j]ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjkreftypeterm refexplicitrefwarnh?SEAuh1hhAhBhCK,h!jYubah"}(h$]h&]h+]SEAah-]h/]uh1h hAhBhCK,h!hhhubh )}(h.. |SiP| replace:: :term:`SiP`h]h)}(h :term:`SiP`h]h)}(hjh]hSiP}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?SiPuh1hhAhBhCK-h!jubah"}(h$]h&]h+]SiPah-]h/]uh1h hAhBhCK-h!hhhubh )}(h.. |SIP| replace:: :term:`SIP`h]h)}(h :term:`SIP`h]h)}(hjh]hSIP}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?SIPuh1hhAhBhCK.h!jubah"}(h$]h&]h+]SIPah-]h/]uh1h hAhBhCK.h!hhhubh )}(h.. |SMC| replace:: :term:`SMC`h]h)}(h :term:`SMC`h]h)}(hjh]hSMC}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?SMCuh1hhAhBhCK/h!jubah"}(h$]h&]h+]SMCah-]h/]uh1h hAhBhCK/h!hhhubh )}(h".. |SMCCC| replace:: :term:`SMCCC`h]h)}(h :term:`SMCCC`h]h)}(hj h]hSMCCC}(hhh!j ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?SMCCCuh1hhAhBhCK0h!jubah"}(h$]h&]h+]SMCCCah-]h/]uh1h hAhBhCK0h!hhhubh )}(h.. |SoC| replace:: :term:`SoC`h]h)}(h :term:`SoC`h]h)}(hj6h]hSoC}(hhh!j8ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j4ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjBreftypeterm refexplicitrefwarnh?SoCuh1hhAhBhCK1h!j0ubah"}(h$]h&]h+]SoCah-]h/]uh1h hAhBhCK1h!hhhubh )}(h.. |SP| replace:: :term:`SP`h]h)}(h :term:`SP`h]h)}(hjah]hSP}(hhh!jcubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j_ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjmreftypeterm refexplicitrefwarnh?SPuh1hhAhBhCK2h!j[ubah"}(h$]h&]h+]SPah-]h/]uh1h hAhBhCK2h!hhhubh )}(h.. |SPD| replace:: :term:`SPD`h]h)}(h :term:`SPD`h]h)}(hjh]hSPD}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?SPDuh1hhAhBhCK3h!jubah"}(h$]h&]h+]SPDah-]h/]uh1h hAhBhCK3h!hhhubh )}(h.. |SPM| replace:: :term:`SPM`h]h)}(h :term:`SPM`h]h)}(hjh]hSPM}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?SPMuh1hhAhBhCK4h!jubah"}(h$]h&]h+]SPMah-]h/]uh1h hAhBhCK4h!hhhubh )}(h .. |SSBS| replace:: :term:`SSBS`h]h)}(h :term:`SSBS`h]h)}(hjh]hSSBS}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?SSBSuh1hhAhBhCK5h!jubah"}(h$]h&]h+]SSBSah-]h/]uh1h hAhBhCK5h!hhhubh )}(h.. |SVE| replace:: :term:`SVE`h]h)}(h :term:`SVE`h]h)}(hj h]hSVE}(hhh!j ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj reftypeterm refexplicitrefwarnh?SVEuh1hhAhBhCK6h!j ubah"}(h$]h&]h+]SVEah-]h/]uh1h hAhBhCK6h!hhhubh )}(h.. |TBB| replace:: :term:`TBB`h]h)}(h :term:`TBB`h]h)}(hj8 h]hTBB}(hhh!j: ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j6 ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjD reftypeterm refexplicitrefwarnh?TBBuh1hhAhBhCK7h!j2 ubah"}(h$]h&]h+]TBBah-]h/]uh1h hAhBhCK7h!hhhubh )}(h .. |TBBR| replace:: :term:`TBBR`h]h)}(h :term:`TBBR`h]h)}(hjc h]hTBBR}(hhh!je ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!ja ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjo reftypeterm refexplicitrefwarnh?TBBRuh1hhAhBhCK8h!j] ubah"}(h$]h&]h+]TBBRah-]h/]uh1h hAhBhCK8h!hhhubh )}(h.. |TEE| replace:: :term:`TEE`h]h)}(h :term:`TEE`h]h)}(hj h]hTEE}(hhh!j ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj reftypeterm refexplicitrefwarnh?TEEuh1hhAhBhCK9h!j ubah"}(h$]h&]h+]TEEah-]h/]uh1h hAhBhCK9h!hhhubh )}(h .. |TF-A| replace:: :term:`TF-A`h]h)}(h :term:`TF-A`h]h)}(hj h]hTF-A}(hhh!j ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj reftypeterm refexplicitrefwarnh?TF-Auh1hhAhBhCK:h!j ubah"}(h$]h&]h+]TF-Aah-]h/]uh1h hAhBhCK:h!hhhubh )}(h .. |TF-M| replace:: :term:`TF-M`h]h)}(h :term:`TF-M`h]h)}(hj h]hTF-M}(hhh!j ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj reftypeterm refexplicitrefwarnh?TF-Muh1hhAhBhCK;h!j ubah"}(h$]h&]h+]TF-Mah-]h/]uh1h hAhBhCK;h!hhhubh )}(h.. |TLB| replace:: :term:`TLB`h]h)}(h :term:`TLB`h]h)}(hj h]hTLB}(hhh!j ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj reftypeterm refexplicitrefwarnh?TLBuh1hhAhBhCKh!j_ ubah"}(h$]h&]h+]TRNGah-]h/]uh1h hAhBhCK>h!hhhubh )}(h.. |TSP| replace:: :term:`TSP`h]h)}(h :term:`TSP`h]h)}(hj h]hTSP}(hhh!j ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj reftypeterm refexplicitrefwarnh?TSPuh1hhAhBhCK?h!j ubah"}(h$]h&]h+]TSPah-]h/]uh1h hAhBhCK?h!hhhubh )}(h.. |TZC| replace:: :term:`TZC`h]h)}(h :term:`TZC`h]h)}(hj h]hTZC}(hhh!j ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj reftypeterm refexplicitrefwarnh?TZCuh1hhAhBhCK@h!j ubah"}(h$]h&]h+]TZCah-]h/]uh1h hAhBhCK@h!hhhubh )}(h".. |UBSAN| replace:: :term:`UBSAN`h]h)}(h :term:`UBSAN`h]h)}(hj h]hUBSAN}(hhh!j ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj reftypeterm refexplicitrefwarnh?UBSANuh1hhAhBhCKAh!j ubah"}(h$]h&]h+]UBSANah-]h/]uh1h hAhBhCKAh!hhhubh )}(h .. |UEFI| replace:: :term:`UEFI`h]h)}(h :term:`UEFI`h]h)}(hj h]hUEFI}(hhh!j ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj reftypeterm refexplicitrefwarnh?UEFIuh1hhAhBhCKBh!j ubah"}(h$]h&]h+]UEFIah-]h/]uh1h hAhBhCKBh!hhhubh )}(h .. |WDOG| replace:: :term:`WDOG`h]h)}(h :term:`WDOG`h]h)}(hj< h]hWDOG}(hhh!j> ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j: ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjH reftypeterm refexplicitrefwarnh?WDOGuh1hhAhBhCKCh!j6 ubah"}(h$]h&]h+]WDOGah-]h/]uh1h hAhBhCKCh!hhhubh )}(h!.. |XLAT| replace:: :term:`XLAT` h]h)}(h :term:`XLAT`h]h)}(hjg h]hXLAT}(hhh!ji ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!je ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjs reftypeterm refexplicitrefwarnh?XLATuh1hhAhBhCKDh!ja ubah"}(h$]h&]h+]XLATah-]h/]uh1h hAhBhCKDh!hhhubh section)}(hhh](h title)}(hDebug FSh]hDebug FS}(hj h!j hhhANhCNubah"}(h$]h&]h+]h-]h/]refidid1uh1j h!j hhhAZ/home/test/workspace/code/optee_3.16/trusted-firmware-a/docs/components/debugfs-design.rsthCKubh topic)}(hhh](j )}(hContentsh]hContents}(hhh!j ubah"}(h$]h&]h+]h-]h/]uh1j h!j hAj hCKubh bullet_list)}(hhh]h list_item)}(hhh](h paragraph)}(hhh]h reference)}(hhh]hDebug FS}(hj h!j ubah"}(h$]j ah&]h+]h-]h/]refiddebug-fsuh1j h!j ubah"}(h$]h&]h+]h-]h/]uh1j h!j ubj )}(hhh](j )}(hhh]j )}(hhh]j )}(hhh]hOverview}(hOverviewh!j ubah"}(h$]id2ah&]h+]h-]h/]refidoverviewuh1j h!j ubah"}(h$]h&]h+]h-]h/]uh1j h!j ubah"}(h$]h&]h+]h-]h/]uh1j h!j ubj )}(hhh](j )}(hhh]j )}(hhh]hVirtual filesystem}(hVirtual filesystemh!j ubah"}(h$]id3ah&]h+]h-]h/]refidvirtual-filesystemuh1j h!j ubah"}(h$]h&]h+]h-]h/]uh1j h!j ubj )}(hhh](j )}(hhh]j )}(hhh]j )}(hhh]h Namespace}(h Namespaceh!j) ubah"}(h$]id4ah&]h+]h-]h/]refid namespaceuh1j h!j& ubah"}(h$]h&]h+]h-]h/]uh1j h!j# ubah"}(h$]h&]h+]h-]h/]uh1j h!j ubj )}(hhh]j )}(hhh]j )}(hhh]h 9p interface}(h 9p interfaceh!jL ubah"}(h$]id5ah&]h+]h-]h/]refid p-interfaceuh1j h!jI ubah"}(h$]h&]h+]h-]h/]uh1j h!jF ubah"}(h$]h&]h+]h-]h/]uh1j h!j ubeh"}(h$]h&]h+]h-]h/]uh1j h!j ubeh"}(h$]h&]h+]h-]h/]uh1j h!j ubj )}(hhh]j )}(hhh]j )}(hhh]h SMC interface}(h SMC interfaceh!j{ ubah"}(h$]id6ah&]h+]h-]h/]refid smc-interfaceuh1j h!jx ubah"}(h$]h&]h+]h-]h/]uh1j h!ju ubah"}(h$]h&]h+]h-]h/]uh1j h!j ubj )}(hhh]j )}(hhh]j )}(hhh]hSecurity considerations}(hSecurity considerationsh!j ubah"}(h$]id7ah&]h+]h-]h/]refidsecurity-considerationsuh1j h!j ubah"}(h$]h&]h+]h-]h/]uh1j h!j ubah"}(h$]h&]h+]h-]h/]uh1j h!j ubj )}(hhh]j )}(hhh]j )}(hhh]h Limitations}(h Limitationsh!j ubah"}(h$]id8ah&]h+]h-]h/]refid limitationsuh1j h!j ubah"}(h$]h&]h+]h-]h/]uh1j h!j ubah"}(h$]h&]h+]h-]h/]uh1j h!j ubj )}(hhh]j )}(hhh]j )}(hhh]h Applications}(h Applicationsh!j ubah"}(h$]id9ah&]h+]h-]h/]refid applicationsuh1j h!j ubah"}(h$]h&]h+]h-]h/]uh1j h!j ubah"}(h$]h&]h+]h-]h/]uh1j h!j ubeh"}(h$]h&]h+]h-]h/]uh1j h!j ubeh"}(h$]h&]h+]h-]h/]uh1j h!j ubah"}(h$]h&]h+]h-]h/]uh1j h!j hhhANhCNubeh"}(h$]contentsah&]contentsah+]contentsah-]h/]uh1j hAj hCKh!j hhubj )}(hhh](j )}(hj h]hOverview}(hj h!j hhhANhCNubah"}(h$]h&]h+]h-]h/]j j uh1j h!j hhhAj hCKubj )}(hThe *DebugFS* feature is primarily aimed at exposing firmware debug data to higher SW layers such as a non-secure component. Such component can be the TFTF test payload or a Linux kernel module.h](hThe }(hThe h!j, hhhANhCNubh emphasis)}(h *DebugFS*h]hDebugFS}(hhh!j7 ubah"}(h$]h&]h+]h-]h/]uh1j5 h!j, ubh feature is primarily aimed at exposing firmware debug data to higher SW layers such as a non-secure component. Such component can be the TFTF test payload or a Linux kernel module.}(h feature is primarily aimed at exposing firmware debug data to higher SW layers such as a non-secure component. Such component can be the TFTF test payload or a Linux kernel module.h!j, hhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCK h!j hhubeh"}(h$]j ah&]h+]overviewah-]h/]uh1j h!j hhhAj hCKubj )}(hhh](j )}(hj h]hVirtual filesystem}(hj h!jZ hhhANhCNubah"}(h$]h&]h+]h-]h/]j j uh1j h!jW hhhAj hCKubj )}(hXThe core functionality lies in a virtual file system based on a 9p file server interface (`Notes on the Plan 9 Kernel Source`_ and `Linux 9p remote filesystem protocol`_). The implementation permits exposing virtual files, firmware drivers, and file blobs.h](hZThe core functionality lies in a virtual file system based on a 9p file server interface (}(hZThe core functionality lies in a virtual file system based on a 9p file server interface (h!jg hhhANhCNubj )}(h$`Notes on the Plan 9 Kernel Source`_h]h!Notes on the Plan 9 Kernel Source}(h!Notes on the Plan 9 Kernel Sourceh!jp ubah"}(h$]h&]h+]h-]h/]name!Notes on the Plan 9 Kernel Sourcerefurihttp://lsub.org/who/nemo/9.pdfuh1j h!jg resolvedKubh and }(h and h!jg hhhANhCNubj )}(h&`Linux 9p remote filesystem protocol`_h]h#Linux 9p remote filesystem protocol}(h#Linux 9p remote filesystem protocolh!j ubah"}(h$]h&]h+]h-]h/]name#Linux 9p remote filesystem protocolj ;https://www.kernel.org/doc/Documentation/filesystems/9p.txtuh1j h!jg j KubhW). The implementation permits exposing virtual files, firmware drivers, and file blobs.}(hW). The implementation permits exposing virtual files, firmware drivers, and file blobs.h!jg hhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!jW hhubj )}(hhh](j )}(hj0 h]h Namespace}(hj0 h!j hhhANhCNubah"}(h$]h&]h+]h-]h/]j j3 uh1j h!j hhhAj hCKubj )}(hTwo namespaces are exposed:h]hTwo namespaces are exposed:}(hj h!j hhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!j hhubh block_quote)}(hhh]j )}(hhh](j )}(h:# is used as root for drivers (e.g. #t0 is the first uart)h]j )}(hj h]h:# is used as root for drivers (e.g. #t0 is the first uart)}(hj h!j ubah"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!j ubah"}(h$]h&]h+]h-]h/]uh1j h!j ubj )}(h@/ is used as root for virtual "files" (e.g. /fip, or /dev/uart) h]j )}(h?/ is used as root for virtual "files" (e.g. /fip, or /dev/uart)h]hC/ is used as root for virtual “files” (e.g. /fip, or /dev/uart)}(hj h!j ubah"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!j ubah"}(h$]h&]h+]h-]h/]uh1j h!j ubeh"}(h$]h&]h+]h-]h/]bullet-uh1j hAj hCKh!j ubah"}(h$]h&]h+]h-]h/]uh1j h!j hhhANhCNubeh"}(h$]j9 ah&]h+] namespaceah-]h/]uh1j h!jW hhhAj hCKubj )}(hhh](j )}(hjS h]h 9p interface}(hjS h!jhhhANhCNubah"}(h$]h&]h+]h-]h/]j jV uh1j h!jhhhAj hCKubj )}(hThe associated primitives are:h]hThe associated primitives are:}(hj"h!j hhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j hAj hCK!h!jhhubj )}(hhh]j )}(hXUnix-like: - open(): create a file descriptor that acts as a handle to the file passed as an argument. - close(): close the file descriptor created by open(). - read(): read from a file to a buffer. - write(): write from a buffer to a file. - seek(): set the file position indicator of a file descriptor either to a relative or an absolute offset. - stat(): get information about a file (type, mode, size, ...). h](j )}(h Unix-like:h]h Unix-like:}(hj7h!j5ubah"}(h$]h&]h+]h-]h/]uh1j hAj hCK#h!j1ubj )}(hhh](j )}(hYopen(): create a file descriptor that acts as a handle to the file passed as an argument.h]j )}(hYopen(): create a file descriptor that acts as a handle to the file passed as an argument.h]hYopen(): create a file descriptor that acts as a handle to the file passed as an argument.}(hjLh!jJubah"}(h$]h&]h+]h-]h/]uh1j hAj hCK%h!jFubah"}(h$]h&]h+]h-]h/]uh1j h!jCubj )}(h5close(): close the file descriptor created by open().h]j )}(hj`h]h5close(): close the file descriptor created by open().}(hj`h!jbubah"}(h$]h&]h+]h-]h/]uh1j hAj hCK'h!j^ubah"}(h$]h&]h+]h-]h/]uh1j h!jCubj )}(h%read(): read from a file to a buffer.h]j )}(hjwh]h%read(): read from a file to a buffer.}(hjwh!jyubah"}(h$]h&]h+]h-]h/]uh1j hAj hCK(h!juubah"}(h$]h&]h+]h-]h/]uh1j h!jCubj )}(h'write(): write from a buffer to a file.h]j )}(hjh]h'write(): write from a buffer to a file.}(hjh!jubah"}(h$]h&]h+]h-]h/]uh1j hAj hCK)h!jubah"}(h$]h&]h+]h-]h/]uh1j h!jCubj )}(hhseek(): set the file position indicator of a file descriptor either to a relative or an absolute offset.h]j )}(hhseek(): set the file position indicator of a file descriptor either to a relative or an absolute offset.h]hhseek(): set the file position indicator of a file descriptor either to a relative or an absolute offset.}(hjh!jubah"}(h$]h&]h+]h-]h/]uh1j hAj hCK*h!jubah"}(h$]h&]h+]h-]h/]uh1j h!jCubj )}(h>stat(): get information about a file (type, mode, size, ...). h]j )}(h=stat(): get information about a file (type, mode, size, ...).h]h=stat(): get information about a file (type, mode, size, …).}(hjh!jubah"}(h$]h&]h+]h-]h/]uh1j hAj hCK,h!jubah"}(h$]h&]h+]h-]h/]uh1j h!jCubeh"}(h$]h&]h+]h-]h/]jjuh1j hAj hCK%h!j1ubeh"}(h$]h&]h+]h-]h/]uh1j h!j.hhhANhCNubah"}(h$]h&]h+]h-]h/]jjuh1j hAj hCK#h!jhhubh literal_block)}(hint open(const char *name, int flags); int close(int fd); int read(int fd, void *buf, int n); int write(int fd, void *buf, int n); int seek(int fd, long off, int whence); int stat(char *path, dir_t *dir);h]hint open(const char *name, int flags); int close(int fd); int read(int fd, void *buf, int n); int write(int fd, void *buf, int n); int seek(int fd, long off, int whence); int stat(char *path, dir_t *dir);}(hhh!jubah"}(h$]h&]h+]h-]h/]forcehighlight_args} xml:spacepreservelanguagecuh1jhAj hCK.h!jhhubj )}(hhh]j )}(hSpecific primitives : - mount(): create a link between a driver and spec. - create(): create a file in a specific location. - bind(): expose the content of a directory to another directory. h](j )}(hSpecific primitives :h]hSpecific primitives :}(hjh!jubah"}(h$]h&]h+]h-]h/]uh1j hAj hCK7h!jubj )}(hhh](j )}(h1mount(): create a link between a driver and spec.h]j )}(hjh]h1mount(): create a link between a driver and spec.}(hjh!jubah"}(h$]h&]h+]h-]h/]uh1j hAj hCK9h!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubj )}(h/create(): create a file in a specific location.h]j )}(hj-h]h/create(): create a file in a specific location.}(hj-h!j/ubah"}(h$]h&]h+]h-]h/]uh1j hAj hCK:h!j+ubah"}(h$]h&]h+]h-]h/]uh1j h!jubj )}(h@bind(): expose the content of a directory to another directory. h]j )}(h?bind(): expose the content of a directory to another directory.h]h?bind(): expose the content of a directory to another directory.}(hjHh!jFubah"}(h$]h&]h+]h-]h/]uh1j hAj hCK;h!jBubah"}(h$]h&]h+]h-]h/]uh1j h!jubeh"}(h$]h&]h+]h-]h/]jjuh1j hAj hCK9h!jubeh"}(h$]h&]h+]h-]h/]uh1j h!jhhhANhCNubah"}(h$]h&]h+]h-]h/]jjuh1j hAj hCK7h!jhhubj)}(hxint mount(char *srv, char *mnt, char *spec); int create(const char *name, int flags); int bind(char *path, char *where);h]hxint mount(char *srv, char *mnt, char *spec); int create(const char *name, int flags); int bind(char *path, char *where);}(hhh!jlubah"}(h$]h&]h+]h-]h/]forcehighlight_args}jjjjuh1jhAj hCK=h!jhhubj )}(hThis interface is embedded into the BL31 run-time payload when selected by build options. The interface multiplexes drivers or emulated "files":h]hThis interface is embedded into the BL31 run-time payload when selected by build options. The interface multiplexes drivers or emulated “files”:}(hjh!j}hhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j hAj hCKCh!jhhubj )}(hhh](j )}(hDebug data can be partitioned into different virtual files e.g. expose PMF measurements through a file, and internal firmware state counters through another file.h]j )}(hDebug data can be partitioned into different virtual files e.g. expose PMF measurements through a file, and internal firmware state counters through another file.h]hDebug data can be partitioned into different virtual files e.g. expose PMF measurements through a file, and internal firmware state counters through another file.}(hjh!jubah"}(h$]h&]h+]h-]h/]uh1j hAj hCKFh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jhhhAj hCNubj )}(hThis permits direct access to a firmware driver, mainly for test purposes (e.g. a hardware device that may not be accessible to non-privileged/ non-secure layers, or for which no support exists in the NS side). h]j )}(hThis permits direct access to a firmware driver, mainly for test purposes (e.g. a hardware device that may not be accessible to non-privileged/ non-secure layers, or for which no support exists in the NS side).h]hThis permits direct access to a firmware driver, mainly for test purposes (e.g. a hardware device that may not be accessible to non-privileged/ non-secure layers, or for which no support exists in the NS side).}(hjh!jubah"}(h$]h&]h+]h-]h/]uh1j hAj hCKIh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jhhhAj hCNubeh"}(h$]h&]h+]h-]h/]jjuh1j hAj hCKFh!jhhubeh"}(h$]j\ ah&]h+] 9p interfaceah-]h/]uh1j h!jW hhhAj hCKubeh"}(h$]j ah&]h+]virtual filesystemah-]h/]uh1j h!j hhhAj hCKubj )}(hhh](j )}(hj h]h SMC interface}(hj h!jhhhANhCNubah"}(h$]h&]h+]h-]h/]j j uh1j h!jhhhAj hCKNubj )}(hXOThe communication with the 9p layer in BL31 is made through an SMC conduit (`SMC Calling Convention`_), using a specific SiP Function Id. An NS shared buffer is used to pass path string parameters, or e.g. to exchange data on a read operation. Refer to :ref:`ARM SiP Services ` for a description of the SMC interface.h](hLThe communication with the 9p layer in BL31 is made through an SMC conduit (}(hLThe communication with the 9p layer in BL31 is made through an SMC conduit (h!jhhhANhCNubj )}(h`SMC Calling Convention`_h]hSMC Calling Convention}(hSMC Calling Conventionh!jubah"}(h$]h&]h+]h-]h/]nameSMC Calling Conventionj -https://developer.arm.com/docs/den0028/latestuh1j h!jj Kubh), using a specific SiP Function Id. An NS shared buffer is used to pass path string parameters, or e.g. to exchange data on a read operation. Refer to }(h), using a specific SiP Function Id. An NS shared buffer is used to pass path string parameters, or e.g. to exchange data on a read operation. Refer to h!jhhhANhCNubh)}(h*:ref:`ARM SiP Services `h]h)}(hjh]hARM SiP Services}(hhh!jubah"}(h$]h&](h(stdstd-refeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftyperef refexplicitrefwarnh?arm sip servicesuh1hhAj hCKPh!jubh( for a description of the SMC interface.}(h( for a description of the SMC interface.h!jhhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKPh!jhhubeh"}(h$]j ah&]h+] smc interfaceah-]h/]uh1j h!j hhhAj hCKNubj )}(hhh](j )}(hj h]hSecurity considerations}(hj h!j7hhhANhCNubah"}(h$]h&]h+]h-]h/]j j uh1j h!j4hhhAj hCKWubj )}(hhh](j )}(hDue to the nature of the exposed data, the feature is considered experimental and importantly **shall only be used in debug builds**.h]j )}(hDue to the nature of the exposed data, the feature is considered experimental and importantly **shall only be used in debug builds**.h](h^Due to the nature of the exposed data, the feature is considered experimental and importantly }(h^Due to the nature of the exposed data, the feature is considered experimental and importantly h!jKubh strong)}(h&**shall only be used in debug builds**h]h"shall only be used in debug builds}(hhh!jVubah"}(h$]h&]h+]h-]h/]uh1jTh!jKubh.}(h.h!jKubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKYh!jGubah"}(h$]h&]h+]h-]h/]uh1j h!jDhhhAj hCNubj )}(hISeveral primitive imply string manipulations and usage of string formats.h]j )}(hjwh]hISeveral primitive imply string manipulations and usage of string formats.}(hjwh!jyubah"}(h$]h&]h+]h-]h/]uh1j hAj hCK[h!juubah"}(h$]h&]h+]h-]h/]uh1j h!jDhhhAj hCNubj )}(hFSpecial care is taken with the shared buffer to avoid TOCTOU attacks. h]j )}(hESpecial care is taken with the shared buffer to avoid TOCTOU attacks.h]hESpecial care is taken with the shared buffer to avoid TOCTOU attacks.}(hjh!jubah"}(h$]h&]h+]h-]h/]uh1j hAj hCK\h!jubah"}(h$]h&]h+]h-]h/]uh1j h!jDhhhAj hCNubeh"}(h$]h&]h+]h-]h/]jjuh1j hAj hCKYh!j4hhubeh"}(h$]j ah&]h+]security considerationsah-]h/]uh1j h!j hhhAj hCKWubj )}(hhh](j )}(hj h]h Limitations}(hj h!jhhhANhCNubah"}(h$]h&]h+]h-]h/]j j uh1j h!jhhhAj hCK_ubj )}(hhh](j )}(hIn order to setup the shared buffer, the component consuming the interface needs to allocate a physical page frame and transmit its address.h]j )}(hIn order to setup the shared buffer, the component consuming the interface needs to allocate a physical page frame and transmit its address.h]hIn order to setup the shared buffer, the component consuming the interface needs to allocate a physical page frame and transmit its address.}(hjh!jubah"}(h$]h&]h+]h-]h/]uh1j hAj hCKah!jubah"}(h$]h&]h+]h-]h/]uh1j h!jhhhAj hCNubj )}(hXIn order to map the shared buffer, BL31 requires enabling the dynamic xlat table option.h]j )}(hXIn order to map the shared buffer, BL31 requires enabling the dynamic xlat table option.h]hXIn order to map the shared buffer, BL31 requires enabling the dynamic xlat table option.}(hjh!jubah"}(h$]h&]h+]h-]h/]uh1j hAj hCKch!jubah"}(h$]h&]h+]h-]h/]uh1j h!jhhhAj hCNubj )}(hData exchange is limited by the shared buffer length. A large read operation might be split into multiple read operations of smaller chunks.h]j )}(hData exchange is limited by the shared buffer length. A large read operation might be split into multiple read operations of smaller chunks.h]hData exchange is limited by the shared buffer length. A large read operation might be split into multiple read operations of smaller chunks.}(hjh!jubah"}(h$]h&]h+]h-]h/]uh1j hAj hCKeh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jhhhAj hCNubj )}(hOn concurrent access, a spinlock is implemented in the BL31 service to protect the internal work buffer, and re-entrancy into the filesystem layers.h]j )}(hOn concurrent access, a spinlock is implemented in the BL31 service to protect the internal work buffer, and re-entrancy into the filesystem layers.h]hOn concurrent access, a spinlock is implemented in the BL31 service to protect the internal work buffer, and re-entrancy into the filesystem layers.}(hjh!jubah"}(h$]h&]h+]h-]h/]uh1j hAj hCKgh!j ubah"}(h$]h&]h+]h-]h/]uh1j h!jhhhAj hCNubj )}(hNotice, a physical device driver if exposed by the firmware may conflict with the higher level OS if the latter implements its own driver for the same physical device. h]j )}(hNotice, a physical device driver if exposed by the firmware may conflict with the higher level OS if the latter implements its own driver for the same physical device.h]hNotice, a physical device driver if exposed by the firmware may conflict with the higher level OS if the latter implements its own driver for the same physical device.}(hj*h!j(ubah"}(h$]h&]h+]h-]h/]uh1j hAj hCKih!j$ubah"}(h$]h&]h+]h-]h/]uh1j h!jhhhAj hCNubeh"}(h$]h&]h+]h-]h/]jjuh1j hAj hCKah!jhhubeh"}(h$]j ah&]h+] limitationsah-]h/]uh1j h!j hhhAj hCK_ubj )}(hhh](j )}(hj h]h Applications}(hj h!jLhhhANhCNubah"}(h$]h&]h+]h-]h/]j j uh1j h!jIhhhAj hCKnubj )}(h@The SMC interface is accessible from an NS environment, that is:h]h@The SMC interface is accessible from an NS environment, that is:}(hj[h!jYhhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j hAj hCKph!jIhhubj )}(hhh](j )}(h:a test payload, bootloader or hypervisor running at NS-EL2h]j )}(hjlh]h:a test payload, bootloader or hypervisor running at NS-EL2}(hjlh!jnubah"}(h$]h&]h+]h-]h/]uh1j hAj hCKrh!jjubah"}(h$]h&]h+]h-]h/]uh1j h!jghhhAj hCNubj )}(h'a Linux kernel driver running at NS-EL1h]j )}(hjh]h'a Linux kernel driver running at NS-EL1}(hjh!jubah"}(h$]h&]h+]h-]h/]uh1j hAj hCKsh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jghhhAj hCNubj )}(h8a Linux userspace application through the kernel driver h]j )}(h7a Linux userspace application through the kernel driverh]h7a Linux userspace application through the kernel driver}(hjh!jubah"}(h$]h&]h+]h-]h/]uh1j hAj hCKth!jubah"}(h$]h&]h+]h-]h/]uh1j h!jghhhAj hCNubeh"}(h$]h&]h+]h-]h/]jjuh1j hAj hCKrh!jIhhubh transition)}(h--------------h]h"}(h$]h&]h+]h-]h/]uh1jhAj hCKvh!jIhhubj )}(hM*Copyright (c) 2019-2020, Arm Limited and Contributors. All rights reserved.*h]j6 )}(hjh]hKCopyright (c) 2019-2020, Arm Limited and Contributors. All rights reserved.}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j5 h!jubah"}(h$]h&]h+]h-]h/]uh1j hAj hCKxh!jIhhubh target)}(hI.. _SMC Calling Convention: https://developer.arm.com/docs/den0028/latesth]h"}(h$]smc-calling-conventionah&]h+]smc calling conventionah-]h/]j juh1jhCKh!jIhhhAj referencedKubj)}(hE.. _Notes on the Plan 9 Kernel Source: http://lsub.org/who/nemo/9.pdfh]h"}(h$]!notes-on-the-plan-9-kernel-sourceah&]h+]!notes on the plan 9 kernel sourceah-]h/]j j uh1jhCKh!jIhhhAj jKubj)}(hd.. _Linux 9p remote filesystem protocol: https://www.kernel.org/doc/Documentation/filesystems/9p.txth]h"}(h$]#linux-9p-remote-filesystem-protocolah&]h+]#linux 9p remote filesystem protocolah-]h/]j j uh1jhCKh!jIhhhAj jKubj)}(h).. _ARM SiP Services: arm-sip-service.rsth]h"}(h$]arm-sip-servicesah&]h+]arm sip servicesah-]h/]j arm-sip-service.rstuh1jhCKh!jIhhhAj ubeh"}(h$]j ah&]h+] applicationsah-]h/]uh1j h!j hhhAj hCKnubeh"}(h$]j ah&]h+]debug fsah-]h/]uh1j h!hhhhAj hCKubeh"}(h$]h&]h+]h-]h/]sourcej uh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(j N generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerj>error_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourcej _destinationN _config_files]pep_referencesN pep_base_url https://www.python.org/dev/peps/pep_file_url_templatepep-%04drfc_referencesN rfc_base_urlhttps://tools.ietf.org/html/ tab_widthKtrim_footnote_reference_spacefile_insertion_enabled raw_enabledKsyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xformembed_stylesheetcloak_email_addressesenvNubreporterNindirect_targets]substitution_defs}(hHh hshKhhvhhhhjhjJj"jujMjjxjjjjj!jjLj$jwjOjjzjjjjj#jjNj&jyjQjj|jjjjj%jjPj(j{jSjj~jjjjj'jjRj*j}jUjjjjjjj)jjTj,jjWjjjjjjj+jjVj.jjYjjjjjjj-jjXj0jj[jjjjj jj/ j jZ j2 j j] j j j j j j j1 j j\ j4 j j_ j j j j j j j3 j j^ j6 j ja usubstitution_names}(aarch32hHaarch64hsamuhamushɌapihbtijcotjucssjcvejdtbjds-5j!dsujLdtjweljehfjfconfjfdtj#ff-ajNfipjyfvpjfwujgicjisaj%linarojPmmuj{mpamjmpmmjmpidrjmtej'oenjRop-teej}otejpddjpauthjpmfj)pscijTrasjrotjscmijscpjsdeij+sdsjVseajsipjsmcjsmcccj-socjXspjspdjspmjssbsj svej/ tbbjZ tbbrj teej tf-aj tf-mj tlbj1 tlkj\ trngj tspj tzcj ubsanj uefij3 wdogj^ xlatj urefnames}(!notes on the plan 9 kernel source]jp a#linux 9p remote filesystem protocol]j asmc calling convention]jaurefids}nameids}(jj j j jT j jj j j9 jj\ j1j jj jFj jj jjjjjjj ju nametypes}(jNj NjT NjNj NjNj1NjNjFNjNjjjj uh$}(j j j j j j j jW j9 j j\ jj jj j4j jj jIjjjjjjjjj j j j j j j3 j) jV jL j j{ j j j j j j u footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}jLK sRparse_messages]transform_messages]h system_message)}(hhh]j )}(hhh]h6Hyperlink target "arm sip services" is not referenced.}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubah"}(h$]h&]h+]h-]h/]levelKtypeINFOsourcej lineKuh1juba transformerN decorationNhhub.