On Tue, 2013-08-06 at 17:01 +0530, Bharat Bhushan wrote:
> @@ -449,7 +446,16 @@ static inline int kvmppc_e500_shadow_map(struct 
> kvmppc_vcpu_e500 *vcpu_e500,
>               gvaddr &= ~((tsize_pages << PAGE_SHIFT) - 1);
>       }
>  
> -     kvmppc_e500_ref_setup(ref, gtlbe, pfn);
> +     pgdir = vcpu_e500->vcpu.arch.pgdir;
> +     ptep = lookup_linux_pte(pgdir, hva, &tsize_pages);
> +     if (pte_present(*ptep)) {
> +             wimg = (pte_val(*ptep) >> PTE_WIMGE_SHIFT) & MAS2_WIMGE_MASK;
> +     } else {
> +             printk(KERN_ERR "pte not present: gfn %lx, pfn %lx\n",
> +                             (long)gfn, pfn);
> +             return -EINVAL;

Don't let the guest spam the host kernel console by repeatedly accessing
bad mappings (even if it requires host userspace to assist by pointing a
memslot at a bad hva).  This should at most be printk_ratelimited(), and
probably just pr_debug().  It should also have __func__ context.

Also, I don't see the return value getting checked (the immediate
callers check it and propogate the error, but kvmppc_mmu_map() doesn't).
We want to send a machine check to the guest if this happens (or
possibly exit to userspace since it indicates a bad memslot, not just a
guest bug).  We don't want to just silently retry over and over.

Otherwise, this series looks good to me.

-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