16 Nov, 2016

1 commit

  • The "imply" keyword is a weak version of "select" where the target
    config symbol can still be turned off, avoiding those pitfalls that come
    with the "select" keyword.

    This is useful e.g. with multiple drivers that want to indicate their
    ability to hook into a secondary subsystem while allowing the user to
    configure that subsystem out without also having to unset these drivers.

    Currently, the same effect can almost be achieved with:

    config DRIVER_A
    tristate

    config DRIVER_B
    tristate

    config DRIVER_C
    tristate

    config DRIVER_D
    tristate

    [...]

    config SUBSYSTEM_X
    tristate
    default DRIVER_A || DRIVER_B || DRIVER_C || DRIVER_D || [...]

    This is unwieldy to maintain especially with a large number of drivers.
    Furthermore, there is no easy way to restrict the choice for SUBSYSTEM_X
    to y or n, excluding m, when some drivers are built-in. The "select"
    keyword allows for excluding m, but it excludes n as well. Hence
    this "imply" keyword. The above becomes:

    config DRIVER_A
    tristate
    imply SUBSYSTEM_X

    config DRIVER_B
    tristate
    imply SUBSYSTEM_X

    [...]

    config SUBSYSTEM_X
    tristate

    This is much cleaner, and way more flexible than "select". SUBSYSTEM_X
    can still be configured out, and it can be set as a module when none of
    the drivers are configured in or all of them are modular.

    Signed-off-by: Nicolas Pitre
    Acked-by: Richard Cochran
    Acked-by: Thomas Gleixner
    Acked-by: John Stultz
    Reviewed-by: Josh Triplett
    Cc: Paul Bolle
    Cc: linux-kbuild@vger.kernel.org
    Cc: netdev@vger.kernel.org
    Cc: Michal Marek
    Cc: Edward Cree
    Link: http://lkml.kernel.org/r/1478841010-28605-2-git-send-email-nicolas.pitre@linaro.org
    Signed-off-by: Thomas Gleixner

    Nicolas Pitre
     

15 Jun, 2015

1 commit

  • Over the years I found it desirable to be able to use all sorts of
    relations, not just (in)equality. And apparently I'm not the only one,
    as there's at least one example in the tree where the programmer
    assumed this would work (see DEBUG_UART_8250_WORD in
    arch/arm/Kconfig.debug). Another possible use would e.g. be to fold the
    two SMP/NR_CPUS prompts into one: SMP could be promptless, simply
    depending on NR_CPUS > 1.

    A (desirable) side effect of this change - resulting from numeric
    values now necessarily being compared as numbers rather than as
    strings - is that comparing hex values now works as expected: Other
    than int ones (which aren't allowed to have leading zeroes), zeroes
    following the 0x prefix made them compare unequal even if their values
    were equal.

    Signed-off-by: Jan Beulich
    Signed-off-by: Michal Marek

    Jan Beulich
     

25 Feb, 2015

1 commit


08 Apr, 2014

1 commit

  • "make allnoconfig" exists to ease testing of minimal configurations.
    Documentation/SubmitChecklist includes a note to test with allnoconfig.
    This helps catch missing dependencies on common-but-not-required
    functionality, which might otherwise go unnoticed.

    However, allnoconfig still leaves many symbols enabled, because they're
    hidden behind CONFIG_EMBEDDED or CONFIG_EXPERT. For instance, allnoconfig
    still has CONFIG_PRINTK and CONFIG_BLOCK enabled, so drivers don't
    typically get build-tested with those disabled.

    To address this, introduce a new Kconfig option "allnoconfig_y", used on
    symbols which only exist to hide other symbols. Set it on CONFIG_EMBEDDED
    (which then selects CONFIG_EXPERT). allnoconfig will then disable all the
    symbols hidden behind those.

    Signed-off-by: Josh Triplett
    Tested-by: Paul E. McKenney
    Cc: Michal Marek
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Josh Triplett
     

09 Oct, 2013

1 commit


16 Jun, 2013

1 commit


25 Oct, 2012

1 commit


28 Sep, 2012

2 commits

  • At the moment, keys 1-9 are assigned to the first 9 search results. This patch
    makes them assigned to the first 9 results per-page instead. We are much less
    likely to run out of keys that way.

    Signed-off-by: Benjamin Poirier
    Signed-off-by: Michal Marek

    Benjamin Poirier
     
  • makes it possible to jump directly to the menu for a configuration entry after
    having searched for it with '/'. If this menu is not currently accessible we
    jump to the nearest accessible parent instead. After exiting this menu, the
    user is returned to the search results where he may jump further in or
    elsewhere.

    Signed-off-by: Benjamin Poirier
    Signed-off-by: Michal Marek

    Benjamin Poirier
     

15 Jan, 2012

1 commit

  • Reinhard Tartler discovered a corner case of calling xfwrite() where the
    length of the string is zero.

    Arnaud Lacombe suggested to use assertion for the corner case, as
    fwrite(3) is currently used:

    1) in comment printers. Empty comment are not allowed.
    2) in a callback passed to expr_print(), where the string printed is
    either NULL OR non-empty.
    3) in the lexer, auto-generated, and unused.

    I feel using assertion is a good solution:

    1) It cleanly takes care of the above-mentioned corner case.
    2) It can be easily disabled by defining NDEBUG.
    3) It asserts xfwrite() is simply a wrapper for fwrite().

    Reported-by: Reinhard Tartler
    Signed-off-by: Arnaud Lacombe
    Signed-off-by: Jean Sacren
    Signed-off-by: Michal Marek

    Arnaud Lacombe
     

07 Jun, 2011

1 commit


15 Apr, 2011

1 commit


11 Jan, 2011

1 commit

  • * 'kconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild-2.6:
    nconf: handle comment entries within choice/endchoice
    kconfig: fix warning
    kconfig: Make expr_copy() take a const argument
    kconfig: simplify select-with-unmet-direct-dependency warning
    kconfig: add more S_INT and S_HEX consistency checks
    kconfig: fix `zconfdebug' extern declaration
    kconfig/conf: merge duplicate switch's case
    kconfig: fix typos
    kbuild/gconf: add dummy inline for bind_textdomain_codeset()
    kbuild/nconf: fix spaces damage
    kconfig: nuke second argument of conf_write_symbol()
    kconfig: do not define AUTOCONF_INCLUDED
    kconfig: the day kconfig warns about "select"-abuse has come

    Linus Torvalds
     

28 Dec, 2010

1 commit

  • In file included from scripts/kconfig/zconf.tab.c:2502:
    scripts/kconfig/expr.c:1033: warning: no previous prototype for 'expr_simplify_unmet_dep'

    Reported-by: Stephen Rothwell
    Signed-off-by: Arnaud Lacombe
    Signed-off-by: Michal Marek

    Arnaud Lacombe
     

22 Dec, 2010

1 commit

  • Fixes
    scripts/kconfig/expr.c: In function ‘expr_get_leftmost_symbol’:
    scripts/kconfig/expr.c:1026:2: warning: passing argument 1 of ‘expr_copy’ discards qualifiers from pointer target type
    scripts/kconfig/expr.c:67:14: note: expected ‘struct expr *’ but argument is of type ‘const struct expr *’

    Signed-off-by: Michal Marek

    Michal Marek
     

22 Nov, 2010

1 commit


12 Oct, 2010

1 commit


04 Oct, 2010

1 commit


20 Sep, 2010

1 commit


03 Aug, 2010

1 commit

  • When we add a new config symbol save the file/line
    so we later can refer to their location.

    The information is saved as a property to a config symbol
    because we may have multiple definitions of the same symbol.

    This has the side-effect that a symbol always has
    at least one property.

    Signed-off-by: Sam Ravnborg
    Cc: Roman Zippel
    Signed-off-by: Michal Marek

    Sam Ravnborg
     

02 Jul, 2010

1 commit

  • The "select" statement in Kconfig files allows the enabling of options
    even if they have unmet direct dependencies (i.e. "depends on" expands
    to "no"). Currently, the "depends on" clauses are used in calculating
    the visibility but they do not affect the reverse dependencies in any
    way.

    The patch introduces additional tracking of the "depends on" statements
    and prints a warning on selecting an option if its direct dependencies
    are not met.

    Signed-off-by: Catalin Marinas
    Cc: Sam Ravnborg
    Cc: Arnd Bergmann
    Cc: Andrew Morton
    Cc: Linus Torvalds
    Signed-off-by: Michal Marek

    Catalin Marinas
     

02 Feb, 2010

1 commit

  • While looking for something else I noticed that the symbol
    hash function used by kconfig is quite poor. It doesn't
    use any of the standard hash techniques but simply
    adds up the string and then uses power of two masking,
    which is both known to perform poorly.

    The current x86 kconfig has over 7000 symbols.

    When I instrumented it showed that the minimum hash chain
    length was 16 and a significant number of them was over
    30.

    It didn't help that the hash table size was only 256 buckets.

    This patch increases the hash table size to a larger prime
    and switches to a FNV32 hash. I played around with a couple of hash
    functions, but that one seemed to perform best with reasonable
    hash table sizes.

    Increasing the hash table size even further didn't
    seem like a good idea, because there are a couple of global
    walks which walk the complete hash table.

    I also moved the unnamed bucket to 0. It's still the longest
    of all the buckets (44 entries), but hopefully it's not
    often hit except for the global walk which doesn't care.

    The result is a much nicer distribution:
    (first column bucket length, second number of buckets with that length)

    1: 3505
    2: 1236
    3: 294
    4: 52
    5: 3
    47: 1
    Signed-off-by: Michal Marek

    Andi Kleen
     

03 Jan, 2009

3 commits


29 Jan, 2008

4 commits


26 Jul, 2007

2 commits

  • dep and dep2 in struct symbol was unused - remove them.

    Signed-off-by: Sam Ravnborg
    Cc: Roman Zippel

    Sam Ravnborg
     
  • Roman Zippel wrote:
    > A simple example would be
    > help texts, right now they are per symbol, but they should really be per
    > menu, so archs can provide different help texts for something.

    This patch does this and at the same time introduce a few API
    funtions used to access the help text.

    The relevant api functions are introduced in the various frontends.

    Signed-off-by: Sam Ravnborg
    Cc: Roman Zippel

    Sam Ravnborg
     

09 Jun, 2006

5 commits

  • This makes it possible to change two options which were hardcoded sofar.
    1. Any symbol can now take the role of CONFIG_MODULES
    2. The more useful option is to change the list of default file names,
    which kconfig uses to load the base configuration if .config isn't
    available.

    Signed-off-by: Roman Zippel
    Signed-off-by: Andrew Morton
    Signed-off-by: Sam Ravnborg

    Roman Zippel
     
  • Now that kconfig can load multiple configurations, it becomes simple to
    integrate the split config step, by simply comparing the new .config file with
    the old auto.conf (and then saving the new auto.conf). A nice side effect is
    that this saves a bit of disk space and cache, as no data needs to be read
    from or saved into the splitted config files anymore (e.g. include/config is
    now 648KB instead of 5.2MB).

    Signed-off-by: Roman Zippel
    Signed-off-by: Andrew Morton
    Signed-off-by: Sam Ravnborg

    Roman Zippel
     
  • Extend conf_read_simple() so it can load multiple configurations.

    Signed-off-by: Roman Zippel
    Signed-off-by: Andrew Morton
    Signed-off-by: Sam Ravnborg

    Roman Zippel
     
  • Extend struct symbol to allow storing multiple default values, which can be
    used to hold multiple configurations.

    Signed-off-by: Roman Zippel
    Signed-off-by: Andrew Morton
    Signed-off-by: Sam Ravnborg

    Roman Zippel
     
  • The SYMBOL_{YES,MOD,NO} are not really used anymore (they were more used be
    the cml1 converter), so just remove them.

    Signed-off-by: Roman Zippel
    Signed-off-by: Andrew Morton
    Signed-off-by: Sam Ravnborg

    Roman Zippel
     

09 Nov, 2005

1 commit

  • When doing its recursive dependency check, scripts/kconfig/conf uses the flag
    SYMBOL_CHECK_DONE to avoid rechecking a symbol it has already checked.
    However, that flag is only set at the top level, so if a symbol is first
    encountered as a dependency of another symbol it will be rechecked every time
    it is encountered until it's encountered at the top level.

    This patch adjusts the flag setting so that each symbol will only be checked
    once, regardless of whether it is first encountered at the top level, or while
    recursing down from another symbol. On complex configurations, this vastly
    speeds up scripts/kconfig/conf. The config in the powerpc merge tree is
    particularly bad: this patch reduces the time for 'scripts/kconfig/conf -o
    arch/powerpc/Kconfig' by a factor of 40 on a G5. That's even including the
    time to print the config, so the speedup in the actual checking is more likely
    2 or 3 orders of magnitude.

    Signed-off-by: David Gibson
    Signed-off-by: Roman Zippel
    Cc: Sam Ravnborg
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Gibson
     

17 Apr, 2005

1 commit

  • Initial git repository build. I'm not bothering with the full history,
    even though we have it. We can create a separate "historical" git
    archive of that later if we want to, and in the meantime it's about
    3.2GB when imported into git - space that would just make the early
    git days unnecessarily complicated, when we don't have a lot of good
    infrastructure for it.

    Let it rip!

    Linus Torvalds