From: David Lively <dlively@virtualiron.com>
To: Keir Fraser <keir@xensource.com>
Cc: xen-devel@lists.xensource.com, Ben Guthro <bguthro@virtualiron.com>
Subject: Re: [PATCH] Limit MCG Cap
Date: Wed, 29 Aug 2007 09:23:15 -0400 [thread overview]
Message-ID: <46D57343.2060602@virtualiron.com> (raw)
In-Reply-To: <C2F9B040.14F1A%keir@xensource.com>
[-- Attachment #1: Type: text/plain, Size: 1295 bytes --]
Hi Keir -
Your suggestion to report 0 for reads of MSR_IA32_MCG_CAP seems to be
working well on a wide variety of HVM guests (Windows & Linux, 32 &
64bit). I've attached a new patch.
Thanks,
Dave
This patch implements a suggestion of Keir's (in response to a patch of
mine):
Intercept guest reads of MSR_IA32_MCG_CAP and report 0, indicating no
machine check "units", which agrees more closely with Xen's
super-minimal machine check architecture (just enough to allow Windows
to run).
This fixes a bug that occurs when migrating a RHEL4-64bit guest to a
host with fewer machine check units than the original host. These host
physical details shouldn't be leaking through to guests.
Signed-off-by: David Lively <dlively@virtualiron.com>
Keir Fraser wrote:
> Given that we don't properly virtualise/emulate machine check (we only set
> the feature bit because some versions of Windows demand it) can we get away
> with returning zero for reads of MCG_CAP?
>
> -- Keir
>
> On 27/8/07 20:11, "Ben Guthro" <bguthro@virtualiron.com> wrote:
>
>
>> Intercept guest reads of MSR_IA32_MCG_CAP and limit the number of memory banks
>> reported to one.
>> This prevents us from trying to read status of non-existent banks when
>> migrated to a machine
>> with fewer banks.
>>
>>
[-- Attachment #2: xen-limit-mcg-cap.patch --]
[-- Type: text/x-patch, Size: 1007 bytes --]
diff -r 9f111c7d648f xen/arch/x86/hvm/svm/svm.c
--- a/xen/arch/x86/hvm/svm/svm.c Tue Aug 28 22:40:01 2007 -0400
+++ b/xen/arch/x86/hvm/svm/svm.c Tue Aug 28 22:40:01 2007 -0400
@@ -2058,6 +2058,9 @@ static inline void svm_do_msr_access(
*/
msr_content = 0;
break;
+ case MSR_IA32_MCG_CAP:
+ msr_content = 0;
+ break;
default:
if ( rdmsr_hypervisor_regs(ecx, &eax, &edx) ||
rdmsr_safe(ecx, eax, edx) == 0 )
diff -r 9f111c7d648f xen/arch/x86/hvm/vmx/vmx.c
--- a/xen/arch/x86/hvm/vmx/vmx.c Tue Aug 28 22:40:01 2007 -0400
+++ b/xen/arch/x86/hvm/vmx/vmx.c Tue Aug 28 22:40:01 2007 -0400
@@ -2554,6 +2554,9 @@ static inline int vmx_do_msr_read(struct
case MSR_IA32_APICBASE:
msr_content = vcpu_vlapic(v)->hw.apic_base_msr;
break;
+ case MSR_IA32_MCG_CAP:
+ msr_content = 0;
+ break;
default:
if ( long_mode_do_msr_read(regs) )
goto done;
[-- Attachment #3: Type: text/plain, Size: 138 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
next parent reply other threads:[~2007-08-29 13:23 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <C2F9B040.14F1A%keir@xensource.com>
2007-08-29 13:23 ` David Lively [this message]
2007-08-27 19:11 [PATCH] Limit MCG Cap Ben Guthro
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=46D57343.2060602@virtualiron.com \
--to=dlively@virtualiron.com \
--cc=bguthro@virtualiron.com \
--cc=keir@xensource.com \
--cc=xen-devel@lists.xensource.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.