From 64ddf302cfb53c679eb1dbe23a5028b1a7725d43 Mon Sep 17 00:00:00 2001 From: "Liu, Jinsong" Date: Thu, 7 Apr 2011 15:42:16 +0100 Subject: [PATCH] X86: Fix mce offline page bug c/s 19913 break mce offline page logic: For page_state_is(pg, free), it's impossible to trigger the case; For page_state_is(pg, offlined), it in fact didn't offline related page; This patch fix the bug, and remove an ambiguous comment. Signed-off-by: Liu, Jinsong xen-unstable changeset: 23177:d8bb2de119de xen-unstable date: Thu Apr 07 12:12:01 2011 +0100 --- xen/common/page_alloc.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c index 49142cbe92..d8915d498f 100644 --- a/xen/common/page_alloc.c +++ b/xen/common/page_alloc.c @@ -574,10 +574,6 @@ static void free_heap_pages( /* - * Following possible status for a page: - * free and Online; free and offlined; free and offlined and broken; - * assigned and online; assigned and offlining; assigned and offling and broken - * * Following rules applied for page offline: * Once a page is broken, it can't be assigned anymore * A page will be offlined only if it is free @@ -674,16 +670,11 @@ int offline_page(unsigned long mfn, int broken, uint32_t *status) old_info = mark_page_offline(pg, broken); - if ( page_state_is(pg, free) ) + if ( page_state_is(pg, offlined) ) { - /* Free pages are reserve directly */ reserve_heap_page(pg); *status = PG_OFFLINE_OFFLINED; } - else if ( page_state_is(pg, offlined) ) - { - *status = PG_OFFLINE_OFFLINED; - } else if ( (owner = page_get_owner_and_reference(pg)) ) { *status = PG_OFFLINE_OWNED | PG_OFFLINE_PENDING | -- 2.39.5