request_skip(9)

๐Ÿ“ฆ version 7.3.1, in nixpkgs unstable

๐Ÿฆ‹ 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 of cxled ๐Ÿ‘‘ 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 where skip_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 ๐Ÿ”ฅ

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