aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLiu, Jinsong <jinsong.liu@intel.com>2011-04-07 15:42:16 +0100
committerLiu, Jinsong <jinsong.liu@intel.com>2011-04-07 15:42:16 +0100
commit64ddf302cfb53c679eb1dbe23a5028b1a7725d43 (patch)
tree2abb9eca3ccc1c6beaebd0af1a48e60cc9a0c436
parent09c5ebd60d76afeedf276990c229ce29d7b11f26 (diff)
downloadxen-64ddf302cfb53c679eb1dbe23a5028b1a7725d43.tar.gz
xen-64ddf302cfb53c679eb1dbe23a5028b1a7725d43.tar.bz2
xen-64ddf302cfb53c679eb1dbe23a5028b1a7725d43.zip
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 <jinsong.liu@intel.com> xen-unstable changeset: 23177:d8bb2de119de xen-unstable date: Thu Apr 07 12:12:01 2011 +0100
-rw-r--r--xen/common/page_alloc.c11
1 files changed, 1 insertions, 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 |