[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] xen crash with 4.17 kernel on Fedora
On 01/07/18 23:26, Michael Young wrote: > On Sun, 1 Jul 2018, M A Young wrote: > >> I get (with kernel-4.17.3-200.fc28.x86_64 which is a bit easier) >> >> rip: ffffffff81062330 native_irq_disable >> flags: 00000246 i z p >> rsp: ffffffff82203d90 >> rax: 0000000000000246 rcx: 0000000000000000 rdx: 0000000000000000 >> rbx: 00000000ffffffff rsi: 00000000ffffffff rdi: 0000000000000000 >> rbp: 0000000000000000 r8: ffffffff820bb698 r9: ffffffff82203e38 >> r10: 0000000000000000 r11: 0000000000000000 r12: 0000000000000000 >> r13: ffffffff820bb698 r14: ffffffff82203e38 r15: 0000000000000000 >> cs: e033 ss: e02b ds: 0000 es: 0000 >> fs: 0000 @ 0000000000000000 >> gs: 0000 @ ffffffff82731000/0000000000000000 __init_begin/ >> Code (instr addr ffffffff81062330) >> 00 00 00 00 00 57 9d c3 0f 1f 00 66 2e 0f 1f 84 00 00 00 00 00 <fa> c3 0f >> 1f 40 00 66 2e 0f 1f 84 >> >> >> Stack: >> 0000000000000000 0000000000000000 0000000000000000 ffffffff81062330 >> 000000010000e030 0000000000010046 ffffffff82203dd8 000000000000e02b >> 0000000000000246 ffffffff8110dff9 0000000000000000 0000000000000246 >> 0000000000000000 0000000000000000 ffffffff820a6cd0 ffffffff82203e88 >> ffffffff82739000 8000000000000061 0000000000000000 0000000000000000 >> >> Call Trace: >> [<ffffffff81062330>] native_irq_disable <-- >> ffffffff82203da8: [<ffffffff81062330>] native_irq_disable >> ffffffff82203dd8: [<ffffffff8110dff9>] vprintk_emit+0xe9 >> ffffffff82203e30: [<ffffffff8110ec96>] printk+0x58 >> ffffffff82203e90: [<ffffffff810ac970>] __warn_printk+0x46 >> ffffffff82203ef8: [<ffffffff8275db62>] xen_load_gdt_boot+0x108 >> ffffffff82203f28: [<ffffffff81037c70>] load_direct_gdt+0x30 >> ffffffff82203f40: [<ffffffff81037f08>] switch_to_new_gdt+0x8 >> ffffffff82203f48: [<ffffffff8102aae0>] x86_init_noop >> ffffffff82203f50: [<ffffffff8275dc8c>] xen_start_kernel+0xed > > I think the crash is triggered by the code > > static inline pgprotval_t check_pgprot(pgprot_t pgprot) > { > pgprotval_t massaged_val = massage_pgprot(pgprot); > > /* mmdebug.h can not be included here because of dependencies */ > #ifdef CONFIG_DEBUG_VM > WARN_ONCE(pgprot_val(pgprot) != massaged_val, > "attempted to set unsupported pgprot: %016llx " > "bits: %016llx supported: %016llx\n", > (u64)pgprot_val(pgprot), > (u64)pgprot_val(pgprot) ^ massaged_val, > (u64)__supported_pte_mask); > #endif > > return massaged_val; > } > > static inline pte_t pfn_pte(unsigned long page_nr, pgprot_t pgprot) > { > return __pte(((phys_addr_t)page_nr << PAGE_SHIFT) | > check_pgprot(pgprot)); > } > > in arch/x86/include/asm/pgtable.h which is inlined into > xen_load_gdt_boot by via pfn_pte > > In 4.16 the equivalent code was > > static inline pte_t pfn_pte(unsigned long page_nr, pgprot_t pgprot) > { > return __pte(((phys_addr_t)page_nr << PAGE_SHIFT) | > massage_pgprot(pgprot)); > } There are two problems here: 1. pv_irq_ops hasn't been setup early enough, so the printk() will use native_irq_disable() instead of the Xen variant. 2. For PV domains the default kernel pte should not include the global bit. Repairing this issue will avoid the WARN_ONCE() above. I'll send two patches soon to fix the issues. Juergen _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |