This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
Home Products Support Community News


Re: [Xen-devel] read-only pagetable entries


At 12:54 -0500 on 28 Jun (1309265682), Srujan Kotikela wrote:
>    I am trying to see the working of "p2m_change_type". For this I am
> passing the PFN of a variable (computed using virt_to_pfn(&variable)) in a
> kernel module. Then this PFN is being passed to VMM through a hypercall
> (from a HVM guest). In the hypercall handler, I have the following code
> (where PFN == GFN) :
>    struct vcpu *v = current;
> >    struct domain *d = v->domain;
> >
> >     p2m_type_t ot;
> >     mfn_t mfn;
> >
> >
>     mfn = gfn_to_mfn(d, gfn , &ot);        //find the old type of the gfn
> >     printk("MFN  : %lx\n", mfn);
> >     printk("OT   : %d\n", ot);
> >
> >     p2m_change_type(d, gfn, ot, p2m_ram_ro);

You might want to check the return value of p2m_change_type; it does
an atomic compare-exchange so it might not have changed the type if
another CPU changed the p2m entry under your feet.

>    After this I tried to assign a new value to variable (to test if the
> write request is being dropped).  But, the DomU hangs within the kernel
> module (insmod      command is never being completed).
>    I assume this is because I am doing it within a kernel module. Now I am
> going to try passing a user process' variable's address to kernel module and
> pass it further to hypervisor  and repeat the above process. Before that, I
> just want to make sure that I am going in the right direction.

Yes, that looks basically OK to me.  I don't think there's any reason
why being in the kernel would make a difference.  Did you make sure that
no other variables are on the same page as the one you're protecting?


Tim Deegan <Tim.Deegan@xxxxxxxxxx>
Principal Software Engineer, Xen Platform Team
Citrix Systems UK Ltd.  (Company #02937203, SL9 0BG)

Xen-devel mailing list

<Prev in Thread] Current Thread [Next in Thread>