Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752115AbbDZPbT (ORCPT ); Sun, 26 Apr 2015 11:31:19 -0400 Received: from lb3-smtp-cloud3.xs4all.net ([194.109.24.30]:56935 "EHLO lb3-smtp-cloud3.xs4all.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752028AbbDZPbR (ORCPT ); Sun, 26 Apr 2015 11:31:17 -0400 Message-ID: <1430062273.2927.121.camel@x220> Subject: Re: [PATCH] x86/microcode: Allow early loading without initrd From: Paul Bolle To: Alexander Hirsch <1zeeky@gmail.com> Cc: linux-kernel@vger.kernel.org, x86@kernel.org Date: Sun, 26 Apr 2015 17:31:13 +0200 In-Reply-To: <20150426170314.210e921c@netblarch.fritz.box> References: <20150426170314.210e921c@netblarch.fritz.box> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.10.4 (3.10.4-4.fc20) Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2652 Lines: 95 On Sun, 2015-04-26 at 17:03 +0200, Alexander Hirsch wrote: > --- a/arch/x86/Kconfig > +++ b/arch/x86/Kconfig > config MICROCODE_EARLY > bool "Early load microcode" > - depends on MICROCODE=y && BLK_DEV_INITRD > + depends on MICROCODE=y > select MICROCODE_INTEL_EARLY if MICROCODE_INTEL > select MICROCODE_AMD_EARLY if MICROCODE_AMD > default y > --- a/arch/x86/kernel/cpu/microcode/intel_early.c > +++ b/arch/x86/kernel/cpu/microcode/intel_early.c > @@ -691,6 +691,9 @@ int __init save_microcode_in_initrd_intel(void) > unsigned int count = mc_saved_data.mc_saved_count; > struct microcode_intel *mc_saved[MAX_UCODE_COUNT]; > int ret = 0; > +#ifndef BLK_DEV_INITRD #ifndef CONFIG_BLK_DEV_INITRD? > + unsigned long initrd_start = 0; > +#endif > > if (count == 0) > return ret; > @@ -728,24 +731,32 @@ _load_ucode_intel_bsp(struct mc_saved_data *mc_saved_data, > > void __init load_ucode_intel_bsp(void) > { > - u64 start, size; > + u64 start = 0, size = 0; > + struct mc_saved_data *mc_saved_data_p; > + unsigned long *mc_saved_in_initrd_p; > +#ifdef BLK_DEV_INITRD Likewise. > #ifdef CONFIG_X86_32 > struct boot_params *p; > > p = (struct boot_params *)__pa_nodebug(&boot_params); > start = p->hdr.ramdisk_image; > size = p->hdr.ramdisk_size; > - > - _load_ucode_intel_bsp( > - (struct mc_saved_data *)__pa_nodebug(&mc_saved_data), > - (unsigned long *)__pa_nodebug(&mc_saved_in_initrd), > - start, size); > #else > start = boot_params.hdr.ramdisk_image + PAGE_OFFSET; > size = boot_params.hdr.ramdisk_size; > - > - _load_ucode_intel_bsp(&mc_saved_data, mc_saved_in_initrd, start, size); > #endif > +#endif > + > +#ifdef CONFIG_X86_32 > + mc_saved_in_initrd_p = > + (unsigned long *)__pa_nodebug(mc_saved_in_initrd); > + mc_saved_data_p = (struct mc_saved_data *)__pa_nodebug(&mc_saved_data); > +#else > + mc_saved_data_p = &mc_saved_data; > + mc_saved_in_initrd_p = mc_saved_in_initrd; > +#endif > + > + _load_ucode_intel_bsp(mc_saved_data_p, mc_saved_in_initrd_p, start, size); > } > > void load_ucode_intel_ap(void) > @@ -755,6 +766,9 @@ void load_ucode_intel_ap(void) > unsigned long *mc_saved_in_initrd_p; > unsigned long initrd_start_addr; > enum ucode_state ret; > +#ifndef BLK_DEV_INITRD Likewise. > + unsigned long initrd_start = 0; > +#endif > #ifdef CONFIG_X86_32 > unsigned long *initrd_start_p; > Thanks, Paul Bolle -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/