CXL-RESERVE-DPA(1)

✨ cxl-reserve-dpa ✨

okay so real talk, this one lives in the cxl Manual, section 1, and it's genuinely one of my faves because it's like the little reservation desk for device memory πŸ’…


πŸŽ€ NAME πŸŽ€

cxl-reserve-dpa β€” allocate device-physical address space 🫢


🌸 SYNOPSIS 🌸

cxl reserve-dpa <mem0> [<mem1>..<memN>] [<options>]

okay so the CXL region provisioning process is a whole multi-step thing, right? it doesn't just happen in one go. one of those steps is figuring out and reserving the DPA span that each member of the interleave-set (that's the region, bestie) contributes β€” and you gotta do that in advance of attaching that allocation to a region. so for development, test, and debug purposes, this command is your little helper buddy: it finds the next available decoder on the endpoint (memdev) and marks a span of DPA as busy. slay πŸ”₯


✨ OPTIONS ✨

  • <memory device(s)> β€” a memX device name, or a memdev id number. use it to restrict the operation to the specified memdev(s). and if you say all, that means no restriction at all β€” go wild, no cap 🌈
  • -S, --serial β€” instead of a memdev id number, read the <memdev> argument(s) as a list of serial numbers. iykyk πŸ¦‹
  • -b, --bus= β€” restrict the operation to the specified bus.
  • -d, --decoder β€” pick which decoder to attempt the allocation on. here's the tea β˜•: the CXL specification mandates that allocations must be ordered by DPA and decoder instance β€” meaning the lowest DPA allocation on the device is covered by decoder0, and the last / highest DPA allocation is covered by the last decoder. the kernel enforces this ordering, fr fr. by default, the tool just picks the next available decoder for you πŸ’–
  • -t, --type β€” select the partition for the allocation. CXL devices implement a partition that divides ram and pmem capacity, where pmem capacity consumes the higher DPA capacity above the partition boundary. the type defaults to pmem. ⚠️ note that given CXL DPA allocation constraints, once any pmem allocation is established, then all remaining ram capacity becomes reserved (skipped). like, gone. skipped. sorry bestie 😭
  • -f, --force β€” so the kernel enforces those CXL DPA allocation ordering constraints, and the tool anticipates them and fails operations that are expected to fail without even sending them to the kernel. for test purposes though, this flag says "no, actually, send it anyway" β€” it continues to attempt "expected to fail" operations to exercise the driver. chaos mode, but make it intentional πŸ’€
  • -s, --size β€” specify the size of the allocation. this option supports the suffixes k or K for KiB, m or M for MiB, g or G for GiB and t or T for TiB. this defaults to "all available capacity of the specified type" β€” like, the whole thing πŸ”₯
  • -v β€” turn on verbose debug messages in the library (if libcxl was built with logging and debug enabled). basically the "tell me everything" button πŸ™ˆ

Copyright Β© 2016 - 2022, Intel Corporation. License GPLv2: GNU GPL version 2 http://gnu.org/licenses/gpl.html. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. (yes, all caps NO WARRANTY β€” they mean it, bestie πŸ’€)


🌟 SEE ALSO 🌟

  • cxl-free-dpa(1) β€” the other half of the story, go give it a read 🧚

and that's the whole vibe check, bestie πŸ’œ this page came to you from the cxl manual, dated 2026-06-30 β€” stay caffeinated, keep your DPA ordered, and go reserve some space, periodt πŸŽ€πŸ“βœ¨

πŸ“¦ where this page comes from
  • arch rolling: ndctl 85-1 Β· LGPL-2.1-only AND GPL-2.0-only AND CC0-1.0 AND MIT
  • πŸ’– girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms