3sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget"/translations/zh_CN/driver-api/ntbmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget"/translations/zh_TW/driver-api/ntbmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget"/translations/it_IT/driver-api/ntbmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget"/translations/ja_JP/driver-api/ntbmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget"/translations/ko_KR/driver-api/ntbmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget"/translations/pt_BR/driver-api/ntbmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget"/translations/sp_SP/driver-api/ntbmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhsection)}(hhh](htitle)}(h NTB Driversh]h NTB Drivers}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj-hhubh)}(h7The Tool does not currently have any module parameters.h]h7The Tool does not currently have any module parameters.}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj-hhubh)}(hDebugfs Files:h]hDebugfs Files:}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj-hhubj)}(hhh](j)}(h*debugfs*/ntb\_tool/*hw*/ A directory in debugfs will be created for each NTB device probed by the tool. This directory is shortened to *hw* below.h]j)}(hhh]j)}(h*debugfs*/ntb\_tool/*hw*/ A directory in debugfs will be created for each NTB device probed by the tool. This directory is shortened to *hw* below.h](j)}(h*debugfs*/ntb\_tool/*hw*/h](hemphasis)}(h *debugfs*h]hdebugfs}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jzhjvubh /ntb_tool/}(hjvhhhNhNubj{)}(h*hw*h]hhw}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jzhjvubh/}(hjvhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhKhjrubj)}(hhh]h)}(hzA directory in debugfs will be created for each NTB device probed by the tool. This directory is shortened to *hw* below.h](hoA directory in debugfs will be created for each NTB device probed by the tool. This directory is shortened to }(hjhhhNhNubj{)}(h*hw*h]hhw}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jzhjubh below.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjrubeh}(h]h ]h"]h$]h&]uh1jhhhKhjoubah}(h]h ]h"]h$]h&]uh1jhjkubah}(h]h ]h"]h$]h&]uh1jhjhhhhNhNubj)}(hXZ*hw*/db This file is used to read, set, and clear the local doorbell. Not all operations may be supported by all hardware. To read the doorbell, read the file. To set the doorbell, write `s` followed by the bits to set (eg: `echo 's 0x0101' > db`). To clear the doorbell, write `c` followed by the bits to clear.h]j)}(hhh]j)}(hX<*hw*/db This file is used to read, set, and clear the local doorbell. Not all operations may be supported by all hardware. To read the doorbell, read the file. To set the doorbell, write `s` followed by the bits to set (eg: `echo 's 0x0101' > db`). To clear the doorbell, write `c` followed by the bits to clear.h](j)}(h*hw*/dbh](j{)}(h*hw*h]hhw}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jzhjubh/db}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhKhjubj)}(hhh]h)}(hX4This file is used to read, set, and clear the local doorbell. Not all operations may be supported by all hardware. To read the doorbell, read the file. To set the doorbell, write `s` followed by the bits to set (eg: `echo 's 0x0101' > db`). To clear the doorbell, write `c` followed by the bits to clear.h](hThis file is used to read, set, and clear the local doorbell. Not all operations may be supported by all hardware. To read the doorbell, read the file. To set the doorbell, write }(hj hhhNhNubhtitle_reference)}(h`s`h]hs}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh" followed by the bits to set (eg: }(hj hhhNhNubj)}(h`echo 's 0x0101' > db`h]hecho ‘s 0x0101’ > db}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh!). To clear the doorbell, write }(hj hhhNhNubj)}(h`c`h]hc}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh followed by the bits to clear.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhjhhhhNhNubj)}(hn*hw*/mask This file is used to read, set, and clear the local doorbell mask. See *db* for details.h]j)}(hhh]j)}(hb*hw*/mask This file is used to read, set, and clear the local doorbell mask. See *db* for details.h](j)}(h *hw*/maskh](j{)}(h*hw*h]hhw}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jzhjtubh/mask}(hjthhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhKhjpubj)}(hhh]h)}(hXThis file is used to read, set, and clear the local doorbell mask. See *db* for details.h](hGThis file is used to read, set, and clear the local doorbell mask. See }(hjhhhNhNubj{)}(h*db*h]hdb}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jzhjubh for details.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjpubeh}(h]h ]h"]h$]h&]uh1jhhhKhjmubah}(h]h ]h"]h$]h&]uh1jhjiubah}(h]h ]h"]h$]h&]uh1jhjhhhhNhNubj)}(hl*hw*/peer\_db This file is used to read, set, and clear the peer doorbell. See *db* for details.h]j)}(hhh]j)}(h`*hw*/peer\_db This file is used to read, set, and clear the peer doorbell. See *db* for details.h](j)}(h *hw*/peer\_dbh](j{)}(h*hw*h]hhw}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jzhjubh /peer_db}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhKhjubj)}(hhh]h)}(hRThis file is used to read, set, and clear the peer doorbell. See *db* for details.h](hAThis file is used to read, set, and clear the peer doorbell. See }(hjhhhNhNubj{)}(h*db*h]hdb}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jzhjubh for details.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhjhhhhNhNubj)}(ht*hw*/peer\_mask This file is used to read, set, and clear the peer doorbell mask. See *db* for details.h]j)}(hhh]j)}(hh*hw*/peer\_mask This file is used to read, set, and clear the peer doorbell mask. See *db* for details.h](j)}(h*hw*/peer\_maskh](j{)}(h*hw*h]hhw}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jzhj8ubh /peer_mask}(hj8hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhKhj4ubj)}(hhh]h)}(hXThis file is used to read, set, and clear the peer doorbell mask. See *db* for details.h](hGThis file is used to read, set, and clear the peer doorbell mask. See }(hjWhhhNhNubj{)}(h*db*h]hdb}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jzhjWubh for details.}(hjWhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjTubah}(h]h ]h"]h$]h&]uh1jhj4ubeh}(h]h ]h"]h$]h&]uh1jhhhKhj1ubah}(h]h ]h"]h$]h&]uh1jhj-ubah}(h]h ]h"]h$]h&]uh1jhjhhhhNhNubj)}(hXK*hw*/spad This file is used to read and write local scratchpads. To read the values of all scratchpads, read the file. To write values, write a series of pairs of scratchpad number and value (eg: `echo '4 0x123 7 0xabc' > spad` # to set scratchpads `4` and `7` to `0x123` and `0xabc`, respectively).h]j)}(hhh]j)}(hX-*hw*/spad This file is used to read and write local scratchpads. To read the values of all scratchpads, read the file. To write values, write a series of pairs of scratchpad number and value (eg: `echo '4 0x123 7 0xabc' > spad` # to set scratchpads `4` and `7` to `0x123` and `0xabc`, respectively).h](j)}(h *hw*/spadh](j{)}(h*hw*h]hhw}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jzhjubh/spad}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhKhjubj)}(hhh]h)}(hX#This file is used to read and write local scratchpads. To read the values of all scratchpads, read the file. To write values, write a series of pairs of scratchpad number and value (eg: `echo '4 0x123 7 0xabc' > spad` # to set scratchpads `4` and `7` to `0x123` and `0xabc`, respectively).h](hThis file is used to read and write local scratchpads. To read the values of all scratchpads, read the file. To write values, write a series of pairs of scratchpad number and value (eg: }(hjhhhNhNubj)}(h`echo '4 0x123 7 0xabc' > spad`h]h!echo ‘4 0x123 7 0xabc’ > spad}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh # to set scratchpads }(hjhhhNhNubj)}(h`4`h]h4}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh and }(hjhhhNhNubj)}(h`7`h]h7}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh to }(hjhhhNhNubj)}(h`0x123`h]h0x123}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh and }hjsbj)}(h`0xabc`h]h0xabc}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh, respectively).}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhjhhhhNhNubj)}(hk*hw*/peer\_spad This file is used to read and write peer scratchpads. See *spad* for details. h]j)}(hhh]j)}(h_*hw*/peer\_spad This file is used to read and write peer scratchpads. See *spad* for details. h](j)}(h*hw*/peer\_spadh](j{)}(h*hw*h]hhw}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jzhjDubh /peer_spad}(hjDhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhKhj@ubj)}(hhh]h)}(hNThis file is used to read and write peer scratchpads. See *spad* for details.h](h;This file is used to read and write peer scratchpads. See }(hjchhhNhNubj{)}(h*spad*h]hspad}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jzhjcubh for details.}(hjchhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj`ubah}(h]h ]h"]h$]h&]uh1jhj@ubeh}(h]h ]h"]h$]h&]uh1jhhhKhj=ubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1jhjhhhhNhNubeh}(h]h ]h"]h$]h&]j#j$uh1jhhhKhj-hhubeh}(h]ntb-tool-test-client-ntb-toolah ]h"]ntb tool test client (ntb_tool)ah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(h$NTB MSI Test Client (ntb\_msi\_test)h]h$NTB MSI Test Client (ntb_msi_test)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hThe MSI test client serves to test and debug the MSI library which allows for passing MSI interrupts across NTB memory windows. The test client is interacted with through the debugfs filesystem:h]hThe MSI test client serves to test and debug the MSI library which allows for passing MSI interrupts across NTB memory windows. The test client is interacted with through the debugfs filesystem:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj)}(hhh](j)}(h*debugfs*/ntb\_msi\_test/*hw*/ A directory in debugfs will be created for each NTB device probed by the msi test. This directory is shortened to *hw* below.h]j)}(hhh]j)}(h*debugfs*/ntb\_msi\_test/*hw*/ A directory in debugfs will be created for each NTB device probed by the msi test. This directory is shortened to *hw* below.h](j)}(h*debugfs*/ntb\_msi\_test/*hw*/h](j{)}(h *debugfs*h]hdebugfs}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jzhjubh/ntb_msi_test/}(hjhhhNhNubj{)}(h*hw*h]hhw}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jzhjubh/}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhKhjubj)}(hhh]h)}(h~A directory in debugfs will be created for each NTB device probed by the msi test. This directory is shortened to *hw* below.h](hsA directory in debugfs will be created for each NTB device probed by the msi test. This directory is shortened to }(hj hhhNhNubj{)}(h*hw*h]hhw}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jzhj ubh below.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhjhhhNhNubj)}(h9*hw*/port This file describes the local port numberh]j)}(hhh]j)}(h3*hw*/port This file describes the local port numberh](j)}(h *hw*/porth](j{)}(h*hw*h]hhw}(hjN hhhNhNubah}(h]h ]h"]h$]h&]uh1jzhjJ ubh/port}(hjJ hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhKhjF ubj)}(hhh]h)}(h)This file describes the local port numberh]h)This file describes the local port number}(hji hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjf ubah}(h]h ]h"]h$]h&]uh1jhjF ubeh}(h]h ]h"]h$]h&]uh1jhhhKhjC ubah}(h]h ]h"]h$]h&]uh1jhj? ubah}(h]h ]h"]h$]h&]uh1jhjhhhNhNubj)}(h*hw*/irq*_occurrences One occurrences file exists for each interrupt and, when read, returns the number of times the interrupt has been triggered.h]j)}(hhh]j)}(h*hw*/irq*_occurrences One occurrences file exists for each interrupt and, when read, returns the number of times the interrupt has been triggered.h](j)}(h*hw*/irq*_occurrencesh](j{)}(h*hw*h]hhw}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jzhj ubh/irq*_occurrences}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhKhj ubj)}(hhh]h)}(h|One occurrences file exists for each interrupt and, when read, returns the number of times the interrupt has been triggered.h]h|One occurrences file exists for each interrupt and, when read, returns the number of times the interrupt has been triggered.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhjhhhNhNubj)}(hG*hw*/peer*/port This file describes the port number for each peerh]j)}(hhh]j)}(hA*hw*/peer*/port This file describes the port number for each peerh](j)}(h*hw*/peer*/porth](j{)}(h*hw*h]hhw}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jzhj ubh /peer*/port}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhKhj ubj)}(hhh]h)}(h1This file describes the port number for each peerh]h1This file describes the port number for each peer}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhjhhhNhNubj)}(hl*hw*/peer*/count This file describes the number of interrupts that can be triggered on each peerh]j)}(hhh]j)}(h`*hw*/peer*/count This file describes the number of interrupts that can be triggered on each peerh](j)}(h*hw*/peer*/counth](j{)}(h*hw*h]hhw}(hj> hhhNhNubah}(h]h ]h"]h$]h&]uh1jzhj: ubh /peer*/count}(hj: hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhKhj6 ubj)}(hhh]h)}(hOThis file describes the number of interrupts that can be triggered on each peerh]hOThis file describes the number of interrupts that can be triggered on each peer}(hjY hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjV ubah}(h]h ]h"]h$]h&]uh1jhj6 ubeh}(h]h ]h"]h$]h&]uh1jhhhKhj3 ubah}(h]h ]h"]h$]h&]uh1jhj/ ubah}(h]h ]h"]h$]h&]uh1jhjhhhNhNubj)}(h*hw*/peer*/trigger Writing an interrupt number (any number less than the value specified in count) will trigger the interrupt on the specified peer. That peer's interrupt's occurrence file should be incremented. h]j)}(hhh]j)}(h*hw*/peer*/trigger Writing an interrupt number (any number less than the value specified in count) will trigger the interrupt on the specified peer. That peer's interrupt's occurrence file should be incremented. h](j)}(h*hw*/peer*/triggerh](j{)}(h*hw*h]hhw}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jzhj ubh/peer*/trigger}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhKhj ubj)}(hhh]h)}(hWriting an interrupt number (any number less than the value specified in count) will trigger the interrupt on the specified peer. That peer's interrupt's occurrence file should be incremented.h]hWriting an interrupt number (any number less than the value specified in count) will trigger the interrupt on the specified peer. That peer’s interrupt’s occurrence file should be incremented.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhjhhhNhNubeh}(h]h ]h"]h$]h&]j#j$uh1jhhhKhjhhubeh}(h] ntb-msi-test-client-ntb-msi-testah ]h"]"ntb msi test client (ntb_msi_test)ah$]h&]uh1hhjhhhhhKubeh}(h]ntb-client-driversah ]h"]ntb client driversah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hNTB Hardware Driversh]hNTB Hardware Drivers}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhKubh)}(hNTB hardware drivers should register devices with the NTB core driver. After registering, clients probe and remove functions will be called.h]hNTB hardware drivers should register devices with the NTB core driver. After registering, clients probe and remove functions will be called.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj hhubh)}(hhh](h)}(h*NTB Intel Hardware Driver (ntb\_hw\_intel)h]h*NTB Intel Hardware Driver (ntb_hw_intel)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhKubh)}(h=The Intel hardware driver supports NTB on Xeon and Atom CPUs.h]h=The Intel hardware driver supports NTB on Xeon and Atom CPUs.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj hhubh)}(hModule Parameters:h]hModule Parameters:}(hj# hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj hhubj)}(hhh](j)}(hXHb2b\_mw\_idx If the peer ntb is to be accessed via a memory window, then use this memory window to access the peer ntb. A value of zero or positive starts from the first mw idx, and a negative value starts from the last mw idx. Both sides MUST set the same value here! The default value is `-1`.h]j)}(hhh]j)}(hX*b2b\_mw\_idx If the peer ntb is to be accessed via a memory window, then use this memory window to access the peer ntb. A value of zero or positive starts from the first mw idx, and a negative value starts from the last mw idx. Both sides MUST set the same value here! The default value is `-1`.h](j)}(h b2b\_mw\_idxh]h b2b_mw_idx}(hj? hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKhj; ubj)}(hhh]h)}(hXIf the peer ntb is to be accessed via a memory window, then use this memory window to access the peer ntb. A value of zero or positive starts from the first mw idx, and a negative value starts from the last mw idx. Both sides MUST set the same value here! The default value is `-1`.h](hXIf the peer ntb is to be accessed via a memory window, then use this memory window to access the peer ntb. A value of zero or positive starts from the first mw idx, and a negative value starts from the last mw idx. Both sides MUST set the same value here! The default value is }(hjP hhhNhNubj)}(h`-1`h]h-1}(hjX hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjP ubh.}(hjP hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjM ubah}(h]h ]h"]h$]h&]uh1jhj; ubeh}(h]h ]h"]h$]h&]uh1jhhhKhj8 ubah}(h]h ]h"]h$]h&]uh1jhj4 ubah}(h]h ]h"]h$]h&]uh1jhj1 hhhNhNubj)}(hb2b\_mw\_share If the peer ntb is to be accessed via a memory window, and if the memory window is large enough, still allow the client to use the second half of the memory window for address translation to the peer.h]j)}(hhh]j)}(hb2b\_mw\_share If the peer ntb is to be accessed via a memory window, and if the memory window is large enough, still allow the client to use the second half of the memory window for address translation to the peer.h](j)}(hb2b\_mw\_shareh]hb2b_mw_share}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKhj ubj)}(hhh]h)}(hIf the peer ntb is to be accessed via a memory window, and if the memory window is large enough, still allow the client to use the second half of the memory window for address translation to the peer.h]hIf the peer ntb is to be accessed via a memory window, and if the memory window is large enough, still allow the client to use the second half of the memory window for address translation to the peer.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhj1 hhhNhNubj)}(hxeon\_b2b\_usd\_bar2\_addr64 If using B2B topology on Xeon hardware, use this 64 bit address on the bus between the NTB devices for the window at BAR2, on the upstream side of the link.h]j)}(hhh]j)}(hxeon\_b2b\_usd\_bar2\_addr64 If using B2B topology on Xeon hardware, use this 64 bit address on the bus between the NTB devices for the window at BAR2, on the upstream side of the link.h](j)}(hxeon\_b2b\_usd\_bar2\_addr64h]hxeon_b2b_usd_bar2_addr64}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKhj ubj)}(hhh]h)}(hIf using B2B topology on Xeon hardware, use this 64 bit address on the bus between the NTB devices for the window at BAR2, on the upstream side of the link.h]hIf using B2B topology on Xeon hardware, use this 64 bit address on the bus between the NTB devices for the window at BAR2, on the upstream side of the link.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhj1 hhhNhNubj)}(h=xeon\_b2b\_usd\_bar4\_addr64 - See *xeon\_b2b\_bar2\_addr64*.h]h)}(hj h](h#xeon_b2b_usd_bar4_addr64 - See }(hj hhhNhNubj{)}(h*xeon\_b2b\_bar2\_addr64*h]hxeon_b2b_bar2_addr64}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jzhj ubh.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj ubah}(h]h ]h"]h$]h&]uh1jhj1 hhhhhNubj)}(h=xeon\_b2b\_usd\_bar4\_addr32 - See *xeon\_b2b\_bar2\_addr64*.h]h)}(hj7 h](h#xeon_b2b_usd_bar4_addr32 - See }(hj9 hhhNhNubj{)}(h*xeon\_b2b\_bar2\_addr64*h]hxeon_b2b_bar2_addr64}(hj@ hhhNhNubah}(h]h ]h"]h$]h&]uh1jzhj9 ubh.}(hj9 hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj5 ubah}(h]h ]h"]h$]h&]uh1jhj1 hhhhhNubj)}(h=xeon\_b2b\_usd\_bar5\_addr32 - See *xeon\_b2b\_bar2\_addr64*.h]h)}(hj` h](h#xeon_b2b_usd_bar5_addr32 - See }(hjb hhhNhNubj{)}(h*xeon\_b2b\_bar2\_addr64*h]hxeon_b2b_bar2_addr64}(hji hhhNhNubah}(h]h ]h"]h$]h&]uh1jzhjb ubh.}(hjb hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj^ ubah}(h]h ]h"]h$]h&]uh1jhj1 hhhhhNubj)}(h=xeon\_b2b\_dsd\_bar2\_addr64 - See *xeon\_b2b\_bar2\_addr64*.h]h)}(hj h](h#xeon_b2b_dsd_bar2_addr64 - See }(hj hhhNhNubj{)}(h*xeon\_b2b\_bar2\_addr64*h]hxeon_b2b_bar2_addr64}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jzhj ubh.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj ubah}(h]h ]h"]h$]h&]uh1jhj1 hhhhhNubj)}(h=xeon\_b2b\_dsd\_bar4\_addr64 - See *xeon\_b2b\_bar2\_addr64*.h]h)}(hj h](h#xeon_b2b_dsd_bar4_addr64 - See }(hj hhhNhNubj{)}(h*xeon\_b2b\_bar2\_addr64*h]hxeon_b2b_bar2_addr64}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jzhj ubh.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj ubah}(h]h ]h"]h$]h&]uh1jhj1 hhhhhNubj)}(h=xeon\_b2b\_dsd\_bar4\_addr32 - See *xeon\_b2b\_bar2\_addr64*.h]h)}(hj h](h#xeon_b2b_dsd_bar4_addr32 - See }(hj hhhNhNubj{)}(h*xeon\_b2b\_bar2\_addr64*h]hxeon_b2b_bar2_addr64}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jzhj ubh.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj ubah}(h]h ]h"]h$]h&]uh1jhj1 hhhhhNubj)}(h=xeon\_b2b\_dsd\_bar5\_addr32 - See *xeon\_b2b\_bar2\_addr64*.h]h)}(hj h](h#xeon_b2b_dsd_bar5_addr32 - See }(hj hhhNhNubj{)}(h*xeon\_b2b\_bar2\_addr64*h]hxeon_b2b_bar2_addr64}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jzhj ubh.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj ubah}(h]h ]h"]h$]h&]uh1jhj1 hhhhhNubeh}(h]h ]h"]h$]h&]j#j$uh1jhhhKhj hhubeh}(h]&ntb-intel-hardware-driver-ntb-hw-intelah ]h"](ntb intel hardware driver (ntb_hw_intel)ah$]h&]uh1hhj hhhhhKubeh}(h]ntb-hardware-driversah ]h"]ntb hardware driversah$]h&]uh1hhhhhhhhKubeh}(h] ntb-driversah ]h"] ntb driversah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN 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_handlerjl error_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}(jF jC hhj j jjjjj*j'jjj j j> j; j6 j3 u nametypes}(jF hj jjj*jj j> j6 uh}(jC hhhj jjj!jjj'jjj-j jj; j j3 j u 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.