From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752123AbdFLLw5 (ORCPT ); Mon, 12 Jun 2017 07:52:57 -0400 Received: from bombadil.infradead.org ([65.50.211.133]:39952 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751718AbdFLLwz (ORCPT ); Mon, 12 Jun 2017 07:52:55 -0400 Date: Mon, 12 Jun 2017 13:52:46 +0200 From: Peter Zijlstra To: Thomas Gleixner Cc: Linus Torvalds , Hans de Goede , Ingo Molnar , Linux Kernel Mailing List , the arch/x86 maintainers Subject: Re: 4.12 REGRESSION, 4.12 does not boot as VirtualBox guest Message-ID: <20170612115246.lbj23umwaycztvb6@hirez.programming.kicks-ass.net> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: NeoMutt/20170113 (1.7.2) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Jun 12, 2017 at 10:16:53AM +0200, Thomas Gleixner wrote: > On Sat, 10 Jun 2017, Linus Torvalds wrote: > > > On Fri, Jun 9, 2017 at 3:33 AM, Hans de Goede wrote: > > > > > > Sorry for escalating this right up to you, but this issue > > > does not seem to be getting any attention and I'm not sure > > > which subsys maintainer to poke about this. > > > > Looks like x86. Added people. > > > > > The problem is that the 4.12-rc# kernels fail to boot on > > > VirtualBox guests hosted on any machine with a Sky Lake > > > (and probably also a Kaby Lake) CPU, for details see: > > > > > > https://bugzilla.kernel.org/show_bug.cgi?id=195961 > > Looks like the WARN/BUG rework. Peter???? I wasn't aware we'd call WARN _that_ early. Does something like so make it work? --- arch/x86/include/asm/extable.h | 1 + arch/x86/kernel/traps.c | 2 +- arch/x86/mm/extable.c | 3 +++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/arch/x86/include/asm/extable.h b/arch/x86/include/asm/extable.h index b8ad261d11dc..c66d19e3c23e 100644 --- a/arch/x86/include/asm/extable.h +++ b/arch/x86/include/asm/extable.h @@ -29,6 +29,7 @@ struct pt_regs; } while (0) extern int fixup_exception(struct pt_regs *regs, int trapnr); +extern int fixup_bug(struct pt_regs *regs, int trapnr); extern bool ex_has_fault_handler(unsigned long ip); extern void early_fixup_exception(struct pt_regs *regs, int trapnr); diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c index 3995d3a777d4..bf54309b85da 100644 --- a/arch/x86/kernel/traps.c +++ b/arch/x86/kernel/traps.c @@ -182,7 +182,7 @@ int is_valid_bugaddr(unsigned long addr) return ud == INSN_UD0 || ud == INSN_UD2; } -static int fixup_bug(struct pt_regs *regs, int trapnr) +int fixup_bug(struct pt_regs *regs, int trapnr) { if (trapnr != X86_TRAP_UD) return 0; diff --git a/arch/x86/mm/extable.c b/arch/x86/mm/extable.c index 35ea061010a1..0ea8afcb929c 100644 --- a/arch/x86/mm/extable.c +++ b/arch/x86/mm/extable.c @@ -162,6 +162,9 @@ void __init early_fixup_exception(struct pt_regs *regs, int trapnr) if (fixup_exception(regs, trapnr)) return; + if (fixup_bug(regs, trapnr)) + return; + fail: early_printk("PANIC: early exception 0x%02x IP %lx:%lx error %lx cr2 0x%lx\n", (unsigned)trapnr, (unsigned long)regs->cs, regs->ip,