From patchwork Thu Sep 8 10:43:31 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lukas Bulwahn X-Patchwork-Id: 12969917 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2E277C38145 for ; Thu, 8 Sep 2022 10:43:48 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 580186B0072; Thu, 8 Sep 2022 06:43:47 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 556938D0002; Thu, 8 Sep 2022 06:43:47 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 444EB6B0074; Thu, 8 Sep 2022 06:43:47 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 313F56B0072 for ; Thu, 8 Sep 2022 06:43:47 -0400 (EDT) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id EFC20AC617 for ; Thu, 8 Sep 2022 10:43:46 +0000 (UTC) X-FDA: 79888582452.12.523E4AD Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.51]) by imf06.hostedemail.com (Postfix) with ESMTP id 95533180074 for ; Thu, 8 Sep 2022 10:43:46 +0000 (UTC) Received: by mail-wm1-f51.google.com with SMTP id d5so10568149wms.5 for ; Thu, 08 Sep 2022 03:43:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=message-id:date:subject:cc:to:from:from:to:cc:subject:date; bh=s67Ye6wDoYkB1kk6bJRzdsh3rRxMa1cRr67bsMc2dUs=; b=AVHpqF5L9S9Rg0dyawFMEMFDJ56WV8tWYx6jWwYeBL2YhGXfPVSBw/OtNPAkx6x0Oj 9YUBJa8EDIZjghd0wW6YLFFqw9PXO8POL03OQbAvXuLqEHlmxSErMVsjUqIiEnjdBbXy jBgJwVve/L3EOWGQ1bO6vO2ciPuLMNXYb+egeD9Inwqdn6Z/7W68eMr1kjy/qL97f09Q sesgqE7e/UrH1D7jsk6mtUoLH+IDn5hKV2uV+nsCrCyUrvzUkMfphRTpyo4GlPt7YAuf lHKAQkxEDDaXaixZDmsrmSr5gy7REIwLzko/mUn8+sugSJziaGNKsDPdZo3Z6J2kcNnY 5q9A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date; bh=s67Ye6wDoYkB1kk6bJRzdsh3rRxMa1cRr67bsMc2dUs=; b=ZO7HNylH8qbpICwhqaqdRaEg7zYjb1fJLCPiF/5A/XosTF/LTNTgDxxSsnRvwB2XaQ eWV+XsutaudHmhayxtCZWoL94W9yWXFRruQXaKlQMm6306pwb291KPLrJSJ+APNoVI66 flOfQCBmpgctBg6GjSv+dnL4NoJGnFU9/bgLDOZ5FKqLW1zlgW4z8BCD2ApKePZy8zFd yesRDDAW8dXAwnvUaLxtfo4POEi61FUVsOA5s7m8qJ//5ZyQyvrVvc24GKdMYeCTz+uA 9ecFX+D3f0ztD/3Ti8D2uF6MKMudBMPUaBT3U0A0IViWmOHv1fZ4aEXZbg4B2UxEr4D9 IpTw== X-Gm-Message-State: ACgBeo3Aw2Lo27hwK5svLaQfjMokUsDOm67cljuL91rAIby+YXnHsSJ7 6cumM/ebhwLLMrqegKPpyKo= X-Google-Smtp-Source: AA6agR66kMztJ719W/lSRghqI54eoFp7/i7XmP4c9ZKnwWZ3SgVLwjTcfclP30ct9oVGD3Q6aPtKDA== X-Received: by 2002:a05:600c:4e45:b0:3a5:f383:b917 with SMTP id e5-20020a05600c4e4500b003a5f383b917mr1780608wmq.61.1662633824976; Thu, 08 Sep 2022 03:43:44 -0700 (PDT) Received: from felia.fritz.box (200116b826f77600d0640cc051af4288.dip.versatel-1u1.de. [2001:16b8:26f7:7600:d064:cc0:51af:4288]) by smtp.gmail.com with ESMTPSA id bu3-20020a056000078300b0022863395912sm17227486wrb.53.2022.09.08.03.43.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 08 Sep 2022 03:43:44 -0700 (PDT) From: Lukas Bulwahn To: Russell King , linux-arm-kernel@lists.infradead.org, Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, Mauro Carvalho Chehab , linux-media@vger.kernel.org, Peter Chen , Greg Kroah-Hartman , linux-usb@vger.kernel.org, Andrew Morton , Mike Rapoport , linux-mm@kvack.org, Masahiro Yamada , linux-kbuild@vger.kernel.org Cc: kernel-janitors@vger.kernel.org, linux-kernel@vger.kernel.org, Lukas Bulwahn Subject: [PATCH 0/6] Remove CONFIG_EMBEDDED Date: Thu, 8 Sep 2022 12:43:31 +0200 Message-Id: <20220908104337.11940-1-lukas.bulwahn@gmail.com> X-Mailer: git-send-email 2.17.1 ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1662633826; a=rsa-sha256; cv=none; b=oTa2JuMMWBiHNqK+YTdGoUI5CEWFWi9bGJ4m3TrBmyFhnJs9bnfrR97rQO9QlizAlHUwMx P8wh3Su2DjaMLszEANB1P2IYblrPI1q7C6mgl4LPt79+oV8/58u5h8feNv4LPIVeZERVvM GCIvLOZvpPRrpzCLVr4hyZL6FuZI9mg= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=AVHpqF5L; spf=pass (imf06.hostedemail.com: domain of lukas.bulwahn@gmail.com designates 209.85.128.51 as permitted sender) smtp.mailfrom=lukas.bulwahn@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1662633826; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:references:dkim-signature; bh=s67Ye6wDoYkB1kk6bJRzdsh3rRxMa1cRr67bsMc2dUs=; b=fov+vpo80+YQJIDtlEzTixYlroU2Gdn4jJNpFMRShYzekYg/JQe63fRbimJscB4g0zD7hy fHEnEo40GyBaqQmYZOnESd5vGV1nzFLarK86fL76U5p+tmutknsKXFDLTW5dt5Y7TVzvB7 RdSuGNMBXgU572TaySUqeEOrJX/o72o= X-Stat-Signature: ao9jc979rihyzz75n7tximzqth6h5go3 X-Rspam-User: X-Rspamd-Queue-Id: 95533180074 X-Rspamd-Server: rspam07 Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=AVHpqF5L; spf=pass (imf06.hostedemail.com: domain of lukas.bulwahn@gmail.com designates 209.85.128.51 as permitted sender) smtp.mailfrom=lukas.bulwahn@gmail.com; dmarc=pass (policy=none) header.from=gmail.com X-HE-Tag: 1662633826-743499 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: Dear all, While attempting to configure the kernel build, I encountered the option CONFIG_EMBEDDED and I wondered what this option was all about: config EMBEDDED bool "Embedded system" select EXPERT help This option should be enabled if compiling the kernel for an embedded system so certain expert options are available for configuration. In the end, I hopefully understood its history, evolution and all the consequences, but I concluded that there is no point for anyone else in the future to try to untangle the riddle behind this option, as I did in the last few hours. It is much easier to just remove this whole riddle from the kernel build configuration. The story all starts with commit 6a108a14fa35 ("kconfig: rename CONFIG_EMBEDDED to CONFIG_EXPERT"). Commit 6a108a14fa35 ("kconfig: rename CONFIG_EMBEDDED to CONFIG_EXPERT") introduces CONFIG_EXPERT to carry the previous intent of CONFIG_EMBEDDED and just gives that intent a much better name. That has been clearly a good and long overdue renaming, and it is clearly an improvement to the kernel build configuration that has shown to help managing the kernel build configuration in the last decade. However, rather than bravely and radically just deleting CONFIG_EMBEDDED, this commit gives CONFIG_EMBEDDED a new intended semantics, but keeps it open for future contributors to implement that intended semantics: A new CONFIG_EMBEDDED option is added that automatically selects CONFIG_EXPERT when enabled and can be used in the future to isolate options that should only be considered for embedded systems (RISC architectures, SLOB, etc). Since then, this CONFIG_EMBEDDED implicitly had two purposes: - It can make even more options visible beyond what CONFIG_EXPERT makes visible. In other words, it may introduce another level of enabling the visibility of configuration options: always visible, visible with CONFIG_EXPERT and visible with CONFIG_EMBEDDED. - Set certain default values of some configurations differently, following the assumption that configuring a kernel build for an embedded system generally starts with a different set of default values compared to kernel builds for all other kind of systems. Considering the first purpose, at the point in time where CONFIG_EMBEDDED was renamed to CONFIG_EXPERT, CONFIG_EXPERT already made 130 more options become visible throughout all different menus for the kernel configuration. Over the last decade, this has gradually increased, so that currently, with CONFIG_EXPERT, roughly 170 more options become visible throughout all different menus for the kernel configuration. In comparison, currently with CONFIG_EMBEDDED enabled, just seven more options are visible, one in x86, one in arm, and five for the ChipIdea Highspeed Dual Role Controller. As the numbers suggest, these two levels of enabling the visibility of even more configuration options---beyond what CONFIG_EXPERT enables---never evolved to a good solution in the last decade. In other words, this additional level of visibility of configuration option with CONFIG_EMBEDDED compared to CONFIG_EXPERT has since its introduction never become really valuable. It requires quite some investigation to actually understand what is additionally visible and it does not differ significantly in complexity compared to just enabling CONFIG_EXPERT. This CONFIG_EMBEDDED---or any other config to show more detailed options beyond CONFIG_EXPERT---is unlikely to be valuable unless somebody puts significant effort in identifying how such visibility options can be properly split and creating clear criteria, when some config option is visible with CONFIG_EXPERT and when some config option is visible only with some further option enabled beyond CONFIG_EXPERT, such as CONFIG_EMBEDDED attempted to do. For now, it is much more reasonable to simply make those additional seven options that visible with CONFIG_EMBEDDED, visible with CONFIG_EXPERT, and then remove CONFIG_EMBEDDED. If anyone spends significant effort in structuring the visibility of config options, they may re-introduce suitable new config options simply as they see fit. Considering the second purpose, note that already probably arguing that a kernel build for an embedded system would choose some values differently is already tricky: the set of embedded systems with Linux kernels is already quite diverse. Many embedded system have powerful CPUs and it would not be clear that all embedded systems just optimize towards one specific aspect, e.g., a smaller kernel image size. So, it is unclear if starting with "one set of default configuration" that is induced by CONFIG_EMBEDDED is a good offer for developers configuring their kernels. Also, the differences of needed user-space features in an embedded system compared to a non-embedded system are probably difficult or even impossible to name in some generic way. So it is not surprising that in the last decade hardly anyone has contributed changes to make something default differently in case of CONFIG_EMBEDDED=y. Currently, in v6.0-rc4, SECRETMEM is the only config switched off if CONFIG_EMBEDDED=y. As long as that is actually the only option that currently is selected or deselected, it is better to just make SECRETMEM configurable at build time by experts using menuconfig instead. In summary, in the last decade, CONFIG_EMBEDDED never lived up to its intended purpose defined above. Let us delete this config and live happily ever after. It is needless to say that the kernel build configuration is still highly complex, removing one needless bit of complexity might not make a big difference, but let us get one bit of complexity out of the way for good. Patches 1 to 4 make the additional config options, that are visible with CONFIG_EMBEDDED, visible with CONFIG_EXPERT instead. Patch 5 makes secretmem configurable and visible with CONFIG_EXPERT. Patch 6 finally removes the CONFIG_EMBEDDED, as it not used anymore throughout the tree. I am happy to get some feedback on this patch series. For these minor changes in a few subsystems, I would hope that: Patch "arm: make config ARM_PATCH_PHYS_VIRT visible with EXPERT" is picked by arm architecture maintainer Russell King. Patch "x86: make config X86_FEATURE_NAMES visible with EXPERT" is picked by x86 architecture maintainers. Patch "media: remove reference to CONFIG_EMBEDDED in MEDIA_SUPPORT_FILTER" is picked by media maintainer Mauro Carvalho Chehab. Patch "usb: chipidea: make configs for glue drivers visible with EXPERT" is picked by Peter Chen or usb maintainer Greg Kroah-Hartman. Patch "mm: Kconfig: make config SECRETMEM visible with EXPERT" is acked by Mike Rapoport, and is picked by mm maintainer Andrew Morton. Once all of these patches above have been merged to mainline: Patch "init/Kconfig: remove confusing config EMBEDDED" can probably just be picked by the kbuild maintainer Masahiro Best regards, Lukas Lukas Bulwahn (6): arm: make config ARM_PATCH_PHYS_VIRT visible with EXPERT x86: make config X86_FEATURE_NAMES visible with EXPERT media: remove reference to CONFIG_EMBEDDED in MEDIA_SUPPORT_FILTER usb: chipidea: make configs for glue drivers visible with EXPERT mm: Kconfig: make config SECRETMEM visible with EXPERT init/Kconfig: remove confusing config EMBEDDED arch/arm/Kconfig | 2 +- arch/x86/Kconfig | 2 +- drivers/media/Kconfig | 2 +- drivers/usb/chipidea/Kconfig | 10 +++++----- init/Kconfig | 8 -------- mm/Kconfig | 8 +++++++- 6 files changed, 15 insertions(+), 17 deletions(-) Acked-by: Arnd Bergmann