* [RFT] Fix for unhandled msr c0000081 problems under Intel cpus
@ 2006-12-13 9:45 Avi Kivity
[not found] ` <457FCBB9.5070800-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
0 siblings, 1 reply; 17+ messages in thread
From: Avi Kivity @ 2006-12-13 9:45 UTC (permalink / raw)
To: kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f
[-- Attachment #1: Type: text/plain, Size: 250 bytes --]
If you've experienced this problem, please test the attached patch (to
qemu, not the kernel module) and report back. The patch basically tells
the guest that the msr doesn't exist.
--
error compiling committee.c: too many arguments to function
[-- Attachment #2: msr_star-intel-fix.patch --]
[-- Type: text/x-patch, Size: 1021 bytes --]
Index: qemu/qemu-kvm.c
===================================================================
--- qemu/qemu-kvm.c (revision 4089)
+++ qemu/qemu-kvm.c (working copy)
@@ -408,6 +408,7 @@
{
CPUState **envs = opaque;
CPUState *saved_env;
+ uint32_t eax = *rax;
saved_env = env;
env = envs[0];
@@ -421,6 +422,27 @@
*rcx = env->regs[R_ECX];
*rbx = env->regs[R_EBX];
*rax = env->regs[R_EAX];
+ // don't report long mode/syscall if no native support
+ if (eax == 0x80000001) {
+ unsigned long h_eax = eax, h_edx;
+
+
+ // horrible hack to workaround gcc 3 register pressure trouble
+ asm (
+#ifdef __x86_64__
+ "push %%rbx; push %%rcx; cpuid; pop %%rcx; pop %%rbx"
+#else
+ "push %%ebx; push %%ecx; cpuid; pop %%ecx; pop %%ebx"
+#endif
+ : "+a"(h_eax), "=d"(h_edx));
+
+ // long mode
+ if ((h_edx & 0x20000000) == 0)
+ *rdx &= ~0x20000000ull;
+ // syscall
+ if ((h_edx & 0x00000800) == 0)
+ *rdx &= ~0x00000800ull;
+ }
env = saved_env;
return 0;
}
[-- Attachment #3: Type: text/plain, Size: 347 bytes --]
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
[-- Attachment #4: Type: text/plain, Size: 186 bytes --]
_______________________________________________
kvm-devel mailing list
kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
https://lists.sourceforge.net/lists/listinfo/kvm-devel
^ permalink raw reply [flat|nested] 17+ messages in thread[parent not found: <457FCBB9.5070800-atKUWr5tajBWk0Htik3J/w@public.gmane.org>]
* Re: [RFT] Fix for unhandled msr c0000081 problems under Intel cpus [not found] ` <457FCBB9.5070800-atKUWr5tajBWk0Htik3J/w@public.gmane.org> @ 2006-12-13 17:04 ` Michael Riepe 2006-12-13 19:26 ` Michael Riepe 1 sibling, 0 replies; 17+ messages in thread From: Michael Riepe @ 2006-12-13 17:04 UTC (permalink / raw) To: Avi Kivity; +Cc: kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f Avi Kivity wrote: > If you've experienced this problem, please test the attached patch (to > qemu, not the kernel module) and report back. The patch basically tells > the guest that the msr doesn't exist. That doesn't help, the messages are still there. -- Michael "Tired" Riepe <michael-0QoEqw4nQxo@public.gmane.org> X-Tired: Each morning I get up I die a little ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [RFT] Fix for unhandled msr c0000081 problems under Intel cpus [not found] ` <457FCBB9.5070800-atKUWr5tajBWk0Htik3J/w@public.gmane.org> 2006-12-13 17:04 ` Michael Riepe @ 2006-12-13 19:26 ` Michael Riepe [not found] ` <45805400.3060308-0QoEqw4nQxo@public.gmane.org> 1 sibling, 1 reply; 17+ messages in thread From: Michael Riepe @ 2006-12-13 19:26 UTC (permalink / raw) To: Avi Kivity; +Cc: kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f Oh well... I was wondering which stupid piece of sh^H^Hcode generated so many wrong rdmsr instructions without looking at the CPU feature flags. So I grepped through the linux kernel and glibc sources as well as some other likely suspects and found - nothing. Guess what? It's qemu! In qemu-kvm.c (around line 329 in save_regs()) it starts to call kvm_get_msrs(), and one of the MSRs it wants to read is MSR_STAR. When I removed MSR_STAR from the list (which fortunately has no consequences on my Core Duo), the messages were gone. -- Michael "Tired" Riepe <michael-0QoEqw4nQxo@public.gmane.org> X-Tired: Each morning I get up I die a little ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV ^ permalink raw reply [flat|nested] 17+ messages in thread
[parent not found: <45805400.3060308-0QoEqw4nQxo@public.gmane.org>]
* Re: [RFT] Fix for unhandled msr c0000081 problems under Intel cpus [not found] ` <45805400.3060308-0QoEqw4nQxo@public.gmane.org> @ 2006-12-14 9:22 ` Avi Kivity [not found] ` <458117E4.4010807-atKUWr5tajBWk0Htik3J/w@public.gmane.org> 0 siblings, 1 reply; 17+ messages in thread From: Avi Kivity @ 2006-12-14 9:22 UTC (permalink / raw) To: Michael Riepe; +Cc: kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f Michael Riepe wrote: > Oh well... > > I was wondering which stupid piece of sh^H^Hcode generated so many wrong > rdmsr instructions without looking at the CPU feature flags. So I > grepped through the linux kernel and glibc sources as well as some other > likely suspects and found - nothing. > > Guess what? It's qemu! > > In qemu-kvm.c (around line 329 in save_regs()) it starts to call > kvm_get_msrs(), and one of the MSRs it wants to read is MSR_STAR. When I > removed MSR_STAR from the list (which fortunately has no consequences on > my Core Duo), the messages were gone. > Yes, you're right. I'll commit the previous patch (which is correct, even if no guest actually uses syscall), and teach qemu not to read MSR_STAR when it isn't available. -- error compiling committee.c: too many arguments to function ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV ^ permalink raw reply [flat|nested] 17+ messages in thread
[parent not found: <458117E4.4010807-atKUWr5tajBWk0Htik3J/w@public.gmane.org>]
* Re: [RFT] Fix for unhandled msr c0000081 problems under Intel cpus [not found] ` <458117E4.4010807-atKUWr5tajBWk0Htik3J/w@public.gmane.org> @ 2006-12-14 10:14 ` Avi Kivity [not found] ` <45812407.7010803-atKUWr5tajBWk0Htik3J/w@public.gmane.org> 0 siblings, 1 reply; 17+ messages in thread From: Avi Kivity @ 2006-12-14 10:14 UTC (permalink / raw) To: Michael Riepe; +Cc: kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f [-- Attachment #1: Type: text/plain, Size: 938 bytes --] Avi Kivity wrote: > Michael Riepe wrote: >> Oh well... >> >> I was wondering which stupid piece of sh^H^Hcode generated so many wrong >> rdmsr instructions without looking at the CPU feature flags. So I >> grepped through the linux kernel and glibc sources as well as some other >> likely suspects and found - nothing. >> >> Guess what? It's qemu! >> >> In qemu-kvm.c (around line 329 in save_regs()) it starts to call >> kvm_get_msrs(), and one of the MSRs it wants to read is MSR_STAR. When I >> removed MSR_STAR from the list (which fortunately has no consequences on >> my Core Duo), the messages were gone. >> > > Yes, you're right. > > I'll commit the previous patch (which is correct, even if no guest > actually uses syscall), and teach qemu not to read MSR_STAR when it > isn't available. > A patch is attached. Please test. (note it changes libkvm too) -- error compiling committee.c: too many arguments to function [-- Attachment #2: avoid-msr-star-if-not-available.patch --] [-- Type: text/x-patch, Size: 4120 bytes --] Index: qemu/qemu-kvm.c =================================================================== --- qemu/qemu-kvm.c (revision 4110) +++ qemu/qemu-kvm.c (working copy) @@ -16,6 +16,8 @@ int kvm_allowed = 1; kvm_context_t kvm_context; +static struct kvm_msr_list *kvm_msr_list; +static int kvm_has_msr_star; #define NR_CPU 16 static CPUState *saved_env[NR_CPU]; @@ -127,7 +129,7 @@ struct kvm_regs regs; struct kvm_sregs sregs; struct kvm_msr_entry msrs[MSR_COUNT]; - int rc; + int rc, n; /* hack: save env */ if (!saved_env[0]) @@ -201,19 +203,21 @@ kvm_set_sregs(kvm_context, 0, &sregs); /* msrs */ - set_msr_entry(&msrs[0], MSR_IA32_SYSENTER_CS, env->sysenter_cs); - set_msr_entry(&msrs[1], MSR_IA32_SYSENTER_ESP, env->sysenter_esp); - set_msr_entry(&msrs[2], MSR_IA32_SYSENTER_EIP, env->sysenter_eip); - set_msr_entry(&msrs[3], MSR_STAR, env->star); - set_msr_entry(&msrs[4], MSR_IA32_TSC, env->tsc); + n = 0; + set_msr_entry(&msrs[n++], MSR_IA32_SYSENTER_CS, env->sysenter_cs); + set_msr_entry(&msrs[n++], MSR_IA32_SYSENTER_ESP, env->sysenter_esp); + set_msr_entry(&msrs[n++], MSR_IA32_SYSENTER_EIP, env->sysenter_eip); + if (kvm_has_msr_star) + set_msr_entry(&msrs[n++], MSR_STAR, env->star); + set_msr_entry(&msrs[n++], MSR_IA32_TSC, env->tsc); #ifdef TARGET_X86_64 - set_msr_entry(&msrs[5], MSR_CSTAR, env->cstar); - set_msr_entry(&msrs[6], MSR_KERNELGSBASE, env->kernelgsbase); - set_msr_entry(&msrs[7], MSR_FMASK, env->fmask); - set_msr_entry(&msrs[8], MSR_LSTAR , env->lstar); + set_msr_entry(&msrs[n++], MSR_CSTAR, env->cstar); + set_msr_entry(&msrs[n++], MSR_KERNELGSBASE, env->kernelgsbase); + set_msr_entry(&msrs[n++], MSR_FMASK, env->fmask); + set_msr_entry(&msrs[n++], MSR_LSTAR , env->lstar); #endif - rc = kvm_set_msrs(kvm_context, 0, msrs, MSR_COUNT); + rc = kvm_set_msrs(kvm_context, 0, msrs, n); if (rc == -1) perror("kvm_set_msrs FAILED"); } @@ -326,18 +330,20 @@ tlb_flush(env, 1); /* msrs */ - msrs[0].index = MSR_IA32_SYSENTER_CS; - msrs[1].index = MSR_IA32_SYSENTER_ESP; - msrs[2].index = MSR_IA32_SYSENTER_EIP; - msrs[3].index = MSR_STAR; - msrs[4].index = MSR_IA32_TSC; + n = 0; + msrs[n++].index = MSR_IA32_SYSENTER_CS; + msrs[n++].index = MSR_IA32_SYSENTER_ESP; + msrs[n++].index = MSR_IA32_SYSENTER_EIP; + if (kvm_has_msr_star) + msrs[n++].index = MSR_STAR; + msrs[n++].index = MSR_IA32_TSC; #ifdef TARGET_X86_64 - msrs[5].index = MSR_CSTAR; - msrs[6].index = MSR_KERNELGSBASE; - msrs[7].index = MSR_FMASK; - msrs[8].index = MSR_LSTAR; + msrs[n++].index = MSR_CSTAR; + msrs[n++].index = MSR_KERNELGSBASE; + msrs[n++].index = MSR_FMASK; + msrs[n++].index = MSR_LSTAR; #endif - rc = kvm_get_msrs(kvm_context, 0, msrs, MSR_COUNT); + rc = kvm_get_msrs(kvm_context, 0, msrs, n); if (rc == -1) { perror("kvm_get_msrs FAILED"); } @@ -597,11 +603,20 @@ int kvm_qemu_create_context(void) { + int i; + if (kvm_create(kvm_context, phys_ram_size, (void**)&phys_ram_base) < 0) { kvm_qemu_destroy(); return -1; } - + kvm_msr_list = kvm_get_msr_list(kvm_context); + if (!kvm_msr_list) { + kvm_qemu_destroy(); + return -1; + } + for (i = 0; i < kvm_msr_list->nmsrs; ++i) + if (kvm_msr_list->indices[i] == MSR_STAR) + kvm_has_msr_star = 1; return 0; } Index: user/kvmctl.c =================================================================== --- user/kvmctl.c (revision 4089) +++ user/kvmctl.c (working copy) @@ -339,13 +339,14 @@ sizer.nmsrs = 0; r = ioctl(kvm->fd, KVM_GET_MSR_INDEX_LIST, &sizer); - if (r == -1) + if (r == -1 && errno != E2BIG) return 0; msrs = malloc(sizeof *msrs + sizer.nmsrs * sizeof *msrs->indices); if (!msrs) { errno = ENOMEM; return 0; } + msrs->nmsrs = sizer.nmsrs; r = ioctl(kvm->fd, KVM_GET_MSR_INDEX_LIST, msrs); if (r == -1) { e = errno; [-- Attachment #3: Type: text/plain, Size: 347 bytes --] ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV [-- Attachment #4: Type: text/plain, Size: 186 bytes --] _______________________________________________ kvm-devel mailing list kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org https://lists.sourceforge.net/lists/listinfo/kvm-devel ^ permalink raw reply [flat|nested] 17+ messages in thread
[parent not found: <45812407.7010803-atKUWr5tajBWk0Htik3J/w@public.gmane.org>]
* Re: [RFT] Fix for unhandled msr c0000081 problems under Intel cpus [not found] ` <45812407.7010803-atKUWr5tajBWk0Htik3J/w@public.gmane.org> @ 2006-12-28 13:14 ` Ingo Molnar [not found] ` <20061228131445.GA1438-X9Un+BFzKDI@public.gmane.org> 0 siblings, 1 reply; 17+ messages in thread From: Ingo Molnar @ 2006-12-28 13:14 UTC (permalink / raw) To: Avi Kivity; +Cc: kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f * Avi Kivity <avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org> wrote: > >I'll commit the previous patch (which is correct, even if no guest > >actually uses syscall), and teach qemu not to read MSR_STAR when it > >isn't available. > > A patch is attached. Please test. > > (note it changes libkvm too) hm, this patch doesnt seem to work, qemu gives me: Could not create KVM context it comes from: 3064 ioctl(3, 0x4004ae0b, 0) = 0 3064 ioctl(3, 0xc004ae0f, 0xbff8bd98) = -1 E2BIG (Argument list too long) but i have an older (2-weeks) qemu drop from branches/release/qemu - is that one supposed to work? Ingo ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV ^ permalink raw reply [flat|nested] 17+ messages in thread
[parent not found: <20061228131445.GA1438-X9Un+BFzKDI@public.gmane.org>]
* Re: [RFT] Fix for unhandled msr c0000081 problems under Intel cpus [not found] ` <20061228131445.GA1438-X9Un+BFzKDI@public.gmane.org> @ 2006-12-28 13:21 ` Avi Kivity [not found] ` <4593C4CE.4040203-atKUWr5tajBWk0Htik3J/w@public.gmane.org> 0 siblings, 1 reply; 17+ messages in thread From: Avi Kivity @ 2006-12-28 13:21 UTC (permalink / raw) To: Ingo Molnar; +Cc: kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f Ingo Molnar wrote: > * Avi Kivity <avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org> wrote: > > >>> I'll commit the previous patch (which is correct, even if no guest >>> actually uses syscall), and teach qemu not to read MSR_STAR when it >>> isn't available. >>> >> A patch is attached. Please test. >> >> (note it changes libkvm too) >> > > hm, this patch doesnt seem to work, qemu gives me: > > Could not create KVM context > > it comes from: > > 3064 ioctl(3, 0x4004ae0b, 0) = 0 > 3064 ioctl(3, 0xc004ae0f, 0xbff8bd98) = -1 E2BIG (Argument list too long) > > but i have an older (2-weeks) qemu drop from branches/release/qemu - is > that one supposed to work? > There was an accompanying bug in libkvm or qemu IIRC. -- error compiling committee.c: too many arguments to function ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV ^ permalink raw reply [flat|nested] 17+ messages in thread
[parent not found: <4593C4CE.4040203-atKUWr5tajBWk0Htik3J/w@public.gmane.org>]
* Re: [RFT] Fix for unhandled msr c0000081 problems under Intel cpus [not found] ` <4593C4CE.4040203-atKUWr5tajBWk0Htik3J/w@public.gmane.org> @ 2006-12-28 13:26 ` Ingo Molnar [not found] ` <20061228132602.GA3392-X9Un+BFzKDI@public.gmane.org> 0 siblings, 1 reply; 17+ messages in thread From: Ingo Molnar @ 2006-12-28 13:26 UTC (permalink / raw) To: Avi Kivity; +Cc: kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f * Avi Kivity <avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org> wrote: > >hm, this patch doesnt seem to work, qemu gives me: > > > > Could not create KVM context > > > >it comes from: > > > > 3064 ioctl(3, 0x4004ae0b, 0) = 0 > > 3064 ioctl(3, 0xc004ae0f, 0xbff8bd98) = -1 E2BIG (Argument list too > > long) > > > >but i have an older (2-weeks) qemu drop from branches/release/qemu - is > >that one supposed to work? > > > > There was an accompanying bug in libkvm or qemu IIRC. yeah, the patch changes libkvm and thus i reinstalled libkvm when i tested it: -rw-r--r-- 1 mingo mingo 23326 Dec 28 14:11 user/libkvm.a -rwxr-xr-x 1 mingo mingo 3932505 Dec 28 14:11 qemu/i386-softmmu/qemu -rwxr-xr-x 1 root root 23326 Dec 28 14:13 /usr/local/lib/libkvm.a and rebuilt qemu with the new libkvm, but it still gave me this warning. I'll do a full qemu rebuild, just to make sure it picked up the new library ... Ingo ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV ^ permalink raw reply [flat|nested] 17+ messages in thread
[parent not found: <20061228132602.GA3392-X9Un+BFzKDI@public.gmane.org>]
* Re: [RFT] Fix for unhandled msr c0000081 problems under Intel cpus [not found] ` <20061228132602.GA3392-X9Un+BFzKDI@public.gmane.org> @ 2006-12-28 13:48 ` Ingo Molnar [not found] ` <20061228134845.GA7446-X9Un+BFzKDI@public.gmane.org> 0 siblings, 1 reply; 17+ messages in thread From: Ingo Molnar @ 2006-12-28 13:48 UTC (permalink / raw) To: Avi Kivity; +Cc: kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f * Ingo Molnar <mingo-X9Un+BFzKDI@public.gmane.org> wrote: > I'll do a full qemu rebuild, just to make sure it picked up the new > library ... that did the trick. The only messages remaining are: kvm: unhandled wrmsr: 0xc1 inject_general_protection: rip 0xc011b8ae Ingo ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV ^ permalink raw reply [flat|nested] 17+ messages in thread
[parent not found: <20061228134845.GA7446-X9Un+BFzKDI@public.gmane.org>]
* Re: [RFT] Fix for unhandled msr c0000081 problems under Intel cpus [not found] ` <20061228134845.GA7446-X9Un+BFzKDI@public.gmane.org> @ 2006-12-28 13:56 ` Avi Kivity [not found] ` <4593CD12.7010603-atKUWr5tajBWk0Htik3J/w@public.gmane.org> 0 siblings, 1 reply; 17+ messages in thread From: Avi Kivity @ 2006-12-28 13:56 UTC (permalink / raw) To: Ingo Molnar; +Cc: kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f Ingo Molnar wrote: > * Ingo Molnar <mingo-X9Un+BFzKDI@public.gmane.org> wrote: > > >> I'll do a full qemu rebuild, just to make sure it picked up the new >> library ... >> > > that did the trick. The only messages remaining are: > > kvm: unhandled wrmsr: 0xc1 > inject_general_protection: rip 0xc011b8ae > > That's a performance counter. What guest triggers it? I can usually shut up an unhandled rdmsr, but wrmsrs are more worrying. -- error compiling committee.c: too many arguments to function ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV ^ permalink raw reply [flat|nested] 17+ messages in thread
[parent not found: <4593CD12.7010603-atKUWr5tajBWk0Htik3J/w@public.gmane.org>]
* Re: [RFT] Fix for unhandled msr c0000081 problems under Intel cpus [not found] ` <4593CD12.7010603-atKUWr5tajBWk0Htik3J/w@public.gmane.org> @ 2006-12-28 14:02 ` Ingo Molnar [not found] ` <20061228140223.GA9418-X9Un+BFzKDI@public.gmane.org> 0 siblings, 1 reply; 17+ messages in thread From: Ingo Molnar @ 2006-12-28 14:02 UTC (permalink / raw) To: Avi Kivity; +Cc: kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f * Avi Kivity <avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org> wrote: > >that did the trick. The only messages remaining are: > > > > kvm: unhandled wrmsr: 0xc1 > > inject_general_protection: rip 0xc011b8ae > > > > > > That's a performance counter. What guest triggers it? a 32-bit Linux bzImage: c011b8ae: 0f 30 wrmsr (gdb) list *0xc011b8ae 0xc011b8ae is in setup_apic_nmi_watchdog (include/asm/msr.h:36). 31 static inline void wrmsrl (unsigned long msr, unsigned long long val) 32 { 33 unsigned long lo, hi; 34 lo = (unsigned long) val; 35 hi = val >> 32; 36 wrmsr (msr, lo, hi); 37 } 38 39 /* wrmsr with exception handling */ 40 #define wrmsr_safe(msr,a,b) ({ int ret__; the guest also obviously crashes due to this #GPF. [ 2.6.20-rc2-rt2 kernel of course ;-) ] Ingo ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV ^ permalink raw reply [flat|nested] 17+ messages in thread
[parent not found: <20061228140223.GA9418-X9Un+BFzKDI@public.gmane.org>]
* Re: [RFT] Fix for unhandled msr c0000081 problems under Intel cpus [not found] ` <20061228140223.GA9418-X9Un+BFzKDI@public.gmane.org> @ 2006-12-28 14:09 ` Avi Kivity [not found] ` <4593D011.9020808-atKUWr5tajBWk0Htik3J/w@public.gmane.org> 0 siblings, 1 reply; 17+ messages in thread From: Avi Kivity @ 2006-12-28 14:09 UTC (permalink / raw) To: Ingo Molnar; +Cc: kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f Ingo Molnar wrote: > * Avi Kivity <avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org> wrote: > > >>> that did the trick. The only messages remaining are: >>> >>> kvm: unhandled wrmsr: 0xc1 >>> inject_general_protection: rip 0xc011b8ae >>> >>> >>> >> That's a performance counter. What guest triggers it? >> > > a 32-bit Linux bzImage: > > c011b8ae: 0f 30 wrmsr > > (gdb) list *0xc011b8ae > 0xc011b8ae is in setup_apic_nmi_watchdog (include/asm/msr.h:36). > 31 static inline void wrmsrl (unsigned long msr, unsigned long long val) > 32 { > 33 unsigned long lo, hi; > 34 lo = (unsigned long) val; > 35 hi = val >> 32; > 36 wrmsr (msr, lo, hi); > 37 } > 38 > 39 /* wrmsr with exception handling */ > 40 #define wrmsr_safe(msr,a,b) ({ int ret__; > > the guest also obviously crashes due to this #GPF. > The wary ones use wrmsr_safe(). > [ 2.6.20-rc2-rt2 kernel of course ;-) ] > > Who's the caller? I boot 2.6.18 variants regularly and they don't touch that msr. -- error compiling committee.c: too many arguments to function ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV ^ permalink raw reply [flat|nested] 17+ messages in thread
[parent not found: <4593D011.9020808-atKUWr5tajBWk0Htik3J/w@public.gmane.org>]
* Re: [RFT] Fix for unhandled msr c0000081 problems under Intel cpus [not found] ` <4593D011.9020808-atKUWr5tajBWk0Htik3J/w@public.gmane.org> @ 2006-12-28 14:08 ` Ingo Molnar [not found] ` <20061228140836.GB10033-X9Un+BFzKDI@public.gmane.org> 0 siblings, 1 reply; 17+ messages in thread From: Ingo Molnar @ 2006-12-28 14:08 UTC (permalink / raw) To: Avi Kivity; +Cc: kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f * Avi Kivity <avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org> wrote: > Ingo Molnar wrote: > >* Avi Kivity <avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org> wrote: > > > > > >>>that did the trick. The only messages remaining are: > >>> > >>>kvm: unhandled wrmsr: 0xc1 > >>>inject_general_protection: rip 0xc011b8ae > >>> > >>> > >>> > >>That's a performance counter. What guest triggers it? > >> > > > >a 32-bit Linux bzImage: > > > > c011b8ae: 0f 30 wrmsr > > > > (gdb) list *0xc011b8ae > > 0xc011b8ae is in setup_apic_nmi_watchdog (include/asm/msr.h:36). > > 31 static inline void wrmsrl (unsigned long msr, unsigned long long > > val) > > 32 { > > 33 unsigned long lo, hi; > > 34 lo = (unsigned long) val; > > 35 hi = val >> 32; > > 36 wrmsr (msr, lo, hi); > > 37 } > > 38 > > 39 /* wrmsr with exception handling */ > > 40 #define wrmsr_safe(msr,a,b) ({ int ret__; > > > >the guest also obviously crashes due to this #GPF. > > > > The wary ones use wrmsr_safe(). > > >[ 2.6.20-rc2-rt2 kernel of course ;-) ] > > > > > > Who's the caller? I boot 2.6.18 variants regularly and they don't touch > that msr. the caller is in the gdb dump above: > > 0xc011b8ae is in setup_apic_nmi_watchdog (include/asm/msr.h:36). i'll change it to wrmsr_safe(). Ingo ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV ^ permalink raw reply [flat|nested] 17+ messages in thread
[parent not found: <20061228140836.GB10033-X9Un+BFzKDI@public.gmane.org>]
* Re: [RFT] Fix for unhandled msr c0000081 problems under Intel cpus [not found] ` <20061228140836.GB10033-X9Un+BFzKDI@public.gmane.org> @ 2006-12-28 14:12 ` Ingo Molnar [not found] ` <20061228141242.GA11229-X9Un+BFzKDI@public.gmane.org> 0 siblings, 1 reply; 17+ messages in thread From: Ingo Molnar @ 2006-12-28 14:12 UTC (permalink / raw) To: Avi Kivity; +Cc: kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f * Ingo Molnar <mingo-X9Un+BFzKDI@public.gmane.org> wrote: > the caller is in the gdb dump above: > > > > 0xc011b8ae is in setup_apic_nmi_watchdog (include/asm/msr.h:36). > > i'll change it to wrmsr_safe(). actually, those MSRs are really architecture-defined for P6 family CPUs. So KVM/qemu should at least fake something there, or ignore it. These MSRs might be ticked by various existing kernels and distributions. Performance counters are ignored at the moment? Ingo ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV ^ permalink raw reply [flat|nested] 17+ messages in thread
[parent not found: <20061228141242.GA11229-X9Un+BFzKDI@public.gmane.org>]
* Re: [RFT] Fix for unhandled msr c0000081 problems under Intel cpus [not found] ` <20061228141242.GA11229-X9Un+BFzKDI@public.gmane.org> @ 2006-12-28 14:21 ` Avi Kivity [not found] ` <4593D2D5.3020102-atKUWr5tajBWk0Htik3J/w@public.gmane.org> 0 siblings, 1 reply; 17+ messages in thread From: Avi Kivity @ 2006-12-28 14:21 UTC (permalink / raw) To: Ingo Molnar; +Cc: kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f Ingo Molnar wrote: > * Ingo Molnar <mingo-X9Un+BFzKDI@public.gmane.org> wrote: > > >> the caller is in the gdb dump above: >> >> >>>> 0xc011b8ae is in setup_apic_nmi_watchdog (include/asm/msr.h:36). >>>> >> i'll change it to wrmsr_safe(). >> > > actually, those MSRs are really architecture-defined for P6 family CPUs. > So KVM/qemu should at least fake something there, or ignore it. These > MSRs might be ticked by various existing kernels and distributions. > Performance counters are ignored at the moment? > They are unimplemented, and tricky to implement. Just swallowing the wrmsr is easy, but it won't do the expected thing, whatever that is. -- error compiling committee.c: too many arguments to function ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV ^ permalink raw reply [flat|nested] 17+ messages in thread
[parent not found: <4593D2D5.3020102-atKUWr5tajBWk0Htik3J/w@public.gmane.org>]
* Re: [RFT] Fix for unhandled msr c0000081 problems under Intel cpus [not found] ` <4593D2D5.3020102-atKUWr5tajBWk0Htik3J/w@public.gmane.org> @ 2006-12-28 14:58 ` Ingo Molnar [not found] ` <20061228145825.GA16057-X9Un+BFzKDI@public.gmane.org> 0 siblings, 1 reply; 17+ messages in thread From: Ingo Molnar @ 2006-12-28 14:58 UTC (permalink / raw) To: Avi Kivity; +Cc: kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f * Avi Kivity <avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org> wrote: > >actually, those MSRs are really architecture-defined for P6 family > >CPUs. So KVM/qemu should at least fake something there, or ignore it. > >These MSRs might be ticked by various existing kernels and > >distributions. Performance counters are ignored at the moment? > > They are unimplemented, and tricky to implement. Just swallowing the > wrmsr is easy, but it won't do the expected thing, whatever that is. the expected thing is to get periodic watchdog NMIs injected - but it's not a big problem if that doesnt work, the watchdog code detects that. Crashing during bootup isnt too sexy though. Ingo ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV ^ permalink raw reply [flat|nested] 17+ messages in thread
[parent not found: <20061228145825.GA16057-X9Un+BFzKDI@public.gmane.org>]
* Re: [RFT] Fix for unhandled msr c0000081 problems under Intel cpus [not found] ` <20061228145825.GA16057-X9Un+BFzKDI@public.gmane.org> @ 2006-12-28 15:05 ` Avi Kivity 0 siblings, 0 replies; 17+ messages in thread From: Avi Kivity @ 2006-12-28 15:05 UTC (permalink / raw) To: Ingo Molnar; +Cc: kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f Ingo Molnar wrote: > * Avi Kivity <avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org> wrote: > > >>> actually, those MSRs are really architecture-defined for P6 family >>> CPUs. So KVM/qemu should at least fake something there, or ignore it. >>> These MSRs might be ticked by various existing kernels and >>> distributions. Performance counters are ignored at the moment? >>> >> They are unimplemented, and tricky to implement. Just swallowing the >> wrmsr is easy, but it won't do the expected thing, whatever that is. >> > > the expected thing is to get periodic watchdog NMIs injected - but it's > not a big problem if that doesnt work, the watchdog code detects that. > Crashing during bootup isnt too sexy though. > I'll queue it for implementation then (it's just a variant of the timer interrupt). Swallowing the wrmsr may be ok for Linux, but may cause other guests to fail unpredictably. -- error compiling committee.c: too many arguments to function ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV ^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2006-12-28 15:05 UTC | newest]
Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-12-13 9:45 [RFT] Fix for unhandled msr c0000081 problems under Intel cpus Avi Kivity
[not found] ` <457FCBB9.5070800-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2006-12-13 17:04 ` Michael Riepe
2006-12-13 19:26 ` Michael Riepe
[not found] ` <45805400.3060308-0QoEqw4nQxo@public.gmane.org>
2006-12-14 9:22 ` Avi Kivity
[not found] ` <458117E4.4010807-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2006-12-14 10:14 ` Avi Kivity
[not found] ` <45812407.7010803-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2006-12-28 13:14 ` Ingo Molnar
[not found] ` <20061228131445.GA1438-X9Un+BFzKDI@public.gmane.org>
2006-12-28 13:21 ` Avi Kivity
[not found] ` <4593C4CE.4040203-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2006-12-28 13:26 ` Ingo Molnar
[not found] ` <20061228132602.GA3392-X9Un+BFzKDI@public.gmane.org>
2006-12-28 13:48 ` Ingo Molnar
[not found] ` <20061228134845.GA7446-X9Un+BFzKDI@public.gmane.org>
2006-12-28 13:56 ` Avi Kivity
[not found] ` <4593CD12.7010603-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2006-12-28 14:02 ` Ingo Molnar
[not found] ` <20061228140223.GA9418-X9Un+BFzKDI@public.gmane.org>
2006-12-28 14:09 ` Avi Kivity
[not found] ` <4593D011.9020808-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2006-12-28 14:08 ` Ingo Molnar
[not found] ` <20061228140836.GB10033-X9Un+BFzKDI@public.gmane.org>
2006-12-28 14:12 ` Ingo Molnar
[not found] ` <20061228141242.GA11229-X9Un+BFzKDI@public.gmane.org>
2006-12-28 14:21 ` Avi Kivity
[not found] ` <4593D2D5.3020102-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2006-12-28 14:58 ` Ingo Molnar
[not found] ` <20061228145825.GA16057-X9Un+BFzKDI@public.gmane.org>
2006-12-28 15:05 ` Avi Kivity
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox