On Thu, 06 May 2010 15:48:35 -0500 James Bottomley wrote: > On Thu, 2010-05-06 at 09:52 -0500, James Bottomley wrote: > > The list is > > > > USB_ARCH_HAS_HCD has 4 defaults > > DEFCONFIG_LIST has 5 defaults > > MAC80211_RC_DEFAULT has 2 defaults > > X86_L1_CACHE_SHIFT has 2 defaults > > SPLIT_PTLOCK_CPUS has 2 defaults > > X86_MINIMUM_CPU_FAMILY has 3 defaults > > DEFAULT_TCP_CONG has 2 defaults > > DEFCONFIG_LIST has 5 defaults > > USB_ARCH_HAS_HCD has 4 defaults > > X86_L1_CACHE_SHIFT has 2 defaults > > X86_MINIMUM_CPU_FAMILY has 3 defaults > > SPLIT_PTLOCK_CPUS has 2 defaults > > DEFAULT_TCP_CONG has 2 defaults > > MAC80211_RC_DEFAULT has 2 defaults > > Here's a patch that alters the default processing to the needed form and > checks the old vs new values. I've been running randconfigs but I can't > get the warning to trip ... have at it. > I don't see the warning, but I took a problem config from linux-next 2010-0506 (today) [attached]. In it, CONFIG_TCG_BIOS_LOG=y and that selects ACPI, so now ACPI is enabled, but ACPI depends on PM and PCI, but they are still not selected... or is this only step 1 of a multi-step implementation? > > --- > > diff --git a/scripts/kconfig/symbol.c b/scripts/kconfig/symbol.c > index 6c8fbbb..722bc4e 100644 > --- a/scripts/kconfig/symbol.c > +++ b/scripts/kconfig/symbol.c > @@ -115,14 +115,31 @@ struct property *sym_get_env_prop(struct symbol *sym) > > struct property *sym_get_default_prop(struct symbol *sym) > { > - struct property *prop; > + struct property *prop, *ret = NULL; > + tristate old_val = no, val = no; > > for_all_defaults(sym, prop) { > prop->visible.tri = expr_calc_value(prop->visible.expr); > - if (prop->visible.tri != no) > - return prop; > + if (prop->visible.tri != no) { > + tristate v = expr_calc_value(prop->expr); > + if (!ret) > + old_val = v; > + if (v >= val) { > + val = v; > + ret = prop; > + } > + } > } > - return NULL; > + /* > + * Previously, we took the first valid default we found (this > + * is now old_val). In the new scheme, the value is the or of > + * all the defaults. > + */ > + if (old_val != val) > + menu_warn(ret->menu, "ERROR: new parser has inconsistent " > + "values for %s (%d != %d)\n", sym->name, > + old_val, val); > + return ret; > } > > static struct property *sym_get_range_prop(struct symbol *sym) --- ~Randy *** Remember to use Documentation/SubmitChecklist when testing your code ***
Attachment:
config-tpm
Description: Binary data