Merge tag 'docs-4.16' of git://git.lwn.net/linux
[sfrench/cifs-2.6.git] / Documentation / kbuild / kconfig-language.txt
index c4a293a03c337f5080d9cf682f64428fc74a1d79..f5b9493f04ada9aa923211fed1fea6210e93e099 100644 (file)
@@ -77,6 +77,27 @@ applicable everywhere (see syntax).
   Optionally, dependencies only for this default value can be added with
   "if".
 
+ The default value deliberately defaults to 'n' in order to avoid bloating the
+ build. With few exceptions, new config options should not change this. The
+ intent is for "make oldconfig" to add as little as possible to the config from
+ release to release.
+
+ Note:
+       Things that merit "default y/m" include:
+
+       a) A new Kconfig option for something that used to always be built
+          should be "default y".
+
+       b) A new gatekeeping Kconfig option that hides/shows other Kconfig
+          options (but does not generate any code of its own), should be
+          "default y" so people will see those other options.
+
+       c) Sub-driver behavior or similar options for a driver that is
+          "default n". This allows you to provide sane defaults.
+
+       d) Hardware or infrastructure that everybody expects, such as CONFIG_NET
+          or CONFIG_BLOCK. These are rare exceptions.
+
 - type definition + default value:
        "def_bool"/"def_tristate" <expr> ["if" <expr>]
   This is a shorthand notation for a type definition plus a value.