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@novell.com> 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@novell.com>
>
> 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@lists.xensource.com
> http://lists.xensource.com/xen-devel
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel