void xen_l3_entry_update(pud_t *ptr, pud_t val) { mmu_update_t u; u.ptr = virt_to_machine(ptr); u.val = pud_val_ma(val); BUG_ON(HYPERVISOR_mmu_update(&u, 1, NULL, DOMID_SELF) < 0); }
void xen_set_pud(pud_t *ptr, pud_t val) { struct multicall_space mcs; struct mmu_update *u; preempt_disable(); mcs = xen_mc_entry(sizeof(*u)); u = mcs.args; u->ptr = virt_to_machine(ptr).maddr; u->val = pud_val_ma(val); MULTI_mmu_update(mcs.mc, u, 1, NULL, DOMID_SELF); xen_mc_issue(PARAVIRT_LAZY_MMU); preempt_enable(); }