[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] x86, hvm: MTRR can't cover all the memery ranges
# HG changeset patch # User Keir Fraser <keir.fraser@xxxxxxxxxx> # Date 1201185635 0 # Node ID 6269a3ce7b830f6903a61e1116331590b47f7e99 # Parent 74a9bfccddba0fedd59c57e5f1a76d83a4178d7c x86, hvm: MTRR can't cover all the memery ranges MTRR can't cover all the memery ranges, due to guest E820 is changed by CS:16728 with current method. Signed-off-by: Disheng Su <disheng.su@xxxxxxxxx> --- xen/arch/x86/hvm/mtrr.c | 15 ++++++++++++++- 1 files changed, 14 insertions(+), 1 deletion(-) diff -r 74a9bfccddba -r 6269a3ce7b83 xen/arch/x86/hvm/mtrr.c --- a/xen/arch/x86/hvm/mtrr.c Thu Jan 24 14:39:38 2008 +0000 +++ b/xen/arch/x86/hvm/mtrr.c Thu Jan 24 14:40:35 2008 +0000 @@ -186,7 +186,14 @@ static uint32_t range_to_mtrr(uint32_t r uint8_t type) { if ( !range_sizek || (reg >= ((m->mtrr_cap & 0xff) - RESERVED_MTRR)) ) + { + gdprintk(XENLOG_WARNING, + "Failed to init var mtrr msr[%d]" + "range_size:%x, total available MSR:%d\n", + reg, range_sizek, + (uint32_t)((m->mtrr_cap & 0xff) - RESERVED_MTRR)); return reg; + } while ( range_sizek ) { @@ -202,7 +209,13 @@ static uint32_t range_to_mtrr(uint32_t r range_sizek -= sizek; if ( reg >= ((m->mtrr_cap & 0xff) - RESERVED_MTRR) ) + { + gdprintk(XENLOG_WARNING, + "Failed to init var mtrr msr[%d]," + "total available MSR:%d\n", + reg, (uint32_t)((m->mtrr_cap & 0xff) - RESERVED_MTRR)); break; + } } return reg; @@ -253,7 +266,7 @@ static void setup_var_mtrrs(struct vcpu { if ( e820_table[i].addr == 0x100000 ) { - size = e820_table[i].size + 0x100000 + PAGE_SIZE * 3; + size = e820_table[i].size + 0x100000 + PAGE_SIZE * 4; addr = 0; } else _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |