Lines Matching refs:vaddr

83 static pgd_t *spgd_addr(struct lg_cpu *cpu, u32 i, unsigned long vaddr)  in spgd_addr()  argument
85 unsigned int index = pgd_index(vaddr); in spgd_addr()
97 static pmd_t *spmd_addr(struct lg_cpu *cpu, pgd_t spgd, unsigned long vaddr) in spmd_addr() argument
99 unsigned int index = pmd_index(vaddr); in spmd_addr()
115 static pte_t *spte_addr(struct lg_cpu *cpu, pgd_t spgd, unsigned long vaddr) in spte_addr() argument
118 pmd_t *pmd = spmd_addr(cpu, spgd, vaddr); in spte_addr()
129 return &page[pte_index(vaddr)]; in spte_addr()
136 static unsigned long gpgd_addr(struct lg_cpu *cpu, unsigned long vaddr) in gpgd_addr() argument
138 unsigned int index = vaddr >> (PGDIR_SHIFT); in gpgd_addr()
144 static unsigned long gpmd_addr(pgd_t gpgd, unsigned long vaddr) in gpmd_addr() argument
148 return gpage + pmd_index(vaddr) * sizeof(pmd_t); in gpmd_addr()
153 pmd_t gpmd, unsigned long vaddr) in gpte_addr() argument
158 return gpage + pte_index(vaddr) * sizeof(pte_t); in gpte_addr()
163 pgd_t gpgd, unsigned long vaddr) in gpte_addr() argument
168 return gpage + pte_index(vaddr) * sizeof(pte_t); in gpte_addr()
303 static pte_t *find_spte(struct lg_cpu *cpu, unsigned long vaddr, bool allocate, in find_spte() argument
313 spgd = spgd_addr(cpu, cpu->cpu_pgd, vaddr); in find_spte()
344 spmd = spmd_addr(cpu, *spgd, vaddr); in find_spte()
374 return spte_addr(cpu, *spgd, vaddr); in find_spte()
393 bool demand_page(struct lg_cpu *cpu, unsigned long vaddr, int errcode, in demand_page() argument
405 if (vaddr >= switcher_addr) in demand_page()
413 gpgd = lgread(cpu, gpgd_addr(cpu, vaddr), pgd_t); in demand_page()
431 gpmd = lgread(cpu, gpmd_addr(gpgd, vaddr), pmd_t); in demand_page()
448 gpte_ptr = gpte_addr(cpu, gpmd, vaddr); in demand_page()
454 gpte_ptr = gpte_addr(cpu, gpgd, vaddr); in demand_page()
459 gpte = __pte((vaddr & PAGE_MASK) | _PAGE_RW | _PAGE_PRESENT); in demand_page()
482 *iomem = (pte_pfn(gpte) << PAGE_SHIFT) | (vaddr & ~PAGE_MASK); in demand_page()
499 spte = find_spte(cpu, vaddr, true, pgd_flags(gpgd), pmd_flags(gpmd)); in demand_page()
551 static bool page_writable(struct lg_cpu *cpu, unsigned long vaddr) in page_writable() argument
557 if (vaddr >= switcher_addr) in page_writable()
561 spte = find_spte(cpu, vaddr, false, 0, 0); in page_writable()
578 void pin_page(struct lg_cpu *cpu, unsigned long vaddr) in pin_page() argument
582 if (!page_writable(cpu, vaddr) && !demand_page(cpu, vaddr, 2, &iomem)) in pin_page()
583 kill_guest(cpu, "bad stack page %#lx", vaddr); in pin_page()
676 bool __guest_pa(struct lg_cpu *cpu, unsigned long vaddr, unsigned long *paddr) in __guest_pa() argument
686 *paddr = vaddr; in __guest_pa()
691 gpgd = lgread(cpu, gpgd_addr(cpu, vaddr), pgd_t); in __guest_pa()
697 gpmd = lgread(cpu, gpmd_addr(gpgd, vaddr), pmd_t); in __guest_pa()
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()
707 *paddr = pte_pfn(gpte) * PAGE_SIZE | (vaddr & ~PAGE_MASK); in __guest_pa()
719 unsigned long guest_pa(struct lg_cpu *cpu, unsigned long vaddr) in guest_pa() argument
723 if (!__guest_pa(cpu, vaddr, &paddr)) in guest_pa()
724 kill_guest(cpu, "Bad address %#lx", vaddr); in guest_pa()
933 unsigned long vaddr, pte_t gpte) in __guest_set_pte() argument
936 pgd_t *spgd = spgd_addr(cpu, idx, vaddr); in __guest_set_pte()
944 spmd = spmd_addr(cpu, *spgd, vaddr); in __guest_set_pte()
948 pte_t *spte = spte_addr(cpu, *spgd, vaddr); in __guest_set_pte()
990 unsigned long gpgdir, unsigned long vaddr, pte_t gpte) in guest_set_pte() argument
993 if (vaddr >= switcher_addr) { in guest_set_pte()
1002 if (vaddr >= cpu->lg->kernel_address) { in guest_set_pte()
1006 __guest_set_pte(cpu, i, vaddr, gpte); in guest_set_pte()
1012 __guest_set_pte(cpu, pgdir, vaddr, gpte); in guest_set_pte()