Lines Matching refs:gpte

206 static pte_t gpte_to_spte(struct lg_cpu *cpu, pte_t gpte, int write)  in gpte_to_spte()  argument
216 flags = (pte_flags(gpte) & ~_PAGE_GLOBAL); in gpte_to_spte()
227 pfn = get_pfn(base + pte_pfn(gpte), write); in gpte_to_spte()
229 kill_guest(cpu, "failed to get page %lu", pte_pfn(gpte)); in gpte_to_spte()
253 static bool gpte_in_iomem(struct lg_cpu *cpu, pte_t gpte) in gpte_in_iomem() argument
256 if (pte_flags(gpte) & _PAGE_PSE) in gpte_in_iomem()
259 return (pte_pfn(gpte) >= cpu->lg->pfn_limit in gpte_in_iomem()
260 && pte_pfn(gpte) < cpu->lg->device_limit); in gpte_in_iomem()
263 static bool check_gpte(struct lg_cpu *cpu, pte_t gpte) in check_gpte() argument
265 if ((pte_flags(gpte) & _PAGE_PSE) || in check_gpte()
266 pte_pfn(gpte) >= cpu->lg->pfn_limit) { in check_gpte()
397 pte_t gpte; in demand_page() local
459 gpte = __pte((vaddr & PAGE_MASK) | _PAGE_RW | _PAGE_PRESENT); in demand_page()
462 gpte = lgread(cpu, gpte_ptr, pte_t); in demand_page()
466 if (!(pte_flags(gpte) & _PAGE_PRESENT)) in demand_page()
473 if ((errcode & 2) && !(pte_flags(gpte) & _PAGE_RW)) in demand_page()
477 if ((errcode & 4) && !(pte_flags(gpte) & _PAGE_USER)) in demand_page()
481 if (gpte_in_iomem(cpu, gpte)) { in demand_page()
482 *iomem = (pte_pfn(gpte) << PAGE_SHIFT) | (vaddr & ~PAGE_MASK); in demand_page()
490 if (!check_gpte(cpu, gpte)) in demand_page()
494 gpte = pte_mkyoung(gpte); in demand_page()
496 gpte = pte_mkdirty(gpte); in demand_page()
513 if (pte_dirty(gpte)) in demand_page()
514 *spte = gpte_to_spte(cpu, gpte, 1); in demand_page()
522 set_pte(spte, gpte_to_spte(cpu, pte_wrprotect(gpte), 0)); in demand_page()
529 lgwrite(cpu, gpte_ptr, pte_t, gpte); in demand_page()
679 pte_t gpte; in __guest_pa() local
700 gpte = lgread(cpu, gpte_addr(cpu, gpmd, vaddr), pte_t); in __guest_pa()
702 gpte = lgread(cpu, gpte_addr(cpu, gpgd, vaddr), pte_t); in __guest_pa()
704 if (!(pte_flags(gpte) & _PAGE_PRESENT)) in __guest_pa()
707 *paddr = pte_pfn(gpte) * PAGE_SIZE | (vaddr & ~PAGE_MASK); in __guest_pa()
933 unsigned long vaddr, pte_t gpte) in __guest_set_pte() argument
957 if ((pte_flags(gpte) & (_PAGE_DIRTY | _PAGE_ACCESSED)) in __guest_set_pte()
958 && !gpte_in_iomem(cpu, gpte)) { in __guest_set_pte()
959 if (!check_gpte(cpu, gpte)) in __guest_set_pte()
962 gpte_to_spte(cpu, gpte, in __guest_set_pte()
963 pte_flags(gpte) & _PAGE_DIRTY)); in __guest_set_pte()
990 unsigned long gpgdir, unsigned long vaddr, pte_t gpte) in guest_set_pte() argument
1006 __guest_set_pte(cpu, i, vaddr, gpte); in guest_set_pte()
1012 __guest_set_pte(cpu, pgdir, vaddr, gpte); in guest_set_pte()