On Tue, 2013-10-08 at 11:33 +0530, Bharat Bhushan wrote:
> We need to search linux "pte" to get "pte" attributes for
> setting TLB in KVM.
> This patch defines a linux_pte_lookup() function for same.
> 
> Signed-off-by: Bharat Bhushan <bharat.bhus...@freescale.com>
> ---
>  arch/powerpc/include/asm/pgtable.h |   35 +++++++++++++++++++++++++++++++++++
>  1 files changed, 35 insertions(+), 0 deletions(-)
> 
> diff --git a/arch/powerpc/include/asm/pgtable.h 
> b/arch/powerpc/include/asm/pgtable.h
> index 7d6eacf..fd26c04 100644
> --- a/arch/powerpc/include/asm/pgtable.h
> +++ b/arch/powerpc/include/asm/pgtable.h
> @@ -223,6 +223,41 @@ extern int gup_hugepte(pte_t *ptep, unsigned long sz, 
> unsigned long addr,
>  #endif
>  pte_t *find_linux_pte_or_hugepte(pgd_t *pgdir, unsigned long ea,
>                                unsigned *shift);
> +
> +static inline pte_t lookup_linux_pte(pgd_t *pgdir, unsigned long hva,
> +                                  unsigned long *pte_sizep)
> +{
> +     pte_t *ptep;
> +     pte_t pte;
> +     unsigned long ps = *pte_sizep;
> +     unsigned int shift;
> +
> +     ptep = find_linux_pte_or_hugepte(pgdir, hva, &shift);
> +     if (!ptep)
> +             return __pte(0);
> +     if (shift)
> +             *pte_sizep = 1ul << shift;
> +     else
> +             *pte_sizep = PAGE_SIZE;
> +
> +     if (ps > *pte_sizep)
> +             return __pte(0);
> +
> +     /* wait until _PAGE_BUSY is clear */
> +     while (1) {
> +             pte = pte_val(*ptep);
> +             if (unlikely(pte & _PAGE_BUSY)) {
> +                     cpu_relax();
> +                     continue;
> +             }
> +     }
> +
> +     /* If pte is not present return None */
> +     if (unlikely(!(pte & _PAGE_PRESENT)))
> +             return __pte(0);
> +
> +     return pte;
> +}

Can lookup_linux_pte_and_update() call lookup_linux_pte()?

-Scott



--
To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to