ntb_peer_spad_addr(9)
π ntb_peer_spad_addr(9) β like, the Kernel API Manual's lil' scratchpad address getter β¨
okay so bestie, this page lives in the Kernel API Manual, section 9, and it's about one tiny but iconic function. let's get into it π
β¨ NAME β¨
ntb_peer_spad_addr β literally just gives you the address of the peer scratchpad register π no cap.
πΈ SYNOPSIS πΈ
int ntb_peer_spad_addr (struct ntb_dev *ntb , int pidx , int sidx ,
phys_addr_t *spad_addr );
like, that's the whole signature, periodt. π«Ά
π¦ ARGUMENTS π¦
ntbβ the NTB device context. your main character struct, basically πpidxβ port index of the peer device. which peer we're talking about, iykyk π₯sidxβ scratchpad index. which scratchpad slot we're eyeing πspad_addrβ OUT β the address of the peer scratchpad register. it gets written into this, so it's an output param π
β DESCRIPTION β
so what it does is: return the address of the peer scratchpad register. that's it, that's the vibe β¨
and like, why would you even want that? the manpage says it may be used, for example, by drivers that offload memory copy operations to a dma engine π§ so if your driver's handing the copying off to a dma engine, this address is exactly the thing you'd want. slay.
π RETURN π
zero on success π otherwise an error number π (so, y'know, check it. always check it.)
π SEE ALSO π
the kernel file ./include/linux/ntb.h has all the lore, and honestly the friend group here is huge, so buckle up bestie β every single one of these is on the list:
enum ntb_topo(9)enum ntb_speed(9)enum ntb_width(9)enum ntb_default_port(9)struct ntb_client_ops(9)struct ntb_ctx_ops(9)struct ntb_dev_ops(9)struct ntb_client(9)struct ntb_dev(9)ntb_register_client(9)ntb_unregister_client(9)ntb_register_device(9)ntb_unregister_device(9)ntb_set_ctx(9)ntb_clear_ctx(9)ntb_link_event(9)ntb_db_event(9)ntb_msg_event(9)ntb_default_port_number(9)ntb_default_peer_port_count(9)ntb_default_peer_port_number(9)ntb_default_peer_port_idx(9)ntb_port_number(9)ntb_peer_port_count(9)ntb_peer_port_number(9)ntb_logical_port_number(9)ntb_peer_logical_port_number(9)ntb_peer_port_idx(9)ntb_link_is_up(9)ntb_link_enable(9)ntb_link_disable(9)ntb_mw_count(9)ntb_mw_get_align(9)ntb_mw_set_trans(9)ntb_mw_clear_trans(9)ntb_peer_mw_count(9)ntb_peer_mw_get_addr(9)ntb_peer_mw_set_trans(9)ntb_peer_mw_clear_trans(9)ntb_db_is_unsafe(9)ntb_db_valid_mask(9)ntb_db_vector_count(9)ntb_db_vector_mask(9)ntb_db_read(9)ntb_db_set(9)ntb_db_clear(9)ntb_db_read_mask(9)ntb_db_set_mask(9)ntb_db_clear_mask(9)ntb_peer_db_addr(9)ntb_peer_db_read(9)ntb_peer_db_set(9)ntb_peer_db_clear(9)ntb_peer_db_read_mask(9)ntb_peer_db_set_mask(9)ntb_peer_db_clear_mask(9)ntb_spad_is_unsafe(9)ntb_spad_count(9)ntb_spad_read(9)ntb_spad_write(9)ntb_peer_spad_read(9)ntb_peer_spad_write(9)ntb_msg_count(9)ntb_msg_inbits(9)ntb_msg_outbits(9)ntb_msg_read_sts(9)ntb_msg_clear_sts(9)ntb_msg_set_mask(9)ntb_msg_clear_mask(9)ntb_msg_read(9)ntb_peer_msg_write(9)ntb_get_dma_dev(9)ntb_peer_resource_idx(9)ntb_peer_highest_mw_idx(9)
like, go read them all. or at least the scratchpad ones, they're siblings fr fr π
π friendly reminder bestie: spad_addr is an OUT param, so pass it a real pointer you actually own. don't be out here handing it garbage and then acting surprised π
k that's the whole page!! this one came straight out of ./include/linux and it's dated October 2026 β so like, future vibes only π
π¦ mwah, go read the source and stay hydrated β¨πΈ
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms