1. 19 8月, 2015 1 次提交
  2. 15 6月, 2015 1 次提交
    • J
      kconfig: allow use of relations other than (in)equality · 31847b67
      Jan Beulich 提交于
      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: NJan Beulich <jbeulich@suse.com>
      Signed-off-by: NMichal Marek <mmarek@suse.cz>
      31847b67
  3. 25 2月, 2015 1 次提交
  4. 09 10月, 2013 1 次提交
  5. 16 8月, 2013 1 次提交
  6. 17 7月, 2013 4 次提交
  7. 29 6月, 2013 1 次提交
  8. 25 6月, 2013 1 次提交
    • Y
      kconfig: sort found symbols by relevance · 193b40ae
      Yann E. MORIN 提交于
      When searching for symbols, return the symbols sorted by relevance.
      
      Sorting is done as thus:
        - first, symbols that match exactly
        - then, alphabetical sort
      
      Since the search can be a regexp, it is possible that more than one symbol
      matches exactly. In this case, we can't decide which to sort first, so we
      fallback to alphabeticall sort.
      
      Explain this (new!) sorting heuristic in the documentation.
      Reported-by: NJean Delvare <jdelvare@suse.de>
      Signed-off-by: N"Yann E. MORIN" <yann.morin.1998@free.fr>
      Cc: Jean Delvare <jdelvare@suse.de>
      Cc: Michal Marek <mmarek@suse.cz>
      Cc: Roland Eggner <edvx1@systemanalysen.net>
      Cc: Wang YanQing <udknight@gmail.com>
      
      --
      Changes v1->v2:
        - drop the previous, complex heuristic in favour of a simpler heuristic
          that is both easier to understand, *and* to maintain (Jean)
        - explain sorting heuristic in the doc  (Jean)
      193b40ae
  9. 16 6月, 2013 1 次提交
    • A
      kconfig: Fix defconfig when one choice menu selects options that another choice menu depends on · fbe98bb9
      Arve Hjønnevåg 提交于
      The defconfig and Kconfig combination below, which is based on 3.10-rc4
      Kconfigs, resulted in several options getting set to "m" instead of "y".
      
      defconfig.choice:
      ---8<---
      CONFIG_MODULES=y
      CONFIG_USB_ZERO=y
      ---8<---
      
      Kconfig.choice:
      ---8<---
      menuconfig MODULES
      	bool "Enable loadable module support"
      
      config CONFIGFS_FS
      	tristate "Userspace-driven configuration filesystem"
      
      config OCFS2_FS
              tristate "OCFS2 file system support"
              depends on CONFIGFS_FS
              select CRC32
      
      config USB_LIBCOMPOSITE
      	tristate
      	select CONFIGFS_FS
      
      choice
      	tristate "USB Gadget Drivers"
      	default USB_ETH
      
      config USB_ZERO
      	tristate "Gadget Zero (DEVELOPMENT)"
      	select USB_LIBCOMPOSITE
      
      config USB_ETH
      	tristate "Ethernet Gadget (with CDC Ethernet support)"
      	select USB_LIBCOMPOSITE
      
      endchoice
      
      config CRC32
              tristate "CRC32/CRC32c functions"
              default y
      
      choice
              prompt "CRC32 implementation"
              depends on CRC32
              default CRC32_SLICEBY8
      
      config CRC32_SLICEBY8
              bool "Slice by 8 bytes"
      
      endchoice
      ---8<---
      
      $ scripts/kconfig/conf --defconfig=defconfig.choice Kconfig.choice
      
      would result in:
      
      .config:
      ---8<---
      CONFIG_MODULES=y
      CONFIG_CONFIGFS_FS=m
      CONFIG_USB_LIBCOMPOSITE=m
      CONFIG_USB_ZERO=m
      CONFIG_CRC32=y
      CONFIG_CRC32_SLICEBY8=y
      ---8<---
      
      when the expected result would be:
      
      .config:
      ---8<---
      CONFIG_MODULES=y
      CONFIG_CONFIGFS_FS=y
      CONFIG_USB_LIBCOMPOSITE=y
      CONFIG_USB_ZERO=y
      CONFIG_CRC32=y
      CONFIG_CRC32_SLICEBY8=y
      ---8<---
      Signed-off-by: NArve Hjønnevåg <arve@android.com>
      [yann.morin.1998@free.fr: add the resulting .config to commit log,
                                remove unneeded USB_GADGET from the defconfig]
      Tested-by: N"Yann E. MORIN" <yann.morin.1998@free.fr>
      Reviewed-by: N"Yann E. MORIN" <yann.morin.1998@free.fr>
      Signed-off-by: NYann E. MORIN <yann.morin.1998@free.fr>
      fbe98bb9
  10. 20 11月, 2012 1 次提交
  11. 26 1月, 2012 1 次提交
    • A
      kconfig: fix new choices being skipped upon config update · 5d09598d
      Arnaud Lacombe 提交于
      Running `oldconfig' after any of the following configuration change:
      
      either trivial addition, such as:
      
      config A
      	bool "A"
      
      choice
      	prompt "Choice ?"
      	depends on A
      
      	config CHOICE_B
      		bool "Choice B"
      
      	config CHOICE_C
      		bool "Choice C"
      endchoice
      
      or more tricky change:
      
      OLD KCONFIG                      |  NEW KCONFIG
                                       |
                                       |  config A
                                       |          bool "A"
                                       |
      choice                           |  choice
              prompt "Choice ?"        |          prompt "Choice ?"
                                       |
              config CHOICE_C          |          config CHOICE_C
                      bool "Choice C"  |                  bool "Choice C"
                                       |
              config CHOICE_D          |          config CHOICE_D
                      bool "Choice D"  |                  bool "Choice D"
      endchoice                        |
                                       |          config CHOICE_E
                                       |                  bool "Choice E"
                                       |                  depends on A
                                       |  endchoice
      
      will not cause the choice to be considered as NEW, and thus not be
      asked. The cause of this behavior is that choice's novelty are computed
      statically right after the saved configuration has been read. At this
      point, the new dependency's value is still unknown and asserted to be
      `no'. Moreover, no update to this decision is made afterward.
      
      Correct this by dynamically evaluating a choice's novelty, and removing the
      static evaluation.
      Reported-and-tested-by: NUwe Kleine-König <u.kleine-koenig@pengutronix.de>
      Signed-off-by: NArnaud Lacombe <lacombar@gmail.com>
      Signed-off-by: NMichal Marek <mmarek@suse.cz>
      5d09598d
  12. 01 7月, 2011 1 次提交
    • A
      kconfig: introduce specialized printer · e54e692b
      Arnaud Lacombe 提交于
      Make conf_write_symbol() grammar agnostic to be able to use it from different
      code path. These path pass a printer callback which will print a symbol's name
      and its value in different format.
      
      conf_write_symbol()'s job become mostly only to prepare a string for the
      printer. This avoid to have to pass specialized flag to generic
      functions
      Signed-off-by: NArnaud Lacombe <lacombar@gmail.com>
      [mmarek: rebased on top of de125187 (kconfig: autogenerated config_is_xxx
      macro)]
      Signed-off-by: NMichal Marek <mmarek@suse.cz>
      e54e692b
  13. 07 6月, 2011 1 次提交
  14. 22 12月, 2010 1 次提交
    • A
      kconfig: simplify select-with-unmet-direct-dependency warning · 1137c56b
      Arnaud Lacombe 提交于
      This is an attempt to simplify the expressing printed by kconfig when a
      symbol is selected but still has direct unmet dependency.
      
      First, the symbol reverse dependency is split in sub-expression. Then,
      each sub-expression is checked to ensure that it does not contains the
      unmet dependency. This removes the false-positive symbols and fixed symbol
      which already have the correct dependency. Finally, only the symbol
      responsible of the "select" is printed, instead of its full dependency tree.
      
      CC: Catalin Marinas <catalin.marinas@arm.com>
      Signed-off-by: NArnaud Lacombe <lacombar@gmail.com>
      Signed-off-by: NMichal Marek <mmarek@suse.cz>
      1137c56b
  15. 15 12月, 2010 1 次提交
  16. 02 11月, 2010 1 次提交
  17. 12 10月, 2010 1 次提交
  18. 10 10月, 2010 1 次提交
  19. 01 10月, 2010 1 次提交
  20. 20 9月, 2010 1 次提交
  21. 15 8月, 2010 1 次提交
  22. 03 8月, 2010 4 次提交
    • S
      kconfig: add savedefconfig · 7cf3d73b
      Sam Ravnborg 提交于
      savedefconfig will save a minimal config to a file
      named "defconfig".
      
      The config symbols are saved in the same order as
      they appear in the menu structure so it should
      be possible to map them to the relevant menus
      if desired.
      
      The implementation was tested against several minimal
      configs for arm which was created using brute-force.
      
      There was one regression related to default numbers
      which had their valid range further limited by another symbol.
      
      Sample:
      
      config FOO
      	int "foo"
      	default 4
      
      config BAR
      	int "bar"
      	range 0 FOO
      
      If FOO is set to 3 then BAR cannot take a value higher than 3.
      But the current implementation will set BAR equal to 4.
      
      This is seldomly used and the final configuration is OK,
      and the fix was non-trivial.
      So it was documented in the code and left as is.
      Signed-off-by: NSam Ravnborg <sam@ravnborg.org>
      Acked-by: NUwe Kleine-König <u.kleine-koenig@pengutronix.de>
      Signed-off-by: NMichal Marek <mmarek@suse.cz>
      7cf3d73b
    • S
      kconfig: refactor code in symbol.c · c252147d
      Sam Ravnborg 提交于
      Move logic to determine default for a choice to
      a separate function.
      No functional changes.
      Signed-off-by: NSam Ravnborg <sam@ravnborg.org>
      Signed-off-by: NMichal Marek <mmarek@suse.cz>
      c252147d
    • R
      kconfig: print more info when we see a recursive dependency · d595cea6
      Roman Zippel 提交于
      Consider following kconfig file:
      
      config TEST1
      	bool "test 1"
      	depends on TEST2
      
      config TEST2
      	bool "test 2"
      	depends on TEST1
      
      Previously kconfig would report:
      
      foo:6:error: found recursive dependency: TEST2 -> TEST1 -> TEST2
      
      With the following patch kconfig reports:
      foo:5:error: recursive dependency detected!
      foo:5:  symbol TEST2 depends on TEST1
      foo:1:  symbol TEST1 depends on TEST2
      
      Note that we now report where the offending symbols are defined.
      This can be a great help for complex situations involving
      several files.
      
      Patch is originally from Roman Zippel with a few adjustments by Sam.
      Signed-off-by: NSam Ravnborg <sam@ravnborg.org>
      Cc: Roman Zippel <zippel@linux-m68k.org>
      Signed-off-by: NMichal Marek <mmarek@suse.cz>
      d595cea6
    • S
      kconfig: save location of config symbols · 59e89e3d
      Sam Ravnborg 提交于
      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: NSam Ravnborg <sam@ravnborg.org>
      Cc: Roman Zippel <zippel@linux-m68k.org>
      Signed-off-by: NMichal Marek <mmarek@suse.cz>
      59e89e3d
  23. 08 7月, 2010 1 次提交
  24. 02 7月, 2010 1 次提交
    • C
      kbuild: Warn on selecting symbols with unmet direct dependencies · 246cf9c2
      Catalin Marinas 提交于
      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: NCatalin Marinas <catalin.marinas@arm.com>
      Cc: Sam Ravnborg <sam@ravnborg.org>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: NMichal Marek <mmarek@suse.cz>
      246cf9c2
  25. 23 3月, 2010 1 次提交
    • L
      kconfig: recalc symbol value before showing search results · da6df879
      Li Zefan 提交于
      A symbol's value won't be recalc-ed until we save config file or
      enter the menu where the symbol sits.
      
      So If I enable OPTIMIZE_FOR_SIZE, and search FUNCTION_GRAPH_TRACER:
      
        Symbol: FUNCTION_GRAPH_TRACER [=y]
        Prompt: Kernel Function Graph Tracer
          Defined at kernel/trace/Kconfig:140
          Depends on: ... [=y] && (!X86_32 [=y] || !CC_OPTIMIZE_FOR_SIZE [=y])
          ...
      
      From the dependency it should result in FUNCTION_GRAPH_TRACER=n,
      but it still shows FUNCTION_GRAPH_TRACER=y.
      Signed-off-by: NLi Zefan <lizf@cn.fujitsu.com>
      Signed-off-by: NMichal Marek <mmarek@suse.cz>
      da6df879
  26. 02 2月, 2010 1 次提交
    • A
      Improve kconfig symbol hashing · e66f25d7
      Andi Kleen 提交于
      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		<--- this is the unnamed symbols bucket
      
      There are still some 5+ buckets, but increasing the hash table
      even more would be likely not worth it.
      
      This also cleans up the code slightly by removing hard coded
      magic numbers.
      
      I didn't notice a big performance difference either way
      on my Nehalem system, but I presume it'll help somewhat
      on slower systems.
      Signed-off-by: NAndi Kleen <ak@linux.intel.com>
      Signed-off-by: NMichal Marek <mmarek@suse.cz>
      e66f25d7
  27. 20 9月, 2009 1 次提交
  28. 29 4月, 2008 2 次提交
  29. 14 2月, 2008 1 次提交
    • R
      kconfig: fix select in combination with default · 587c9061
      Roman Zippel 提交于
      > The attached .config (with current -git) results in a compile
      > error since it contains:
      >
      > CONFIG_X86=y
      > # CONFIG_EMBEDDED is not set
      > CONFIG_SERIO=m
      > CONFIG_SERIO_I8042=y
      >
      > Looking at drivers/input/serio/Kconfig I simply don't get how this
      > can happen.
      
      You've hit the rather subtle rules of select vs default. What happened is
      that SERIO is selected to m, but SERIO_I8042 isn't selected so the default
      of y is used instead.
      We already had the problem in the past that select and default don't work
      well together, so this patch cleans this up and makes the rule hopefully
      more straightforward. Basically now the value is calculated like this:
      
      	(value && dependency) || select
      
      where the value is the user choice (if available and the symbol is
      visible) or default.
      
      In this case it means SERIO and SERIO_I8042 are both set to y due to their
      default and if SERIO didn't had the default, then the SERIO_I8042 value
      would be limited to m due to the dependency.
      
      I tested this patch with more 10000 random configs and above case is the
      only the difference that showed up, so I hope there is nothing that
      depended on the old more complex and subtle rules.
      Signed-off-by: NRoman Zippel <zippel@linux-m68k.org>
      Tested-by: NAdrian Bunk <bunk@kernel.org>
      Signed-off-by: NSam Ravnborg <sam@ravnborg.org>
      587c9061
  30. 29 1月, 2008 4 次提交