All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 01/13] kconfig: split randconfig setup code into set_randconfig_seed()
@ 2021-03-13 19:48 Masahiro Yamada
  2021-03-13 19:48 ` [PATCH 02/13] kconfig: refactor option parse Masahiro Yamada
                   ` (12 more replies)
  0 siblings, 13 replies; 20+ messages in thread
From: Masahiro Yamada @ 2021-03-13 19:48 UTC (permalink / raw)
  To: linux-kbuild; +Cc: Masahiro Yamada, linux-kernel

This code is too big to be placed in the switch statement.

Move the code into a new helper function. I slightly refactor the code
without changing the behavior.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---

 scripts/kconfig/conf.c | 54 ++++++++++++++++++++++++------------------
 1 file changed, 31 insertions(+), 23 deletions(-)

diff --git a/scripts/kconfig/conf.c b/scripts/kconfig/conf.c
index 957d2a0832f7..063c9e7a34c1 100644
--- a/scripts/kconfig/conf.c
+++ b/scripts/kconfig/conf.c
@@ -82,6 +82,36 @@ static void xfgets(char *str, int size, FILE *in)
 		printf("%s", str);
 }
 
+static void set_randconfig_seed(void)
+{
+	unsigned int seed;
+	char *env;
+	bool seed_set = false;
+
+	env = getenv("KCONFIG_SEED");
+	if (env && *env) {
+		char *endp;
+
+		seed = strtol(env, &endp, 0);
+		if (*endp == '\0')
+			seed_set = true;
+	}
+
+	if (!seed_set) {
+		struct timeval now;
+
+		/*
+		 * Use microseconds derived seed, compensate for systems where it may
+		 * be zero.
+		 */
+		gettimeofday(&now, NULL);
+		seed = (now.tv_sec + 1) * (now.tv_usec + 1);
+	}
+
+	printf("KCONFIG_SEED=0x%X\n", seed);
+	srand(seed);
+}
+
 static int conf_askvalue(struct symbol *sym, const char *def)
 {
 	if (!sym_has_value(sym))
@@ -515,30 +545,8 @@ int main(int ac, char **av)
 			defconfig_file = optarg;
 			break;
 		case randconfig:
-		{
-			struct timeval now;
-			unsigned int seed;
-			char *seed_env;
-
-			/*
-			 * Use microseconds derived seed,
-			 * compensate for systems where it may be zero
-			 */
-			gettimeofday(&now, NULL);
-			seed = (unsigned int)((now.tv_sec + 1) * (now.tv_usec + 1));
-
-			seed_env = getenv("KCONFIG_SEED");
-			if( seed_env && *seed_env ) {
-				char *endp;
-				int tmp = (int)strtol(seed_env, &endp, 0);
-				if (*endp == '\0') {
-					seed = tmp;
-				}
-			}
-			fprintf( stderr, "KCONFIG_SEED=0x%X\n", seed );
-			srand(seed);
+			set_randconfig_seed();
 			break;
-		}
 		case oldaskconfig:
 		case oldconfig:
 		case allnoconfig:
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 02/13] kconfig: refactor option parse
  2021-03-13 19:48 [PATCH 01/13] kconfig: split randconfig setup code into set_randconfig_seed() Masahiro Yamada
@ 2021-03-13 19:48 ` Masahiro Yamada
  2021-03-13 19:48 ` [PATCH 03/13] kconfig: add long options --help and --silent Masahiro Yamada
                   ` (11 subsequent siblings)
  12 siblings, 0 replies; 20+ messages in thread
From: Masahiro Yamada @ 2021-03-13 19:48 UTC (permalink / raw)
  To: linux-kbuild; +Cc: Masahiro Yamada, linux-kernel

The current option parse code is clumsy.

The 's' option is separately handled in a if-conditional due to the
following code:

    input_mode = (enum input_mode)opt;

If 's' is moved the switch statement, the invalid value 's' would be
assigned to the input_mode.

Another potential problem is that we are mixing 'enum input_mode' and
ASCII characters. They could overwrap if we add more input modes.

To separate them out, set the flag field of long options to a pointer
of input_mode_opt. For mode select options, getopt_long() returns 0,
which never causes overwrap with ASCII characters that represent short
options.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---

 scripts/kconfig/conf.c | 91 ++++++++++++++++++++----------------------
 1 file changed, 43 insertions(+), 48 deletions(-)

diff --git a/scripts/kconfig/conf.c b/scripts/kconfig/conf.c
index 063c9e7a34c1..dc1a67fd35a9 100644
--- a/scripts/kconfig/conf.c
+++ b/scripts/kconfig/conf.c
@@ -37,7 +37,7 @@ enum input_mode {
 	mod2yesconfig,
 };
 static enum input_mode input_mode = oldaskconfig;
-
+static int input_mode_opt;
 static int indent = 1;
 static int tty_stdio;
 static int sync_kconfig;
@@ -474,21 +474,21 @@ static void check_conf(struct menu *menu)
 }
 
 static struct option long_opts[] = {
-	{"oldaskconfig",    no_argument,       NULL, oldaskconfig},
-	{"oldconfig",       no_argument,       NULL, oldconfig},
-	{"syncconfig",      no_argument,       NULL, syncconfig},
-	{"defconfig",       required_argument, NULL, defconfig},
-	{"savedefconfig",   required_argument, NULL, savedefconfig},
-	{"allnoconfig",     no_argument,       NULL, allnoconfig},
-	{"allyesconfig",    no_argument,       NULL, allyesconfig},
-	{"allmodconfig",    no_argument,       NULL, allmodconfig},
-	{"alldefconfig",    no_argument,       NULL, alldefconfig},
-	{"randconfig",      no_argument,       NULL, randconfig},
-	{"listnewconfig",   no_argument,       NULL, listnewconfig},
-	{"helpnewconfig",   no_argument,       NULL, helpnewconfig},
-	{"olddefconfig",    no_argument,       NULL, olddefconfig},
-	{"yes2modconfig",   no_argument,       NULL, yes2modconfig},
-	{"mod2yesconfig",   no_argument,       NULL, mod2yesconfig},
+	{"oldaskconfig",  no_argument,       &input_mode_opt, oldaskconfig},
+	{"oldconfig",     no_argument,       &input_mode_opt, oldconfig},
+	{"syncconfig",    no_argument,       &input_mode_opt, syncconfig},
+	{"defconfig",     required_argument, &input_mode_opt, defconfig},
+	{"savedefconfig", required_argument, &input_mode_opt, savedefconfig},
+	{"allnoconfig",   no_argument,       &input_mode_opt, allnoconfig},
+	{"allyesconfig",  no_argument,       &input_mode_opt, allyesconfig},
+	{"allmodconfig",  no_argument,       &input_mode_opt, allmodconfig},
+	{"alldefconfig",  no_argument,       &input_mode_opt, alldefconfig},
+	{"randconfig",    no_argument,       &input_mode_opt, randconfig},
+	{"listnewconfig", no_argument,       &input_mode_opt, listnewconfig},
+	{"helpnewconfig", no_argument,       &input_mode_opt, helpnewconfig},
+	{"olddefconfig",  no_argument,       &input_mode_opt, olddefconfig},
+	{"yes2modconfig", no_argument,       &input_mode_opt, yes2modconfig},
+	{"mod2yesconfig", no_argument,       &input_mode_opt, mod2yesconfig},
 	{NULL, 0, NULL, 0}
 };
 
@@ -526,43 +526,38 @@ int main(int ac, char **av)
 	tty_stdio = isatty(0) && isatty(1);
 
 	while ((opt = getopt_long(ac, av, "hs", long_opts, NULL)) != -1) {
-		if (opt == 's') {
-			conf_set_message_callback(NULL);
-			continue;
-		}
-		input_mode = (enum input_mode)opt;
 		switch (opt) {
-		case syncconfig:
-			/*
-			 * syncconfig is invoked during the build stage.
-			 * Suppress distracting "configuration written to ..."
-			 */
-			conf_set_message_callback(NULL);
-			sync_kconfig = 1;
-			break;
-		case defconfig:
-		case savedefconfig:
-			defconfig_file = optarg;
-			break;
-		case randconfig:
-			set_randconfig_seed();
-			break;
-		case oldaskconfig:
-		case oldconfig:
-		case allnoconfig:
-		case allyesconfig:
-		case allmodconfig:
-		case alldefconfig:
-		case listnewconfig:
-		case helpnewconfig:
-		case olddefconfig:
-		case yes2modconfig:
-		case mod2yesconfig:
-			break;
 		case 'h':
 			conf_usage(progname);
 			exit(1);
 			break;
+		case 's':
+			conf_set_message_callback(NULL);
+			break;
+		case 0:
+			input_mode = input_mode_opt;
+			switch (input_mode) {
+			case syncconfig:
+				/*
+				 * syncconfig is invoked during the build stage.
+				 * Suppress distracting
+				 *   "configuration written to ..."
+				 */
+				conf_set_message_callback(NULL);
+				sync_kconfig = 1;
+				break;
+			case defconfig:
+			case savedefconfig:
+				defconfig_file = optarg;
+				break;
+			case randconfig:
+				set_randconfig_seed();
+				break;
+			default:
+				break;
+			}
+		default:
+			break;
 		}
 	}
 	if (ac == optind) {
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 03/13] kconfig: add long options --help and --silent
  2021-03-13 19:48 [PATCH 01/13] kconfig: split randconfig setup code into set_randconfig_seed() Masahiro Yamada
  2021-03-13 19:48 ` [PATCH 02/13] kconfig: refactor option parse Masahiro Yamada
@ 2021-03-13 19:48 ` Masahiro Yamada
  2021-03-13 19:48 ` [PATCH 04/13] kconfig: add help messages for --help (-h) and --silent (-s) Masahiro Yamada
                   ` (10 subsequent siblings)
  12 siblings, 0 replies; 20+ messages in thread
From: Masahiro Yamada @ 2021-03-13 19:48 UTC (permalink / raw)
  To: linux-kbuild; +Cc: Masahiro Yamada, linux-kernel

They are long options for -h and -s, respectively.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---

 scripts/kconfig/conf.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/scripts/kconfig/conf.c b/scripts/kconfig/conf.c
index dc1a67fd35a9..aac76acfd100 100644
--- a/scripts/kconfig/conf.c
+++ b/scripts/kconfig/conf.c
@@ -474,6 +474,8 @@ static void check_conf(struct menu *menu)
 }
 
 static struct option long_opts[] = {
+	{"help",          no_argument,       NULL,            'h'},
+	{"silent",        no_argument,       NULL,            's'},
 	{"oldaskconfig",  no_argument,       &input_mode_opt, oldaskconfig},
 	{"oldconfig",     no_argument,       &input_mode_opt, oldconfig},
 	{"syncconfig",    no_argument,       &input_mode_opt, syncconfig},
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 04/13] kconfig: add help messages for --help (-h) and --silent (-s)
  2021-03-13 19:48 [PATCH 01/13] kconfig: split randconfig setup code into set_randconfig_seed() Masahiro Yamada
  2021-03-13 19:48 ` [PATCH 02/13] kconfig: refactor option parse Masahiro Yamada
  2021-03-13 19:48 ` [PATCH 03/13] kconfig: add long options --help and --silent Masahiro Yamada
@ 2021-03-13 19:48 ` Masahiro Yamada
  2021-03-13 19:48 ` [PATCH 05/13] kconfig: remove assignment for Kconfig file Masahiro Yamada
                   ` (9 subsequent siblings)
  12 siblings, 0 replies; 20+ messages in thread
From: Masahiro Yamada @ 2021-03-13 19:48 UTC (permalink / raw)
  To: linux-kbuild; +Cc: Masahiro Yamada, linux-kernel

Add missing options and make the help message more readable.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---

 scripts/kconfig/conf.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/scripts/kconfig/conf.c b/scripts/kconfig/conf.c
index aac76acfd100..9ebc1acaf1ae 100644
--- a/scripts/kconfig/conf.c
+++ b/scripts/kconfig/conf.c
@@ -496,9 +496,13 @@ static struct option long_opts[] = {
 
 static void conf_usage(const char *progname)
 {
-
-	printf("Usage: %s [-s] [option] <kconfig-file>\n", progname);
-	printf("[option] is _one_ of the following:\n");
+	printf("Usage: %s [options] <kconfig-file>\n", progname);
+	printf("\n");
+	printf("Generic options:\n");
+	printf("  -h, --help              Print this message and exit.\n");
+	printf("  -s, --silent            Do not print log.\n");
+	printf("\n");
+	printf("Mode options:\n");
 	printf("  --listnewconfig         List new options\n");
 	printf("  --helpnewconfig         List new options and help text\n");
 	printf("  --oldaskconfig          Start a new configuration using a line-oriented program\n");
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 05/13] kconfig: remove assignment for Kconfig file
  2021-03-13 19:48 [PATCH 01/13] kconfig: split randconfig setup code into set_randconfig_seed() Masahiro Yamada
                   ` (2 preceding siblings ...)
  2021-03-13 19:48 ` [PATCH 04/13] kconfig: add help messages for --help (-h) and --silent (-s) Masahiro Yamada
@ 2021-03-13 19:48 ` Masahiro Yamada
  2021-03-13 19:48 ` [PATCH 06/13] kconfig: move conf_rewrite_mod_or_yes() to conf.c Masahiro Yamada
                   ` (8 subsequent siblings)
  12 siblings, 0 replies; 20+ messages in thread
From: Masahiro Yamada @ 2021-03-13 19:48 UTC (permalink / raw)
  To: linux-kbuild; +Cc: Masahiro Yamada, linux-kernel

Pass av[optind] to conf_parse() directly.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---

 scripts/kconfig/conf.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/scripts/kconfig/conf.c b/scripts/kconfig/conf.c
index 9ebc1acaf1ae..42d35da86604 100644
--- a/scripts/kconfig/conf.c
+++ b/scripts/kconfig/conf.c
@@ -571,8 +571,7 @@ int main(int ac, char **av)
 		conf_usage(progname);
 		exit(1);
 	}
-	name = av[optind];
-	conf_parse(name);
+	conf_parse(av[optind]);
 	//zconfdump(stdout);
 
 	switch (input_mode) {
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 06/13] kconfig: move conf_rewrite_mod_or_yes() to conf.c
  2021-03-13 19:48 [PATCH 01/13] kconfig: split randconfig setup code into set_randconfig_seed() Masahiro Yamada
                   ` (3 preceding siblings ...)
  2021-03-13 19:48 ` [PATCH 05/13] kconfig: remove assignment for Kconfig file Masahiro Yamada
@ 2021-03-13 19:48 ` Masahiro Yamada
  2021-03-13 19:48 ` [PATCH 07/13] kconfig: move conf_set_all_new_symbols() " Masahiro Yamada
                   ` (7 subsequent siblings)
  12 siblings, 0 replies; 20+ messages in thread
From: Masahiro Yamada @ 2021-03-13 19:48 UTC (permalink / raw)
  To: linux-kbuild; +Cc: Masahiro Yamada, linux-kernel

This function is only used in conf.c.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---

 scripts/kconfig/conf.c     | 15 +++++++++++++++
 scripts/kconfig/confdata.c | 15 ---------------
 scripts/kconfig/lkc.h      |  1 -
 3 files changed, 15 insertions(+), 16 deletions(-)

diff --git a/scripts/kconfig/conf.c b/scripts/kconfig/conf.c
index 42d35da86604..89c9ba83f9e7 100644
--- a/scripts/kconfig/conf.c
+++ b/scripts/kconfig/conf.c
@@ -112,6 +112,21 @@ static void set_randconfig_seed(void)
 	srand(seed);
 }
 
+static void conf_rewrite_mod_or_yes(enum conf_def_mode mode)
+{
+	struct symbol *sym;
+	int i;
+	tristate old_val = (mode == def_y2m) ? yes : mod;
+	tristate new_val = (mode == def_y2m) ? mod : yes;
+
+	for_all_symbols(i, sym) {
+		if (sym_get_type(sym) == S_TRISTATE &&
+		    sym->def[S_DEF_USER].tri == old_val)
+			sym->def[S_DEF_USER].tri = new_val;
+	}
+	sym_clear_all_valid();
+}
+
 static int conf_askvalue(struct symbol *sym, const char *def)
 {
 	if (!sym_has_value(sym))
diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c
index 2568dbe16ed6..a828622cb2d0 100644
--- a/scripts/kconfig/confdata.c
+++ b/scripts/kconfig/confdata.c
@@ -1322,18 +1322,3 @@ bool conf_set_all_new_symbols(enum conf_def_mode mode)
 
 	return has_changed;
 }
-
-void conf_rewrite_mod_or_yes(enum conf_def_mode mode)
-{
-	struct symbol *sym;
-	int i;
-	tristate old_val = (mode == def_y2m) ? yes : mod;
-	tristate new_val = (mode == def_y2m) ? mod : yes;
-
-	for_all_symbols(i, sym) {
-		if (sym_get_type(sym) == S_TRISTATE &&
-		    sym->def[S_DEF_USER].tri == old_val)
-			sym->def[S_DEF_USER].tri = new_val;
-	}
-	sym_clear_all_valid();
-}
diff --git a/scripts/kconfig/lkc.h b/scripts/kconfig/lkc.h
index bee2413bda63..f946ab49ef50 100644
--- a/scripts/kconfig/lkc.h
+++ b/scripts/kconfig/lkc.h
@@ -58,7 +58,6 @@ const char *conf_get_configname(void);
 void sym_set_change_count(int count);
 void sym_add_change_count(int count);
 bool conf_set_all_new_symbols(enum conf_def_mode mode);
-void conf_rewrite_mod_or_yes(enum conf_def_mode mode);
 void set_all_choice_values(struct symbol *csym);
 
 /* confdata.c and expr.c */
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 07/13] kconfig: move conf_set_all_new_symbols() to conf.c
  2021-03-13 19:48 [PATCH 01/13] kconfig: split randconfig setup code into set_randconfig_seed() Masahiro Yamada
                   ` (4 preceding siblings ...)
  2021-03-13 19:48 ` [PATCH 06/13] kconfig: move conf_rewrite_mod_or_yes() to conf.c Masahiro Yamada
@ 2021-03-13 19:48 ` Masahiro Yamada
  2021-03-15 10:07   ` Boris Kolpackov
  2021-03-13 19:48 ` [PATCH 08/13] kconfig: move JUMP_NB to mconf.c Masahiro Yamada
                   ` (6 subsequent siblings)
  12 siblings, 1 reply; 20+ messages in thread
From: Masahiro Yamada @ 2021-03-13 19:48 UTC (permalink / raw)
  To: linux-kbuild; +Cc: Masahiro Yamada, linux-kernel

This function is only used in conf.c. Move it there together with the
randomize_choice_values() helper.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---

 scripts/kconfig/conf.c     | 183 +++++++++++++++++++++++++++++++++++++
 scripts/kconfig/confdata.c | 176 -----------------------------------
 scripts/kconfig/lkc.h      |   1 -
 3 files changed, 183 insertions(+), 177 deletions(-)

diff --git a/scripts/kconfig/conf.c b/scripts/kconfig/conf.c
index 89c9ba83f9e7..caad875da483 100644
--- a/scripts/kconfig/conf.c
+++ b/scripts/kconfig/conf.c
@@ -112,6 +112,189 @@ static void set_randconfig_seed(void)
 	srand(seed);
 }
 
+static bool randomize_choice_values(struct symbol *csym)
+{
+	struct property *prop;
+	struct symbol *sym;
+	struct expr *e;
+	int cnt, def;
+
+	/*
+	 * If choice is mod then we may have more items selected
+	 * and if no then no-one.
+	 * In both cases stop.
+	 */
+	if (csym->curr.tri != yes)
+		return false;
+
+	prop = sym_get_choice_prop(csym);
+
+	/* count entries in choice block */
+	cnt = 0;
+	expr_list_for_each_sym(prop->expr, e, sym)
+		cnt++;
+
+	/*
+	 * find a random value and set it to yes,
+	 * set the rest to no so we have only one set
+	 */
+	def = rand() % cnt;
+
+	cnt = 0;
+	expr_list_for_each_sym(prop->expr, e, sym) {
+		if (def == cnt++) {
+			sym->def[S_DEF_USER].tri = yes;
+			csym->def[S_DEF_USER].val = sym;
+		} else {
+			sym->def[S_DEF_USER].tri = no;
+		}
+		sym->flags |= SYMBOL_DEF_USER;
+		/* clear VALID to get value calculated */
+		sym->flags &= ~SYMBOL_VALID;
+	}
+	csym->flags |= SYMBOL_DEF_USER;
+	/* clear VALID to get value calculated */
+	csym->flags &= ~SYMBOL_VALID;
+
+	return true;
+}
+
+static bool conf_set_all_new_symbols(enum conf_def_mode mode)
+{
+	struct symbol *sym, *csym;
+	int i, cnt;
+	/*
+	 * can't go as the default in switch-case below, otherwise gcc whines
+	 * about -Wmaybe-uninitialized
+	 */
+	int pby = 50; /* probability of bool     = y */
+	int pty = 33; /* probability of tristate = y */
+	int ptm = 33; /* probability of tristate = m */
+	bool has_changed = false;
+
+	if (mode == def_random) {
+		int n, p[3];
+		char *env = getenv("KCONFIG_PROBABILITY");
+
+		n = 0;
+		while (env && *env) {
+			char *endp;
+			int tmp = strtol(env, &endp, 10);
+
+			if (tmp >= 0 && tmp <= 100) {
+				p[n++] = tmp;
+			} else {
+				errno = ERANGE;
+				perror("KCONFIG_PROBABILITY");
+				exit(1);
+			}
+			env = (*endp == ':') ? endp + 1 : endp;
+			if (n >= 3)
+				break;
+		}
+		switch (n) {
+		case 1:
+			pby = p[0];
+			ptm = pby / 2;
+			pty = pby - ptm;
+			break;
+		case 2:
+			pty = p[0];
+			ptm = p[1];
+			pby = pty + ptm;
+			break;
+		case 3:
+			pby = p[0];
+			pty = p[1];
+			ptm = p[2];
+			break;
+		}
+
+		if (pty + ptm > 100) {
+			errno = ERANGE;
+			perror("KCONFIG_PROBABILITY");
+			exit(1);
+		}
+	}
+
+	for_all_symbols(i, sym) {
+		if (sym_has_value(sym) || sym->flags & SYMBOL_VALID)
+			continue;
+		switch (sym_get_type(sym)) {
+		case S_BOOLEAN:
+		case S_TRISTATE:
+			has_changed = true;
+			switch (mode) {
+			case def_yes:
+				sym->def[S_DEF_USER].tri = yes;
+				break;
+			case def_mod:
+				sym->def[S_DEF_USER].tri = mod;
+				break;
+			case def_no:
+				if (sym->flags & SYMBOL_ALLNOCONFIG_Y)
+					sym->def[S_DEF_USER].tri = yes;
+				else
+					sym->def[S_DEF_USER].tri = no;
+				break;
+			case def_random:
+				sym->def[S_DEF_USER].tri = no;
+				cnt = rand() % 100;
+				if (sym->type == S_TRISTATE) {
+					if (cnt < pty)
+						sym->def[S_DEF_USER].tri = yes;
+					else if (cnt < pty + ptm)
+						sym->def[S_DEF_USER].tri = mod;
+				} else if (cnt < pby)
+					sym->def[S_DEF_USER].tri = yes;
+				break;
+			default:
+				continue;
+			}
+			if (!(sym_is_choice(sym) && mode == def_random))
+				sym->flags |= SYMBOL_DEF_USER;
+			break;
+		default:
+			break;
+		}
+
+	}
+
+	sym_clear_all_valid();
+
+	/*
+	 * We have different type of choice blocks.
+	 * If curr.tri equals to mod then we can select several
+	 * choice symbols in one block.
+	 * In this case we do nothing.
+	 * If curr.tri equals yes then only one symbol can be
+	 * selected in a choice block and we set it to yes,
+	 * and the rest to no.
+	 */
+	if (mode != def_random) {
+		for_all_symbols(i, csym) {
+			if ((sym_is_choice(csym) && !sym_has_value(csym)) ||
+			    sym_is_choice_value(csym))
+				csym->flags |= SYMBOL_NEED_SET_CHOICE_VALUES;
+		}
+	}
+
+	for_all_symbols(i, csym) {
+		if (sym_has_value(csym) || !sym_is_choice(csym))
+			continue;
+
+		sym_calc_value(csym);
+		if (mode == def_random)
+			has_changed |= randomize_choice_values(csym);
+		else {
+			set_all_choice_values(csym);
+			has_changed = true;
+		}
+	}
+
+	return has_changed;
+}
+
 static void conf_rewrite_mod_or_yes(enum conf_def_mode mode)
 {
 	struct symbol *sym;
diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c
index a828622cb2d0..198f70957fbf 100644
--- a/scripts/kconfig/confdata.c
+++ b/scripts/kconfig/confdata.c
@@ -1127,54 +1127,6 @@ void conf_set_changed_callback(void (*fn)(void))
 	conf_changed_callback = fn;
 }
 
-static bool randomize_choice_values(struct symbol *csym)
-{
-	struct property *prop;
-	struct symbol *sym;
-	struct expr *e;
-	int cnt, def;
-
-	/*
-	 * If choice is mod then we may have more items selected
-	 * and if no then no-one.
-	 * In both cases stop.
-	 */
-	if (csym->curr.tri != yes)
-		return false;
-
-	prop = sym_get_choice_prop(csym);
-
-	/* count entries in choice block */
-	cnt = 0;
-	expr_list_for_each_sym(prop->expr, e, sym)
-		cnt++;
-
-	/*
-	 * find a random value and set it to yes,
-	 * set the rest to no so we have only one set
-	 */
-	def = (rand() % cnt);
-
-	cnt = 0;
-	expr_list_for_each_sym(prop->expr, e, sym) {
-		if (def == cnt++) {
-			sym->def[S_DEF_USER].tri = yes;
-			csym->def[S_DEF_USER].val = sym;
-		}
-		else {
-			sym->def[S_DEF_USER].tri = no;
-		}
-		sym->flags |= SYMBOL_DEF_USER;
-		/* clear VALID to get value calculated */
-		sym->flags &= ~SYMBOL_VALID;
-	}
-	csym->flags |= SYMBOL_DEF_USER;
-	/* clear VALID to get value calculated */
-	csym->flags &= ~(SYMBOL_VALID);
-
-	return true;
-}
-
 void set_all_choice_values(struct symbol *csym)
 {
 	struct property *prop;
@@ -1194,131 +1146,3 @@ void set_all_choice_values(struct symbol *csym)
 	/* clear VALID to get value calculated */
 	csym->flags &= ~(SYMBOL_VALID | SYMBOL_NEED_SET_CHOICE_VALUES);
 }
-
-bool conf_set_all_new_symbols(enum conf_def_mode mode)
-{
-	struct symbol *sym, *csym;
-	int i, cnt, pby, pty, ptm;	/* pby: probability of bool     = y
-					 * pty: probability of tristate = y
-					 * ptm: probability of tristate = m
-					 */
-
-	pby = 50; pty = ptm = 33; /* can't go as the default in switch-case
-				   * below, otherwise gcc whines about
-				   * -Wmaybe-uninitialized */
-	if (mode == def_random) {
-		int n, p[3];
-		char *env = getenv("KCONFIG_PROBABILITY");
-		n = 0;
-		while( env && *env ) {
-			char *endp;
-			int tmp = strtol( env, &endp, 10 );
-			if( tmp >= 0 && tmp <= 100 ) {
-				p[n++] = tmp;
-			} else {
-				errno = ERANGE;
-				perror( "KCONFIG_PROBABILITY" );
-				exit( 1 );
-			}
-			env = (*endp == ':') ? endp+1 : endp;
-			if( n >=3 ) {
-				break;
-			}
-		}
-		switch( n ) {
-		case 1:
-			pby = p[0]; ptm = pby/2; pty = pby-ptm;
-			break;
-		case 2:
-			pty = p[0]; ptm = p[1]; pby = pty + ptm;
-			break;
-		case 3:
-			pby = p[0]; pty = p[1]; ptm = p[2];
-			break;
-		}
-
-		if( pty+ptm > 100 ) {
-			errno = ERANGE;
-			perror( "KCONFIG_PROBABILITY" );
-			exit( 1 );
-		}
-	}
-	bool has_changed = false;
-
-	for_all_symbols(i, sym) {
-		if (sym_has_value(sym) || (sym->flags & SYMBOL_VALID))
-			continue;
-		switch (sym_get_type(sym)) {
-		case S_BOOLEAN:
-		case S_TRISTATE:
-			has_changed = true;
-			switch (mode) {
-			case def_yes:
-				sym->def[S_DEF_USER].tri = yes;
-				break;
-			case def_mod:
-				sym->def[S_DEF_USER].tri = mod;
-				break;
-			case def_no:
-				if (sym->flags & SYMBOL_ALLNOCONFIG_Y)
-					sym->def[S_DEF_USER].tri = yes;
-				else
-					sym->def[S_DEF_USER].tri = no;
-				break;
-			case def_random:
-				sym->def[S_DEF_USER].tri = no;
-				cnt = rand() % 100;
-				if (sym->type == S_TRISTATE) {
-					if (cnt < pty)
-						sym->def[S_DEF_USER].tri = yes;
-					else if (cnt < (pty+ptm))
-						sym->def[S_DEF_USER].tri = mod;
-				} else if (cnt < pby)
-					sym->def[S_DEF_USER].tri = yes;
-				break;
-			default:
-				continue;
-			}
-			if (!(sym_is_choice(sym) && mode == def_random))
-				sym->flags |= SYMBOL_DEF_USER;
-			break;
-		default:
-			break;
-		}
-
-	}
-
-	sym_clear_all_valid();
-
-	/*
-	 * We have different type of choice blocks.
-	 * If curr.tri equals to mod then we can select several
-	 * choice symbols in one block.
-	 * In this case we do nothing.
-	 * If curr.tri equals yes then only one symbol can be
-	 * selected in a choice block and we set it to yes,
-	 * and the rest to no.
-	 */
-	if (mode != def_random) {
-		for_all_symbols(i, csym) {
-			if ((sym_is_choice(csym) && !sym_has_value(csym)) ||
-			    sym_is_choice_value(csym))
-				csym->flags |= SYMBOL_NEED_SET_CHOICE_VALUES;
-		}
-	}
-
-	for_all_symbols(i, csym) {
-		if (sym_has_value(csym) || !sym_is_choice(csym))
-			continue;
-
-		sym_calc_value(csym);
-		if (mode == def_random)
-			has_changed |= randomize_choice_values(csym);
-		else {
-			set_all_choice_values(csym);
-			has_changed = true;
-		}
-	}
-
-	return has_changed;
-}
diff --git a/scripts/kconfig/lkc.h b/scripts/kconfig/lkc.h
index f946ab49ef50..d0d5acecb530 100644
--- a/scripts/kconfig/lkc.h
+++ b/scripts/kconfig/lkc.h
@@ -57,7 +57,6 @@ const char *zconf_curname(void);
 const char *conf_get_configname(void);
 void sym_set_change_count(int count);
 void sym_add_change_count(int count);
-bool conf_set_all_new_symbols(enum conf_def_mode mode);
 void set_all_choice_values(struct symbol *csym);
 
 /* confdata.c and expr.c */
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 08/13] kconfig: move JUMP_NB to mconf.c
  2021-03-13 19:48 [PATCH 01/13] kconfig: split randconfig setup code into set_randconfig_seed() Masahiro Yamada
                   ` (5 preceding siblings ...)
  2021-03-13 19:48 ` [PATCH 07/13] kconfig: move conf_set_all_new_symbols() " Masahiro Yamada
@ 2021-03-13 19:48 ` Masahiro Yamada
  2021-03-13 19:48 ` [PATCH 09/13] kconfig: change defconfig_list option to environment variable Masahiro Yamada
                   ` (5 subsequent siblings)
  12 siblings, 0 replies; 20+ messages in thread
From: Masahiro Yamada @ 2021-03-13 19:48 UTC (permalink / raw)
  To: linux-kbuild; +Cc: Masahiro Yamada, linux-kernel

This macro is only used in mconf.c.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---

 scripts/kconfig/expr.h  | 2 --
 scripts/kconfig/mconf.c | 2 ++
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/scripts/kconfig/expr.h b/scripts/kconfig/expr.h
index 5c3443692f34..bbca80a0dc24 100644
--- a/scripts/kconfig/expr.h
+++ b/scripts/kconfig/expr.h
@@ -281,8 +281,6 @@ struct jump_key {
 	int index;
 };
 
-#define JUMP_NB			9
-
 extern struct file *file_list;
 extern struct file *current_file;
 struct file *lookup_file(const char *name);
diff --git a/scripts/kconfig/mconf.c b/scripts/kconfig/mconf.c
index 4063dbc1b927..01b6c27224e2 100644
--- a/scripts/kconfig/mconf.c
+++ b/scripts/kconfig/mconf.c
@@ -22,6 +22,8 @@
 #include "lkc.h"
 #include "lxdialog/dialog.h"
 
+#define JUMP_NB			9
+
 static const char mconf_readme[] =
 "Overview\n"
 "--------\n"
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 09/13] kconfig: change defconfig_list option to environment variable
  2021-03-13 19:48 [PATCH 01/13] kconfig: split randconfig setup code into set_randconfig_seed() Masahiro Yamada
                   ` (6 preceding siblings ...)
  2021-03-13 19:48 ` [PATCH 08/13] kconfig: move JUMP_NB to mconf.c Masahiro Yamada
@ 2021-03-13 19:48 ` Masahiro Yamada
  2021-03-13 19:48 ` [PATCH 10/13] kconfig: move default KBUILD_DEFCONFIG back to scripts/kconfig/Makefile Masahiro Yamada
                   ` (4 subsequent siblings)
  12 siblings, 0 replies; 20+ messages in thread
From: Masahiro Yamada @ 2021-03-13 19:48 UTC (permalink / raw)
  To: linux-kbuild
  Cc: Masahiro Yamada, Andrew Morton, David Howells, Johannes Weiner,
	Jonathan Corbet, KP Singh, Kees Cook, Michal Marek,
	Nathan Chancellor, Nick Desaulniers, Nick Terrell,
	Valentin Schneider, Vlastimil Babka, linux-doc, linux-kernel

"defconfig_list" is a weird option that defines static symbol that
declares the list of base config files in case the .config does not
exist yet.

This is quite different from other normal symbols; we just abused the
"string" type and the "default" properties to list out the input files.
They must be fixed values since these are searched for and loaded in
the parse stage.

It is an ugly hack, and should not exist in the first place. Providing
this features as an environment variable is a saner approach.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---

 Documentation/kbuild/kconfig-language.rst |  5 ---
 Documentation/kbuild/kconfig.rst          |  8 +++++
 init/Kconfig                              |  9 ------
 scripts/kconfig/Makefile                  | 10 ++++++
 scripts/kconfig/confdata.c                | 38 +++++++++++++++++------
 scripts/kconfig/expr.h                    |  1 -
 scripts/kconfig/lexer.l                   |  1 -
 scripts/kconfig/lkc.h                     |  1 -
 scripts/kconfig/menu.c                    |  9 ------
 scripts/kconfig/parser.y                  |  6 ----
 scripts/kconfig/symbol.c                  |  1 -
 scripts/kconfig/tests/conftest.py         |  4 +++
 12 files changed, 50 insertions(+), 43 deletions(-)

diff --git a/Documentation/kbuild/kconfig-language.rst b/Documentation/kbuild/kconfig-language.rst
index 226ae072da7d..3cbccfc42798 100644
--- a/Documentation/kbuild/kconfig-language.rst
+++ b/Documentation/kbuild/kconfig-language.rst
@@ -229,11 +229,6 @@ applicable everywhere (see syntax).
   which can modify the behaviour of the menu entry and its config
   symbol. These options are currently possible:
 
-  - "defconfig_list"
-    This declares a list of default entries which can be used when
-    looking for the default configuration (which is used when the main
-    .config doesn't exists yet.)
-
   - "modules"
     This declares the symbol to be used as the MODULES symbol, which
     enables the third modular state for all config symbols.
diff --git a/Documentation/kbuild/kconfig.rst b/Documentation/kbuild/kconfig.rst
index dce6801d66c9..5967c79c3baa 100644
--- a/Documentation/kbuild/kconfig.rst
+++ b/Documentation/kbuild/kconfig.rst
@@ -41,6 +41,14 @@ KCONFIG_CONFIG
 This environment variable can be used to specify a default kernel config
 file name to override the default name of ".config".
 
+KCONFIG_DEFCONFIG_LIST
+----------------------
+
+This environment variable specifies a list of config files which can be used
+as a base configuration in case the .config does not exist yet. Entries in
+the list are separated with whitespaces to each other, and the first one
+that exists is used.
+
 KCONFIG_OVERWRITECONFIG
 -----------------------
 If you set KCONFIG_OVERWRITECONFIG in the environment, Kconfig will not
diff --git a/init/Kconfig b/init/Kconfig
index 22946fe5ded9..46b87ad73f6a 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -1,13 +1,4 @@
 # SPDX-License-Identifier: GPL-2.0-only
-config DEFCONFIG_LIST
-	string
-	depends on !UML
-	option defconfig_list
-	default "/lib/modules/$(shell,uname -r)/.config"
-	default "/etc/kernel-config"
-	default "/boot/config-$(shell,uname -r)"
-	default "arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG)"
-
 config CC_VERSION_TEXT
 	string
 	default "$(CC_VERSION_TEXT)"
diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile
index 8c19b82c6035..31c5735663c8 100644
--- a/scripts/kconfig/Makefile
+++ b/scripts/kconfig/Makefile
@@ -13,6 +13,16 @@ ifeq ($(quiet),silent_)
 silent := -s
 endif
 
+export KCONFIG_DEFCONFIG_LIST :=
+ifneq ($(SRCARCH),um)
+kernel-release := $(shell uname -r)
+KCONFIG_DEFCONFIG_LIST := \
+	/lib/modules/$(kernel-release)/.config \
+	/etc/kernel-config \
+	/boot/config-$(kernel-release) \
+	arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG)
+endif
+
 # We need this, in case the user has it in its environment
 unexport CONFIG_
 
diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c
index 198f70957fbf..f3998d5ddd02 100644
--- a/scripts/kconfig/confdata.c
+++ b/scripts/kconfig/confdata.c
@@ -360,28 +360,46 @@ int conf_read_simple(const char *name, int def)
 	if (name) {
 		in = zconf_fopen(name);
 	} else {
-		struct property *prop;
+		char *env;
 
 		name = conf_get_configname();
 		in = zconf_fopen(name);
 		if (in)
 			goto load;
 		sym_add_change_count(1);
-		if (!sym_defconfig_list)
+
+		env = getenv("KCONFIG_DEFCONFIG_LIST");
+		if (!env)
 			return 1;
 
-		for_all_defaults(sym_defconfig_list, prop) {
-			if (expr_calc_value(prop->visible.expr) == no ||
-			    prop->expr->type != E_SYMBOL)
-				continue;
-			sym_calc_value(prop->expr->left.sym);
-			name = sym_get_string_value(prop->expr->left.sym);
-			in = zconf_fopen(name);
+		while (1) {
+			bool is_last;
+
+			while (isspace(*env))
+				env++;
+
+			if (!*env)
+				break;
+
+			p = env;
+			while (*p && !isspace(*p))
+				p++;
+
+			is_last = (*p == '\0');
+
+			*p = '\0';
+
+			in = zconf_fopen(env);
 			if (in) {
 				conf_message("using defaults found in %s",
-					 name);
+					     env);
 				goto load;
 			}
+
+			if (is_last)
+				break;
+
+			env = p + 1;
 		}
 	}
 	if (!in)
diff --git a/scripts/kconfig/expr.h b/scripts/kconfig/expr.h
index bbca80a0dc24..dc17152b1f14 100644
--- a/scripts/kconfig/expr.h
+++ b/scripts/kconfig/expr.h
@@ -287,7 +287,6 @@ struct file *lookup_file(const char *name);
 
 extern struct symbol symbol_yes, symbol_no, symbol_mod;
 extern struct symbol *modules_sym;
-extern struct symbol *sym_defconfig_list;
 extern int cdebug;
 struct expr *expr_alloc_symbol(struct symbol *sym);
 struct expr *expr_alloc_one(enum expr_type type, struct expr *ce);
diff --git a/scripts/kconfig/lexer.l b/scripts/kconfig/lexer.l
index 9c22cb554673..e918950f94a6 100644
--- a/scripts/kconfig/lexer.l
+++ b/scripts/kconfig/lexer.l
@@ -99,7 +99,6 @@ n	[A-Za-z0-9_-]
 "def_bool"		return T_DEF_BOOL;
 "def_tristate"		return T_DEF_TRISTATE;
 "default"		return T_DEFAULT;
-"defconfig_list"	return T_DEFCONFIG_LIST;
 "depends"		return T_DEPENDS;
 "endchoice"		return T_ENDCHOICE;
 "endif"			return T_ENDIF;
diff --git a/scripts/kconfig/lkc.h b/scripts/kconfig/lkc.h
index d0d5acecb530..8d89a6275197 100644
--- a/scripts/kconfig/lkc.h
+++ b/scripts/kconfig/lkc.h
@@ -106,7 +106,6 @@ struct property *menu_add_prompt(enum prop_type type, char *prompt, struct expr
 void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep);
 void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep);
 void menu_add_option_modules(void);
-void menu_add_option_defconfig_list(void);
 void menu_add_option_allnoconfig_y(void);
 void menu_finalize(struct menu *parent);
 void menu_set_type(int type);
diff --git a/scripts/kconfig/menu.c b/scripts/kconfig/menu.c
index a5fbd6ccc006..5dcfc173da41 100644
--- a/scripts/kconfig/menu.c
+++ b/scripts/kconfig/menu.c
@@ -219,15 +219,6 @@ void menu_add_option_modules(void)
 	modules_sym = current_entry->sym;
 }
 
-void menu_add_option_defconfig_list(void)
-{
-	if (!sym_defconfig_list)
-		sym_defconfig_list = current_entry->sym;
-	else if (sym_defconfig_list != current_entry->sym)
-		zconf_error("trying to redefine defconfig symbol");
-	sym_defconfig_list->flags |= SYMBOL_NO_WRITE;
-}
-
 void menu_add_option_allnoconfig_y(void)
 {
 	current_entry->sym->flags |= SYMBOL_ALLNOCONFIG_Y;
diff --git a/scripts/kconfig/parser.y b/scripts/kconfig/parser.y
index 190f1117f35a..f11d8382e9e6 100644
--- a/scripts/kconfig/parser.y
+++ b/scripts/kconfig/parser.y
@@ -53,7 +53,6 @@ static struct menu *current_menu, *current_entry;
 %token T_COMMENT
 %token T_CONFIG
 %token T_DEFAULT
-%token T_DEFCONFIG_LIST
 %token T_DEF_BOOL
 %token T_DEF_TRISTATE
 %token T_DEPENDS
@@ -223,11 +222,6 @@ config_option: T_OPTION T_MODULES T_EOL
 	menu_add_option_modules();
 };
 
-config_option: T_OPTION T_DEFCONFIG_LIST T_EOL
-{
-	menu_add_option_defconfig_list();
-};
-
 config_option: T_OPTION T_ALLNOCONFIG_Y T_EOL
 {
 	menu_add_option_allnoconfig_y();
diff --git a/scripts/kconfig/symbol.c b/scripts/kconfig/symbol.c
index fe38e6fd2c2a..36b0fcb18117 100644
--- a/scripts/kconfig/symbol.c
+++ b/scripts/kconfig/symbol.c
@@ -35,7 +35,6 @@ static struct symbol symbol_empty = {
 	.flags = SYMBOL_VALID,
 };
 
-struct symbol *sym_defconfig_list;
 struct symbol *modules_sym;
 static tristate modules_val;
 
diff --git a/scripts/kconfig/tests/conftest.py b/scripts/kconfig/tests/conftest.py
index 0345ef6e3273..af8774a5697c 100644
--- a/scripts/kconfig/tests/conftest.py
+++ b/scripts/kconfig/tests/conftest.py
@@ -53,6 +53,10 @@ class Conf:
         # Override 'srctree' environment to make the test as the top directory
         extra_env['srctree'] = self._test_dir
 
+        # Clear KCONFIG_DEFCONFIG_LIST to keep unit tests from being affected
+        # by the user's environment.
+        extra_env['KCONFIG_DEFCONFIG_LIST'] = ''
+
         # Run Kconfig in a temporary directory.
         # This directory is automatically removed when done.
         with tempfile.TemporaryDirectory() as temp_dir:
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 10/13] kconfig: move default KBUILD_DEFCONFIG back to scripts/kconfig/Makefile
  2021-03-13 19:48 [PATCH 01/13] kconfig: split randconfig setup code into set_randconfig_seed() Masahiro Yamada
                   ` (7 preceding siblings ...)
  2021-03-13 19:48 ` [PATCH 09/13] kconfig: change defconfig_list option to environment variable Masahiro Yamada
@ 2021-03-13 19:48 ` Masahiro Yamada
  2021-03-13 19:48 ` [PATCH 11/13] kconfig: do not use allnoconfig_y option Masahiro Yamada
                   ` (3 subsequent siblings)
  12 siblings, 0 replies; 20+ messages in thread
From: Masahiro Yamada @ 2021-03-13 19:48 UTC (permalink / raw)
  To: linux-kbuild; +Cc: Masahiro Yamada, Michal Marek, linux-kernel

This is a partial revert of commit 2a86f6612164 ("kbuild: use
KBUILD_DEFCONFIG as the fallback for DEFCONFIG_LIST").

Now that the reference to $(DEFCONFIG_LIST) was removed from
init/Kconfig, the default KBUILD_DEFCONFIG can go back home.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---

 Makefile                 | 3 ---
 scripts/kconfig/Makefile | 4 ++++
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/Makefile b/Makefile
index 31dcdb3d61fa..7d2304155e93 100644
--- a/Makefile
+++ b/Makefile
@@ -395,9 +395,6 @@ endif
 KCONFIG_CONFIG	?= .config
 export KCONFIG_CONFIG
 
-# Default file for 'make defconfig'. This may be overridden by arch-Makefile.
-export KBUILD_DEFCONFIG := defconfig
-
 # SHELL used by kbuild
 CONFIG_SHELL := sh
 
diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile
index 31c5735663c8..7df3c0e4c52e 100644
--- a/scripts/kconfig/Makefile
+++ b/scripts/kconfig/Makefile
@@ -9,6 +9,10 @@ else
 Kconfig := Kconfig
 endif
 
+ifndef KBUILD_DEFCONFIG
+KBUILD_DEFCONFIG := defconfig
+endif
+
 ifeq ($(quiet),silent_)
 silent := -s
 endif
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 11/13] kconfig: do not use allnoconfig_y option
  2021-03-13 19:48 [PATCH 01/13] kconfig: split randconfig setup code into set_randconfig_seed() Masahiro Yamada
                   ` (8 preceding siblings ...)
  2021-03-13 19:48 ` [PATCH 10/13] kconfig: move default KBUILD_DEFCONFIG back to scripts/kconfig/Makefile Masahiro Yamada
@ 2021-03-13 19:48 ` Masahiro Yamada
  2021-03-31 17:12   ` Guenter Roeck
  2021-03-13 19:48 ` [PATCH 12/13] kconfig: remove " Masahiro Yamada
                   ` (2 subsequent siblings)
  12 siblings, 1 reply; 20+ messages in thread
From: Masahiro Yamada @ 2021-03-13 19:48 UTC (permalink / raw)
  To: linux-kbuild
  Cc: Masahiro Yamada, Andrew Morton, David Howells, Johannes Weiner,
	KP Singh, Kees Cook, Nathan Chancellor, Nick Desaulniers,
	Nick Terrell, Valentin Schneider, Vlastimil Babka, linux-kernel

allnoconfig_y is a bad hack that sets a symbol to 'y' by allnoconfig.

allnoconfig does not mean a minimum set of CONFIG options because a
bunch of prompts are hidden by 'if EMBEDDED' or 'if EXPERT', but I do
not like to do a workaround this way.

Use the pre-existing feature, KCONFIG_ALLCONFIG, to provide a one
liner config fragment. CONFIG_EMBEDDED=y is still forced under
allnoconfig.

No change in the .config file produced by 'make tinyconfig'.

The output of 'make allnoconfig' will be changed; we will get
CONFIG_EMBEDDED=n because allnoconfig literally sets all symbols to n.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---

 init/Kconfig                    | 1 -
 kernel/configs/tiny-base.config | 1 +
 scripts/kconfig/Makefile        | 3 ++-
 3 files changed, 3 insertions(+), 2 deletions(-)
 create mode 100644 kernel/configs/tiny-base.config

diff --git a/init/Kconfig b/init/Kconfig
index 46b87ad73f6a..beb8314fdf96 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -1769,7 +1769,6 @@ config DEBUG_RSEQ
 
 config EMBEDDED
 	bool "Embedded system"
-	option allnoconfig_y
 	select EXPERT
 	help
 	  This option should be enabled if compiling the kernel for
diff --git a/kernel/configs/tiny-base.config b/kernel/configs/tiny-base.config
new file mode 100644
index 000000000000..2f0e6bf6db2c
--- /dev/null
+++ b/kernel/configs/tiny-base.config
@@ -0,0 +1 @@
+CONFIG_EMBEDDED=y
diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile
index 7df3c0e4c52e..46f2465177f0 100644
--- a/scripts/kconfig/Makefile
+++ b/scripts/kconfig/Makefile
@@ -102,7 +102,8 @@ configfiles=$(wildcard $(srctree)/kernel/configs/$@ $(srctree)/arch/$(SRCARCH)/c
 
 PHONY += tinyconfig
 tinyconfig:
-	$(Q)$(MAKE) -f $(srctree)/Makefile allnoconfig tiny.config
+	$(Q)KCONFIG_ALLCONFIG=kernel/configs/tiny-base.config $(MAKE) -f $(srctree)/Makefile allnoconfig
+	$(Q)$(MAKE) -f $(srctree)/Makefile tiny.config
 
 # CHECK: -o cache_dir=<path> working?
 PHONY += testconfig
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 12/13] kconfig: remove allnoconfig_y option
  2021-03-13 19:48 [PATCH 01/13] kconfig: split randconfig setup code into set_randconfig_seed() Masahiro Yamada
                   ` (9 preceding siblings ...)
  2021-03-13 19:48 ` [PATCH 11/13] kconfig: do not use allnoconfig_y option Masahiro Yamada
@ 2021-03-13 19:48 ` Masahiro Yamada
  2021-03-13 19:48 ` [PATCH 13/13] kconfig: change "modules" from sub-option to first-level attribute Masahiro Yamada
  2021-03-25  4:47 ` [PATCH 01/13] kconfig: split randconfig setup code into set_randconfig_seed() Masahiro Yamada
  12 siblings, 0 replies; 20+ messages in thread
From: Masahiro Yamada @ 2021-03-13 19:48 UTC (permalink / raw)
  To: linux-kbuild
  Cc: Masahiro Yamada, Jonathan Corbet, Michal Marek, linux-doc, linux-kernel

Now that the only user CONFIG_EMBEDDED has stopped using this option,
remove it entirely.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---

 Documentation/kbuild/kconfig-language.rst | 4 ----
 scripts/kconfig/conf.c                    | 5 +----
 scripts/kconfig/expr.h                    | 3 ---
 scripts/kconfig/lexer.l                   | 1 -
 scripts/kconfig/lkc.h                     | 1 -
 scripts/kconfig/menu.c                    | 5 -----
 scripts/kconfig/parser.y                  | 6 ------
 7 files changed, 1 insertion(+), 24 deletions(-)

diff --git a/Documentation/kbuild/kconfig-language.rst b/Documentation/kbuild/kconfig-language.rst
index 3cbccfc42798..4a796c601446 100644
--- a/Documentation/kbuild/kconfig-language.rst
+++ b/Documentation/kbuild/kconfig-language.rst
@@ -234,10 +234,6 @@ applicable everywhere (see syntax).
     enables the third modular state for all config symbols.
     At most one symbol may have the "modules" option set.
 
-  - "allnoconfig_y"
-    This declares the symbol as one that should have the value y when
-    using "allnoconfig". Used for symbols that hide other symbols.
-
 Menu dependencies
 -----------------
 
diff --git a/scripts/kconfig/conf.c b/scripts/kconfig/conf.c
index caad875da483..06901120a9ea 100644
--- a/scripts/kconfig/conf.c
+++ b/scripts/kconfig/conf.c
@@ -232,10 +232,7 @@ static bool conf_set_all_new_symbols(enum conf_def_mode mode)
 				sym->def[S_DEF_USER].tri = mod;
 				break;
 			case def_no:
-				if (sym->flags & SYMBOL_ALLNOCONFIG_Y)
-					sym->def[S_DEF_USER].tri = yes;
-				else
-					sym->def[S_DEF_USER].tri = no;
+				sym->def[S_DEF_USER].tri = no;
 				break;
 			case def_random:
 				sym->def[S_DEF_USER].tri = no;
diff --git a/scripts/kconfig/expr.h b/scripts/kconfig/expr.h
index dc17152b1f14..9c9caca5bd5f 100644
--- a/scripts/kconfig/expr.h
+++ b/scripts/kconfig/expr.h
@@ -156,9 +156,6 @@ struct symbol {
 /* choice values need to be set before calculating this symbol value */
 #define SYMBOL_NEED_SET_CHOICE_VALUES  0x100000
 
-/* Set symbol to y if allnoconfig; used for symbols that hide others */
-#define SYMBOL_ALLNOCONFIG_Y 0x200000
-
 #define SYMBOL_MAXLENGTH	256
 #define SYMBOL_HASHSIZE		9973
 
diff --git a/scripts/kconfig/lexer.l b/scripts/kconfig/lexer.l
index e918950f94a6..08c96a6ffe05 100644
--- a/scripts/kconfig/lexer.l
+++ b/scripts/kconfig/lexer.l
@@ -91,7 +91,6 @@ n	[A-Za-z0-9_-]
 [ \t]*			/* whitespaces */
 \\\n			/* escaped new line */
 \n			return T_EOL;
-"allnoconfig_y"		return T_ALLNOCONFIG_Y;
 "bool"			return T_BOOL;
 "choice"		return T_CHOICE;
 "comment"		return T_COMMENT;
diff --git a/scripts/kconfig/lkc.h b/scripts/kconfig/lkc.h
index 8d89a6275197..c1ab05f73ca2 100644
--- a/scripts/kconfig/lkc.h
+++ b/scripts/kconfig/lkc.h
@@ -106,7 +106,6 @@ struct property *menu_add_prompt(enum prop_type type, char *prompt, struct expr
 void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep);
 void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep);
 void menu_add_option_modules(void);
-void menu_add_option_allnoconfig_y(void);
 void menu_finalize(struct menu *parent);
 void menu_set_type(int type);
 
diff --git a/scripts/kconfig/menu.c b/scripts/kconfig/menu.c
index 5dcfc173da41..d50d0de55222 100644
--- a/scripts/kconfig/menu.c
+++ b/scripts/kconfig/menu.c
@@ -219,11 +219,6 @@ void menu_add_option_modules(void)
 	modules_sym = current_entry->sym;
 }
 
-void menu_add_option_allnoconfig_y(void)
-{
-	current_entry->sym->flags |= SYMBOL_ALLNOCONFIG_Y;
-}
-
 static int menu_validate_number(struct symbol *sym, struct symbol *sym2)
 {
 	return sym2->type == S_INT || sym2->type == S_HEX ||
diff --git a/scripts/kconfig/parser.y b/scripts/kconfig/parser.y
index f11d8382e9e6..2ada169c8b5d 100644
--- a/scripts/kconfig/parser.y
+++ b/scripts/kconfig/parser.y
@@ -45,7 +45,6 @@ static struct menu *current_menu, *current_entry;
 %token <string> T_HELPTEXT
 %token <string> T_WORD
 %token <string> T_WORD_QUOTE
-%token T_ALLNOCONFIG_Y
 %token T_BOOL
 %token T_CHOICE
 %token T_CLOSE_PAREN
@@ -222,11 +221,6 @@ config_option: T_OPTION T_MODULES T_EOL
 	menu_add_option_modules();
 };
 
-config_option: T_OPTION T_ALLNOCONFIG_Y T_EOL
-{
-	menu_add_option_allnoconfig_y();
-};
-
 /* choice entry */
 
 choice: T_CHOICE word_opt T_EOL
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 13/13] kconfig: change "modules" from sub-option to first-level attribute
  2021-03-13 19:48 [PATCH 01/13] kconfig: split randconfig setup code into set_randconfig_seed() Masahiro Yamada
                   ` (10 preceding siblings ...)
  2021-03-13 19:48 ` [PATCH 12/13] kconfig: remove " Masahiro Yamada
@ 2021-03-13 19:48 ` Masahiro Yamada
  2021-03-25  4:47 ` [PATCH 01/13] kconfig: split randconfig setup code into set_randconfig_seed() Masahiro Yamada
  12 siblings, 0 replies; 20+ messages in thread
From: Masahiro Yamada @ 2021-03-13 19:48 UTC (permalink / raw)
  To: linux-kbuild
  Cc: Masahiro Yamada, Andrew Morton, David Howells, Johannes Weiner,
	Jonathan Corbet, KP Singh, Kees Cook, Michal Marek,
	Nathan Chancellor, Nick Desaulniers, Nick Terrell,
	Valentin Schneider, Vlastimil Babka, linux-doc, linux-kernel

Now "modules" is the only member of the "option" property.

Remove "option", and move "modules" to the top level property.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---

 Documentation/kbuild/kconfig-language.rst          | 14 ++++----------
 init/Kconfig                                       |  2 +-
 scripts/kconfig/lexer.l                            |  1 -
 scripts/kconfig/lkc.h                              |  1 -
 scripts/kconfig/menu.c                             |  8 --------
 scripts/kconfig/parser.y                           |  8 +++++---
 scripts/kconfig/tests/choice/Kconfig               |  2 +-
 .../kconfig/tests/choice_value_with_m_dep/Kconfig  |  2 +-
 scripts/kconfig/tests/inter_choice/Kconfig         |  2 +-
 9 files changed, 13 insertions(+), 27 deletions(-)

diff --git a/Documentation/kbuild/kconfig-language.rst b/Documentation/kbuild/kconfig-language.rst
index 4a796c601446..98c24183d8c3 100644
--- a/Documentation/kbuild/kconfig-language.rst
+++ b/Documentation/kbuild/kconfig-language.rst
@@ -223,16 +223,10 @@ applicable everywhere (see syntax).
   the indentation level, this means it ends at the first line which has
   a smaller indentation than the first line of the help text.
 
-- misc options: "option" <symbol>[=<value>]
-
-  Various less common options can be defined via this option syntax,
-  which can modify the behaviour of the menu entry and its config
-  symbol. These options are currently possible:
-
-  - "modules"
-    This declares the symbol to be used as the MODULES symbol, which
-    enables the third modular state for all config symbols.
-    At most one symbol may have the "modules" option set.
+- module attribute: "modules"
+  This declares the symbol to be used as the MODULES symbol, which
+  enables the third modular state for all config symbols.
+  At most one symbol may have the "modules" option set.
 
 Menu dependencies
 -----------------
diff --git a/init/Kconfig b/init/Kconfig
index beb8314fdf96..5b71e1c0edb4 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -2043,7 +2043,7 @@ config MODULE_SIG_FORMAT
 
 menuconfig MODULES
 	bool "Enable loadable module support"
-	option modules
+	modules
 	help
 	  Kernel modules are small pieces of compiled code which can
 	  be inserted in the running kernel, rather than being
diff --git a/scripts/kconfig/lexer.l b/scripts/kconfig/lexer.l
index 08c96a6ffe05..312cbad2d34d 100644
--- a/scripts/kconfig/lexer.l
+++ b/scripts/kconfig/lexer.l
@@ -112,7 +112,6 @@ n	[A-Za-z0-9_-]
 "menuconfig"		return T_MENUCONFIG;
 "modules"		return T_MODULES;
 "on"			return T_ON;
-"option"		return T_OPTION;
 "optional"		return T_OPTIONAL;
 "prompt"		return T_PROMPT;
 "range"			return T_RANGE;
diff --git a/scripts/kconfig/lkc.h b/scripts/kconfig/lkc.h
index c1ab05f73ca2..246eba37ca0e 100644
--- a/scripts/kconfig/lkc.h
+++ b/scripts/kconfig/lkc.h
@@ -105,7 +105,6 @@ void menu_add_visibility(struct expr *dep);
 struct property *menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep);
 void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep);
 void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep);
-void menu_add_option_modules(void);
 void menu_finalize(struct menu *parent);
 void menu_set_type(int type);
 
diff --git a/scripts/kconfig/menu.c b/scripts/kconfig/menu.c
index d50d0de55222..8b2108b74821 100644
--- a/scripts/kconfig/menu.c
+++ b/scripts/kconfig/menu.c
@@ -211,14 +211,6 @@ void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep)
 	menu_add_prop(type, expr_alloc_symbol(sym), dep);
 }
 
-void menu_add_option_modules(void)
-{
-	if (modules_sym)
-		zconf_error("symbol '%s' redefines option 'modules' already defined by symbol '%s'",
-			    current_entry->sym->name, modules_sym->name);
-	modules_sym = current_entry->sym;
-}
-
 static int menu_validate_number(struct symbol *sym, struct symbol *sym2)
 {
 	return sym2->type == S_INT || sym2->type == S_HEX ||
diff --git a/scripts/kconfig/parser.y b/scripts/kconfig/parser.y
index 2ada169c8b5d..e46ce21a2fc4 100644
--- a/scripts/kconfig/parser.y
+++ b/scripts/kconfig/parser.y
@@ -69,7 +69,6 @@ static struct menu *current_menu, *current_entry;
 %token T_MODULES
 %token T_ON
 %token T_OPEN_PAREN
-%token T_OPTION
 %token T_OPTIONAL
 %token T_PLUS_EQUAL
 %token T_PROMPT
@@ -216,9 +215,12 @@ config_option: T_RANGE symbol symbol if_expr T_EOL
 	printd(DEBUG_PARSE, "%s:%d:range\n", zconf_curname(), zconf_lineno());
 };
 
-config_option: T_OPTION T_MODULES T_EOL
+config_option: T_MODULES T_EOL
 {
-	menu_add_option_modules();
+	if (modules_sym)
+		zconf_error("symbol '%s' redefines option 'modules' already defined by symbol '%s'",
+			    current_entry->sym->name, modules_sym->name);
+	modules_sym = current_entry->sym;
 };
 
 /* choice entry */
diff --git a/scripts/kconfig/tests/choice/Kconfig b/scripts/kconfig/tests/choice/Kconfig
index a412205b1b0c..0930eb65e932 100644
--- a/scripts/kconfig/tests/choice/Kconfig
+++ b/scripts/kconfig/tests/choice/Kconfig
@@ -2,7 +2,7 @@
 
 config MODULES
 	bool "Enable loadable module support"
-	option modules
+	modules
 	default y
 
 choice
diff --git a/scripts/kconfig/tests/choice_value_with_m_dep/Kconfig b/scripts/kconfig/tests/choice_value_with_m_dep/Kconfig
index 7106c26bb3a8..bd970cec07d6 100644
--- a/scripts/kconfig/tests/choice_value_with_m_dep/Kconfig
+++ b/scripts/kconfig/tests/choice_value_with_m_dep/Kconfig
@@ -2,7 +2,7 @@
 
 config MODULES
 	def_bool y
-	option modules
+	modules
 
 config DEP
 	tristate
diff --git a/scripts/kconfig/tests/inter_choice/Kconfig b/scripts/kconfig/tests/inter_choice/Kconfig
index 5698a4018dd0..26c25f68695b 100644
--- a/scripts/kconfig/tests/inter_choice/Kconfig
+++ b/scripts/kconfig/tests/inter_choice/Kconfig
@@ -2,7 +2,7 @@
 
 config MODULES
 	def_bool y
-	option modules
+	modules
 
 choice
 	prompt "Choice"
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* Re: [PATCH 07/13] kconfig: move conf_set_all_new_symbols() to conf.c
  2021-03-13 19:48 ` [PATCH 07/13] kconfig: move conf_set_all_new_symbols() " Masahiro Yamada
@ 2021-03-15 10:07   ` Boris Kolpackov
  2021-03-15 16:02     ` Masahiro Yamada
  0 siblings, 1 reply; 20+ messages in thread
From: Boris Kolpackov @ 2021-03-15 10:07 UTC (permalink / raw)
  To: Masahiro Yamada; +Cc: linux-kbuild, linux-kernel

Masahiro Yamada <masahiroy@kernel.org> writes:

> This function is only used in conf.c. Move it there together with the
> randomize_choice_values() helper.
>
> [...]
>
> diff --git a/scripts/kconfig/lkc.h b/scripts/kconfig/lkc.h
> index f946ab49ef50..d0d5acecb530 100644
> --- a/scripts/kconfig/lkc.h
> +++ b/scripts/kconfig/lkc.h
> @@ -57,7 +57,6 @@ const char *zconf_curname(void);
>  const char *conf_get_configname(void);
>  void sym_set_change_count(int count);
>  void sym_add_change_count(int count);
> -bool conf_set_all_new_symbols(enum conf_def_mode mode);
>  void set_all_choice_values(struct symbol *csym);

A number of people package kconfig as a library that is then used
in various projects outside of the Linux kernel. Removing this
function breaks the library ABI and potentially such project. For
example, I call conf_set_all_new_symbols() from my libbuild2-kconfig
build system module[1].

I know you don't care much for such out-of-kernel usage, still, this
(and the previous commit) feels like superficial reshuffling of code
and perhaps it's worth not breaking things unless there is something
substantial to gain?

[1] https://github.com/build2/libbuild2-kconfig/blob/master/libbuild2-kconfig/libbuild2/kconfig/init.cxx#L938

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 07/13] kconfig: move conf_set_all_new_symbols() to conf.c
  2021-03-15 10:07   ` Boris Kolpackov
@ 2021-03-15 16:02     ` Masahiro Yamada
  0 siblings, 0 replies; 20+ messages in thread
From: Masahiro Yamada @ 2021-03-15 16:02 UTC (permalink / raw)
  To: Boris Kolpackov; +Cc: Linux Kbuild mailing list, Linux Kernel Mailing List

On Mon, Mar 15, 2021 at 7:07 PM Boris Kolpackov <boris@codesynthesis.com> wrote:
>
> Masahiro Yamada <masahiroy@kernel.org> writes:
>
> > This function is only used in conf.c. Move it there together with the
> > randomize_choice_values() helper.
> >
> > [...]
> >
> > diff --git a/scripts/kconfig/lkc.h b/scripts/kconfig/lkc.h
> > index f946ab49ef50..d0d5acecb530 100644
> > --- a/scripts/kconfig/lkc.h
> > +++ b/scripts/kconfig/lkc.h
> > @@ -57,7 +57,6 @@ const char *zconf_curname(void);
> >  const char *conf_get_configname(void);
> >  void sym_set_change_count(int count);
> >  void sym_add_change_count(int count);
> > -bool conf_set_all_new_symbols(enum conf_def_mode mode);
> >  void set_all_choice_values(struct symbol *csym);
>
> A number of people package kconfig as a library that is then used
> in various projects outside of the Linux kernel. Removing this
> function breaks the library ABI and potentially such project. For
> example, I call conf_set_all_new_symbols() from my libbuild2-kconfig
> build system module[1].


There is no such ABI in Kconfig.


> I know you don't care much for such out-of-kernel usage, still, this
> (and the previous commit) feels like superficial reshuffling of code
> and perhaps it's worth not breaking things unless there is something
> substantial to gain?
>
> [1] https://github.com/build2/libbuild2-kconfig/blob/master/libbuild2-kconfig/libbuild2/kconfig/init.cxx#L938


confdata.c is linked to all flavors of Kconfig
(conf, mconf, gconf, and qconf).

conf_set_all_new_symbols() and randomize_choice_values()
are apparently only used by the text-base conf.
They need to go to the correct location.



-- 
Best Regards
Masahiro Yamada

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 01/13] kconfig: split randconfig setup code into set_randconfig_seed()
  2021-03-13 19:48 [PATCH 01/13] kconfig: split randconfig setup code into set_randconfig_seed() Masahiro Yamada
                   ` (11 preceding siblings ...)
  2021-03-13 19:48 ` [PATCH 13/13] kconfig: change "modules" from sub-option to first-level attribute Masahiro Yamada
@ 2021-03-25  4:47 ` Masahiro Yamada
  12 siblings, 0 replies; 20+ messages in thread
From: Masahiro Yamada @ 2021-03-25  4:47 UTC (permalink / raw)
  To: Linux Kbuild mailing list; +Cc: Linux Kernel Mailing List

On Sun, Mar 14, 2021 at 4:48 AM Masahiro Yamada <masahiroy@kernel.org> wrote:
>
> This code is too big to be placed in the switch statement.
>
> Move the code into a new helper function. I slightly refactor the code
> without changing the behavior.
>
> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
> ---

All applied to linux-kbuild/kconfig.




>  scripts/kconfig/conf.c | 54 ++++++++++++++++++++++++------------------
>  1 file changed, 31 insertions(+), 23 deletions(-)
>
> diff --git a/scripts/kconfig/conf.c b/scripts/kconfig/conf.c
> index 957d2a0832f7..063c9e7a34c1 100644
> --- a/scripts/kconfig/conf.c
> +++ b/scripts/kconfig/conf.c
> @@ -82,6 +82,36 @@ static void xfgets(char *str, int size, FILE *in)
>                 printf("%s", str);
>  }
>
> +static void set_randconfig_seed(void)
> +{
> +       unsigned int seed;
> +       char *env;
> +       bool seed_set = false;
> +
> +       env = getenv("KCONFIG_SEED");
> +       if (env && *env) {
> +               char *endp;
> +
> +               seed = strtol(env, &endp, 0);
> +               if (*endp == '\0')
> +                       seed_set = true;
> +       }
> +
> +       if (!seed_set) {
> +               struct timeval now;
> +
> +               /*
> +                * Use microseconds derived seed, compensate for systems where it may
> +                * be zero.
> +                */
> +               gettimeofday(&now, NULL);
> +               seed = (now.tv_sec + 1) * (now.tv_usec + 1);
> +       }
> +
> +       printf("KCONFIG_SEED=0x%X\n", seed);
> +       srand(seed);
> +}
> +
>  static int conf_askvalue(struct symbol *sym, const char *def)
>  {
>         if (!sym_has_value(sym))
> @@ -515,30 +545,8 @@ int main(int ac, char **av)
>                         defconfig_file = optarg;
>                         break;
>                 case randconfig:
> -               {
> -                       struct timeval now;
> -                       unsigned int seed;
> -                       char *seed_env;
> -
> -                       /*
> -                        * Use microseconds derived seed,
> -                        * compensate for systems where it may be zero
> -                        */
> -                       gettimeofday(&now, NULL);
> -                       seed = (unsigned int)((now.tv_sec + 1) * (now.tv_usec + 1));
> -
> -                       seed_env = getenv("KCONFIG_SEED");
> -                       if( seed_env && *seed_env ) {
> -                               char *endp;
> -                               int tmp = (int)strtol(seed_env, &endp, 0);
> -                               if (*endp == '\0') {
> -                                       seed = tmp;
> -                               }
> -                       }
> -                       fprintf( stderr, "KCONFIG_SEED=0x%X\n", seed );
> -                       srand(seed);
> +                       set_randconfig_seed();
>                         break;
> -               }
>                 case oldaskconfig:
>                 case oldconfig:
>                 case allnoconfig:
> --
> 2.27.0
>


-- 
Best Regards
Masahiro Yamada

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 11/13] kconfig: do not use allnoconfig_y option
  2021-03-13 19:48 ` [PATCH 11/13] kconfig: do not use allnoconfig_y option Masahiro Yamada
@ 2021-03-31 17:12   ` Guenter Roeck
  2021-03-31 18:25     ` Nick Desaulniers
  0 siblings, 1 reply; 20+ messages in thread
From: Guenter Roeck @ 2021-03-31 17:12 UTC (permalink / raw)
  To: Masahiro Yamada
  Cc: linux-kbuild, Andrew Morton, David Howells, Johannes Weiner,
	KP Singh, Kees Cook, Nathan Chancellor, Nick Desaulniers,
	Nick Terrell, Valentin Schneider, Vlastimil Babka, linux-kernel

On Sun, Mar 14, 2021 at 04:48:34AM +0900, Masahiro Yamada wrote:
> allnoconfig_y is a bad hack that sets a symbol to 'y' by allnoconfig.
> 
> allnoconfig does not mean a minimum set of CONFIG options because a
> bunch of prompts are hidden by 'if EMBEDDED' or 'if EXPERT', but I do
> not like to do a workaround this way.
> 
> Use the pre-existing feature, KCONFIG_ALLCONFIG, to provide a one
> liner config fragment. CONFIG_EMBEDDED=y is still forced under
> allnoconfig.
> 
> No change in the .config file produced by 'make tinyconfig'.
> 
> The output of 'make allnoconfig' will be changed; we will get
> CONFIG_EMBEDDED=n because allnoconfig literally sets all symbols to n.
> 
> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>

With this patch in place, mips:allnoconfig fails to build with
the following error.

Error log:
WARNING: modpost: vmlinux.o(.text+0x9c70): Section mismatch in reference from the function reserve_exception_space() to the function .meminit.text:memblock_reserve()
The function reserve_exception_space() references
the function __meminit memblock_reserve().
This is often because reserve_exception_space lacks a __meminit
annotation or the annotation of memblock_reserve is wrong.
ERROR: modpost: Section mismatches detected.
Set CONFIG_SECTION_MISMATCH_WARN_ONLY=y to allow them.
make[2]: *** [scripts/Makefile.modpost:62: vmlinux.symvers] Error 1
make[2]: *** Deleting file 'vmlinux.symvers'
make[1]: *** [Makefile:1292: vmlinux] Error 2
make: *** [Makefile:222: __sub-make] Error 2

Guenter

> ---
> 
>  init/Kconfig                    | 1 -
>  kernel/configs/tiny-base.config | 1 +
>  scripts/kconfig/Makefile        | 3 ++-
>  3 files changed, 3 insertions(+), 2 deletions(-)
>  create mode 100644 kernel/configs/tiny-base.config
> 
> diff --git a/init/Kconfig b/init/Kconfig
> index 46b87ad73f6a..beb8314fdf96 100644
> --- a/init/Kconfig
> +++ b/init/Kconfig
> @@ -1769,7 +1769,6 @@ config DEBUG_RSEQ
>  
>  config EMBEDDED
>  	bool "Embedded system"
> -	option allnoconfig_y
>  	select EXPERT
>  	help
>  	  This option should be enabled if compiling the kernel for
> diff --git a/kernel/configs/tiny-base.config b/kernel/configs/tiny-base.config
> new file mode 100644
> index 000000000000..2f0e6bf6db2c
> --- /dev/null
> +++ b/kernel/configs/tiny-base.config
> @@ -0,0 +1 @@
> +CONFIG_EMBEDDED=y
> diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile
> index 7df3c0e4c52e..46f2465177f0 100644
> --- a/scripts/kconfig/Makefile
> +++ b/scripts/kconfig/Makefile
> @@ -102,7 +102,8 @@ configfiles=$(wildcard $(srctree)/kernel/configs/$@ $(srctree)/arch/$(SRCARCH)/c
>  
>  PHONY += tinyconfig
>  tinyconfig:
> -	$(Q)$(MAKE) -f $(srctree)/Makefile allnoconfig tiny.config
> +	$(Q)KCONFIG_ALLCONFIG=kernel/configs/tiny-base.config $(MAKE) -f $(srctree)/Makefile allnoconfig
> +	$(Q)$(MAKE) -f $(srctree)/Makefile tiny.config
>  
>  # CHECK: -o cache_dir=<path> working?
>  PHONY += testconfig
> -- 
> 2.27.0
> 

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 11/13] kconfig: do not use allnoconfig_y option
  2021-03-31 17:12   ` Guenter Roeck
@ 2021-03-31 18:25     ` Nick Desaulniers
  2021-04-05 14:56       ` Guenter Roeck
  2021-04-07 12:02       ` Masahiro Yamada
  0 siblings, 2 replies; 20+ messages in thread
From: Nick Desaulniers @ 2021-03-31 18:25 UTC (permalink / raw)
  To: Guenter Roeck, Masahiro Yamada, Tiezhu Yang
  Cc: Linux Kbuild mailing list, Andrew Morton, David Howells,
	Johannes Weiner, KP Singh, Kees Cook, Nathan Chancellor,
	Nick Terrell, Valentin Schneider, Vlastimil Babka, LKML,
	linux-mips

On Wed, Mar 31, 2021 at 10:12 AM Guenter Roeck <linux@roeck-us.net> wrote:
>
> On Sun, Mar 14, 2021 at 04:48:34AM +0900, Masahiro Yamada wrote:
> > allnoconfig_y is a bad hack that sets a symbol to 'y' by allnoconfig.
> >
> > allnoconfig does not mean a minimum set of CONFIG options because a
> > bunch of prompts are hidden by 'if EMBEDDED' or 'if EXPERT', but I do
> > not like to do a workaround this way.
> >
> > Use the pre-existing feature, KCONFIG_ALLCONFIG, to provide a one
> > liner config fragment. CONFIG_EMBEDDED=y is still forced under
> > allnoconfig.
> >
> > No change in the .config file produced by 'make tinyconfig'.
> >
> > The output of 'make allnoconfig' will be changed; we will get
> > CONFIG_EMBEDDED=n because allnoconfig literally sets all symbols to n.
> >
> > Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
>
> With this patch in place, mips:allnoconfig fails to build with
> the following error.
>
> Error log:
> WARNING: modpost: vmlinux.o(.text+0x9c70): Section mismatch in reference from the function reserve_exception_space() to the function .meminit.text:memblock_reserve()
> The function reserve_exception_space() references
> the function __meminit memblock_reserve().
> This is often because reserve_exception_space lacks a __meminit
> annotation or the annotation of memblock_reserve is wrong.
> ERROR: modpost: Section mismatches detected.
> Set CONFIG_SECTION_MISMATCH_WARN_ONLY=y to allow them.
> make[2]: *** [scripts/Makefile.modpost:62: vmlinux.symvers] Error 1
> make[2]: *** Deleting file 'vmlinux.symvers'
> make[1]: *** [Makefile:1292: vmlinux] Error 2
> make: *** [Makefile:222: __sub-make] Error 2

Thanks for the report. I suspect this is related to allnoconfig
disabling CONFIG_ARCH_KEEP_MEMBLOCK, which changes the definition of
__init_memblock in include/linux/memblock.h.

So allnoconfig would unselect CONFIG_ARCH_KEEP_MEMBLOCK, making
__init_memblock equivalent to __meminit triggering the above warning.

arch/mips/Kconfig
14:     select ARCH_KEEP_MEMBLOCK if DEBUG_KERNEL

so DEBUG_KERNEL is probably also disabled by allnoconfig.

commit a8c0f1c634507 ("MIPS: Select ARCH_KEEP_MEMBLOCK if DEBUG_KERNEL
to enable sysfs memblock debug")

probably should drop the `if DEBUG_KERNEL` part.

>
> Guenter
>
> > ---
> >
> >  init/Kconfig                    | 1 -
> >  kernel/configs/tiny-base.config | 1 +
> >  scripts/kconfig/Makefile        | 3 ++-
> >  3 files changed, 3 insertions(+), 2 deletions(-)
> >  create mode 100644 kernel/configs/tiny-base.config
> >
> > diff --git a/init/Kconfig b/init/Kconfig
> > index 46b87ad73f6a..beb8314fdf96 100644
> > --- a/init/Kconfig
> > +++ b/init/Kconfig
> > @@ -1769,7 +1769,6 @@ config DEBUG_RSEQ
> >
> >  config EMBEDDED
> >       bool "Embedded system"
> > -     option allnoconfig_y
> >       select EXPERT
> >       help
> >         This option should be enabled if compiling the kernel for
> > diff --git a/kernel/configs/tiny-base.config b/kernel/configs/tiny-base.config
> > new file mode 100644
> > index 000000000000..2f0e6bf6db2c
> > --- /dev/null
> > +++ b/kernel/configs/tiny-base.config
> > @@ -0,0 +1 @@
> > +CONFIG_EMBEDDED=y
> > diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile
> > index 7df3c0e4c52e..46f2465177f0 100644
> > --- a/scripts/kconfig/Makefile
> > +++ b/scripts/kconfig/Makefile
> > @@ -102,7 +102,8 @@ configfiles=$(wildcard $(srctree)/kernel/configs/$@ $(srctree)/arch/$(SRCARCH)/c
> >
> >  PHONY += tinyconfig
> >  tinyconfig:
> > -     $(Q)$(MAKE) -f $(srctree)/Makefile allnoconfig tiny.config
> > +     $(Q)KCONFIG_ALLCONFIG=kernel/configs/tiny-base.config $(MAKE) -f $(srctree)/Makefile allnoconfig
> > +     $(Q)$(MAKE) -f $(srctree)/Makefile tiny.config
> >
> >  # CHECK: -o cache_dir=<path> working?
> >  PHONY += testconfig
> > --
> > 2.27.0
> >



-- 
Thanks,
~Nick Desaulniers

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 11/13] kconfig: do not use allnoconfig_y option
  2021-03-31 18:25     ` Nick Desaulniers
@ 2021-04-05 14:56       ` Guenter Roeck
  2021-04-07 12:02       ` Masahiro Yamada
  1 sibling, 0 replies; 20+ messages in thread
From: Guenter Roeck @ 2021-04-05 14:56 UTC (permalink / raw)
  To: Nick Desaulniers, Masahiro Yamada, Tiezhu Yang
  Cc: Linux Kbuild mailing list, Andrew Morton, David Howells,
	Johannes Weiner, KP Singh, Kees Cook, Nathan Chancellor,
	Nick Terrell, Valentin Schneider, Vlastimil Babka, LKML,
	linux-mips

On 3/31/21 11:25 AM, Nick Desaulniers wrote:
> On Wed, Mar 31, 2021 at 10:12 AM Guenter Roeck <linux@roeck-us.net> wrote:
>>
>> On Sun, Mar 14, 2021 at 04:48:34AM +0900, Masahiro Yamada wrote:
>>> allnoconfig_y is a bad hack that sets a symbol to 'y' by allnoconfig.
>>>
>>> allnoconfig does not mean a minimum set of CONFIG options because a
>>> bunch of prompts are hidden by 'if EMBEDDED' or 'if EXPERT', but I do
>>> not like to do a workaround this way.
>>>
>>> Use the pre-existing feature, KCONFIG_ALLCONFIG, to provide a one
>>> liner config fragment. CONFIG_EMBEDDED=y is still forced under
>>> allnoconfig.
>>>
>>> No change in the .config file produced by 'make tinyconfig'.
>>>
>>> The output of 'make allnoconfig' will be changed; we will get
>>> CONFIG_EMBEDDED=n because allnoconfig literally sets all symbols to n.
>>>
>>> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
>>
>> With this patch in place, mips:allnoconfig fails to build with
>> the following error.
>>
>> Error log:
>> WARNING: modpost: vmlinux.o(.text+0x9c70): Section mismatch in reference from the function reserve_exception_space() to the function .meminit.text:memblock_reserve()
>> The function reserve_exception_space() references
>> the function __meminit memblock_reserve().
>> This is often because reserve_exception_space lacks a __meminit
>> annotation or the annotation of memblock_reserve is wrong.
>> ERROR: modpost: Section mismatches detected.
>> Set CONFIG_SECTION_MISMATCH_WARN_ONLY=y to allow them.
>> make[2]: *** [scripts/Makefile.modpost:62: vmlinux.symvers] Error 1
>> make[2]: *** Deleting file 'vmlinux.symvers'
>> make[1]: *** [Makefile:1292: vmlinux] Error 2
>> make: *** [Makefile:222: __sub-make] Error 2
> 
> Thanks for the report. I suspect this is related to allnoconfig
> disabling CONFIG_ARCH_KEEP_MEMBLOCK, which changes the definition of
> __init_memblock in include/linux/memblock.h.
> 
> So allnoconfig would unselect CONFIG_ARCH_KEEP_MEMBLOCK, making
> __init_memblock equivalent to __meminit triggering the above warning.
> 
> arch/mips/Kconfig
> 14:     select ARCH_KEEP_MEMBLOCK if DEBUG_KERNEL
> 
> so DEBUG_KERNEL is probably also disabled by allnoconfig.
> 
> commit a8c0f1c634507 ("MIPS: Select ARCH_KEEP_MEMBLOCK if DEBUG_KERNEL
> to enable sysfs memblock debug")
> 
> probably should drop the `if DEBUG_KERNEL` part.
> 

Agreed.

Guenter

>>
>> Guenter
>>
>>> ---
>>>
>>>  init/Kconfig                    | 1 -
>>>  kernel/configs/tiny-base.config | 1 +
>>>  scripts/kconfig/Makefile        | 3 ++-
>>>  3 files changed, 3 insertions(+), 2 deletions(-)
>>>  create mode 100644 kernel/configs/tiny-base.config
>>>
>>> diff --git a/init/Kconfig b/init/Kconfig
>>> index 46b87ad73f6a..beb8314fdf96 100644
>>> --- a/init/Kconfig
>>> +++ b/init/Kconfig
>>> @@ -1769,7 +1769,6 @@ config DEBUG_RSEQ
>>>
>>>  config EMBEDDED
>>>       bool "Embedded system"
>>> -     option allnoconfig_y
>>>       select EXPERT
>>>       help
>>>         This option should be enabled if compiling the kernel for
>>> diff --git a/kernel/configs/tiny-base.config b/kernel/configs/tiny-base.config
>>> new file mode 100644
>>> index 000000000000..2f0e6bf6db2c
>>> --- /dev/null
>>> +++ b/kernel/configs/tiny-base.config
>>> @@ -0,0 +1 @@
>>> +CONFIG_EMBEDDED=y
>>> diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile
>>> index 7df3c0e4c52e..46f2465177f0 100644
>>> --- a/scripts/kconfig/Makefile
>>> +++ b/scripts/kconfig/Makefile
>>> @@ -102,7 +102,8 @@ configfiles=$(wildcard $(srctree)/kernel/configs/$@ $(srctree)/arch/$(SRCARCH)/c
>>>
>>>  PHONY += tinyconfig
>>>  tinyconfig:
>>> -     $(Q)$(MAKE) -f $(srctree)/Makefile allnoconfig tiny.config
>>> +     $(Q)KCONFIG_ALLCONFIG=kernel/configs/tiny-base.config $(MAKE) -f $(srctree)/Makefile allnoconfig
>>> +     $(Q)$(MAKE) -f $(srctree)/Makefile tiny.config
>>>
>>>  # CHECK: -o cache_dir=<path> working?
>>>  PHONY += testconfig
>>> --
>>> 2.27.0
>>>
> 
> 
> 


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 11/13] kconfig: do not use allnoconfig_y option
  2021-03-31 18:25     ` Nick Desaulniers
  2021-04-05 14:56       ` Guenter Roeck
@ 2021-04-07 12:02       ` Masahiro Yamada
  1 sibling, 0 replies; 20+ messages in thread
From: Masahiro Yamada @ 2021-04-07 12:02 UTC (permalink / raw)
  To: Nick Desaulniers
  Cc: Guenter Roeck, Tiezhu Yang, Linux Kbuild mailing list,
	Andrew Morton, David Howells, Johannes Weiner, KP Singh,
	Kees Cook, Nathan Chancellor, Nick Terrell, Valentin Schneider,
	Vlastimil Babka, LKML, linux-mips

On Thu, Apr 1, 2021 at 3:25 AM Nick Desaulniers <ndesaulniers@google.com> wrote:
>
> On Wed, Mar 31, 2021 at 10:12 AM Guenter Roeck <linux@roeck-us.net> wrote:
> >
> > On Sun, Mar 14, 2021 at 04:48:34AM +0900, Masahiro Yamada wrote:
> > > allnoconfig_y is a bad hack that sets a symbol to 'y' by allnoconfig.
> > >
> > > allnoconfig does not mean a minimum set of CONFIG options because a
> > > bunch of prompts are hidden by 'if EMBEDDED' or 'if EXPERT', but I do
> > > not like to do a workaround this way.
> > >
> > > Use the pre-existing feature, KCONFIG_ALLCONFIG, to provide a one
> > > liner config fragment. CONFIG_EMBEDDED=y is still forced under
> > > allnoconfig.
> > >
> > > No change in the .config file produced by 'make tinyconfig'.
> > >
> > > The output of 'make allnoconfig' will be changed; we will get
> > > CONFIG_EMBEDDED=n because allnoconfig literally sets all symbols to n.
> > >
> > > Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
> >
> > With this patch in place, mips:allnoconfig fails to build with
> > the following error.
> >
> > Error log:
> > WARNING: modpost: vmlinux.o(.text+0x9c70): Section mismatch in reference from the function reserve_exception_space() to the function .meminit.text:memblock_reserve()
> > The function reserve_exception_space() references
> > the function __meminit memblock_reserve().
> > This is often because reserve_exception_space lacks a __meminit
> > annotation or the annotation of memblock_reserve is wrong.
> > ERROR: modpost: Section mismatches detected.
> > Set CONFIG_SECTION_MISMATCH_WARN_ONLY=y to allow them.
> > make[2]: *** [scripts/Makefile.modpost:62: vmlinux.symvers] Error 1
> > make[2]: *** Deleting file 'vmlinux.symvers'
> > make[1]: *** [Makefile:1292: vmlinux] Error 2
> > make: *** [Makefile:222: __sub-make] Error 2
>
> Thanks for the report. I suspect this is related to allnoconfig
> disabling CONFIG_ARCH_KEEP_MEMBLOCK, which changes the definition of
> __init_memblock in include/linux/memblock.h.
>
> So allnoconfig would unselect CONFIG_ARCH_KEEP_MEMBLOCK, making
> __init_memblock equivalent to __meminit triggering the above warning.
>
> arch/mips/Kconfig
> 14:     select ARCH_KEEP_MEMBLOCK if DEBUG_KERNEL
>
> so DEBUG_KERNEL is probably also disabled by allnoconfig.
>
> commit a8c0f1c634507 ("MIPS: Select ARCH_KEEP_MEMBLOCK if DEBUG_KERNEL
> to enable sysfs memblock debug")
>
> probably should drop the `if DEBUG_KERNEL` part.


Thanks.
Could you please send a patch to mips ML?




> >
> > Guenter
> >
> > > ---
> > >
> > >  init/Kconfig                    | 1 -
> > >  kernel/configs/tiny-base.config | 1 +
> > >  scripts/kconfig/Makefile        | 3 ++-
> > >  3 files changed, 3 insertions(+), 2 deletions(-)
> > >  create mode 100644 kernel/configs/tiny-base.config
> > >
> > > diff --git a/init/Kconfig b/init/Kconfig
> > > index 46b87ad73f6a..beb8314fdf96 100644
> > > --- a/init/Kconfig
> > > +++ b/init/Kconfig
> > > @@ -1769,7 +1769,6 @@ config DEBUG_RSEQ
> > >
> > >  config EMBEDDED
> > >       bool "Embedded system"
> > > -     option allnoconfig_y
> > >       select EXPERT
> > >       help
> > >         This option should be enabled if compiling the kernel for
> > > diff --git a/kernel/configs/tiny-base.config b/kernel/configs/tiny-base.config
> > > new file mode 100644
> > > index 000000000000..2f0e6bf6db2c
> > > --- /dev/null
> > > +++ b/kernel/configs/tiny-base.config
> > > @@ -0,0 +1 @@
> > > +CONFIG_EMBEDDED=y
> > > diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile
> > > index 7df3c0e4c52e..46f2465177f0 100644
> > > --- a/scripts/kconfig/Makefile
> > > +++ b/scripts/kconfig/Makefile
> > > @@ -102,7 +102,8 @@ configfiles=$(wildcard $(srctree)/kernel/configs/$@ $(srctree)/arch/$(SRCARCH)/c
> > >
> > >  PHONY += tinyconfig
> > >  tinyconfig:
> > > -     $(Q)$(MAKE) -f $(srctree)/Makefile allnoconfig tiny.config
> > > +     $(Q)KCONFIG_ALLCONFIG=kernel/configs/tiny-base.config $(MAKE) -f $(srctree)/Makefile allnoconfig
> > > +     $(Q)$(MAKE) -f $(srctree)/Makefile tiny.config
> > >
> > >  # CHECK: -o cache_dir=<path> working?
> > >  PHONY += testconfig
> > > --
> > > 2.27.0
> > >
>
>
>
> --
> Thanks,
> ~Nick Desaulniers



-- 
Best Regards
Masahiro Yamada

^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2021-04-07 12:03 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-13 19:48 [PATCH 01/13] kconfig: split randconfig setup code into set_randconfig_seed() Masahiro Yamada
2021-03-13 19:48 ` [PATCH 02/13] kconfig: refactor option parse Masahiro Yamada
2021-03-13 19:48 ` [PATCH 03/13] kconfig: add long options --help and --silent Masahiro Yamada
2021-03-13 19:48 ` [PATCH 04/13] kconfig: add help messages for --help (-h) and --silent (-s) Masahiro Yamada
2021-03-13 19:48 ` [PATCH 05/13] kconfig: remove assignment for Kconfig file Masahiro Yamada
2021-03-13 19:48 ` [PATCH 06/13] kconfig: move conf_rewrite_mod_or_yes() to conf.c Masahiro Yamada
2021-03-13 19:48 ` [PATCH 07/13] kconfig: move conf_set_all_new_symbols() " Masahiro Yamada
2021-03-15 10:07   ` Boris Kolpackov
2021-03-15 16:02     ` Masahiro Yamada
2021-03-13 19:48 ` [PATCH 08/13] kconfig: move JUMP_NB to mconf.c Masahiro Yamada
2021-03-13 19:48 ` [PATCH 09/13] kconfig: change defconfig_list option to environment variable Masahiro Yamada
2021-03-13 19:48 ` [PATCH 10/13] kconfig: move default KBUILD_DEFCONFIG back to scripts/kconfig/Makefile Masahiro Yamada
2021-03-13 19:48 ` [PATCH 11/13] kconfig: do not use allnoconfig_y option Masahiro Yamada
2021-03-31 17:12   ` Guenter Roeck
2021-03-31 18:25     ` Nick Desaulniers
2021-04-05 14:56       ` Guenter Roeck
2021-04-07 12:02       ` Masahiro Yamada
2021-03-13 19:48 ` [PATCH 12/13] kconfig: remove " Masahiro Yamada
2021-03-13 19:48 ` [PATCH 13/13] kconfig: change "modules" from sub-option to first-level attribute Masahiro Yamada
2021-03-25  4:47 ` [PATCH 01/13] kconfig: split randconfig setup code into set_randconfig_seed() Masahiro Yamada

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.