asi_series cluster_first_posting Posted 7 Oct 2026 as v3: d01–d18 cluster_0 Standalone PoD fix cluster_g1 VH · Per-vCPU area and mapcache for HVM  (d02–d11) cluster_1 vCPU-scoped perdomain interfaces cluster_2 asi= option and per-vCPU L3 cluster_3 Per-vCPU mapcache cluster_4 DV · Sparse directmap view  (d12–d18) cluster_5 X1 · vCPU state window and its consumers  (d19–d22) cluster_9 X3 · HVM register state behind the window  (d23–d26) cluster_g5 X2 · Key structures off the xenheap  (d27–d37) cluster_6 Multi-page transient maps cluster_7 FPU / XSAVE area handling cluster_8 XPTI per-domain L3 cluster_g6 PH · Per-pCPU stacks for HVM  (d38–d58) cluster_10 Rendezvous / callfunc off-stack cluster_11 Per-pCPU stacks cluster_12 Stack checks (droppable extras) cluster_13 flushtlb RFC cluster_14 Debug key RFC p01 d01  map one page at a time in p2m_pod_zero_check() p11 d11  introduce per-vCPU mapcache for vCPU-PT domains p01->p11 p02 d02  purge unneeded destroy_per domain_mapping() p03 d03  prepare destroy_perdomain_ mapping() for per-vCPU perdomai... p02->p03 p07 d07  introduce per-vCPU L3 page-table p03->p07 p04 d04  drop redundant create_perdomain_mapping() call p05 d05  prepare create_perdomain_mapping() for per-vCPU perdomain... p04->p05 p05->p07 p06 d06  introduce Address Space Isolation command line option p06->p07 p49 d49  add the cpu-stack sub- option of asi= p06->p49 p07->p11 p19 d19  introduce populate_perdoma in_mapping() p07->p19 p52 d52  map only its own CPU's stack in a cpu-stack vCPU's page-t... p07->p52 p08 d08  prepare the mapcache for per-vCPU accounting p08->p11 p09 d09  move struct mapcache_vcpu to struct arch_vcpu p09->p11 p10 d10  don't unmap a mapcache entry that is not present p10->p11 p16 d16  keep the maphash's slots, not their mappings p10->p16 p14 d14  key the directmap fast paths on the loaded view p11->p14 p15 d15  flush owned pages before reuse with the sparse directmap ... p11->p15 p17 d17  run guest contexts on the sparse directmap view p11->p17 p27 d27  introduce map_domain_pages() p11->p27 g_map Transient guest mappings per-vCPU private p11->g_map p12 d12  let Xen's page-table walker operate on a given root p13 d13  build and maintain a sparse view of the directmap p12->p13 p13->p14 p13->p15 p13->p17 p18 d18  wire the sparse directmap view into the asi= option p14->p18 p15->p16 p16->p18 p17->p18 p59 d59  [RFC] leave nothing of the old page-tables usable at the CR3 write p17->p59 p54 d54  allocate per-CPU stacks from the domain heap p18->p54 g_dmap Guest contexts off the full directmap p18->g_dmap p20 d20  introduce a per-vCPU state window in the perdomain area p19->p20 p21 d21  allocate VMCBs from the domain heap behind the vCPU state... p20->p21 p22 d22  move the guest MSR load/save list off always- mapped memory p20->p22 p24 d24  move the saved register frame behind the vCPU state window p20->p24 p25 d25  move the emulator's operand caches behind the vCPU state ... p20->p25 p37 d37  move guest XSAVE areas behind the vCPU state window p20->p37 g_state Guest register state not always-mapped p22->g_state p23 d23  access a vCPU's saved register frame through map/unmap he... p23->p24 p24->g_state p25->g_state p26 d26  clear the vCPU's copy of an emulated I/O request once con... p28 d28  use map_domain_pages() for cross-page emulated writes p27->p28 p29 d29  use map_domain_pages() for multi-frame emulated accesses p27->p29 p27->p37 p28->g_map p29->g_map p30 d30  Refactor FXSAVE_AREA to use wrappers p31 d31  Map/unmap xsave area in read_bndcfgu() p30->p31 p32 d32  Pass explicit xsave areas to fpu_(f)xsave() p30->p32 p33 d33  Pass explicit xsave areas to fpu_(f)xrstor() p30->p33 p31->p37 p32->p37 p33->p37 p34 d34  classify xsave-area seam accesses by failure mode p34->p37 p35 d35  restore FPU state after switching to the new page tables p35->p37 p37->g_state p36 d36  give each per-CPU root page-table its own per- domain L3 p36->p37 p53 d53  map only its own CPU's stack in each per-CPU root page-table p36->p53 p38 d38  move the set_mtrr() rendezvous data off the stack p39 d39  move smp_send_stop()'s AP- stop flag off the stack p40 d40  move the calibration rendezvous data off the stack p41 d41  move the stop_machine payload off the stack p42 d42  introduce by-value payloads for call-function IPIs p43 d43  pass stack-allocated callfunc payloads by value p42->p43 p44 d44  pass error-injection callfunc payloads by value p42->p44 p45 d45  pass remaining stack- allocated callfunc payloads by value p42->p45 p46 d46  assert that by-pointer callfunc payloads are not on the s... p43->p46 p44->p46 p45->p46 p46->p52 p58 d58  crash the domain if the saved stack is not this CPU's p46->p58 p47 d47  track per-CPU stack pages alongside stack_base p47->p54 p57 d57  name the CPU whose stack a fatal page fault hit p47->p57 p48 d48  keep a per-CPU mirror of current for cross-CPU readers p48->p54 p50 d50  keep cpu-stack off while XPTI is enabled p49->p50 p51 d51  run every CPU on a per-CPU stack address p49->p51 p50->p51 p50->p53 p51->p52 p56 d56  assert that data handed to other CPUs is not on a CPU's s... p51->p56 p51->p57 p52->p53 p52->p54 p55 d55  zero stack on context switch p52->p55 p60 d60  [RFC] add a debug key reporting which stacks page-tables map p52->p60 p53->p60 g_stack Xen stacks per-CPU private and scrubbed p54->g_stack p55->g_stack

Xen ASI series — 60 patches

Selected patch

Click a patch. Blue outline = what it needs (ancestors); vermilion = what needs it (descendants). Click again or press Clear to reset.

Legend

verified dependency
inferred (verify during group review)
dotted purple arrow, hollow head: no regression — the later patch works without the earlier one, but without it would degrade another feature (named on hover), so the earlier one goes first
gold arrow: completes an end goal (hexagons). Each goal is drawn beside the group that achieves it; together the end goals constitute the ASI end state (guest-owned data not reachable from other contexts).
green node border: vetted so far (status shown on selection)
dashed green box: the first posting
double border: posted to xen-devel (thread link on selection)
blue border and ✓ in the label: carries a Reviewed-by (tags shown on selection)
Dependencies already implied by a drawn path are recorded but not drawn; the click-cone includes them.

Groups

VH = per-vCPU area and mapcache for HVM domains, DV = a sparse view of the directmap, alongside the full one, chosen per domain at creation, X = key per-vCPU structures off the xenheap, in three groups: X1 the per-vCPU state window and its first consumers, X2 the guest XSAVE areas, with the multi-page transient maps, FPU changes and XPTI per-domain L3 ahead of them, X3 the HVM register state, PH = per-pCPU stacks for HVM domains. Numbered in series order within a letter; the series runs VH DV X1 X3 X2 PH. Ranges are positions in this revision of the page.

Postings

Open items

Source of truth: gen-depgraph.py (same directory); positions read live from stg series; regenerate with python3 gen-depgraph.py.