Lines Matching +full:hw +full:- +full:device +full:- +full:address

5 NTB (Non-Transparent Bridge) is a type of PCI-Express bridge chip that connects
6 the separate memory systems of two or more computers to the same PCI-Express
9 scratchpad and message registers. Scratchpad registers are read-and-writable
10 registers that are accessible from either side of the device, so that peers can
11 exchange a small amount of information at a fixed address. Message registers can
32 registration uses the Linux Device framework, so it should feel familiar to
36 ----------------------------------------
39 systems. So the NTB device features like Scratchpad/Message registers are
50 | dma-mapped |-ntb_mw_set_trans(addr) |
52 | (addr) |<======| MW xlat addr |<====| MW base addr |<== memory-mapped IO
53 |------------| |--------------| | |--------------|
56 1) allocate a memory region, 2) put translated address to NTB config,
57 3) somehow notify a peer device of performed initialization, 4) peer device
62 initialized by a peer device, is depicted on the figure::
68 | dma-mapped | | | MW base addr |<== memory-mapped IO
69 | memory | | |--------------|
70 | (addr) |<===================| MW xlat addr |<-ntb_peer_mw_set_trans(addr)
71 |------------| | |--------------|
74 1) allocate a memory region, 2) somehow deliver a translated address to a peer
75 device, 3) peer puts the translated address to NTB config, 4) peer device maps
81 Local device:
83 2) Initialize memory window by translated address of the allocated region
85 3) Send the translated address and memory window index to a peer device
87 Peer device:
88 1) Initialize memory window with retrieved address of the allocated
89 by another device memory region (it may fail if peer memory window
96 Local device:
97 1) ntb_mw_count(pidx) - retrieve number of memory ranges, which can
98 be allocated for memory windows between local device and peer device
100 2) ntb_get_align(pidx, midx) - retrieve parameters restricting the
105 4) ntb_mw_set_trans(pidx, midx) - try to set translation address of
106 the memory window with specified index for the defined peer device
107 (it may fail if local translated address setting is not supported)
108 5) Send translated base address (usually together with memory window
109 number) to the peer device using, for instance, scratchpad or message
112 Peer device:
113 1) ntb_peer_mw_set_trans(pidx, midx) - try to set received from other
114 device (related to pidx) translated address for specified memory
115 window. It may fail if retrieved address, for instance, exceeds
116 maximum possible address or isn't properly aligned.
117 2) ntb_peer_mw_get_addr(widx) - retrieve MMIO address to map the memory
121 same value as ntb_peer_mw_count() on the peer with port index - pidx.
124 ------------------------------------------------------------------
130 messages and data. The NTB Netdev then creates an ethernet device using a
136 -----------------------------------------
150 * unsafe - Some hardware has known issues with scratchpad and doorbell
154 * delay\_ms - Specify the delay between receiving a doorbell
157 * init\_db - Specify the doorbell bits to start new series of rounds. A new
160 * dyndbg - It is suggested to specify dyndbg=+p when loading this module, and
164 --------------------------------
174 * *debugfs*/ntb\_tool/*hw*/
176 NTB device probed by the tool. This directory is shortened to *hw*
178 * *hw*/db
184 * *hw*/mask
187 * *hw*/peer\_db
190 * *hw*/peer\_mask
193 * *hw*/spad
199 * *hw*/peer\_spad
204 ------------------------------------
210 * *debugfs*/ntb\_msi\_test/*hw*/
212 NTB device probed by the msi test. This directory is shortened to *hw*
214 * *hw*/port
216 * *hw*/irq*_occurrences
219 * *hw*/peer*/port
221 * *hw*/peer*/count
224 * *hw*/peer*/trigger
237 ------------------------------------------
248 `-1`.
252 second half of the memory window for address translation to the peer.
255 this 64 bit address on the bus between the NTB devices for the window
257 * xeon\_b2b\_usd\_bar4\_addr64 - See *xeon\_b2b\_bar2\_addr64*.
258 * xeon\_b2b\_usd\_bar4\_addr32 - See *xeon\_b2b\_bar2\_addr64*.
259 * xeon\_b2b\_usd\_bar5\_addr32 - See *xeon\_b2b\_bar2\_addr64*.
260 * xeon\_b2b\_dsd\_bar2\_addr64 - See *xeon\_b2b\_bar2\_addr64*.
261 * xeon\_b2b\_dsd\_bar4\_addr64 - See *xeon\_b2b\_bar2\_addr64*.
262 * xeon\_b2b\_dsd\_bar4\_addr32 - See *xeon\_b2b\_bar2\_addr64*.
263 * xeon\_b2b\_dsd\_bar5\_addr32 - See *xeon\_b2b\_bar2\_addr64*.