Memory Region / Key Table
A remote RDMA operation doesn’t address memory the way a local pointer does – it carries an rkey, opaque to the requester, that the target RNIC has to resolve against its own Memory Region table before anything moves. This part covers that resolution end to end: the Memory Region descriptor a registration produces, the key table that stores it, the on-chip cache that makes resolving a key cheap, the registration handoff that installs one, what happens when a resolved key’s permissions or bounds don’t match the operation asking to use it, what changes when several Queue Pairs share one region, how the key cache decides what to evict under pressure, what actually executes that decision, what happens when a region is deregistered while an operation against it is still in flight, and, closing it out, how many regions a real chip can actually hold registered at once and what it costs in silicon to let registration and per-DMA lookups share the same structure safely.
Ten chapters here, not eleven – a deliberate deviation from Queue Pair Management’s shape, not a gap. A QP’s install-then-run lifecycle earns its own dedicated state-machine chapter because RESET→INIT→RTR→RTS is genuinely rich enough to need one; a Memory Region’s own lifecycle – registered, valid, deregistered – doesn’t have that richness, so the two questions Queue Pair Management answers in separate chapters (installation, and the state machine governing it) collapse into one here, Registering a Memory Region, without skipping either question.