Xu, Dongxiao
2008-Jun-26 06:12 UTC
[Xen-devel][PATCH] Fix the boot failure of xenU after destroying a HVM guest
Fix the boot failure of xenU after destroying a HVM guest. - Both page_info and shadow_page_info are stored in frame_table. At first, all spin locks in frame table are initialized as SPIN_LOCK_UNLOCKED. If one frame is used as shadow_page_info, we still should initialize the spin lock to be SPIN_LOCK_UNLOCKED when freeing that page. Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com> Best Regards, -- Dongxiao _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Xu, Dongxiao
2008-Jul-16 00:56 UTC
RE: [Xen-devel][PATCH] Fix the boot failure of xenU after destroying aHVM guest
Hi, Keir,
I saw in C/S 17899, you put the re-initialize code of the page lock in
sh_set_allocation() instead of free_heap_pages(). In this condition, I think we
should also re-initialize the page lock while freeing the shadow p2m page and
maybe some other places. Because when alloc the shadow p2m page, it will use
function sh_alloc_p2m_pages()->shadow_alloc() to initialize the page as
shadow_page_info, so the re-initialize when freeing shadow p2m is necessary.
So I think if only put the page lock re-initialize code in
free_heap_pages(), it is the most safe. And it could fix the bug 1287.
1. Sometimes XenU guest cannot boot up on 32e host.
http://bugzilla.xensource.com/bugzilla/show_bug.cgi?id=1287
Thanks
-- Dongxiao
-----Original Message-----
From: xen-devel-bounces@lists.xensource.com
[mailto:xen-devel-bounces@lists.xensource.com] On Behalf Of Xu, Dongxiao
Sent: 2008年6月26日 14:12
To: Keir Fraser; xen-devel@lists.xensource.com
Cc: jbeulich@novell.com
Subject: [Xen-devel][PATCH] Fix the boot failure of xenU after destroying aHVM
guest
Fix the boot failure of xenU after destroying a HVM guest.
- Both page_info and shadow_page_info are stored in frame_table.
At first, all spin locks in frame table are initialized as
SPIN_LOCK_UNLOCKED.
If one frame is used as shadow_page_info, we still should initialize the
spin lock to be SPIN_LOCK_UNLOCKED when freeing that page.
Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com>
Best Regards,
-- Dongxiao
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
Keir Fraser
2008-Jul-16 07:23 UTC
Re: [Xen-devel][PATCH] Fix the boot failure of xenU after destroying aHVM guest
It''s only polite for a subsystem which trashes page_info to reinstate it when it is done. We''ll work out a patch for the p2m code. -- Keir On 16/7/08 01:56, "Xu, Dongxiao" <dongxiao.xu@intel.com> wrote:> Hi, Keir, > I saw in C/S 17899, you put the re-initialize code of the page lock in > sh_set_allocation() instead of free_heap_pages(). In this condition, I think > we should also re-initialize the page lock while freeing the shadow p2m page > and maybe some other places. Because when alloc the shadow p2m page, it will > use function sh_alloc_p2m_pages()->shadow_alloc() to initialize the page as > shadow_page_info, so the re-initialize when freeing shadow p2m is necessary. > So I think if only put the page lock re-initialize code in > free_heap_pages(), it is the most safe. And it could fix the bug 1287. > > 1. Sometimes XenU guest cannot boot up on 32e host. > http://bugzilla.xensource.com/bugzilla/show_bug.cgi?id=1287 > > Thanks > -- Dongxiao > > -----Original Message----- > From: xen-devel-bounces@lists.xensource.com > [mailto:xen-devel-bounces@lists.xensource.com] On Behalf Of Xu, Dongxiao > Sent: 2008年6月26日 14:12 > To: Keir Fraser; xen-devel@lists.xensource.com > Cc: jbeulich@novell.com > Subject: [Xen-devel][PATCH] Fix the boot failure of xenU after destroying aHVM > guest > > Fix the boot failure of xenU after destroying a HVM guest. > - Both page_info and shadow_page_info are stored in frame_table. > At first, all spin locks in frame table are initialized as > SPIN_LOCK_UNLOCKED. > If one frame is used as shadow_page_info, we still should initialize the > spin lock to be SPIN_LOCK_UNLOCKED when freeing that page. > > Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com> > > Best Regards, > -- Dongxiao >_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Xu, Dongxiao
2008-Jul-16 07:48 UTC
RE: [Xen-devel][PATCH] Fix the boot failure of xenU after destroying aHVM guest
I tried this patch on my system, and xenU works OK.
diff -r 0d707feab01e xen/arch/x86/mm/shadow/common.c
--- a/xen/arch/x86/mm/shadow/common.c Mon Jul 07 16:13:53 2008 +0100
+++ b/xen/arch/x86/mm/shadow/common.c Wed Jul 16 15:47:02 2008 +0800
@@ -1676,6 +1676,9 @@ shadow_free_p2m_page(struct domain *d, s
/* Free should not decrement domain''s total allocation, since
* these pages were allocated without an owner. */
page_set_owner(pg, NULL);
+#if defined(__x86_64__)
+ spin_lock_init(&(pg->lock))
+#endif
free_domheap_pages(pg, 0);
d->arch.paging.shadow.p2m_pages--;
perfc_decr(shadow_alloc_count);
Best Regards,
-- Dongxiao
-----Original Message-----
From: Keir Fraser [mailto:keir.fraser@eu.citrix.com]
Sent: 2008年7月16日 15:24
To: Xu, Dongxiao; xen-devel@lists.xensource.com
Cc: Tim Deegan
Subject: Re: [Xen-devel][PATCH] Fix the boot failure of xenU after destroying
aHVM guest
It''s only polite for a subsystem which trashes page_info to reinstate
it
when it is done. We''ll work out a patch for the p2m code.
-- Keir
On 16/7/08 01:56, "Xu, Dongxiao" <dongxiao.xu@intel.com> wrote:
> Hi, Keir,
> I saw in C/S 17899, you put the re-initialize code of the page lock in
> sh_set_allocation() instead of free_heap_pages(). In this condition, I
think
> we should also re-initialize the page lock while freeing the shadow p2m
page
> and maybe some other places. Because when alloc the shadow p2m page, it
will
> use function sh_alloc_p2m_pages()->shadow_alloc() to initialize the page
as
> shadow_page_info, so the re-initialize when freeing shadow p2m is
necessary.
> So I think if only put the page lock re-initialize code in
> free_heap_pages(), it is the most safe. And it could fix the bug 1287.
>
> 1. Sometimes XenU guest cannot boot up on 32e host.
> http://bugzilla.xensource.com/bugzilla/show_bug.cgi?id=1287
>
> Thanks
> -- Dongxiao
>
> -----Original Message-----
> From: xen-devel-bounces@lists.xensource.com
> [mailto:xen-devel-bounces@lists.xensource.com] On Behalf Of Xu, Dongxiao
> Sent: 2008年6月26日 14:12
> To: Keir Fraser; xen-devel@lists.xensource.com
> Cc: jbeulich@novell.com
> Subject: [Xen-devel][PATCH] Fix the boot failure of xenU after destroying
aHVM
> guest
>
> Fix the boot failure of xenU after destroying a HVM guest.
> - Both page_info and shadow_page_info are stored in frame_table.
> At first, all spin locks in frame table are initialized as
> SPIN_LOCK_UNLOCKED.
> If one frame is used as shadow_page_info, we still should initialize the
> spin lock to be SPIN_LOCK_UNLOCKED when freeing that page.
>
> Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com>
>
> Best Regards,
> -- Dongxiao
>
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel