From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932080AbcANSoL (ORCPT ); Thu, 14 Jan 2016 13:44:11 -0500 Received: from mx2.suse.de ([195.135.220.15]:45895 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752326AbcANSoI (ORCPT ); Thu, 14 Jan 2016 13:44:08 -0500 Date: Thu, 14 Jan 2016 19:43:50 +0100 From: Borislav Petkov To: Michal Marek Cc: =?utf-8?B?TcOlbnMgUnVsbGfDpXJk?= , Markus Trippelsdorf , Thomas Voegtle , linux-kernel@vger.kernel.org, x86-ml Subject: [RFC PATCH] x86/kconfig: Sanity-check config file during oldconfig Message-ID: <20160114184350.GB12109@pd.tnic> References: <20160108121601.GC320@x4> <20160108122719.GG14673@pd.tnic> <568FB028.1030706@suse.cz> <20160108133725.GH14673@pd.tnic> <568FCC45.1010301@suse.cz> <20160111194311.GF4686@pd.tnic> <20160111205945.GH4686@pd.tnic> <20160111211712.GI4686@pd.tnic> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20160111211712.GI4686@pd.tnic> User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Borislav Petkov Thomas Voegtle reported that doing oldconfig with a .config which has CONFIG_MICROCODE enabled but BLK_DEV_INITRD disabled prevents the microcode loading mechanism from being built. Add a short script which hooks into the "make oldconfig" handling and sanity-checks the config file for that discrepancy. It issues a message which should hopefully sensitize the user to that issue and point her into the right direction. The other useful thing with this solution is that it can be extended to other config file sanity-checking, should the need arise. Reported-by: Thomas Voegtle Cc: Markus Trippelsdorf Cc: Måns Rullgård Signed-off-by: Borislav Petkov --- arch/x86/scripts/check-configs.sh | 44 +++++++++++++++++++++++++++++++++++++++ scripts/kconfig/Makefile | 3 +++ 2 files changed, 47 insertions(+) create mode 100644 arch/x86/scripts/check-configs.sh diff --git a/arch/x86/scripts/check-configs.sh b/arch/x86/scripts/check-configs.sh new file mode 100644 index 000000000000..775d07e37df5 --- /dev/null +++ b/arch/x86/scripts/check-configs.sh @@ -0,0 +1,44 @@ +#!/bin/bash + +if [ "$1" != "oldconfig" ]; then + exit 0 +fi + +srctree=$2 +ARCH="$3" +UNAME_RELEASE=$(uname -r) + +CONFIGS=".config /lib/modules/$UNAME_RELEASE/.config /etc/kernel-config /boot/config-$UNAME_RELEASE" + +if [ "$ARCH" = "X86_32" ]; then + CONFIGS="$CONFIGS $srctree/arch/x86/configs/i386_defconfig" +else + CONFIGS="$CONFIGS $srctree/arch/x86/configs/x86_64_defconfig" +fi + +for c in $CONFIGS; +do + if [ -e $c ]; then + OLD_CONFIG=$c + break + fi +done + +if [ -z "$OLD_CONFIG" ]; then exit 0; fi + +# Check optimal microcode loader .config settings +if ! grep -v "^#" $OLD_CONFIG | grep -q MICROCODE; then + exit 0 +fi + +MSG="\nYou have CONFIG_MICROCODE enabled without BLK_DEV_INITRD. The preferred\n\ +way is to enable it and make sure microcode is added to your initrd as\n\ +explained in Documentation/x86/early-microcode.txt. This is also the\n\ +most tested method as the majority of distros do it. Alternatively, and\n\ +if you don't want to enable modules, you should make sure the microcode\n\ +is built into the kernel.\n" + +if ! grep -v "^#" $OLD_CONFIG | grep -q BLK_DEV_INITRD; then + echo -e $MSG + read -p "Press any key... " +fi diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile index d79cba4ce3eb..136ae9744efc 100644 --- a/scripts/kconfig/Makefile +++ b/scripts/kconfig/Makefile @@ -81,6 +81,9 @@ simple-targets := oldconfig allnoconfig allyesconfig allmodconfig \ PHONY += $(simple-targets) $(simple-targets): $(obj)/conf +ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/scripts/check-configs.sh),) + $(Q)$(CONFIG_SHELL) $(srctree)/arch/$(SRCARCH)/scripts/check-configs.sh $@ $(srctree) $(ARCH) +endif $< $(silent) --$@ $(Kconfig) PHONY += oldnoconfig savedefconfig defconfig -- 2.3.5 SUSE Linux GmbH, GF: Felix Imendörffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nürnberg) --