|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [RFC PATCH 3/8]: PVH: memory manager and paging related changes
On Fri, 17 Aug 2012 10:26:15 +0100
Ian Campbell <Ian.Campbell@xxxxxxxxxx> wrote:
> On Thu, 2012-08-16 at 02:02 +0100, Mukesh Rathor wrote:
> > +
> > if (HYPERVISOR_update_va_mapping((unsigned long)addr, pte,
> > 0)) BUG();
> > }
> > @@ -1745,6 +1785,7 @@ static void convert_pfn_mfn(void *v)
> > * but that's enough to get __va working. We need to fill in the
> > rest
> > * of the physical mapping once some sort of allocator has been set
> > * up.
> > + * NOTE: for PVH, the page tables are native with HAP required.
>
> OOI does this mean shadow doesn't work?
Most likely now. Will need to explore that. Later.
> > +
> > + if (xen_pvh_domain()) {
> > + pv_mmu_ops.flush_tlb_others = xen_flush_tlb_others;
> > +
> > + /* set_pte* for PCI devices to map iomem. */
> > + if (xen_initial_domain()) {
> > + pv_mmu_ops.set_pte = xen_dom0pvh_set_pte;
> > + pv_mmu_ops.set_pte_at =
> > xen_dom0pvh_set_pte_at;
>
> Is this wrong for domU or have you just not tried/implemented
> passthrough support yet?
No, passthrough is phase II/III. Too big a project for one person to do in
a single shot as it is ;)..
> > + * exported function, so no need to export this.
> > + */
> > +static int pvh_add_to_xen_p2m(unsigned long lpfn, unsigned long
> > fgmfn,
> > + unsigned int domid)
> > +{
> > + int rc;
> > + struct xen_add_to_physmap pmb = {.foreign_domid = domid};
>
> I'm not sure but I think CodingStyle would want spaces inside the {}s.
>
> What is the b in pmb? Phys Map B??? (every other user of this
> interface says xatp, FWIW)
because originally it was a batch function but got changed after the
code review earlier. I will rename it.
> > HYPERVISOR_memory_op(XENMEM_remove_from_physmap, &xrp);
> > + if (rc) {
> > + pr_warn("Failed to unmap pfn:%lx rc:%d
> > done:%d\n",
> > + spfn+i, rc, i);
> > + return 1;
> > + }
> > + }
> > + return 0;
> > +}
> > +EXPORT_SYMBOL_GPL(pvh_rem_xen_p2m);
>
> What is the external/modular user of this?
privcmd.
> I guess this is why you noted that pvh_add_to_xen_p2m didn't need
> exporting, which struck me as unnecessary at the time.
>
> pvh_add_to_xen_p2m seems to have an exported a wrapper, why not rem
> too? e.g. xen_unmap_domain_mfn_range?
I believe unmapping happens thru native code. So, we just need to remove
the entries from the ept. Ok, I mean, hap.
> > +
> > + native_set_pte(ptep, pteval);
> > + if (pvh_add_to_xen_p2m(pfn, pvhp->fgmfn, pvhp->domid))
> > + return -EFAULT;
>
> Is there a little window here where we've setup the page table entry
> but the p2m entry behind it is uninitialised?
>
> I suppose even if an interrupt occurred we can rely on the virtual
> address not having been "exposed" anywhere yet and therefore there is
> no chance of anyone dereferencing it. But is there any harm in just
> flipping the ordering here?
Should be ok flippiong the order.
> Why EFAULT? Seems a bit random, I think HYPERVISOR_memory_op returns a
> -ve errno which you could propagate.
Ok, sounds good.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |