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 diff -r dedfadeadf86 xen/common/page_alloc.c --- a/xen/common/page_alloc.c Fri Jun 20 18:42:45 2008 +0100 +++ b/xen/common/page_alloc.c Thu Jun 26 01:47:56 2008 -0400 @@ -449,6 +449,10 @@ static void free_heap_pages( * In all the above cases there can be no guest mappings of this page. */ pg[i].count_info = 0; + +#if defined(__x86_64__) + spin_lock_init(&pg[i].lock); +#endif if ( (d = page_get_owner(&pg[i])) != NULL ) {