[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] rdmsr_safe in Linux PV (under Xen) gets an #GP:Re: [Fedora-xen] Running fedora xen on top of KVM?
On Tue, Sep 22, 2015 at 11:23 AM, Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> wrote: > On Sun, Sep 20, 2015 at 09:49:04PM -0700, Andy Lutomirski wrote: >> On Fri, Sep 18, 2015 at 12:04 PM, Borislav Petkov <bp@xxxxxxxxx> wrote: >> > On Fri, Sep 18, 2015 at 08:20:46AM -0700, Andy Lutomirski wrote: >> >> In any event, Borislav, you must have typed rdmsr_safe for a reason :) >> > >> > Wasn't me: >> > >> > 6c62aa4a3c12 ("x86: make amd.c have 64bit support code") >> > >> > I think the error handling of rdmsrl_safe() was needed to do the pfn >> > games which are done in the if-clause. >> >> I just tried it. rdmsrl_safe and friends definitely work fine in that >> code. I think that Linux's Xen startup code is buggy and fails to set >> up early exception handling. >> >> Try this (horribly whitespace damaged): >> >> static void __init early_identify_cpu(struct cpuinfo_x86 *c) >> { >> + u64 tmp; >> #ifdef CONFIG_X86_64 >> c->x86_clflush_size = 64; >> c->x86_phys_bits = 36; >> @@ -752,6 +753,9 @@ static void __init early_identify_cpu(struct cpuinfo_x86 >> *c) >> c->cpu_index = 0; >> filter_cpuid_features(c, false); >> >> + pr_err("trying to crash\n"); >> + rdmsrl_safe(0x12345678, &tmp); >> + >> >> It works fine. I bet it crashes on a Xen guest, though. I assume >> that Xen just works in most cases by luck. > > (d31) mapping kernel into physical memory > (d31) about to get started... > (XEN) traps.c:3151: GPF (0000): ffff82d0801a31ed -> ffff82d08023c77b > (XEN) traps.c:459:d31v0 Unhandled general protection fault fault/trap [#13] > on VCPU 0 [ec=0000] > (XEN) domain_crash_sync called from entry.S: fault at ffff82d080238213 > create_bounce_frame+0x12b/0x13a > (XEN) Domain 31 (vcpu#0) crashed on cpu#35: > (XEN) ----[ Xen-4.5.0 x86_64 debug=n Not tainted ]---- > (XEN) CPU: 35 > (XEN) RIP: e033:[<ffffffff81041b64>] > (XEN) RFLAGS: 0000000000000246 EM: 1 CONTEXT: pv guest > (XEN) rax: 0000000000000000 rbx: ffffffff81c03e64 rcx: 0000000012345678 > (XEN) rdx: ffffffff81c03de8 rsi: ffffffff81c03dec rdi: 0000000012345278 > (XEN) rbp: ffffffff81c03e48 rsp: ffffffff81c03dd0 r8: 7420676e69797274 > (XEN) r9: 6873617263206f74 r10: 0000000000000000 r11: 0000000000000000 > (XEN) r12: 0000000012345678 r13: ffffffff81c03f00 r14: 0000000000000000 > (XEN) r15: 0000000000000000 cr0: 000000008005003b cr4: 00000000001526f0 > (XEN) cr3: 00000014e8c97000 cr2: 0000000000000000 > (XEN) ds: 0000 es: 0000 fs: 0000 gs: 0000 ss: e02b cs: e033 > (XEN) Guest stack trace from rsp=ffffffff81c03dd0: > (XEN) 0000000012345678 0000000000000000 0000000000000000 ffffffff81041b64 > (XEN) 000000010000e030 0000000000010046 ffffffff81c03e18 000000000000e02b > (XEN) ffffffff81041b5d ffffffff81c03e48 0000000000811809 0000000000000000 > (XEN) 00000000000001a0 0000000001000000 ffffffff82009000 ffffffff81c03e68 > (XEN) ffffffff81d211ea 0000000000000000 0000000000000000 ffffffff81c03ed8 > (XEN) ffffffff81d1be59 ffffffff81c03ed8 ffffffff811892ab 0000000000000010 > (XEN) ffffffff81c03ee8 ffffffff81c03ea8 697a696c61697469 ffffffff81f15442 > (XEN) ffffffffffffffff ffffffff81db3900 0000000000000000 0000000000000000 > (XEN) 0000000000000000 ffffffff81c03f28 ffffffff81d10f0a 0000000000000000 > (XEN) 0000000000000000 0000000000000000 0000000000000000 0000000000000000 > (XEN) 0000000000000000 0000000000000000 0000000000000000 ffffffff81c03f38 > (XEN) ffffffff81d10603 ffffffff81c03ff8 ffffffff81d15f5c 0000000000000000 > (XEN) 0000000000000000 0000000000000000 0000000000000000 0000000000000000 > (XEN) 0000000000000000 0000000000000000 0000000000000000 0000000000000000 > (XEN) 0000000000000000 0000000000000000 0000000000000000 0000000000000000 > (XEN) 0000000000000000 0000000000000000 0000000000000000 0000000000000000 > (XEN) 0000000000000000 ffd83a031f898b75 0000000022400800 0000000000000001 > (XEN) 0000000000000000 0000000000000000 00010102464c457f 0000000000000000 > (XEN) 00000001003e0003 0000000000000940 0000000000000040 00000000000012a0 > (XEN) 0038004000000000 0011001200400004 0000000500000001 0000000000000000 > [root@ovs107 ~]# > > (gdb) x/20i 0xffffffff81041b64 > 0xffffffff81041b64: rdmsr > Exactly. I think that Xen is missing code to wire up early_fixup_exception. --Andy _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |