|
|
|
|
|
|
|
|
|
|
xen-devel
Re: [Xen-devel] [PATCH] fix c/s 18720 & 18731
Okay. This is simply because PGT_partial holds a type reference?
The patch can be much simplified because the tlbflush_timestamp is not
required (this domain will never run again) and because shadow mode has
already been torn down. I'll simplify and apply.
-- Keir
On 29/10/08 11:30, "Jan Beulich" <jbeulich@xxxxxxxxxx> wrote:
> Entirely removing the tail of free_page_type() wasn't correct - the
> type reference must still be dropped for partial pages.
>
> Admittedly, I'm not sure the flush time stamp update is also needed
> here, but it seems safer to also copy it from free_page_type()'s former
> tail.
>
> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxxxx>
>
> Index: 2008-10-27/xen/arch/x86/domain.c
> ===================================================================
> --- 2008-10-27.orig/xen/arch/x86/domain.c 2008-10-28 15:30:37.000000000 +0100
> +++ 2008-10-27/xen/arch/x86/domain.c 2008-10-28 15:31:15.000000000 +0100
> @@ -42,6 +42,7 @@
> #include <asm/mpspec.h>
> #include <asm/ldt.h>
> #include <asm/hypercall.h>
> +#include <asm/shadow.h>
> #include <asm/hvm/hvm.h>
> #include <asm/hvm/support.h>
> #include <asm/debugreg.h>
> @@ -1687,6 +1688,16 @@ static int relinquish_memory(
> {
> if ( free_page_type(page, x, 0) != 0 )
> BUG();
> +
> + if ( !(shadow_mode_enabled(d) &&
> + (page->count_info & PGC_page_table)) )
> + page->tlbflush_timestamp = tlbflush_current_time();
> +
> + if ( x & PGT_partial )
> + {
> + wmb();
> + page->u.inuse.type_info--;
> + }
> break;
> }
> }
>
>
>
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
|
|
|
|