On Friday 15 Apr 2022 at 21:58:50 (+0000), Oliver Upton wrote: > +/* > + * Used to indicate a pte for which a 'make-before-break' sequence is in 'break-before-make' presumably :-) ? <snip> > +static void stage2_make_pte(kvm_pte_t *ptep, kvm_pte_t new, struct kvm_pgtable_mm_ops *mm_ops) > +{ > + /* Yikes! We really shouldn't install to an entry we don't own. */ > + WARN_ON(!stage2_pte_is_locked(*ptep)); > + > + if (stage2_pte_is_counted(new)) > + mm_ops->get_page(ptep); > + > + if (kvm_pte_valid(new)) { > + WRITE_ONCE(*ptep, new); > + dsb(ishst); > + } else { > + smp_store_release(ptep, new); > + } > +} I'm struggling a bit to understand this pattern. We currently use smp_store_release() to install valid mappings, which this patch seems to change. Is the behaviour change intentional? If so, could you please share some details about the reasoning that applies here? Thanks, Quentin