1. 26 3月, 2018 20 次提交
    • M
      kconfig: tests: test defconfig when two choices interact · beaaddb6
      Masahiro Yamada 提交于
      Commit fbe98bb9 ("kconfig: Fix defconfig when one choice menu
      selects options that another choice menu depends on") fixed defconfig
      when two choices interact (i.e. calculating the visibility of a choice
      requires to calculate another choice).
      
      The test code in that commit log was based on the real world example,
      and complicated.  So, I shrunk it down to the following:
      
      defconfig.choice:
      ---8<---
      CONFIG_CHOICE_VAL0=y
      ---8<---
      
      ---8<---
      config MODULES
              def_bool y
              option modules
      
      choice
              prompt "Choice"
      
      config CHOICE_VAL0
              tristate "Choice 0"
      
      config CHOICE_VAL1
              tristate "Choice 1"
      
      endchoice
      
      choice
              prompt "Another choice"
              depends on CHOICE_VAL0
      
      config DUMMY
              bool "dummy"
      
      endchoice
      ---8<---
      
      Prior to commit fbe98bb9,
      
        $ scripts/kconfig/conf --defconfig=defconfig.choice Kconfig.choice
      
      resulted in:
      
        CONFIG_MODULES=y
        CONFIG_CHOICE_VAL0=m
        # CONFIG_CHOICE_VAL1 is not set
        CONFIG_DUMMY=y
      
      where the expected result would be:
      
        CONFIG_MODULES=y
        CONFIG_CHOICE_VAL0=y
        # CONFIG_CHOICE_VAL1 is not set
        CONFIG_DUMMY=y
      
      Roughly, this weird behavior happened like this:
      
      Symbols are calculated a couple of times.  First, all symbols are
      calculated in conf_read().  The first 'choice' is evaluated to 'y'
      due to the SYMBOL_DEF_USER flag, but sym_calc_choice() clears it
      unless all of its choice values are explicitly set by the user.
      
      conf_set_all_new_symbols() clears all SYMBOL_VALID flags.  Then, only
      choices are calculated.  Here, the SYMBOL_DEF_USER for the first choice
      has been forgotten, so it is evaluated to 'm'.  set_all_choice_values()
      sets SYMBOL_DEF_USER again to choice symbols.
      
      When calculating the second choice, due to 'depends on CHOICE_VAL0',
      it triggers the calculation of CHOICE_VAL0.  As a result, SYMBOL_VALID
      is set for CHOICE_VAL0.
      
      Symbols except choices get the final chance of re-calculation in
      conf_write().  In a normal case, CHOICE_VAL0 would be re-calculated,
      then the first choice would be indirectly re-calculated with the
      SYMBOL_DEF_USER which has been recalled by set_all_choice_values(),
      which would be evaluated to 'y'.  But, in this case, CHOICE_VAL0 has
      already been marked as SYMBOL_VALID, so this re-calculation does not
      happen.  Then, =m from the conf_set_all_new_symbols() phase is written
      out to the .config file.
      
      Add a unit test for this naive case.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      Reviewed-by: NUlf Magnusson <ulfalizer@gmail.com>
      beaaddb6
    • M
      kconfig: tests: check visibility of tristate choice values in y choice · ee236610
      Masahiro Yamada 提交于
      If tristate choice values depend on symbols set to 'm', they should be
      hidden when the choice containing them is changed from 'm' to 'y'
      (i.e. exclusive choice).
      
      This issue was fixed by commit fa64e5f6 ("kconfig/symbol.c: handle
      choice_values that depend on 'm' symbols").
      
      Add a test case to avoid regression.
      
      For the input in this unit test, there is a room for argument if
      "# CONFIG_CHOICE1 is not set" should be written to the .config file.
      
      After commit fa64e5f6, this line was written to the .config file.
      
      With commit cb67ab2c ("kconfig: do not write choice values when
      their dependency becomes n"), it is not written now.
      
      In this test, "# CONFIG_CHOICE1 is not set" is don't care.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      Reviewed-by: NUlf Magnusson <ulfalizer@gmail.com>
      ee236610
    • M
      kconfig: tests: check unneeded "is not set" with unmet dependency · 930c429a
      Masahiro Yamada 提交于
      Commit cb67ab2c ("kconfig: do not write choice values when their
      dependency becomes n") fixed a problem where "# CONFIG_... is not set"
      for choice values are wrongly written into the .config file when they
      are once visible, then become invisible later.
      
      Add a test for this naive case.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      Reviewed-by: NUlf Magnusson <ulfalizer@gmail.com>
      930c429a
    • M
      kconfig: tests: test if new symbols in choice are asked · b76960c0
      Masahiro Yamada 提交于
      If new choice values are added with new dependency, and they become
      visible during user configuration, oldconfig should recognize them
      as (NEW), and ask the user for choice.
      
      This issue was fixed by commit 5d09598d ("kconfig: fix new choices
      being skipped upon config update").
      
      This is a subtle corner case.  Add a test case to avoid breakage.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      Reviewed-by: NUlf Magnusson <ulfalizer@gmail.com>
      b76960c0
    • M
      kconfig: tests: test automatic submenu creation · 49ac3c0c
      Masahiro Yamada 提交于
      If a symbols has dependency on the preceding symbol, the menu entry
      should become the submenu of the preceding one, and displayed with
      deeper indentation.
      
      This is done by restructuring the menu tree in menu_finalize().
      It is a bit complicated computation, so let's add a test case.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      Reviewed-by: NUlf Magnusson <ulfalizer@gmail.com>
      49ac3c0c
    • M
      kconfig: tests: add basic choice tests · 1903c511
      Masahiro Yamada 提交于
      The calculation of 'choice' is a bit complicated part in Kconfig.
      
      The behavior of 'y' choice is intuitive.  If choice values are tristate,
      the choice can be 'm' where each value can be enabled independently.
      Also, if a choice is marked as 'optional', the whole choice can be
      invisible.
      
      Test basic functionality of choice.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      Reviewed-by: NUlf Magnusson <ulfalizer@gmail.com>
      1903c511
    • M
      kconfig: tests: add framework for Kconfig unit testing · 022a4bf6
      Masahiro Yamada 提交于
      Many parts in Kconfig are so cryptic and need refactoring.  However,
      its complexity prevents us from moving forward.  There are several
      naive corner cases where it is difficult to notice breakage.  If
      those are covered by unit tests, we will be able to touch the code
      with more confidence.
      
      Here is a simple test framework based on pytest.  The conftest.py
      provides a fixture useful to run commands such as 'oldaskconfig' etc.
      and to compare the resulted .config, stdout, stderr with expectations.
      
      How to add test cases?
      ----------------------
      
      For each test case, you should create a subdirectory under
      scripts/kconfig/tests/ (so test cases are separated from each other).
      Every test case directory should contain the following files:
      
       - __init__.py: describes test functions
       - Kconfig: the top level Kconfig file for the test
      
      To do a useful job, test cases generally need additional data like
      input .config and information about expected results.
      
      How to run tests?
      -----------------
      
      You need python3 and pytest.  Then, run "make testconfig".  O= option
      is supported.  If V=1 is given, detailed logs captured during tests
      are displayed.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      Reviewed-by: NUlf Magnusson <ulfalizer@gmail.com>
      022a4bf6
    • U
      kconfig: remove redundant streamline_config.pl prerequisite · 2a616258
      Ulf Magnusson 提交于
      The local{yes,mod}config targets currently have streamline_config.pl as
      a prerequisite. This is redundant, because streamline_config.pl is a
      checked-in file with no prerequisites.
      
      Remove the prerequisite and reference streamline_config.pl directly in
      the recipe of the rule instead.
      Signed-off-by: NUlf Magnusson <ulfalizer@gmail.com>
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      2a616258
    • M
      kconfig: rename silentoldconfig to syncconfig · 911a91c3
      Masahiro Yamada 提交于
      As commit cedd55d4 ("kconfig: Remove silentoldconfig from help
      and docs; fix kconfig/conf's help") mentioned, 'silentoldconfig' is a
      historical misnomer.  That commit removed it from help and docs since
      it is an internal interface.  If so, it should be allowed to rename
      it to something more intuitive.  'syncconfig' is the one I came up
      with because it updates the .config if necessary, then synchronize
      include/generated/autoconf.h and include/config/* with it.
      
      You should not manually invoke 'silentoldcofig'.  Display warning if
      used in case existing scripts are doing wrong.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      Reviewed-by: NUlf Magnusson <ulfalizer@gmail.com>
      911a91c3
    • M
      kconfig: invoke oldconfig instead of silentoldconfig from local*config · 81d2bc22
      Masahiro Yamada 提交于
      The purpose of local{yes,mod}config is to arrange the .config file
      based on actually loaded modules.  It is unnecessary to update
      include/generated/autoconf.h and include/config/* stuff here.
      They will be updated as needed during the build.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      Reviewed-by: NUlf Magnusson <ulfalizer@gmail.com>
      81d2bc22
    • M
      kconfig: hide irrelevant sub-menus for oldconfig · 2aad9b89
      Masahiro Yamada 提交于
      Historically, "make oldconfig" has changed its behavior several times,
      quieter or louder.  (I attached the history below.)  Currently, it is
      not as quiet as it should be.  This commit addresses it.
      
        Test Case
        ---------
      
      ---------------------------(Kconfig)----------------------------
      menu "menu"
      
      config FOO
              bool "foo"
      
      menu "sub menu"
      
      config BAR
              bool "bar"
      
      endmenu
      
      endmenu
      
      menu "sibling menu"
      
      config BAZ
              bool "baz"
      
      endmenu
      ----------------------------------------------------------------
      
      ---------------------------(.config)----------------------------
      CONFIG_BAR=y
      CONFIG_BAZ=y
      ----------------------------------------------------------------
      
      With the Kconfig and .config above, "make silentoldconfig" and
      "make oldconfig" work differently, like follows:
      
        $ make silentoldconfig
        scripts/kconfig/conf  --silentoldconfig Kconfig
        *
        * Restart config...
        *
        *
        * menu
        *
        foo (FOO) [N/y/?] (NEW) y
        #
        # configuration written to .config
        #
      
        $ make oldconfig
        scripts/kconfig/conf  --oldconfig Kconfig
        *
        * Restart config...
        *
        *
        * menu
        *
        foo (FOO) [N/y/?] (NEW) y
        *
        * sub menu
        *
        bar (BAR) [Y/n/?] y
        #
        # configuration written to .config
        #
      
      Both hide "sibling node" since it is irrelevant.  The difference is
      that silentoldconfig hides "sub menu" whereas oldconfig does not.
      The behavior of silentoldconfig is preferred since the "sub menu"
      does not contain any new symbol.
      
      The root cause is in conf().  There are three input modes that can
      call conf(); oldaskconfig, oldconfig, and silentoldconfig.
      
      Everytime conf() encounters a menu entry, it calls check_conf() to
      check if it contains new symbols.  If no new symbol is found, the
      menu is just skipped.
      
      Currently, this happens only when input_mode == silentoldconfig.
      The oldaskconfig enters into the check_conf() loop as silentoldconfig,
      so oldaskconfig works likewise for the second loop or later, but it
      never happens for oldconfig.  So, irrelevant sub-menus are shown for
      oldconfig.
      
      Change the test condition to "input_mode != oldaskconfig".  This is
      false only for the first loop of oldaskconfig; it must ask the user
      all symbols, so no need to call check_conf().
      
        History of oldconfig
        --------------------
      
      [0] Originally, "make oldconfig" was as loud as "make config"  (It
          showed the entire .config file)
      
      [1] Commit cd9140e1 ("kconfig: make oldconfig is now less chatty")
          made oldconfig quieter, but it was still less quieter than
          silentoldconfig.  (oldconfig did not hide sub-menus)
      
      [2] Commit 204c96f6 ("kconfig: fix silentoldconfig") changed
          the input_mode of oldconfig to "ask_silent" from "ask_new".
          So, oldconfig really became as quiet as silentoldconfig.
          (oldconfig hided irrelevant sub-menus)
      
      [3] Commit 4062f1a4 ("kconfig: use long options in conf") made
          oldconfig as loud as [0] due to misconversion.
      
      [4] Commit 14828349 ("kconfig: fix make oldconfig") addressed
          the misconversion of [3], but it made oldconfig quieter only to
          the same level as [1], not [2].
      
      This commit is restoring the behavior of [2].
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      Reviewed-by: NUlf Magnusson <ulfalizer@gmail.com>
      2aad9b89
    • M
      kconfig: remove redundant input_mode test for check_conf() loop · 99f0b657
      Masahiro Yamada 提交于
      check_conf() never increments conf_cnt for listnewconfig, so conf_cnt
      is always zero.
      
      In other words, conf_cnt is not zero, "input_mode != listnewconfig"
      is met.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      Reviewed-by: NUlf Magnusson <ulfalizer@gmail.com>
      99f0b657
    • M
      kconfig: remove unneeded input_mode test in conf() · 4bb3a5b0
      Masahiro Yamada 提交于
      conf() is never called for listnewconfig / olddefconfig.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      Reviewed-by: NUlf Magnusson <ulfalizer@gmail.com>
      4bb3a5b0
    • M
      kconfig: do not call check_conf() for olddefconfig · 59a80b5e
      Masahiro Yamada 提交于
      check_conf() traverses the menu tree, but it is completely no-op for
      olddefconfig because the following if-else block does nothing.
      
          if (input_mode == listnewconfig) {
                  ...
          } else if (input_mode != olddefconfig) {
                  ...
          }
      
      As the help message says, olddefconfig automatically sets new symbols
      to their default value.  There is no room for manual intervention.
      So, calling check_conf() for olddefconfig is odd in the first place.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      Reviewed-by: NUlf Magnusson <ulfalizer@gmail.com>
      59a80b5e
    • U
      kconfig: only write '# CONFIG_FOO is not set' for visible symbols · f467c564
      Ulf Magnusson 提交于
      === Background ===
      
       - Visible n-valued bool/tristate symbols generate a
         '# CONFIG_FOO is not set' line in the .config file. The idea is to
         remember the user selection without having to set a Makefile
         variable. Having n correspond to the variable being undefined in the
         Makefiles makes for easy CONFIG_* tests.
      
       - Invisible n-valued bool/tristate symbols normally do not generate a
         '# CONFIG_FOO is not set' line, because user values from .config
         files have no effect on invisible symbols anyway.
      
      Currently, there is one exception to this rule: Any bool/tristate symbol
      that gets the value n through a 'default' property generates a
      '# CONFIG_FOO is not set' line, even if the symbol is invisible.
      
      Note that this only applies to explicitly given defaults, and not when
      the symbol implicitly defaults to n (like bool/tristate symbols without
      'default' properties do).
      
      This is inconsistent, and seems redundant:
      
        - As mentioned, the '# CONFIG_FOO is not set' won't affect the symbol
          once the .config is read back in.
      
        - Even if the symbol is invisible at first but becomes visible later,
          there shouldn't be any harm in recalculating the default value
          rather than viewing the '# CONFIG_FOO is not set' as a previous
          user value of n.
      
      === Changes ===
      
      Change sym_calc_value() to only set SYMBOL_WRITE (write to .config) for
      non-n-valued 'default' properties.
      
      Note that SYMBOL_WRITE is always set for visible symbols regardless of whether
      they have 'default' properties or not, so this change only affects invisible
      symbols.
      
      This reduces the size of the x86 .config on my system by about 1% (due
      to removed '# CONFIG_FOO is not set' entries).
      
      One side effect of (and the main motivation for) this change is making
      the following two definitions behave exactly the same:
      
      	config FOO
      		bool
      
      	config FOO
      		bool
      		default n
      
      With this change, neither of these will generate a
      '# CONFIG_FOO is not set' line (assuming FOO isn't selected/implied).
      That might make it clearer to people that a bare 'default n' is
      redundant.
      
      This change only affects generated .config files and not autoconf.h:
      autoconf.h only includes #defines for non-n bool/tristate symbols.
      
      === Testing ===
      
      The following testing was done with the x86 Kconfigs:
      
       - .config files generated before and after the change were compared to
         verify that the only difference is some '# CONFIG_FOO is not set'
         entries disappearing. A couple of these were inspected manually, and
         most turned out to be from redundant 'default n/def_bool n'
         properties.
      
       - The generated include/generated/autoconf.h was compared before and
         after the change and verified to be identical.
      
       - As a sanity check, the same modification was done to Kconfiglib.
         The Kconfiglib test suite was then run to check for any mismatches
         against the output of the C implementation.
      Signed-off-by: NUlf Magnusson <ulfalizer@gmail.com>
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      f467c564
    • E
      kconfig: Print reverse dependencies in groups · d9119b59
      Eugeniu Rosca 提交于
      Surprisingly or not, disabling a CONFIG option (which is assumed to
      be unneeded) may be not so trivial. Especially it is not trivial, when
      this CONFIG option is selected by a dozen of other configs. Before the
      moment commit 1ccb2714 ("kconfig: make "Selected by:" and
      "Implied by:" readable") popped up in v4.16-rc1, it was an absolute pain
      to break down the "Selected by" reverse dependency expression in order
      to identify all those configs which select (IOW *do not allow
      disabling*) a certain feature (assumed to be not needed).
      
      This patch tries to make one step further by putting at users'
      fingertips the revdep top level OR sub-expressions grouped/clustered by
      the tristate value they evaluate to. This should allow the users to
      directly concentrate on and tackle the _active_ reverse dependencies.
      
      To give some numbers and quantify the complexity of certain reverse
      dependencies, assuming commit 617aebe6 ("Merge tag
      'usercopy-v4.16-rc1' of
      git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux"), ARCH=arm64
      and vanilla arm64 defconfig, here is the top 10 CONFIG options with
      the highest amount of top level "||" sub-expressions/tokens that make
      up the final "Selected by" reverse dependency expression.
      
      | Config            | All revdep | Active revdep |
      |-------------------|------------|---------------|
      | REGMAP_I2C        | 212        | 9             |
      | CRC32             | 167        | 25            |
      | FW_LOADER         | 128        | 5             |
      | MFD_CORE          | 124        | 9             |
      | FB_CFB_IMAGEBLIT  | 114        | 2             |
      | FB_CFB_COPYAREA   | 111        | 2             |
      | FB_CFB_FILLRECT   | 110        | 2             |
      | SND_PCM           | 103        | 2             |
      | CRYPTO_HASH       | 87         | 19            |
      | WATCHDOG_CORE     | 86         | 6             |
      
      The story behind the above is that users need to visually
      review/evaluate 212 expressions which *potentially* select REGMAP_I2C
      in order to identify the expressions which *actually* select REGMAP_I2C,
      for a particular ARCH and for a particular defconfig used.
      
      To make this experience smoother, change the way reverse dependencies
      are displayed to the user from [1] to [2].
      
      [1] Old representation of DMA_ENGINE_RAID:
        Selected by:
        - AMCC_PPC440SPE_ADMA [=n] && DMADEVICES [=y] && (440SPe || 440SP)
        - BCM_SBA_RAID [=m] && DMADEVICES [=y] && (ARM64 [=y] || ...
        - FSL_RAID [=n] && DMADEVICES [=y] && FSL_SOC && ...
        - INTEL_IOATDMA [=n] && DMADEVICES [=y] && PCI [=y] && X86_64
        - MV_XOR [=n] && DMADEVICES [=y] && (PLAT_ORION || ARCH_MVEBU [=y] ...
        - MV_XOR_V2 [=y] && DMADEVICES [=y] && ARM64 [=y]
        - XGENE_DMA [=n] && DMADEVICES [=y] && (ARCH_XGENE [=y] || ...
        - DMATEST [=n] && DMADEVICES [=y] && DMA_ENGINE [=y]
      
      [2] New representation of DMA_ENGINE_RAID:
        Selected by [y]:
        - MV_XOR_V2 [=y] && DMADEVICES [=y] && ARM64 [=y]
        Selected by [m]:
        - BCM_SBA_RAID [=m] && DMADEVICES [=y] && (ARM64 [=y] || ...
        Selected by [n]:
        - AMCC_PPC440SPE_ADMA [=n] && DMADEVICES [=y] && (440SPe || ...
        - FSL_RAID [=n] && DMADEVICES [=y] && FSL_SOC && ...
        - INTEL_IOATDMA [=n] && DMADEVICES [=y] && PCI [=y] && X86_64
        - MV_XOR [=n] && DMADEVICES [=y] && (PLAT_ORION || ARCH_MVEBU [=y] ...
        - XGENE_DMA [=n] && DMADEVICES [=y] && (ARCH_XGENE [=y] || ...
        - DMATEST [=n] && DMADEVICES [=y] && DMA_ENGINE [=y]
      Suggested-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      Signed-off-by: NEugeniu Rosca <erosca@de.adit-jv.com>
      Reviewed-by: NPetr Vorel <pvorel@suse.cz>
      Reviewed-by: NUlf Magnusson <ulfalizer@gmail.com>
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      d9119b59
    • M
      kconfig: clean-up reverse dependency help implementation · 9a47ceec
      Masahiro Yamada 提交于
      This commit splits out the special E_OR handling ('-' instead of '||')
      into a dedicated helper expr_print_revdev().
      
      Restore the original expr_print() prior to commit 1ccb2714
      ("kconfig: make "Selected by:" and "Implied by:" readable").
      
      This makes sense because:
      
        - We need to chop those expressions only when printing the reverse
          dependency, and only when E_OR is encountered
      
        - Otherwise, it should be printed as before, so fall back to
          expr_print()
      
      This also improves the behavior; for a single line, it was previously
      displayed in the same line as "Selected by", like this:
      
        Selected by: A [=n] && B [=n]
      
      This will be displayed in a new line, consistently:
      
        Selected by:
        - A [=n] && B [=n]
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      Reviewed-by: NPetr Vorel <pvorel@suse.cz>
      9a47ceec
    • U
      checkpatch: kconfig: prefer 'help' over '---help---' · 84af7a61
      Ulf Magnusson 提交于
      IMO, we should discourage '---help---' for new help texts, even in cases
      where it would be consistent with other help texts in the file. This
      will help if we ever want to get rid of '---help---' in the future.
      
      Also simplify the code to only check for exactly '---help---'. Since
      commit c2264564 ("kconfig: warn of unhandled characters in Kconfig
      commands"), '---help---' is a proper keyword and can only appear in that
      form. Prior to that commit, '---help---' working was more of a syntactic
      quirk.
      Signed-off-by: NUlf Magnusson <ulfalizer@gmail.com>
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      84af7a61
    • U
      checkpatch: kconfig: check help texts for menuconfig and choice · 678ae162
      Ulf Magnusson 提交于
      Currently, only Kconfig symbols are checked for a missing or short help
      text, and are only checked if they are defined with the 'config'
      keyword.
      
      To make the check more general, extend it to also check help texts for
      choices and for symbols defined with the 'menuconfig' keyword.
      
      This increases the accuracy of the check for symbols that would already
      have been checked as well, since e.g. a 'menuconfig' symbol after a help
      text will be recognized as ending the preceding symbol/choice
      definition.
      
      To increase the accuracy of the check further, also recognize 'if',
      'endif', 'menu', 'endmenu', 'endchoice', and 'source' as ending a
      symbol/choice definition.
      Signed-off-by: NUlf Magnusson <ulfalizer@gmail.com>
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      678ae162
    • U
      checkpatch: kconfig: recognize more prompts when checking help texts · 86adf1a0
      Ulf Magnusson 提交于
      The check for a missing or short help text only considers symbols with a
      prompt, but doesn't recognize any of the following as a prompt:
      
      	bool 'foo'
      	tristate 'foo'
      	prompt "foo"
      	prompt 'foo'
      
      Make the check recognize those too.
      Signed-off-by: NUlf Magnusson <ulfalizer@gmail.com>
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      86adf1a0
  2. 09 3月, 2018 2 次提交
    • J
      kbuild: Handle builtin dtb file names containing hyphens · 55fe6da9
      James Hogan 提交于
      cmd_dt_S_dtb constructs the assembly source to incorporate a devicetree
      FDT (that is, the .dtb file) as binary data in the kernel image. This
      assembly source contains labels before and after the binary data. The
      label names incorporate the file name of the corresponding .dtb file.
      Hyphens are not legal characters in labels, so .dtb files built into the
      kernel with hyphens in the file name result in errors like the
      following:
      
      bcm3368-netgear-cvg834g.dtb.S: Assembler messages:
      bcm3368-netgear-cvg834g.dtb.S:5: Error: : no such section
      bcm3368-netgear-cvg834g.dtb.S:5: Error: junk at end of line, first unrecognized character is `-'
      bcm3368-netgear-cvg834g.dtb.S:6: Error: unrecognized opcode `__dtb_bcm3368-netgear-cvg834g_begin:'
      bcm3368-netgear-cvg834g.dtb.S:8: Error: unrecognized opcode `__dtb_bcm3368-netgear-cvg834g_end:'
      bcm3368-netgear-cvg834g.dtb.S:9: Error: : no such section
      bcm3368-netgear-cvg834g.dtb.S:9: Error: junk at end of line, first unrecognized character is `-'
      
      Fix this by updating cmd_dt_S_dtb to transform all hyphens from the file
      name to underscores when constructing the labels.
      
      As of v4.16-rc2, 1139 .dts files across ARM64, ARM, MIPS and PowerPC
      contain hyphens in their names, but the issue only currently manifests
      on Broadcom MIPS platforms, as that is the only place where such files
      are built into the kernel. For example when CONFIG_DT_NETGEAR_CVG834G=y,
      or on BMIPS kernels when the dtbs target is used (in the latter case it
      admittedly shouldn't really build all the dtb.o files, but thats a
      separate issue).
      
      Fixes: 69583551 ("MIPS: BMIPS: rename bcm96358nb4ser to bcm6358-neufbox4-sercom")
      Signed-off-by: NJames Hogan <jhogan@kernel.org>
      Reviewed-by: NFrank Rowand <frowand.list@gmail.com>
      Cc: Rob Herring <robh+dt@kernel.org>
      Cc: Michal Marek <michal.lkml@markovi.net>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Cc: Florian Fainelli <f.fainelli@gmail.com>
      Cc: Kevin Cernekee <cernekee@gmail.com>
      Cc: <stable@vger.kernel.org> # 4.9+
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      55fe6da9
    • M
      scripts/bloat-o-meter: fix typos in help · 61fc4708
      Matteo Croce 提交于
      The bloat-o-meter script has two typos in the help, fix both.
      
      Fixes: 192efb7a ("bloat-o-meter: provide 3 different arguments for data, function and All")
      Signed-off-by: NMatteo Croce <mcroce@redhat.com>
      Acked-by: NRandy Dunlap <rdunlap@infradead.org>
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      61fc4708
  3. 05 3月, 2018 3 次提交
    • R
      fixdep: do not ignore kconfig.h · 638e69cf
      Rasmus Villemoes 提交于
      kconfig.h was excluded from consideration by fixdep by
      6a5be57f (fixdep: fix extraneous dependencies) to avoid some false
      positive hits
      
      (1) include/config/.h
      (2) include/config/h.h
      (3) include/config/foo.h
      
      (1) occurred because kconfig.h contains the string CONFIG_ in a
      comment. However, since dee81e98 (fixdep: faster CONFIG_ search), we
      have a check that the part after CONFIG_ is non-empty, so this does not
      happen anymore (and CONFIG_ appears by itself elsewhere, so that check
      is worthwhile).
      
      (2) comes from the include guard, __LINUX_KCONFIG_H. But with the
      previous patch, we no longer match that either.
      
      That leaves (3), which amounts to one [1] false dependency (aka stat() call
      done by make), which I think we can live with:
      
      We've already had one case [2] where the lack of include/linux/kconfig.h in
      the .o.cmd file caused a missing rebuild, and while I originally thought
      we should just put kconfig.h in the dependency list without parsing it
      for the CONFIG_ pattern, we actually do have some real CONFIG_ symbols
      mentioned in it, and one can imagine some translation unit that just
      does '#ifdef __BIG_ENDIAN' but doesn't through some other header
      actually depend on CONFIG_CPU_BIG_ENDIAN - so changing the target
      endianness could end up rebuilding the world, minus that small
      TU. Quoting Linus,
      
        ... when missing dependencies cause a missed re-compile, the resulting
        bugs can be _really_ subtle.
      
      [1] well, two, we now also have CONFIG_BOOGER/booger.h - we could change
      that to FOO if we care
      
      [2] https://lkml.org/lkml/2018/2/22/838
      
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: NRasmus Villemoes <linux@rasmusvillemoes.dk>
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      638e69cf
    • R
      fixdep: remove some false CONFIG_ matches · 5b8ad96d
      Rasmus Villemoes 提交于
      The string CONFIG_ quite often appears after other alphanumerics,
      meaning that that instance cannot be referencing a Kconfig
      symbol. Omitting these means make has fewer files to stat() when
      deciding what needs to be rebuilt - for a defconfig build, this seems to
      remove about 2% of the (wildcard ...) lines from the .o.cmd files.
      Signed-off-by: NRasmus Villemoes <linux@rasmusvillemoes.dk>
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      5b8ad96d
    • R
      fixdep: remove stale references to uml-config.h · 14a596a7
      Rasmus Villemoes 提交于
      uml-config.h hasn't existed in this decade (87e299e5 - x86, um: get
      rid of uml-config.h). The few remaining UML_CONFIG instances are defined
      directly in terms of their real CONFIG symbol in common-offsets.h, so
      unlike when the symbols got defined via a sed script, anything that uses
      UML_CONFIG_FOO now should also automatically pick up a dependency on
      CONFIG_FOO via the normal fixdep mechanism (since common-offsets.h
      should at least recursively be a dependency). Hence I believe we should
      actually be able to ignore the HELLO_CONFIG_BOOM cases.
      
      Cc: Al Viro <viro@zeniv.linux.org.uk>
      Cc: Richard Weinberger <richard@nod.at>
      Cc: user-mode-linux-devel@lists.sourceforge.net
      Signed-off-by: NRasmus Villemoes <linux@rasmusvillemoes.dk>
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      14a596a7
  4. 02 3月, 2018 7 次提交
  5. 01 3月, 2018 1 次提交
  6. 21 2月, 2018 3 次提交
  7. 10 2月, 2018 2 次提交
  8. 09 2月, 2018 2 次提交