Tsphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget2/translations/zh_CN/PCI/endpoint/pci-vntb-functionmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget2/translations/zh_TW/PCI/endpoint/pci-vntb-functionmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget2/translations/it_IT/PCI/endpoint/pci-vntb-functionmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget2/translations/ja_JP/PCI/endpoint/pci-vntb-functionmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget2/translations/ko_KR/PCI/endpoint/pci-vntb-functionmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget2/translations/sp_SP/PCI/endpoint/pci-vntb-functionmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(h SPDX-License-Identifier: GPL-2.0h]h SPDX-License-Identifier: GPL-2.0}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhhL/var/lib/git/docbuild/linux/Documentation/PCI/endpoint/pci-vntb-function.rsthKubhsection)}(hhh](htitle)}(hPCI vNTB Functionh]hPCI vNTB Function}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh field_list)}(hhh]hfield)}(hhh](h field_name)}(hAuthorh]hAuthor}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhKubh field_body)}(hFrank Li h]h paragraph)}(hFrank Li h](h Frank Li <}(hhhhhNhNubh reference)}(hFrank.Li@nxp.comh]hFrank.Li@nxp.com}(hhhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:Frank.Li@nxp.comuh1hhhubh>}(hhhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhhubah}(h]h ]h"]h$]h&]uh1hhhubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh)}(h@The difference between PCI NTB function and PCI vNTB function ish]h@The difference between PCI NTB function and PCI vNTB function is}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hhhhubh)}(hLPCI NTB function need at two endpoint instances and connect HOST1 and HOST2.h]hLPCI NTB function need at two endpoint instances and connect HOST1 and HOST2.}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hhhhubh)}(hYPCI vNTB function only use one host and one endpoint(EP), use NTB connect EP and PCI hosth]hYPCI vNTB function only use one host and one endpoint(EP), use NTB connect EP and PCI host}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh literal_block)}(hX}+------------+ +---------------------------------------+ | | | | +------------+ | +--------------+ | NTB | | | NTB | | NetDev | | | NetDev | +------------+ | +--------------+ | NTB | | | NTB | | Transfer | | | Transfer | +------------+ | +--------------+ | | | | | | PCI NTB | | | | | EPF | | | | | Driver | | | PCI Virtual | | | +---------------+ | NTB Driver | | | | PCI EP NTB |<------>| | | | | FN Driver | | | +------------+ +---------------+ +--------------+ | | | | | | | PCI BUS | <-----> | PCI EP BUS | | Virtual PCI | | | PCI | | | BUS | +------------+ +---------------+--------+--------------+ PCI RC PCI EPh]hX}+------------+ +---------------------------------------+ | | | | +------------+ | +--------------+ | NTB | | | NTB | | NetDev | | | NetDev | +------------+ | +--------------+ | NTB | | | NTB | | Transfer | | | Transfer | +------------+ | +--------------+ | | | | | | PCI NTB | | | | | EPF | | | | | Driver | | | PCI Virtual | | | +---------------+ | NTB Driver | | | | PCI EP NTB |<------>| | | | | FN Driver | | | +------------+ +---------------+ +--------------+ | | | | | | | PCI BUS | <-----> | PCI EP BUS | | Virtual PCI | | | PCI | | | BUS | +------------+ +---------------+--------+--------------+ PCI RC PCI EP}hjMsbah}(h]h ]h"]h$]h&]hhforcelanguagetexthighlight_args}uh1jKhhhKhhhhubh)}(hhh](h)}(h%Constructs used for Implementing vNTBh]h%Constructs used for Implementing vNTB}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhj`hhhhhK,ubh block_quote)}(h}1) Config Region 2) Self Scratchpad Registers 3) Peer Scratchpad Registers 4) Doorbell (DB) Registers 5) Memory Window (MW) h]henumerated_list)}(hhh](h list_item)}(h Config Regionh]h)}(hjh]h Config Region}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK.hj~ubah}(h]h ]h"]h$]h&]uh1j|hjyubj})}(hSelf Scratchpad Registersh]h)}(hjh]hSelf Scratchpad Registers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK/hjubah}(h]h ]h"]h$]h&]uh1j|hjyubj})}(hPeer Scratchpad Registersh]h)}(hjh]hPeer Scratchpad Registers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK0hjubah}(h]h ]h"]h$]h&]uh1j|hjyubj})}(hDoorbell (DB) Registersh]h)}(hjh]hDoorbell (DB) Registers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK1hjubah}(h]h ]h"]h$]h&]uh1j|hjyubj})}(hMemory Window (MW) h]h)}(hMemory Window (MW)h]hMemory Window (MW)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK2hjubah}(h]h ]h"]h$]h&]uh1j|hjyubeh}(h]h ]h"]h$]h&]enumtypearabicprefixhsuffix)uh1jwhjsubah}(h]h ]h"]h$]h&]uh1jqhhhK.hj`hhubh)}(hhh](h)}(hConfig Region:h]hConfig Region:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK6ubh)}(h%It is same as PCI NTB Function driverh]h%It is same as PCI NTB Function driver}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK8hjhhubeh}(h] config-regionah ]h"]config region:ah$]h&]uh1hhj`hhhhhK6ubh)}(hhh](h)}(hScratchpad Registers:h]hScratchpad Registers:}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*hhhhhK;ubh)}(h#It is appended after Config region.h]h#It is appended after Config region.}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK=hj*hhubjL)}(hX+--------------------------------------------------+ Base | | | | | | | Common Config Register | | | | | | | +-----------------------+--------------------------+ Base + span_offset | | | | Peer Span Space | Span Space | | | | | | | +-----------------------+--------------------------+ Base + span_offset | | | + span_count * 4 | | | | Span Space | Peer Span Space | | | | +-----------------------+--------------------------+ Virtual PCI Pcie Endpoint NTB Driver NTB Driverh]hX+--------------------------------------------------+ Base | | | | | | | Common Config Register | | | | | | | +-----------------------+--------------------------+ Base + span_offset | | | | Peer Span Space | Span Space | | | | | | | +-----------------------+--------------------------+ Base + span_offset | | | + span_count * 4 | | | | Span Space | Peer Span Space | | | | +-----------------------+--------------------------+ Virtual PCI Pcie Endpoint NTB Driver NTB Driver}hjIsbah}(h]h ]h"]h$]h&]hhj[j\textj^}uh1jKhhhK?hj*hhubeh}(h]scratchpad-registersah ]h"]scratchpad registers:ah$]h&]uh1hhj`hhhhhK;ubh)}(hhh](h)}(hDoorbell Registers:h]hDoorbell Registers:}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjahhhhhKZubjr)}(hBDoorbell Registers are used by the hosts to interrupt each other. h]h)}(hADoorbell Registers are used by the hosts to interrupt each other.h]hADoorbell Registers are used by the hosts to interrupt each other.}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK\hjrubah}(h]h ]h"]h$]h&]uh1jqhhhK\hjahhubeh}(h]doorbell-registersah ]h"]doorbell registers:ah$]h&]uh1hhj`hhhhhKZubh)}(hhh](h)}(hMemory Window:h]hMemory Window:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK_ubjr)}(hSActual transfer of data between the two hosts will happen using the memory window. h]h)}(hRActual transfer of data between the two hosts will happen using the memory window.h]hRActual transfer of data between the two hosts will happen using the memory window.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKahjubah}(h]h ]h"]h$]h&]uh1jqhhhKahjhhubeh}(h] memory-windowah ]h"]memory window:ah$]h&]uh1hhj`hhhhhK_ubeh}(h]%constructs-used-for-implementing-vntbah ]h"]%constructs used for implementing vntbah$]h&]uh1hhhhhhhhK,ubh)}(hhh](h)}(hModeling Constructs:h]hModeling Constructs:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKeubh)}(h 32-bit BARs.h]h 32-bit BARs.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKghjhhubhtable)}(hhh]htgroup)}(hhh](hcolspec)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jhjubj)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jhjubhthead)}(hhh]hrow)}(hhh](hentry)}(hhh]h)}(hBAR NOh]hBAR NO}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKjhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hCONSTRUCTS USEDh]hCONSTRUCTS USED}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKjhj-ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1j hjubhtbody)}(hhh](j)}(hhh](j)}(hhh]h)}(hBAR0h]hBAR0}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKlhjXubah}(h]h ]h"]h$]h&]uh1jhjUubj)}(hhh]h)}(h Config Regionh]h Config Region}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKlhjoubah}(h]h ]h"]h$]h&]uh1jhjUubeh}(h]h ]h"]h$]h&]uh1jhjRubj)}(hhh](j)}(hhh]h)}(hBAR1h]hBAR1}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKmhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hDoorbellh]hDoorbell}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKmhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjRubj)}(hhh](j)}(hhh]h)}(hBAR2h]hBAR2}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKnhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hMemory Window 1h]hMemory Window 1}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKnhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjRubj)}(hhh](j)}(hhh]h)}(hBAR3h]hBAR3}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKohjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hMemory Window 2h]hMemory Window 2}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKohjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjRubj)}(hhh](j)}(hhh]h)}(hBAR4h]hBAR4}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKphj4ubah}(h]h ]h"]h$]h&]uh1jhj1ubj)}(hhh]h)}(hMemory Window 3h]hMemory Window 3}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKphjKubah}(h]h ]h"]h$]h&]uh1jhj1ubeh}(h]h ]h"]h$]h&]uh1jhjRubj)}(hhh](j)}(hhh]h)}(hBAR5h]hBAR5}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKqhjkubah}(h]h ]h"]h$]h&]uh1jhjhubj)}(hhh]h)}(hMemory Window 4h]hMemory Window 4}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKqhjubah}(h]h ]h"]h$]h&]uh1jhjhubeh}(h]h ]h"]h$]h&]uh1jhjRubeh}(h]h ]h"]h$]h&]uh1jPhjubeh}(h]h ]h"]h$]h&]colsKuh1jhjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubh)}(h 64-bit BARs.h]h 64-bit BARs.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKthjhhubj)}(hhh]j)}(hhh](j)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jhjubj)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jhjubj )}(hhh]j)}(hhh](j)}(hhh]h)}(hBAR NOh]hBAR NO}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKwhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hCONSTRUCTS USEDh]hCONSTRUCTS USED}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKwhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hjubjQ)}(hhh](j)}(hhh](j)}(hhh]h)}(hBAR0h]hBAR0}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKyhj ubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hConfig Region + Scratchpadh]hConfig Region + Scratchpad}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKyhj7ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hBAR1h]hBAR1}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKzhjWubah}(h]h ]h"]h$]h&]uh1jhjTubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjTubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hBAR2h]hBAR2}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK{hjubah}(h]h ]h"]h$]h&]uh1jhj}ubj)}(hhh]h)}(hDoorbellh]hDoorbell}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK{hjubah}(h]h ]h"]h$]h&]uh1jhj}ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hBAR3h]hBAR3}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK|hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hBAR4h]hBAR4}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK}hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hMemory Window 1h]hMemory Window 1}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK}hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hBAR5h]hBAR5}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK~hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jPhjubeh}(h]h ]h"]h$]h&]colsKuh1jhjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubeh}(h]modeling-constructsah ]h"]modeling constructs:ah$]h&]uh1hhhhhhhhKeubeh}(h]pci-vntb-functionah ]h"]pci vntb functionah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksjfootnote_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_handlerjerror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(j]jZjjj'j$j^j[jjjjjUjRu nametypes}(j]jj'j^jjjUuh}(jZhjj`j$jj[j*jjajjjRju footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.