On Thu, Apr 7, 2016 at 2:08 AM, Paolo Bonzini <pbonzini@xxxxxxxxxx> wrote: > > > On 05/04/2016 17:56, David Matlack wrote: >> On Tue, Apr 5, 2016 at 4:28 AM, Paolo Bonzini <pbonzini@xxxxxxxxxx> wrote: >>> >> ... >>> >>> While running my acceptance tests, in one case I got one CPU whose xcr0 >>> had leaked into the host. This showed up as a SIGILL in strncasecmp's >>> AVX code, and a simple program confirmed it: >>> >>> $ cat xgetbv.c >>> #include <stdio.h> >>> int main(void) >>> { >>> unsigned xcr0_h, xcr0_l; >>> asm("xgetbv" : "=d"(xcr0_h), "=a"(xcr0_l) : "c"(0)); >>> printf("%08x:%08x\n", xcr0_h, xcr0_l); >>> } >>> $ gcc xgetbv.c -O2 >>> $ for i in `seq 0 55`; do echo $i `taskset -c $i ./a.out`; done|grep -v 007 >>> 19 00000000:00000003 >>> >>> I'm going to rerun the tests without this patch, as it seems the most >>> likely culprit, and leave it out of the pull request if they pass. >> >> Agreed this is a very likely culprit. I think I see one way the >> guest's xcr0 can leak into the host. > > That's cancel_injection, right? If it's just about moving the load call > below, I can do that. Hmm, I will even test that today. :) Yes that's what I was thinking, move kvm_load_guest_xcr0 below that if. Thank you :). Let me know how testing goes. > > Paolo > -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html