From: Ben Guthro <bguthro@virtualiron.com>
To: xen-devel@lists.xensource.com
Cc: Dave Lively <dlively@virtualiron.com>
Subject: [PATCH] Limit MCG Cap
Date: Mon, 27 Aug 2007 15:11:24 -0400 [thread overview]
Message-ID: <46D321DC.30504@virtualiron.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 289 bytes --]
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.
Signed-off-by: Ben Guthro
Signed-off-by: David Lively <dlively@virtualiron.com>
[-- Attachment #2: xen-limit-mcg-cap.patch --]
[-- Type: text/x-patch, Size: 2162 bytes --]
diff -r 4eea7c9b3bf2 xen/arch/x86/hvm/svm/svm.c
--- a/xen/arch/x86/hvm/svm/svm.c Thu Aug 02 08:59:43 2007 -0400
+++ b/xen/arch/x86/hvm/svm/svm.c Thu Aug 02 08:59:43 2007 -0400
@@ -2162,7 +2162,19 @@ static void svm_do_msr_access(
/* No point in letting the guest see real MCEs */
msr_content = 0;
break;
-
+ case MSR_IA32_MCG_CAP:
+ if ( rdmsr_safe(ecx, regs->eax, regs->edx) == 0 ) {
+ /*
+ * Report at most one memory bank so migration to a machine with
+ * fewer banks doesn't cause guest GPFs when the guest tries to read the
+ * (now, after migration) non-existent banks' MSRs.
+ */
+ regs->eax = (regs->eax & ~0xFF) | !!(regs->eax & 0xFF);
+ goto done;
+ }
+ gdprintk(XENLOG_ERR, "%s: rdmsr_safe(MCG_CAP) failed!\n", __FUNCTION__);
+ svm_inject_exception(v, TRAP_gp_fault, 1, 0);
+ return;
default:
if ( rdmsr_hypervisor_regs(ecx, &eax, &edx) ||
rdmsr_safe(ecx, eax, edx) == 0 )
diff -r 4eea7c9b3bf2 xen/arch/x86/hvm/vmx/vmx.c
--- a/xen/arch/x86/hvm/vmx/vmx.c Thu Aug 02 08:59:43 2007 -0400
+++ b/xen/arch/x86/hvm/vmx/vmx.c Thu Aug 02 09:14:06 2007 -0400
@@ -2754,6 +2754,19 @@ static int vmx_do_msr_read(struct cpu_us
/* No point in letting the guest see real MCEs */
msr_content = 0;
break;
+ case MSR_IA32_MCG_CAP:
+ if ( rdmsr_safe(ecx, regs->eax, regs->edx) == 0 ) {
+ /*
+ * Report only a single memory bank so migration to a machine with
+ * fewer banks doesn't cause guest GPFs when the guest tries to read the
+ * (now, after migration) non-existent banks' MSRs.
+ */
+ regs->eax = (regs->eax & ~0xFF) | !!(regs->eax & 0xFF);
+ goto done;
+ }
+ gdprintk(XENLOG_ERR, "%s: rdmsr_safe(MCG_CAP) failed!\n", __FUNCTION__);
+ vmx_inject_hw_exception(v, TRAP_gp_fault, 0);
+ return 0;
default:
switch ( long_mode_do_msr_read(regs) )
{
[-- Attachment #3: Type: text/plain, Size: 138 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
next reply other threads:[~2007-08-27 19:11 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-08-27 19:11 Ben Guthro [this message]
[not found] <C2F9B040.14F1A%keir@xensource.com>
2007-08-29 13:23 ` [PATCH] Limit MCG Cap David Lively
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=46D321DC.30504@virtualiron.com \
--to=bguthro@virtualiron.com \
--cc=dlively@virtualiron.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.