Loading arch/x86/xen/enlighten.c +13 −2 Original line number Diff line number Diff line Loading @@ -301,10 +301,21 @@ static void xen_load_gdt(const struct desc_ptr *dtr) frames = mcs.args; for (f = 0; va < dtr->address + size; va += PAGE_SIZE, f++) { frames[f] = arbitrary_virt_to_mfn((void *)va); int level; pte_t *ptep = lookup_address(va, &level); unsigned long pfn, mfn; void *virt; BUG_ON(ptep == NULL); pfn = pte_pfn(*ptep); mfn = pfn_to_mfn(pfn); virt = __va(PFN_PHYS(pfn)); frames[f] = mfn; make_lowmem_page_readonly((void *)va); make_lowmem_page_readonly(mfn_to_virt(frames[f])); make_lowmem_page_readonly(virt); } MULTI_set_gdt(mcs.mc, frames, size / sizeof(struct desc_struct)); Loading Loading
arch/x86/xen/enlighten.c +13 −2 Original line number Diff line number Diff line Loading @@ -301,10 +301,21 @@ static void xen_load_gdt(const struct desc_ptr *dtr) frames = mcs.args; for (f = 0; va < dtr->address + size; va += PAGE_SIZE, f++) { frames[f] = arbitrary_virt_to_mfn((void *)va); int level; pte_t *ptep = lookup_address(va, &level); unsigned long pfn, mfn; void *virt; BUG_ON(ptep == NULL); pfn = pte_pfn(*ptep); mfn = pfn_to_mfn(pfn); virt = __va(PFN_PHYS(pfn)); frames[f] = mfn; make_lowmem_page_readonly((void *)va); make_lowmem_page_readonly(mfn_to_virt(frames[f])); make_lowmem_page_readonly(virt); } MULTI_set_gdt(mcs.mc, frames, size / sizeof(struct desc_struct)); Loading