From patchwork Sun Apr 21 12:08:23 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 13637323 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DC8F2134B1; Sun, 21 Apr 2024 12:08:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713701313; cv=none; b=g5JdBpeK0mFEDIrnfFQdioaMug8PtZaYPoEJCHAiQ7bXxKvx/+gcTEtjBkZgi/gF3xKYPqTWuWOoSsDy3VMiJt6hAgWkV/mvht7WksD9TgyfxY1+o8+Pu2YMACep4LV6xcETzAuPWNtk9+psiSr6/K+gE51UwuInR4iW+vURgIE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713701313; c=relaxed/simple; bh=5pdOG3fqB9EcBpM+IoDRFdTWt7Wc0FiNnfI3JC9igOQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=MGFj1/a5dKonQ3t9M0EzSm9OhoOkGZYUOKG0ImhRMNEuJy6QwEzNx/PskMOKIwmtJ7FItLdr5GoW2YJtFVMWNp8VFILfwaPqnWpXrKWfPKWQPCYIg2D7UakO8Y0Ld+sZQT4gW8sBPVyLDuKc/sL4dr12o6Lw6+d/xayTq9QdC8o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=b0oOt+64; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="b0oOt+64" Received: by smtp.kernel.org (Postfix) with ESMTPSA id B71B1C2BD10; Sun, 21 Apr 2024 12:08:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1713701312; bh=5pdOG3fqB9EcBpM+IoDRFdTWt7Wc0FiNnfI3JC9igOQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=b0oOt+64fb2EielyhtFl7k7aANFhZT378KUu8c1XVSK5Mov4yr839kX5d9FqslIsd x9eBjUJk3V+49FP0NhD6kPhKM++38UzTC/TAIF/AirT772K94vSoMx4wIFL8c/Og7m apJ2QvqWSoAnWlieG5qeh9a176nRqkuEkOMZLQOCBN1Y6jOiGRGwhxIc5nsGNTblRA C2txMO/CZ2R9WferZtJU7WF7dU6Jl7EzdvxrcedXiCuhRcERus7wpWMu9oMCi4Uryf +41fnv8rrHVz9YXAtzyKdy7skhpu3ij+5cXLBTpsqXh8pYcFMOl6nnRWO3f5f7hj1V F+ds5v29PyEnw== From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: linux-kernel@vger.kernel.org, Yoshinori Sato , Rich Felker , John Paul Adrian Glaubitz , linux-sh@vger.kernel.org, Masahiro Yamada Subject: [PATCH 1/2] sh: convert the last use of 'optional' property in Kconfig Date: Sun, 21 Apr 2024 21:08:23 +0900 Message-Id: <20240421120824.2713923-2-masahiroy@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20240421120824.2713923-1-masahiroy@kernel.org> References: <20240421120824.2713923-1-masahiroy@kernel.org> Precedence: bulk X-Mailing-List: linux-sh@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 The 'choice' statement is primarily used to exclusively select one option, but the 'optional' property allows all entries to be disabled. This feature is only used in arch/sh/Kconfig because the equivalent outcome can be achieved by inserting one more entry as a place-holder. This approach is commonly used, for example, LTO_NONE, DEBUG_INFO_NONE, INITRAMFS_COMPRESSION_NONE, etc. The 'optional' property support will be removed from Kconfig. This commit converts the last user. Note: The 'default CMDLINE_OVERWRITE' statement does not work as intended in combination with 'optional'. If neither CONFIG_CMDLINE_OVERWRITE nor CONFIG_CMD_EXTEND is specified in a defconfig file, both of them are disabled. This is a bug. To maintain the current behavior, I added CONFIG_CMD_NO_MODIFY=y to those defconfig files. Signed-off-by: Masahiro Yamada --- arch/sh/Kconfig | 6 +++++- arch/sh/configs/apsh4a3a_defconfig | 1 + arch/sh/configs/apsh4ad0a_defconfig | 1 + arch/sh/configs/edosk7705_defconfig | 1 + arch/sh/configs/hp6xx_defconfig | 1 + arch/sh/configs/landisk_defconfig | 1 + arch/sh/configs/magicpanelr2_defconfig | 1 + arch/sh/configs/rsk7264_defconfig | 1 + arch/sh/configs/rsk7269_defconfig | 1 + arch/sh/configs/se7619_defconfig | 1 + arch/sh/configs/se7705_defconfig | 1 + arch/sh/configs/se7722_defconfig | 1 + arch/sh/configs/se7750_defconfig | 1 + arch/sh/configs/secureedge5410_defconfig | 1 + arch/sh/configs/sh7710voipgw_defconfig | 1 + arch/sh/configs/sh7724_generic_defconfig | 1 + arch/sh/configs/sh7770_generic_defconfig | 1 + arch/sh/configs/sh7785lcr_32bit_defconfig | 1 + arch/sh/configs/sh7785lcr_defconfig | 1 + arch/sh/configs/urquell_defconfig | 1 + 20 files changed, 24 insertions(+), 1 deletion(-) diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig index 2ad3e29f0ebe..bebc801c9619 100644 --- a/arch/sh/Kconfig +++ b/arch/sh/Kconfig @@ -709,7 +709,6 @@ config ROMIMAGE_MMCIF choice prompt "Kernel command line" - optional default CMDLINE_OVERWRITE help Setting this option allows the kernel command line arguments @@ -727,6 +726,11 @@ config CMDLINE_EXTEND Given string will be concatenated with arguments passed in by a bootloader. +config CMDLINE_NO_MODIFY + bool "Do not modify bootloader kernel arguments" + help + Given string will be used as-is. + endchoice config CMDLINE diff --git a/arch/sh/configs/apsh4a3a_defconfig b/arch/sh/configs/apsh4a3a_defconfig index cc909f347877..25ba2e55c546 100644 --- a/arch/sh/configs/apsh4a3a_defconfig +++ b/arch/sh/configs/apsh4a3a_defconfig @@ -15,6 +15,7 @@ CONFIG_MEMORY_START=0x0C000000 CONFIG_FLATMEM_MANUAL=y CONFIG_SH_STORE_QUEUES=y CONFIG_SH_APSH4A3A=y +CONFIG_CMDLINE_NO_MODIFY=y CONFIG_HIGH_RES_TIMERS=y CONFIG_KEXEC=y CONFIG_PREEMPT=y diff --git a/arch/sh/configs/apsh4ad0a_defconfig b/arch/sh/configs/apsh4ad0a_defconfig index 64558bf60e10..36a6fbb71c0f 100644 --- a/arch/sh/configs/apsh4ad0a_defconfig +++ b/arch/sh/configs/apsh4ad0a_defconfig @@ -42,6 +42,7 @@ CONFIG_SECCOMP=y CONFIG_PREEMPT=y # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set CONFIG_BINFMT_MISC=y +CONFIG_CMDLINE_NO_MODIFY=y CONFIG_PM=y CONFIG_PM_DEBUG=y CONFIG_PM=y diff --git a/arch/sh/configs/edosk7705_defconfig b/arch/sh/configs/edosk7705_defconfig index 9ee35269bee2..9bb371ad4273 100644 --- a/arch/sh/configs/edosk7705_defconfig +++ b/arch/sh/configs/edosk7705_defconfig @@ -19,6 +19,7 @@ CONFIG_CPU_SUBTYPE_SH7705=y CONFIG_SH_EDOSK7705=y CONFIG_SH_PCLK_FREQ=31250000 +CONFIG_CMDLINE_NO_MODIFY=y # CONFIG_PREVENT_FIRMWARE_BUILD is not set # CONFIG_INPUT is not set # CONFIG_SERIO is not set diff --git a/arch/sh/configs/hp6xx_defconfig b/arch/sh/configs/hp6xx_defconfig index 0c45f2a0f9bd..d0746e6ecfa9 100644 --- a/arch/sh/configs/hp6xx_defconfig +++ b/arch/sh/configs/hp6xx_defconfig @@ -15,6 +15,7 @@ CONFIG_SH_DMA_API=y CONFIG_HD64461_ENABLER=y CONFIG_PCCARD=y CONFIG_PM=y +CONFIG_CMDLINE_NO_MODIFY=y CONFIG_APM_EMULATION=y # CONFIG_STANDALONE is not set CONFIG_BLK_DEV_SD=y diff --git a/arch/sh/configs/landisk_defconfig b/arch/sh/configs/landisk_defconfig index 541082090918..08e1e301b83b 100644 --- a/arch/sh/configs/landisk_defconfig +++ b/arch/sh/configs/landisk_defconfig @@ -15,6 +15,7 @@ CONFIG_KEXEC=y CONFIG_PCI=y CONFIG_PCCARD=y CONFIG_YENTA=y +CONFIG_CMDLINE_NO_MODIFY=y CONFIG_NET=y CONFIG_PACKET=y CONFIG_UNIX=y diff --git a/arch/sh/configs/magicpanelr2_defconfig b/arch/sh/configs/magicpanelr2_defconfig index 52937f9cc2ab..fdb2f95b9c35 100644 --- a/arch/sh/configs/magicpanelr2_defconfig +++ b/arch/sh/configs/magicpanelr2_defconfig @@ -22,6 +22,7 @@ CONFIG_SH_PCLK_FREQ=24000000 CONFIG_SH_DMA=y CONFIG_SH_DMA_API=y CONFIG_HEARTBEAT=y +CONFIG_CMDLINE_NO_MODIFY=y CONFIG_NET=y CONFIG_PACKET=y CONFIG_UNIX=y diff --git a/arch/sh/configs/rsk7264_defconfig b/arch/sh/configs/rsk7264_defconfig index a88cb3b77957..6d1694e24634 100644 --- a/arch/sh/configs/rsk7264_defconfig +++ b/arch/sh/configs/rsk7264_defconfig @@ -21,6 +21,7 @@ CONFIG_MEMORY_START=0x0c000000 CONFIG_FLATMEM_MANUAL=y CONFIG_CPU_BIG_ENDIAN=y CONFIG_SH_RSK=y +CONFIG_CMDLINE_NO_MODIFY=y # CONFIG_SH_TIMER_MTU2 is not set CONFIG_BINFMT_FLAT=y CONFIG_NET=y diff --git a/arch/sh/configs/rsk7269_defconfig b/arch/sh/configs/rsk7269_defconfig index d9a7ce783c9b..e4086d9b4fd9 100644 --- a/arch/sh/configs/rsk7269_defconfig +++ b/arch/sh/configs/rsk7269_defconfig @@ -10,6 +10,7 @@ CONFIG_MEMORY_SIZE=0x02000000 CONFIG_FLATMEM_MANUAL=y CONFIG_CPU_BIG_ENDIAN=y CONFIG_SH_RSK=y +CONFIG_CMDLINE_NO_MODIFY=y # CONFIG_SH_TIMER_MTU2 is not set CONFIG_SH_PCLK_FREQ=66700000 CONFIG_BINFMT_FLAT=y diff --git a/arch/sh/configs/se7619_defconfig b/arch/sh/configs/se7619_defconfig index 14d0f5ead502..bc3105bd33d2 100644 --- a/arch/sh/configs/se7619_defconfig +++ b/arch/sh/configs/se7619_defconfig @@ -14,6 +14,7 @@ CONFIG_FLATMEM_MANUAL=y CONFIG_CPU_BIG_ENDIAN=y CONFIG_SH_7619_SOLUTION_ENGINE=y CONFIG_HZ_100=y +CONFIG_CMDLINE_NO_MODIFY=y CONFIG_BINFMT_FLAT=y CONFIG_BINFMT_ZFLAT=y # CONFIG_STANDALONE is not set diff --git a/arch/sh/configs/se7705_defconfig b/arch/sh/configs/se7705_defconfig index 16a0f72f0822..efe34f6f9c18 100644 --- a/arch/sh/configs/se7705_defconfig +++ b/arch/sh/configs/se7705_defconfig @@ -13,6 +13,7 @@ CONFIG_FLATMEM_MANUAL=y # CONFIG_SH_ADC is not set CONFIG_SH_SOLUTION_ENGINE=y CONFIG_HEARTBEAT=y +CONFIG_CMDLINE_NO_MODIFY=y CONFIG_PREEMPT=y CONFIG_NET=y CONFIG_PACKET=y diff --git a/arch/sh/configs/se7722_defconfig b/arch/sh/configs/se7722_defconfig index 09e455817447..bf7deaf881a3 100644 --- a/arch/sh/configs/se7722_defconfig +++ b/arch/sh/configs/se7722_defconfig @@ -17,6 +17,7 @@ CONFIG_SH_7722_SOLUTION_ENGINE=y CONFIG_NO_HZ=y CONFIG_HIGH_RES_TIMERS=y CONFIG_HEARTBEAT=y +CONFIG_CMDLINE_NO_MODIFY=y CONFIG_KEXEC=y CONFIG_PREEMPT=y CONFIG_NET=y diff --git a/arch/sh/configs/se7750_defconfig b/arch/sh/configs/se7750_defconfig index 5fa6239ae4ea..2d0cd40f9634 100644 --- a/arch/sh/configs/se7750_defconfig +++ b/arch/sh/configs/se7750_defconfig @@ -15,6 +15,7 @@ CONFIG_FLATMEM_MANUAL=y CONFIG_SH_SOLUTION_ENGINE=y CONFIG_SH_PCLK_FREQ=33333333 CONFIG_HEARTBEAT=y +CONFIG_CMDLINE_NO_MODIFY=y CONFIG_NET=y CONFIG_PACKET=y CONFIG_UNIX=y diff --git a/arch/sh/configs/secureedge5410_defconfig b/arch/sh/configs/secureedge5410_defconfig index 120176afe3f6..4ffdb1049d89 100644 --- a/arch/sh/configs/secureedge5410_defconfig +++ b/arch/sh/configs/secureedge5410_defconfig @@ -10,6 +10,7 @@ CONFIG_SH_SECUREEDGE5410=y CONFIG_SH_DMA=y CONFIG_SH_DMA_API=y CONFIG_PCI=y +CONFIG_CMDLINE_NO_MODIFY=y CONFIG_NET=y CONFIG_INET=y # CONFIG_INET_XFRM_MODE_TRANSPORT is not set diff --git a/arch/sh/configs/sh7710voipgw_defconfig b/arch/sh/configs/sh7710voipgw_defconfig index 7f742729df69..6d7842542caf 100644 --- a/arch/sh/configs/sh7710voipgw_defconfig +++ b/arch/sh/configs/sh7710voipgw_defconfig @@ -15,6 +15,7 @@ CONFIG_MEMORY_SIZE=0x00800000 CONFIG_FLATMEM_MANUAL=y # CONFIG_SH_ADC is not set CONFIG_SH_PCLK_FREQ=32768000 +CONFIG_CMDLINE_NO_MODIFY=y CONFIG_NET=y CONFIG_PACKET=y CONFIG_UNIX=y diff --git a/arch/sh/configs/sh7724_generic_defconfig b/arch/sh/configs/sh7724_generic_defconfig index cbc9389a89a8..04bb71aeeb44 100644 --- a/arch/sh/configs/sh7724_generic_defconfig +++ b/arch/sh/configs/sh7724_generic_defconfig @@ -12,6 +12,7 @@ CONFIG_CPU_FREQ=y CONFIG_SH_CPU_FREQ=y CONFIG_KEXEC=y CONFIG_KEXEC_JUMP=y +CONFIG_CMDLINE_NO_MODIFY=y CONFIG_HIBERNATION=y CONFIG_CPU_IDLE=y # CONFIG_PREVENT_FIRMWARE_BUILD is not set diff --git a/arch/sh/configs/sh7770_generic_defconfig b/arch/sh/configs/sh7770_generic_defconfig index ee2357deba0f..5561ad497938 100644 --- a/arch/sh/configs/sh7770_generic_defconfig +++ b/arch/sh/configs/sh7770_generic_defconfig @@ -14,6 +14,7 @@ CONFIG_SH_CPU_FREQ=y CONFIG_KEXEC=y CONFIG_KEXEC_JUMP=y CONFIG_PM=y +CONFIG_CMDLINE_NO_MODIFY=y CONFIG_HIBERNATION=y CONFIG_CPU_IDLE=y # CONFIG_PREVENT_FIRMWARE_BUILD is not set diff --git a/arch/sh/configs/sh7785lcr_32bit_defconfig b/arch/sh/configs/sh7785lcr_32bit_defconfig index 59262f42abe6..e742b7c37f2d 100644 --- a/arch/sh/configs/sh7785lcr_32bit_defconfig +++ b/arch/sh/configs/sh7785lcr_32bit_defconfig @@ -32,6 +32,7 @@ CONFIG_PREEMPT=y CONFIG_INTC_USERIMASK=y CONFIG_PCI=y CONFIG_PCI_DEBUG=y +CONFIG_CMDLINE_NO_MODIFY=y CONFIG_PM=y CONFIG_CPU_IDLE=y CONFIG_NET=y diff --git a/arch/sh/configs/sh7785lcr_defconfig b/arch/sh/configs/sh7785lcr_defconfig index 94381f8268ff..5d4fda1fe672 100644 --- a/arch/sh/configs/sh7785lcr_defconfig +++ b/arch/sh/configs/sh7785lcr_defconfig @@ -17,6 +17,7 @@ CONFIG_HEARTBEAT=y CONFIG_KEXEC=y CONFIG_PREEMPT=y CONFIG_PCI=y +CONFIG_CMDLINE_NO_MODIFY=y CONFIG_NET=y CONFIG_PACKET=y CONFIG_UNIX=y diff --git a/arch/sh/configs/urquell_defconfig b/arch/sh/configs/urquell_defconfig index 445bb451a5ec..fb9872609e38 100644 --- a/arch/sh/configs/urquell_defconfig +++ b/arch/sh/configs/urquell_defconfig @@ -34,6 +34,7 @@ CONFIG_PCIEPORTBUS=y CONFIG_PCIEASPM_DEBUG=y CONFIG_PCI_DEBUG=y CONFIG_BINFMT_MISC=y +CONFIG_CMDLINE_NO_MODIFY=y CONFIG_PM=y CONFIG_CPU_IDLE=y CONFIG_NET=y From patchwork Sun Apr 21 12:08:24 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 13637324 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7A6AE17555; Sun, 21 Apr 2024 12:08:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713701315; cv=none; b=se355aSax/FA8EjKlsyLZ4qiuXYL1d8s0k3YTAEw9V2TEDx1kzaBkEbnGIyjEQhhHNZSZ2w3QuTWTDFlp5kazwrMZU1KVOTJiJsiEdZoninhtCYUQlNREGBq54gY5wu7MpZyhCQqHG2oqWhpnmxoqCRkoXzJAcNkeA5AvE8F+Y0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713701315; c=relaxed/simple; bh=Gsdgpbj7NFA5qr1KQmsKddJNtOfk4YkOPTcgoYpVJ7w=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=hgE6sXOSiY0p1RODCjwskfCHB1SRixr50rrqUlfg3dYFRLSTygMq5N21+B7JJUVaW4uusMNGk5s1WvqRMdRVmNaicGSWf3yBiLN6VuiQWgP0lLuruok3KyyvnDJpj8T9alql3cepG+GamkwQLPJUiudcmf1ok4RQH/zmpjFEM7I= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ZlVj7P9O; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ZlVj7P9O" Received: by smtp.kernel.org (Postfix) with ESMTPSA id CB872C32783; Sun, 21 Apr 2024 12:08:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1713701315; bh=Gsdgpbj7NFA5qr1KQmsKddJNtOfk4YkOPTcgoYpVJ7w=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ZlVj7P9O6ogfkUdfOL7URjtws+JHaWSfIisoyfAl0TTpWraHjIfO9u1wd992r4mpG Vqhqn0exuS7VM+sR8h6CUofUu1Ja4e9cd0K4t5VxAEs+2hDhhpJ75kqWNZIjN8FElo SnStG5gswmrSUOO7TKZyfOHyWylxRYvb2kQfNA5I6B+V2NkzXToPwxEx0x807xj7Or TYx2Q51uMko0cTQHnw+787H/tnt2HQwRcAvVHujDx6MKnB2x3O9c2lpRZl9lrQuDlb 9hCEceJFTBJaNFqEJ6XouClgfr1HgCycu/6Mbg/pU0+vDXLfFBeVPCUpocb+JS35d/ +wL/sYfGfNqeg== From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: linux-kernel@vger.kernel.org, Yoshinori Sato , Rich Felker , John Paul Adrian Glaubitz , linux-sh@vger.kernel.org, Masahiro Yamada , Jonathan Corbet , Nathan Chancellor , Nicolas Schier , linux-doc@vger.kernel.org Subject: [PATCH 2/2] kconfig: remove 'optional' property support Date: Sun, 21 Apr 2024 21:08:24 +0900 Message-Id: <20240421120824.2713923-3-masahiroy@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20240421120824.2713923-1-masahiroy@kernel.org> References: <20240421120824.2713923-1-masahiroy@kernel.org> Precedence: bulk X-Mailing-List: linux-sh@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 The 'choice' statement is primarily used to exclusively select one option, but the 'optional' property allows all entries to be disabled. In the following example, both A and B can be disabled simultaneously: choice prompt "choose A, B, or nothing" optional config A bool "A" config B bool "B" endchoice You can achieve the equivalent outcome by other means. One solution is to add another option to guard the choice block. In the following example, you can set ENABLE_A_B_CHOICE=n to disable the entire choice block: choice prompt "choose A or B" depends on ENABLE_A_B_CHOICE config A bool "A" config B bool "B" endchoice Another approach is to insert one more entry as a place-holder: choice prompt "choose A, B, or disable both" config A bool "A" config B bool "B" config DISABLE_A_AND_B bool "choose this to disable both A and B" endchoice The latter is commonly used, for example, LTO_NONE, DEBUG_INFO_NONE, INITRAMFS_COMPRESSION_NONE, etc. The 'optional' property is even more unnecessary for a tristate choice. Without the 'optional' property, you can disable A and B; you can set 'm' in the choice prompt, and disable A and B individually: choice prompt "choose one built-in or make them modular" config A tristate "A" config B tristate "B" endchoice In conclusion, the 'optional' property was unneeded. Signed-off-by: Masahiro Yamada --- Documentation/kbuild/kconfig-language.rst | 3 --- scripts/kconfig/confdata.c | 5 +--- scripts/kconfig/expr.h | 1 - scripts/kconfig/gconf.c | 2 -- scripts/kconfig/lexer.l | 1 - scripts/kconfig/lkc.h | 5 ---- scripts/kconfig/menu.c | 12 +++------ scripts/kconfig/parser.y | 9 ------- scripts/kconfig/tests/choice/Kconfig | 26 ------------------- .../tests/choice/allmod_expected_config | 4 --- .../tests/choice/allyes_expected_config | 4 --- .../tests/choice/oldask0_expected_stdout | 2 -- scripts/kconfig/tests/choice/oldask1_config | 1 - .../tests/choice/oldask1_expected_stdout | 6 ----- 14 files changed, 5 insertions(+), 76 deletions(-) diff --git a/Documentation/kbuild/kconfig-language.rst b/Documentation/kbuild/kconfig-language.rst index 79ac2e8184f6..555c2f839969 100644 --- a/Documentation/kbuild/kconfig-language.rst +++ b/Documentation/kbuild/kconfig-language.rst @@ -410,9 +410,6 @@ to be set to 'm'. This can be used if multiple drivers for a single hardware exists and only a single driver can be compiled/loaded into the kernel, but all drivers can be compiled as modules. -A choice accepts another option "optional", which allows to set the -choice to 'n' and no entry needs to be selected. - comment:: "comment" diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c index ce0ef417b71b..cf60a8cf31ca 100644 --- a/scripts/kconfig/confdata.c +++ b/scripts/kconfig/confdata.c @@ -810,9 +810,6 @@ int conf_write_defconfig(const char *filename) /* * If symbol is a choice value and equals to the * default for a choice - skip. - * But only if value is bool and equal to "y" and - * choice is not "optional". - * (If choice is "optional" then all values can be "n") */ if (sym_is_choice_value(sym)) { struct symbol *cs; @@ -820,7 +817,7 @@ int conf_write_defconfig(const char *filename) cs = prop_get_symbol(sym_get_choice_prop(sym)); ds = sym_choice_default(cs); - if (!sym_is_optional(cs) && sym == ds) { + if (sym == ds) { if ((sym->type == S_BOOLEAN) && sym_get_tristate_value(sym) == yes) continue; diff --git a/scripts/kconfig/expr.h b/scripts/kconfig/expr.h index 0158f5eac454..d4b54554714a 100644 --- a/scripts/kconfig/expr.h +++ b/scripts/kconfig/expr.h @@ -134,7 +134,6 @@ struct symbol { #define SYMBOL_CHOICE 0x0010 /* start of a choice block (null name) */ #define SYMBOL_CHOICEVAL 0x0020 /* used as a value in a choice block */ #define SYMBOL_VALID 0x0080 /* set when symbol.curr is calculated */ -#define SYMBOL_OPTIONAL 0x0100 /* choice is optional - values can be 'n' */ #define SYMBOL_WRITE 0x0200 /* write symbol to file (KCONFIG_CONFIG) */ #define SYMBOL_CHANGED 0x0400 /* ? */ #define SYMBOL_WRITTEN 0x0800 /* track info to avoid double-write to .config */ diff --git a/scripts/kconfig/gconf.c b/scripts/kconfig/gconf.c index 9709aca3a30f..37ae4681a68e 100644 --- a/scripts/kconfig/gconf.c +++ b/scripts/kconfig/gconf.c @@ -89,8 +89,6 @@ static const char *dbg_sym_flags(int val) strcat(buf, "choiceval/"); if (val & SYMBOL_VALID) strcat(buf, "valid/"); - if (val & SYMBOL_OPTIONAL) - strcat(buf, "optional/"); if (val & SYMBOL_WRITE) strcat(buf, "write/"); if (val & SYMBOL_CHANGED) diff --git a/scripts/kconfig/lexer.l b/scripts/kconfig/lexer.l index 89544c3a1a29..8dd597c4710d 100644 --- a/scripts/kconfig/lexer.l +++ b/scripts/kconfig/lexer.l @@ -120,7 +120,6 @@ n [A-Za-z0-9_-] "menuconfig" return T_MENUCONFIG; "modules" return T_MODULES; "on" return T_ON; -"optional" return T_OPTIONAL; "prompt" return T_PROMPT; "range" return T_RANGE; "select" return T_SELECT; diff --git a/scripts/kconfig/lkc.h b/scripts/kconfig/lkc.h index cfb7e9ac41a3..29269e5d8ece 100644 --- a/scripts/kconfig/lkc.h +++ b/scripts/kconfig/lkc.h @@ -137,11 +137,6 @@ static inline bool sym_is_choice_value(struct symbol *sym) return sym->flags & SYMBOL_CHOICEVAL ? true : false; } -static inline bool sym_is_optional(struct symbol *sym) -{ - return sym->flags & SYMBOL_OPTIONAL ? true : false; -} - static inline bool sym_has_value(struct symbol *sym) { return sym->flags & SYMBOL_DEF_USER ? true : false; diff --git a/scripts/kconfig/menu.c b/scripts/kconfig/menu.c index fe6af8700622..e01b9ee87c05 100644 --- a/scripts/kconfig/menu.c +++ b/scripts/kconfig/menu.c @@ -593,15 +593,11 @@ static void _menu_finalize(struct menu *parent, bool inside_choice) } /* - * For non-optional choices, add a reverse dependency (corresponding to - * a select) of ' && m'. This prevents the user from - * setting the choice mode to 'n' when the choice is visible. - * - * This would also work for non-choice symbols, but only non-optional - * choices clear SYMBOL_OPTIONAL as of writing. Choices are implemented - * as a type of symbol. + * For choices, add a reverse dependency (corresponding to a select) of + * ' && m'. This prevents the user from setting the choice + * mode to 'n' when the choice is visible. */ - if (sym && !sym_is_optional(sym) && parent->prompt) { + if (sym && sym_is_choice(sym) && parent->prompt) { sym->rev_dep.expr = expr_alloc_or(sym->rev_dep.expr, expr_alloc_and(parent->prompt->visible.expr, expr_alloc_symbol(&symbol_mod))); diff --git a/scripts/kconfig/parser.y b/scripts/kconfig/parser.y index 8f339b47fe8d..6ac0f44270c4 100644 --- a/scripts/kconfig/parser.y +++ b/scripts/kconfig/parser.y @@ -69,7 +69,6 @@ struct menu *current_menu, *current_entry; %token T_MODULES %token T_ON %token T_OPEN_PAREN -%token T_OPTIONAL %token T_PLUS_EQUAL %token T_PROMPT %token T_RANGE @@ -140,7 +139,6 @@ stmt_list_in_choice: config_entry_start: T_CONFIG nonconst_symbol T_EOL { - $2->flags |= SYMBOL_OPTIONAL; menu_add_entry($2); printd(DEBUG_PARSE, "%s:%d:config %s\n", cur_filename, cur_lineno, $2->name); }; @@ -152,7 +150,6 @@ config_stmt: config_entry_start config_option_list menuconfig_entry_start: T_MENUCONFIG nonconst_symbol T_EOL { - $2->flags |= SYMBOL_OPTIONAL; menu_add_entry($2); printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", cur_filename, cur_lineno, $2->name); }; @@ -272,12 +269,6 @@ choice_option: logic_type prompt_stmt_opt T_EOL printd(DEBUG_PARSE, "%s:%d:type(%u)\n", cur_filename, cur_lineno, $1); }; -choice_option: T_OPTIONAL T_EOL -{ - current_entry->sym->flags |= SYMBOL_OPTIONAL; - printd(DEBUG_PARSE, "%s:%d:optional\n", cur_filename, cur_lineno); -}; - choice_option: T_DEFAULT nonconst_symbol if_expr T_EOL { menu_add_symbol(P_DEFAULT, $2, $3); diff --git a/scripts/kconfig/tests/choice/Kconfig b/scripts/kconfig/tests/choice/Kconfig index 0930eb65e932..8cdda40868a1 100644 --- a/scripts/kconfig/tests/choice/Kconfig +++ b/scripts/kconfig/tests/choice/Kconfig @@ -17,19 +17,6 @@ config BOOL_CHOICE1 endchoice -choice - prompt "optional boolean choice" - optional - default OPT_BOOL_CHOICE1 - -config OPT_BOOL_CHOICE0 - bool "choice 0" - -config OPT_BOOL_CHOICE1 - bool "choice 1" - -endchoice - choice prompt "tristate choice" default TRI_CHOICE1 @@ -41,16 +28,3 @@ config TRI_CHOICE1 tristate "choice 1" endchoice - -choice - prompt "optional tristate choice" - optional - default OPT_TRI_CHOICE1 - -config OPT_TRI_CHOICE0 - tristate "choice 0" - -config OPT_TRI_CHOICE1 - tristate "choice 1" - -endchoice diff --git a/scripts/kconfig/tests/choice/allmod_expected_config b/scripts/kconfig/tests/choice/allmod_expected_config index f1f5dcdb7923..d1f51651740c 100644 --- a/scripts/kconfig/tests/choice/allmod_expected_config +++ b/scripts/kconfig/tests/choice/allmod_expected_config @@ -1,9 +1,5 @@ CONFIG_MODULES=y # CONFIG_BOOL_CHOICE0 is not set CONFIG_BOOL_CHOICE1=y -# CONFIG_OPT_BOOL_CHOICE0 is not set -CONFIG_OPT_BOOL_CHOICE1=y CONFIG_TRI_CHOICE0=m CONFIG_TRI_CHOICE1=m -CONFIG_OPT_TRI_CHOICE0=m -CONFIG_OPT_TRI_CHOICE1=m diff --git a/scripts/kconfig/tests/choice/allyes_expected_config b/scripts/kconfig/tests/choice/allyes_expected_config index e5a062a1157c..8a76c1816893 100644 --- a/scripts/kconfig/tests/choice/allyes_expected_config +++ b/scripts/kconfig/tests/choice/allyes_expected_config @@ -1,9 +1,5 @@ CONFIG_MODULES=y # CONFIG_BOOL_CHOICE0 is not set CONFIG_BOOL_CHOICE1=y -# CONFIG_OPT_BOOL_CHOICE0 is not set -CONFIG_OPT_BOOL_CHOICE1=y # CONFIG_TRI_CHOICE0 is not set CONFIG_TRI_CHOICE1=y -# CONFIG_OPT_TRI_CHOICE0 is not set -CONFIG_OPT_TRI_CHOICE1=y diff --git a/scripts/kconfig/tests/choice/oldask0_expected_stdout b/scripts/kconfig/tests/choice/oldask0_expected_stdout index b251bba9698b..d2257db46423 100644 --- a/scripts/kconfig/tests/choice/oldask0_expected_stdout +++ b/scripts/kconfig/tests/choice/oldask0_expected_stdout @@ -3,8 +3,6 @@ boolean choice 1. choice 0 (BOOL_CHOICE0) (NEW) > 2. choice 1 (BOOL_CHOICE1) (NEW) choice[1-2?]: -optional boolean choice [N/y/?] (NEW) tristate choice [M/y/?] (NEW) choice 0 (TRI_CHOICE0) [N/m/?] (NEW) choice 1 (TRI_CHOICE1) [N/m/?] (NEW) -optional tristate choice [N/m/y/?] (NEW) diff --git a/scripts/kconfig/tests/choice/oldask1_config b/scripts/kconfig/tests/choice/oldask1_config index b67bfe3c641f..0f417856c81c 100644 --- a/scripts/kconfig/tests/choice/oldask1_config +++ b/scripts/kconfig/tests/choice/oldask1_config @@ -1,2 +1 @@ # CONFIG_MODULES is not set -CONFIG_OPT_BOOL_CHOICE0=y diff --git a/scripts/kconfig/tests/choice/oldask1_expected_stdout b/scripts/kconfig/tests/choice/oldask1_expected_stdout index c2125e9bf96a..ffa20ad7f38e 100644 --- a/scripts/kconfig/tests/choice/oldask1_expected_stdout +++ b/scripts/kconfig/tests/choice/oldask1_expected_stdout @@ -3,13 +3,7 @@ boolean choice 1. choice 0 (BOOL_CHOICE0) (NEW) > 2. choice 1 (BOOL_CHOICE1) (NEW) choice[1-2?]: -optional boolean choice [Y/n/?] (NEW) -optional boolean choice -> 1. choice 0 (OPT_BOOL_CHOICE0) - 2. choice 1 (OPT_BOOL_CHOICE1) (NEW) -choice[1-2?]: tristate choice 1. choice 0 (TRI_CHOICE0) (NEW) > 2. choice 1 (TRI_CHOICE1) (NEW) choice[1-2?]: -optional tristate choice [N/y/?]