Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757195AbcLORZC (ORCPT ); Thu, 15 Dec 2016 12:25:02 -0500 Received: from mx2.suse.de ([195.135.220.15]:49132 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755245AbcLORY3 (ORCPT ); Thu, 15 Dec 2016 12:24:29 -0500 Subject: Re: Can't boot as Xen dom0 due to commit fe055896 To: Borislav Petkov References: <73a4d64b-b139-6579-a560-92311641d6c7@suse.com> <20161215164635.thm7ruio2ddnxszw@pd.tnic> Cc: Linux Kernel Mailing List , xen-devel , Boris Ostrovsky From: Juergen Gross Message-ID: <7d5500be-7bf6-4b6e-063d-6f5a8d031115@suse.com> Date: Thu, 15 Dec 2016 18:06:29 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 In-Reply-To: <20161215164635.thm7ruio2ddnxszw@pd.tnic> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1486 Lines: 49 On 15/12/16 17:46, Borislav Petkov wrote: > On Thu, Dec 15, 2016 at 05:12:04PM +0100, Juergen Gross wrote: >> with today's kernel the system isn't coming up when booted as Xen dom0: > > Remind me again pls, is dom0 even supposed to load microcode? Isn't the > hypervisor supposed to apply microcode? > >> Looking into the state of cpu 1 I find the following backtrace (created >> manually by looking up addresses from a stack dump retrieved from the >> hypervisor): >> >> find_cpio_data() >> find_microcode_in_initrd() >> __load_ucode_intel() >> load_ucode_intel_ap() >> cpu_init() >> cpu_bringup() >> cpu_bringup_and_idle() >> >> It seems as if load_ucode_intel_ap() is looping. You introduced a >> possibly endless loop in it with commit fe055896. > > Are you sure you mean: > > fe055896c040 ("x86/microcode: Merge the early microcode loader") > > because that commit is a year old. OMG. Sorry, somehow I managed to read the date of that patch wrong. > So from looking at the *current* code: > > if (apply_microcode_early(&uci, true)) { > > fails probably because MSR_IA32_UCODE_REV doesn't get read properly due > to virtualized MSRs, bla, yadda yadda... I'll check. BTW: Adding a retry count doesn't help. Just tried. > But before we debug this further, I'd like to make sure I'm debugging > the proper thing and not some situation again where xen wasn't even > supposed to run the microcode loader but it does it anyway... I guess this might be the case. Juergen