[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH V3] xen/balloon: flush persistent kmaps in correct position



On Tue, Mar 18, 2014 at 05:40:55PM +0000, David Vrabel wrote:
[...]
> Wei, how about this?  I expanded the comment, left the tlb flush after
> changing the mappings, and shuffled a few bits around to avoid a few
> pfn/mfn/page conversions.
> 
> Can you test it, please?
> 

Yes, I tested it on 32-bit PV and it worked. I manually copied and
pasted the changes.

> Thanks.
> 
> 8<---------------------------------
> >From e0c38006cfd0395d500a66d2ab07dfd1327d140d Mon Sep 17 00:00:00 2001
> From: Wei Liu <wei.liu2@xxxxxxxxxx>
> Date: Sat, 15 Mar 2014 16:11:47 +0000
> Subject: [PATCH] xen/balloon: flush persistent kmaps in correct position
> 
> Xen balloon driver will update ballooned out pages' P2M entries to point
> to scratch page for PV guests. In 24f69373e2 ("xen/balloon: don't alloc
> page while non-preemptible", kmap_flush_unused was moved after updating
> P2M table. In that case for 32 bit PV guest we might end up with
> 
>   P2M    X -----> S  (S is mfn of balloon scratch page)
>   M2P    Y -----> X  (Y is mfn in persistent kmap entry)
> 
> kmap_flush_unused() iterates through all the PTEs in the kmap address
> space, using pte_to_page() to obtain the page. If the p2m and the m2p
> are inconsistent the incorrect page is returned.  This will clear
> page->address on the wrong page which may cause subsequent oopses if
> that page is currently kmap'ed.
> 
> Move the flush back between get_page and __set_phys_to_machine to fix
> this.
> 
> Signed-off-by: Wei Liu <wei.liu2@xxxxxxxxxx>
> Signed-off-by: David Vrabel <david.vrabel@xxxxxxxxxx>
> Cc: stable@xxxxxxxxxxxxxxx # 3.12+
> ---
>  drivers/xen/balloon.c |   24 ++++++++++++++++++------
>  1 files changed, 18 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/xen/balloon.c b/drivers/xen/balloon.c
> index 37d06ea..3e27d11 100644
> --- a/drivers/xen/balloon.c
> +++ b/drivers/xen/balloon.c
> @@ -399,12 +399,26 @@ static enum bp_state decrease_reservation(unsigned
> long nr_pages, gfp_t gfp)

FYI, This line was wrapped by your email client.

Wei

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.