Re: rdmsr_safe in Linux PV (under Xen) gets an #GP:Re: [Fedora-xen] Running fedora xen on top of KVM?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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  

> 
> --Andy
--
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



[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux