request_skip(9)
๐ฆ request_skip(9) โ a little field guide from the Kernel API Manual ๐ฆ
okay so bestie, grab your iced coffee, we're getting into request_skip ๐
this one lives in the Kernel API Manual and it's giving "niche but important," so let's get into it.
โจ NAME โจ
request_skip โ tracks DPA 'skip' inside the @cxlds->dpa_res resource tree ๐
๐ธ SYNOPSIS ๐ธ
int request_skip (struct cxl_dev_state *cxlds , struct
cxl_endpoint_decoder *cxled , const resource_size_t skip_base , const
resource_size_t skip_len );
๐ ARGUMENTS ๐
cxldsโ the CXL.mem device context, aka the parent ofcxled๐ like the main character that everything hangs off of.cxledโ the endpoint decoder establishing the new allocation, the one that goes and skips the lower DPA ๐ฆskip_baseโ a DPA that's<the start of the new DPA allocation (that's DPAnew, btw). so it sits just under where the new stuff begins.skip_lenโ the length whereskip_base + skip_len == DPAnew. literally the math that lands you right at DPAnew โจ
๐ DESCRIPTION ๐
okay so DPA 'skip' is what happens when out-of-sequence DPA allocation events show up relative to the free capacity across multiple partitions. it's a wasteful event ngl โ usable DPA straight up gets thrown away ๐ญ but here's the vibe: if a deployment has, like, a dual RAM+PMEM device, wants to use PMEM, and has unallocated RAM DPA, then that free RAM DPA must be sacrificed to start allocating PMEM. no cap, it's gotta go. see the third "Implementation Note" in CXL 3.1 8.2.4.19.13 "Decoder Protection" for more details ๐
a 'skip' always covers the last allocated DPA in a previous partition up to the start of the current partition that's about to allocate. and here's the rule bestie: allocations never start in the middle of a partition, and allocations are always de-allocated in reverse order (see cxl_dpa_free, or the natural devm unwind order from forced in-order allocation). periodt. ๐
if cxlds->nr_partitions was guaranteed to be <= 2 then the 'skip' would always be contained to a single partition, which would be so chill. but given that cxlds->nr_partitions may be > 2, you get cases where the 'skip' might span "tail capacity of partition[0], all of partition[1], ..., all of partition[N-1]" to support allocating from partition[N] ๐ฎโ๐จ that in turn interacts with the partition 'struct resource' boundaries within cxlds->dpa_res, which is exactly where the 'skip' requests need to be divided by partition. i.e. this is a quirk of using a 'struct resource' tree to detect range conflicts while also tracking partition boundaries in cxlds->dpa_res. it's giving multitasking icon behavior, iykyk ๐
fr fr, the whole "resource tree AND partition boundaries" thing is the quirk. don't forget it.
๐ฅ SEE ALSO ๐ฅ
- Kernel file
./drivers/cxl/core/hdm.c cxl core hdm(9)devm_cxl_setup_hdm(9)devm_cxl_enumerate_decoders(9)devm_cxl_switch_port_decoders_setup(9)devm_cxl_endpoint_decoders_setup(9)
go read those next bestie, they're all part of the same little family ๐ซถ
and that's the whole page, slay ๐
this one came from ./drivers/cxl/core and it's dated October 2026 โ so go forth and skip those DPAs responsibly, mwah ๐๐
๐ฆ 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