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