Received: by 10.223.185.116 with SMTP id b49csp2258968wrg; Mon, 12 Feb 2018 07:00:28 -0800 (PST) X-Google-Smtp-Source: AH8x225GPsd2luw8ua96ioAUzqSk5kYTt4yt2yVa7KUfnHnbNZFqRa7kH4r9oeKrCrp9eVjX6RrJ X-Received: by 2002:a17:902:7d96:: with SMTP id a22-v6mr11092443plm.296.1518447628146; Mon, 12 Feb 2018 07:00:28 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1518447628; cv=none; d=google.com; s=arc-20160816; b=pUESaQZ82HbNqWDbbf8s/x2W1hMhS57BBJ38lcbaT8Er9ROqqvkmHY4asZwvnfYI0w Y8iihpniuRyuS2YhefuIFN61axbxaQ8KqdtOqAOohiptxT31GZf+JOptapTIIkQ851kf +qOfJnzMbAfZ591hA2Q2oGfBCqxznqefNINVgPJcQ2/cVcCAEL3S9hUEuupwiyE+5oJN bDp4eHRJMP0WW5AJL34reE9N9XwAr5yuLgHeJx38DB8w18tvc1zH1RtITZDGssCPkjcW p2PPocI/iND9pCD1zRNHnn4OsgqkoAoTs96rQbbJQs5hnl9S0TvOE0ThfxqHxlpcKn32 dvBA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :references:in-reply-to:mime-version:dkim-signature:dkim-filter :arc-authentication-results; bh=k7HQEaJUj5ks7QWb56NWXsPaT9s7ADkAZxl9eSQdl8E=; b=dsCf5aJRmganHDDPFDo14m2L6EAHATgXLR9EELieTR1sg4Tm9b9J3em4SlkVSbD6+/ TwX5lO5j5y8zjU3PHw7awSbATdf4Z3U/2I/Kp8zDfVYbmgOO3rkZGmdOvRRljE5xIbHl f+4kftnyrIGjqCkw4K4VvUfK742Gh3IVaZ8dCYSvUumZWly+2HaFSIEu+pnd1eiz0oUK fz0zvE41vHQ7EvAQDuFtsahYpa0QiaddAXgbKLzUTUDrcVN2ZBIOCsDvPxHTk1g0dJ4D um3QRVkKWZxt2n7toHmDxU21T1sxEn2tseSNu9eWTrdD4KsaaI+06TL8NpHHeV6fb039 qCJQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@nifty.com header.s=dec2015msa header.b=z/UkFnHY; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id bj8-v6si587414plb.238.2018.02.12.07.00.11; Mon, 12 Feb 2018 07:00:28 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@nifty.com header.s=dec2015msa header.b=z/UkFnHY; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S964784AbeBLOW0 (ORCPT + 99 others); Mon, 12 Feb 2018 09:22:26 -0500 Received: from conssluserg-02.nifty.com ([210.131.2.81]:56921 "EHLO conssluserg-02.nifty.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933315AbeBLOWX (ORCPT ); Mon, 12 Feb 2018 09:22:23 -0500 Received: from mail-ua0-f179.google.com (mail-ua0-f179.google.com [209.85.217.179]) (authenticated) by conssluserg-02.nifty.com with ESMTP id w1CEM10n030072; Mon, 12 Feb 2018 23:22:02 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conssluserg-02.nifty.com w1CEM10n030072 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1518445322; bh=k7HQEaJUj5ks7QWb56NWXsPaT9s7ADkAZxl9eSQdl8E=; h=In-Reply-To:References:From:Date:Subject:To:Cc:From; b=z/UkFnHY6ryFsBJAgw4aqsaxfjYIHYQZKL+7wIL2+Jh8qUhqhdL4a0Jl/zZMGqveo lJ58vRDp1lmrKvzUoZc0rk09KNpPs5AdWrMEpF6c3h2yM4r9dyrb2CyCDIhLWxKPEQ k1iBAdng561oQ4MrSNp131lvnay9jXsShZEKpkbvoVdaOjsI9Pxql4QDgSqtYYkWxy IOz6dDIr8yAjeNrK6ut3XbqWRgxwDLt5dV6Bs8SSWU74FMuF2zMmwTI3SenhYi5wTa ERNcWp4bYEuh8yK0D6mdUVSDNcmqizNpyyglAHNc/ZHKA4pKJAb1B6eEynLG2u6JuE uuNo+tBcpGg5g== X-Nifty-SrcIP: [209.85.217.179] Received: by mail-ua0-f179.google.com with SMTP id q8so9520533uae.4; Mon, 12 Feb 2018 06:22:01 -0800 (PST) X-Gm-Message-State: APf1xPDfSdXBB5MNfcJWuL8dCn0nVVaIrhBkCrABjH/ARY3n+xTySG/e AiH2jLfQ690UgXM4Z9JQKezndcEGoFMcrfJZTnE= X-Received: by 10.176.83.76 with SMTP id y12mr12507789uay.109.1518445320774; Mon, 12 Feb 2018 06:22:00 -0800 (PST) MIME-Version: 1.0 Received: by 10.176.83.212 with HTTP; Mon, 12 Feb 2018 06:21:20 -0800 (PST) In-Reply-To: <20180212125458.vb4ve3ieejvuvo65@huvuddator> References: <20180210085519.737ckf4bcl57h4g2@huvuddator> <20180211103432.pf2ot6nd7nbhdhsy@huvuddator> <20180212125458.vb4ve3ieejvuvo65@huvuddator> From: Masahiro Yamada Date: Mon, 12 Feb 2018 23:21:20 +0900 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [RFC PATCH 4/7] kconfig: support new special property shell= To: Ulf Magnusson Cc: Kees Cook , Linus Torvalds , Linux Kbuild mailing list , Greg Kroah-Hartman , Andrew Morton , Nicolas Pitre , "Luis R . Rodriguez" , Randy Dunlap , Sam Ravnborg , Michal Marek , Martin Schwidefsky , Pavel Machek , linux-s390 , Jiri Kosina , Linux Kernel Mailing List , Tejun Heo , Ingo Molnar , "Van De Ven, Arjan" , Arnd Bergmann Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 2018-02-12 21:54 GMT+09:00 Ulf Magnusson : > On Sun, Feb 11, 2018 at 09:42:09PM +0100, Ulf Magnusson wrote: >> On Sun, Feb 11, 2018 at 9:29 PM, Ulf Magnusson wrote: >> > On Sun, Feb 11, 2018 at 6:56 PM, Kees Cook wrote: >> >> Another case I mentioned before that I just want to make sure we don't >> >> reintroduce the problem of getting "stuck" with a bad .config file. >> >> While adding _STRONG support, I discovered the two-phase Kconfig >> >> resolution that happens during the build. If you selected _STRONG with >> >> a strong-capable compiler, everything was fine. If you then tried to >> >> build with an older compiler, you'd get stuck since _STRONG wasn't >> >> support (as detected during the first Kconfig phase) so the >> >> generated/autoconf.h would never get updated with the newly selected >> >> _REGULAR). I moved the Makefile analysis of available stack-protector >> >> options into the second phase (i.e. after all the Kconfig runs), and >> >> that worked to both unstick such configs and provide a clear message >> >> early in the build about what wasn't available. >> >> >> >> If all this detection is getting moved up into Kconfig, I'm worried >> >> we'll end up in this state again. If the answer is "you have to delete >> >> autoconf.h if you change compilers", then that's fine, but it sure >> >> seems unfriendly. :) >> > >> > Did you mean include/config/auto.conf? That's the one that gets >> > included by the Makefiles. >> > >> > If the feature detection is moved into Kconfig, you should only need >> > to rerun the configuration (make menuconfig/oldconfig/olddefconfig) if >> > you change the compiler. That will update .config while taking the new >> > features into account, and then the second phase during 'make' will >> > update include/config/auto.conf from .config. >> > >> > That second Kconfig phase generates include/generated/autoconf.h and >> > include/config/. The include/config/ directory implements dependencies >> > between source files and Kconfig symbols by turning the symbols into >> > (empty) files. When building (during the "second phase"), Kconfig >> > compares .config with include/config/auto.conf to see what changed, >> > and signals the changes to 'make' by touch'ing the files corresponding >> > to the changed symbols. The idea is to avoid having to do a full >> > rebuild whenever the configuration is changed. >> > >> > Check out scripts/basic/fixdep.c as well if you want to understand how it works. >> > >> > Cheers, >> > Ulf >> >> By the way: >> >> That second phase is also a "normal" Kconfig run in the sense that it >> does all the usual dependency checking stuff. Even if .config doesn't >> respect dependencies, include/config/auto.conf will. So I think you >> might not even need to rerun the configuration (though .config will be >> out-of-date until you do). >> >> Cheers, >> Ulf > > Seems you'd have to rerun the configuration, because > include/config/auto.conf is only regenerated if it's older than .config. > > Here's the bit in the root Makefile that does it (KCONFIG_CONFIG is > .config). > > # If .config is newer than include/config/auto.conf, someone tinkered > # with it and forgot to run make oldconfig. > # if auto.conf.cmd is missing then we are probably in a cleaned tree so > # we execute the config step to be sure to catch updated Kconfig files > include/config/%.conf: $(KCONFIG_CONFIG) include/config/auto.conf.cmd > $(Q)$(MAKE) -f $(srctree)/Makefile silentoldconfig > > silentoldconfig is a terrible name. What it actually does is run that > "second phase" stuff. Right. This is a historical misnomer. My plan is, as already posted below, to rename 'silentoldconfig' to 'synconfig' https://lkml.org/lkml/2018/1/17/1359 > Pretty sure that comment lies by the way. 'make oldconfig' doesn't > update include/config/auto.conf. It's probably outdated. Good catch. > > I wonder if it would be simpler to just always run silentoldconfig when > building. It's not that slow on my system: > > $ export ARCH=x86 SRCARCH=x86 KERNELVERSION=`make kernelversion` > $ time scripts/kconfig/conf --silentoldconfig Kconfig > > real 0m0.167s > user 0m0.162s > sys 0m0.004s > > That'd both simplify the Makefiles, and make sure that the latest > features are always used if you do feature testing in Kconfig. > > I don't know how strongly people feel about a few tenths of a second > though. No. NACK. silentoldconfig touches include/generated/autoconf.h so, files that depend on it will be re-compiled, unnecessarily. silentoldconfig ( 'syncconfig' in a more proper name) should be run only when necessary. -- Best Regards Masahiro Yamada