Linux Audio

Check our new training course

Embedded Linux Audio

Check our new training course
with Creative Commons CC-BY-SA
lecture materials

Bootlin logo

Elixir Cross Referencer

Loading...
   1
   2
   3
   4
   5
   6
   7
   8
   9
  10
  11
  12
  13
  14
  15
  16
  17
  18
  19
  20
  21
  22
  23
  24
  25
  26
  27
  28
  29
  30
  31
  32
  33
  34
  35
  36
  37
  38
  39
  40
  41
  42
  43
  44
  45
  46
  47
  48
  49
  50
  51
  52
  53
  54
  55
  56
  57
  58
  59
  60
  61
  62
  63
  64
  65
  66
  67
  68
  69
  70
  71
  72
  73
  74
  75
  76
  77
  78
  79
  80
  81
  82
  83
  84
  85
  86
  87
  88
  89
  90
  91
  92
  93
  94
  95
  96
  97
  98
  99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 164
 165
 166
 167
 168
 169
 170
 171
 172
 173
 174
 175
 176
 177
 178
 179
 180
 181
 182
 183
 184
 185
 186
 187
 188
 189
 190
 191
 192
 193
 194
 195
 196
 197
 198
 199
 200
 201
 202
 203
 204
 205
 206
 207
 208
 209
 210
 211
 212
 213
 214
 215
 216
 217
 218
 219
 220
 221
 222
 223
 224
 225
 226
 227
 228
 229
 230
 231
 232
 233
 234
 235
 236
 237
 238
 239
 240
 241
 242
 243
 244
 245
 246
 247
 248
 249
 250
 251
 252
 253
 254
 255
 256
 257
 258
 259
 260
 261
 262
 263
 264
 265
 266
 267
 268
 269
 270
 271
 272
 273
 274
 275
 276
 277
 278
 279
 280
 281
 282
 283
 284
 285
 286
 287
 288
 289
 290
 291
 292
 293
 294
 295
 296
 297
 298
 299
 300
 301
 302
 303
 304
 305
 306
 307
 308
 309
 310
 311
 312
 313
 314
 315
 316
 317
 318
 319
 320
 321
 322
 323
 324
 325
 326
 327
 328
 329
 330
 331
 332
 333
 334
 335
 336
 337
 338
 339
 340
 341
 342
 343
 344
 345
 346
 347
 348
 349
 350
 351
 352
 353
 354
 355
 356
 357
 358
 359
 360
 361
 362
 363
 364
 365
 366
 367
 368
 369
 370
 371
 372
 373
 374
 375
 376
 377
 378
 379
 380
 381
 382
 383
 384
 385
 386
 387
 388
 389
 390
 391
 392
 393
 394
 395
 396
 397
 398
 399
 400
 401
 402
 403
 404
 405
 406
 407
 408
 409
 410
 411
 412
 413
 414
 415
 416
 417
 418
 419
 420
 421
 422
 423
 424
 425
 426
 427
 428
 429
 430
 431
 432
 433
 434
 435
 436
 437
 438
 439
 440
 441
 442
 443
 444
 445
 446
 447
 448
 449
 450
 451
 452
 453
 454
 455
 456
 457
 458
 459
 460
 461
 462
 463
 464
 465
 466
 467
 468
 469
 470
 471
 472
 473
 474
 475
 476
 477
 478
 479
 480
 481
 482
 483
 484
 485
 486
 487
 488
 489
 490
 491
 492
 493
 494
 495
 496
 497
 498
 499
 500
 501
 502
 503
 504
 505
 506
 507
 508
 509
 510
 511
 512
 513
 514
 515
 516
 517
 518
 519
 520
 521
 522
 523
 524
 525
 526
 527
 528
 529
 530
 531
 532
 533
 534
 535
 536
 537
 538
 539
 540
 541
 542
 543
 544
 545
 546
 547
 548
 549
 550
 551
 552
 553
 554
 555
 556
 557
 558
 559
 560
 561
 562
 563
 564
 565
 566
 567
 568
 569
 570
 571
 572
 573
 574
 575
 576
 577
 578
 579
 580
 581
 582
 583
 584
 585
 586
 587
 588
 589
 590
 591
 592
 593
 594
 595
 596
 597
 598
 599
 600
 601
 602
 603
 604
 605
 606
 607
 608
 609
 610
 611
 612
 613
 614
 615
 616
 617
 618
 619
 620
 621
 622
 623
 624
 625
 626
 627
 628
 629
 630
 631
 632
 633
 634
 635
 636
 637
 638
 639
 640
 641
 642
 643
 644
 645
 646
 647
 648
 649
 650
 651
 652
 653
 654
 655
 656
 657
 658
 659
 660
 661
 662
 663
 664
 665
 666
 667
 668
 669
 670
 671
 672
 673
 674
 675
 676
 677
 678
 679
 680
 681
 682
 683
 684
 685
 686
 687
 688
 689
 690
 691
 692
 693
 694
 695
 696
 697
 698
 699
 700
 701
 702
 703
 704
 705
 706
 707
 708
 709
 710
 711
 712
 713
 714
 715
 716
 717
 718
 719
 720
 721
 722
 723
 724
 725
 726
 727
 728
 729
 730
 731
 732
 733
 734
 735
 736
 737
 738
 739
 740
 741
 742
 743
 744
 745
 746
 747
 748
 749
 750
 751
 752
 753
 754
 755
 756
 757
 758
 759
 760
 761
 762
 763
 764
 765
 766
 767
 768
 769
 770
 771
 772
 773
 774
 775
 776
 777
 778
 779
 780
 781
 782
 783
 784
 785
 786
 787
 788
 789
 790
 791
 792
 793
 794
 795
 796
 797
 798
 799
 800
 801
 802
 803
 804
 805
 806
 807
 808
 809
 810
 811
 812
 813
 814
 815
 816
 817
 818
 819
 820
 821
 822
 823
 824
 825
 826
 827
 828
 829
 830
 831
 832
 833
 834
 835
 836
 837
 838
 839
 840
 841
 842
 843
 844
 845
 846
 847
 848
 849
 850
 851
 852
 853
 854
 855
 856
 857
 858
 859
 860
 861
 862
 863
 864
 865
 866
 867
 868
 869
 870
 871
 872
 873
 874
 875
 876
 877
 878
 879
 880
 881
 882
 883
 884
 885
 886
 887
 888
 889
 890
 891
 892
 893
 894
 895
 896
 897
 898
 899
 900
 901
 902
 903
 904
 905
 906
 907
 908
 909
 910
 911
 912
 913
 914
 915
 916
 917
 918
 919
 920
 921
 922
 923
 924
 925
 926
 927
 928
 929
 930
 931
 932
 933
 934
 935
 936
 937
 938
 939
 940
 941
 942
 943
 944
 945
 946
 947
 948
 949
 950
 951
 952
 953
 954
 955
 956
 957
 958
 959
 960
 961
 962
 963
 964
 965
 966
 967
 968
 969
 970
 971
 972
 973
 974
 975
 976
 977
 978
 979
 980
 981
 982
 983
 984
 985
 986
 987
 988
 989
 990
 991
 992
 993
 994
 995
 996
 997
 998
 999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
config ARCH
	string
	option env="ARCH"

config KERNELVERSION
	string
	option env="KERNELVERSION"

config DEFCONFIG_LIST
	string
	depends on !UML
	option defconfig_list
	default "/lib/modules/$UNAME_RELEASE/.config"
	default "/etc/kernel-config"
	default "/boot/config-$UNAME_RELEASE"
	default "$ARCH_DEFCONFIG"
	default "arch/$ARCH/defconfig"

config CONSTRUCTORS
	bool
	depends on !UML

config HAVE_IRQ_WORK
	bool

config IRQ_WORK
	bool
	depends on HAVE_IRQ_WORK

menu "General setup"

config EXPERIMENTAL
	bool "Prompt for development and/or incomplete code/drivers"
	---help---
	  Some of the various things that Linux supports (such as network
	  drivers, file systems, network protocols, etc.) can be in a state
	  of development where the functionality, stability, or the level of
	  testing is not yet high enough for general use. This is usually
	  known as the "alpha-test" phase among developers. If a feature is
	  currently in alpha-test, then the developers usually discourage
	  uninformed widespread use of this feature by the general public to
	  avoid "Why doesn't this work?" type mail messages. However, active
	  testing and use of these systems is welcomed. Just be aware that it
	  may not meet the normal level of reliability or it may fail to work
	  in some special cases. Detailed bug reports from people familiar
	  with the kernel internals are usually welcomed by the developers
	  (before submitting bug reports, please read the documents
	  <file:README>, <file:MAINTAINERS>, <file:REPORTING-BUGS>,
	  <file:Documentation/BUG-HUNTING>, and
	  <file:Documentation/oops-tracing.txt> in the kernel source).

	  This option will also make obsoleted drivers available. These are
	  drivers that have been replaced by something else, and/or are
	  scheduled to be removed in a future kernel release.

	  Unless you intend to help test and develop a feature or driver that
	  falls into this category, or you have a situation that requires
	  using these features, you should probably say N here, which will
	  cause the configurator to present you with fewer choices. If
	  you say Y here, you will be offered the choice of using features or
	  drivers that are currently considered to be in the alpha-test phase.

config BROKEN
	bool

config BROKEN_ON_SMP
	bool
	depends on BROKEN || !SMP
	default y

config INIT_ENV_ARG_LIMIT
	int
	default 32 if !UML
	default 128 if UML
	help
	  Maximum of each of the number of arguments and environment
	  variables passed to init from the kernel command line.


config CROSS_COMPILE
	string "Cross-compiler tool prefix"
	help
	  Same as running 'make CROSS_COMPILE=prefix-' but stored for
	  default make runs in this kernel build directory.  You don't
	  need to set this unless you want the configured kernel build
	  directory to select the cross-compiler automatically.

config LOCALVERSION
	string "Local version - append to kernel release"
	help
	  Append an extra string to the end of your kernel version.
	  This will show up when you type uname, for example.
	  The string you set here will be appended after the contents of
	  any files with a filename matching localversion* in your
	  object and source tree, in that order.  Your total string can
	  be a maximum of 64 characters.

config LOCALVERSION_AUTO
	bool "Automatically append version information to the version string"
	default y
	help
	  This will try to automatically determine if the current tree is a
	  release tree by looking for git tags that belong to the current
	  top of tree revision.

	  A string of the format -gxxxxxxxx will be added to the localversion
	  if a git-based tree is found.  The string generated by this will be
	  appended after any matching localversion* files, and after the value
	  set in CONFIG_LOCALVERSION.

	  (The actual string used here is the first eight characters produced
	  by running the command:

	    $ git rev-parse --verify HEAD

	  which is done within the script "scripts/setlocalversion".)

config HAVE_KERNEL_GZIP
	bool

config HAVE_KERNEL_BZIP2
	bool

config HAVE_KERNEL_LZMA
	bool

config HAVE_KERNEL_XZ
	bool

config HAVE_KERNEL_LZO
	bool

choice
	prompt "Kernel compression mode"
	default KERNEL_GZIP
	depends on HAVE_KERNEL_GZIP || HAVE_KERNEL_BZIP2 || HAVE_KERNEL_LZMA || HAVE_KERNEL_XZ || HAVE_KERNEL_LZO
	help
	  The linux kernel is a kind of self-extracting executable.
	  Several compression algorithms are available, which differ
	  in efficiency, compression and decompression speed.
	  Compression speed is only relevant when building a kernel.
	  Decompression speed is relevant at each boot.

	  If you have any problems with bzip2 or lzma compressed
	  kernels, mail me (Alain Knaff) <alain@knaff.lu>. (An older
	  version of this functionality (bzip2 only), for 2.4, was
	  supplied by Christian Ludwig)

	  High compression options are mostly useful for users, who
	  are low on disk space (embedded systems), but for whom ram
	  size matters less.

	  If in doubt, select 'gzip'

config KERNEL_GZIP
	bool "Gzip"
	depends on HAVE_KERNEL_GZIP
	help
	  The old and tried gzip compression. It provides a good balance
	  between compression ratio and decompression speed.

config KERNEL_BZIP2
	bool "Bzip2"
	depends on HAVE_KERNEL_BZIP2
	help
	  Its compression ratio and speed is intermediate.
	  Decompression speed is slowest among the three.  The kernel
	  size is about 10% smaller with bzip2, in comparison to gzip.
	  Bzip2 uses a large amount of memory. For modern kernels you
	  will need at least 8MB RAM or more for booting.

config KERNEL_LZMA
	bool "LZMA"
	depends on HAVE_KERNEL_LZMA
	help
	  The most recent compression algorithm.
	  Its ratio is best, decompression speed is between the other
	  two. Compression is slowest.	The kernel size is about 33%
	  smaller with LZMA in comparison to gzip.

config KERNEL_XZ
	bool "XZ"
	depends on HAVE_KERNEL_XZ
	help
	  XZ uses the LZMA2 algorithm and instruction set specific
	  BCJ filters which can improve compression ratio of executable
	  code. The size of the kernel is about 30% smaller with XZ in
	  comparison to gzip. On architectures for which there is a BCJ
	  filter (i386, x86_64, ARM, IA-64, PowerPC, and SPARC), XZ
	  will create a few percent smaller kernel than plain LZMA.

	  The speed is about the same as with LZMA: The decompression
	  speed of XZ is better than that of bzip2 but worse than gzip
	  and LZO. Compression is slow.

config KERNEL_LZO
	bool "LZO"
	depends on HAVE_KERNEL_LZO
	help
	  Its compression ratio is the poorest among the 4. The kernel
	  size is about 10% bigger than gzip; however its speed
	  (both compression and decompression) is the fastest.

endchoice

config DEFAULT_HOSTNAME
	string "Default hostname"
	default "(none)"
	help
	  This option determines the default system hostname before userspace
	  calls sethostname(2). The kernel traditionally uses "(none)" here,
	  but you may wish to use a different default here to make a minimal
	  system more usable with less configuration.

config SWAP
	bool "Support for paging of anonymous memory (swap)"
	depends on MMU && BLOCK
	default y
	help
	  This option allows you to choose whether you want to have support
	  for so called swap devices or swap files in your kernel that are
	  used to provide more virtual memory than the actual RAM present
	  in your computer.  If unsure say Y.

config SYSVIPC
	bool "System V IPC"
	---help---
	  Inter Process Communication is a suite of library functions and
	  system calls which let processes (running programs) synchronize and
	  exchange information. It is generally considered to be a good thing,
	  and some programs won't run unless you say Y here. In particular, if
	  you want to run the DOS emulator dosemu under Linux (read the
	  DOSEMU-HOWTO, available from <http://www.tldp.org/docs.html#howto>),
	  you'll need to say Y here.

	  You can find documentation about IPC with "info ipc" and also in
	  section 6.4 of the Linux Programmer's Guide, available from
	  <http://www.tldp.org/guides.html>.

config SYSVIPC_SYSCTL
	bool
	depends on SYSVIPC
	depends on SYSCTL
	default y

config POSIX_MQUEUE
	bool "POSIX Message Queues"
	depends on NET && EXPERIMENTAL
	---help---
	  POSIX variant of message queues is a part of IPC. In POSIX message
	  queues every message has a priority which decides about succession
	  of receiving it by a process. If you want to compile and run
	  programs written e.g. for Solaris with use of its POSIX message
	  queues (functions mq_*) say Y here.

	  POSIX message queues are visible as a filesystem called 'mqueue'
	  and can be mounted somewhere if you want to do filesystem
	  operations on message queues.

	  If unsure, say Y.

config POSIX_MQUEUE_SYSCTL
	bool
	depends on POSIX_MQUEUE
	depends on SYSCTL
	default y

config BSD_PROCESS_ACCT
	bool "BSD Process Accounting"
	help
	  If you say Y here, a user level program will be able to instruct the
	  kernel (via a special system call) to write process accounting
	  information to a file: whenever a process exits, information about
	  that process will be appended to the file by the kernel.  The
	  information includes things such as creation time, owning user,
	  command name, memory usage, controlling terminal etc. (the complete
	  list is in the struct acct in <file:include/linux/acct.h>).  It is
	  up to the user level program to do useful things with this
	  information.  This is generally a good idea, so say Y.

config BSD_PROCESS_ACCT_V3
	bool "BSD Process Accounting version 3 file format"
	depends on BSD_PROCESS_ACCT
	default n
	help
	  If you say Y here, the process accounting information is written
	  in a new file format that also logs the process IDs of each
	  process and it's parent. Note that this file format is incompatible
	  with previous v0/v1/v2 file formats, so you will need updated tools
	  for processing it. A preliminary version of these tools is available
	  at <http://www.gnu.org/software/acct/>.

config FHANDLE
	bool "open by fhandle syscalls"
	select EXPORTFS
	help
	  If you say Y here, a user level program will be able to map
	  file names to handle and then later use the handle for
	  different file system operations. This is useful in implementing
	  userspace file servers, which now track files using handles instead
	  of names. The handle would remain the same even if file names
	  get renamed. Enables open_by_handle_at(2) and name_to_handle_at(2)
	  syscalls.

config TASKSTATS
	bool "Export task/process statistics through netlink (EXPERIMENTAL)"
	depends on NET
	default n
	help
	  Export selected statistics for tasks/processes through the
	  generic netlink interface. Unlike BSD process accounting, the
	  statistics are available during the lifetime of tasks/processes as
	  responses to commands. Like BSD accounting, they are sent to user
	  space on task exit.

	  Say N if unsure.

config TASK_DELAY_ACCT
	bool "Enable per-task delay accounting (EXPERIMENTAL)"
	depends on TASKSTATS
	help
	  Collect information on time spent by a task waiting for system
	  resources like cpu, synchronous block I/O completion and swapping
	  in pages. Such statistics can help in setting a task's priorities
	  relative to other tasks for cpu, io, rss limits etc.

	  Say N if unsure.

config TASK_XACCT
	bool "Enable extended accounting over taskstats (EXPERIMENTAL)"
	depends on TASKSTATS
	help
	  Collect extended task accounting data and send the data
	  to userland for processing over the taskstats interface.

	  Say N if unsure.

config TASK_IO_ACCOUNTING
	bool "Enable per-task storage I/O accounting (EXPERIMENTAL)"
	depends on TASK_XACCT
	help
	  Collect information on the number of bytes of storage I/O which this
	  task has caused.

	  Say N if unsure.

config AUDIT
	bool "Auditing support"
	depends on NET
	help
	  Enable auditing infrastructure that can be used with another
	  kernel subsystem, such as SELinux (which requires this for
	  logging of avc messages output).  Does not do system-call
	  auditing without CONFIG_AUDITSYSCALL.

config AUDITSYSCALL
	bool "Enable system-call auditing support"
	depends on AUDIT && (X86 || PPC || S390 || IA64 || UML || SPARC64 || SUPERH || ARM)
	default y if SECURITY_SELINUX
	help
	  Enable low-overhead system-call auditing infrastructure that
	  can be used independently or with another kernel subsystem,
	  such as SELinux.

config AUDIT_WATCH
	def_bool y
	depends on AUDITSYSCALL
	select FSNOTIFY

config AUDIT_TREE
	def_bool y
	depends on AUDITSYSCALL
	select FSNOTIFY

config AUDIT_LOGINUID_IMMUTABLE
	bool "Make audit loginuid immutable"
	depends on AUDIT
	help
	  The config option toggles if a task setting its loginuid requires
	  CAP_SYS_AUDITCONTROL or if that task should require no special permissions
	  but should instead only allow setting its loginuid if it was never
	  previously set.  On systems which use systemd or a similar central
	  process to restart login services this should be set to true.  On older
	  systems in which an admin would typically have to directly stop and
	  start processes this should be set to false.  Setting this to true allows
	  one to drop potentially dangerous capabilites from the login tasks,
	  but may not be backwards compatible with older init systems.

source "kernel/irq/Kconfig"

menu "RCU Subsystem"

choice
	prompt "RCU Implementation"
	default TREE_RCU

config TREE_RCU
	bool "Tree-based hierarchical RCU"
	depends on !PREEMPT && SMP
	help
	  This option selects the RCU implementation that is
	  designed for very large SMP system with hundreds or
	  thousands of CPUs.  It also scales down nicely to
	  smaller systems.

config TREE_PREEMPT_RCU
	bool "Preemptible tree-based hierarchical RCU"
	depends on PREEMPT && SMP
	help
	  This option selects the RCU implementation that is
	  designed for very large SMP systems with hundreds or
	  thousands of CPUs, but for which real-time response
	  is also required.  It also scales down nicely to
	  smaller systems.

config TINY_RCU
	bool "UP-only small-memory-footprint RCU"
	depends on !PREEMPT && !SMP
	help
	  This option selects the RCU implementation that is
	  designed for UP systems from which real-time response
	  is not required.  This option greatly reduces the
	  memory footprint of RCU.

config TINY_PREEMPT_RCU
	bool "Preemptible UP-only small-memory-footprint RCU"
	depends on PREEMPT && !SMP
	help
	  This option selects the RCU implementation that is designed
	  for real-time UP systems.  This option greatly reduces the
	  memory footprint of RCU.

endchoice

config PREEMPT_RCU
	def_bool ( TREE_PREEMPT_RCU || TINY_PREEMPT_RCU )
	help
	  This option enables preemptible-RCU code that is common between
	  the TREE_PREEMPT_RCU and TINY_PREEMPT_RCU implementations.

config RCU_FANOUT
	int "Tree-based hierarchical RCU fanout value"
	range 2 64 if 64BIT
	range 2 32 if !64BIT
	depends on TREE_RCU || TREE_PREEMPT_RCU
	default 64 if 64BIT
	default 32 if !64BIT
	help
	  This option controls the fanout of hierarchical implementations
	  of RCU, allowing RCU to work efficiently on machines with
	  large numbers of CPUs.  This value must be at least the fourth
	  root of NR_CPUS, which allows NR_CPUS to be insanely large.
	  The default value of RCU_FANOUT should be used for production
	  systems, but if you are stress-testing the RCU implementation
	  itself, small RCU_FANOUT values allow you to test large-system
	  code paths on small(er) systems.

	  Select a specific number if testing RCU itself.
	  Take the default if unsure.

config RCU_FANOUT_EXACT
	bool "Disable tree-based hierarchical RCU auto-balancing"
	depends on TREE_RCU || TREE_PREEMPT_RCU
	default n
	help
	  This option forces use of the exact RCU_FANOUT value specified,
	  regardless of imbalances in the hierarchy.  This is useful for
	  testing RCU itself, and might one day be useful on systems with
	  strong NUMA behavior.

	  Without RCU_FANOUT_EXACT, the code will balance the hierarchy.

	  Say N if unsure.

config RCU_FAST_NO_HZ
	bool "Accelerate last non-dyntick-idle CPU's grace periods"
	depends on NO_HZ && SMP
	default n
	help
	  This option causes RCU to attempt to accelerate grace periods
	  in order to allow CPUs to enter dynticks-idle state more
	  quickly.  On the other hand, this option increases the overhead
	  of the dynticks-idle checking, particularly on systems with
	  large numbers of CPUs.

	  Say Y if energy efficiency is critically important, particularly
	  	if you have relatively few CPUs.

	  Say N if you are unsure.

config TREE_RCU_TRACE
	def_bool RCU_TRACE && ( TREE_RCU || TREE_PREEMPT_RCU )
	select DEBUG_FS
	help
	  This option provides tracing for the TREE_RCU and
	  TREE_PREEMPT_RCU implementations, permitting Makefile to
	  trivially select kernel/rcutree_trace.c.

config RCU_BOOST
	bool "Enable RCU priority boosting"
	depends on RT_MUTEXES && PREEMPT_RCU
	default n
	help
	  This option boosts the priority of preempted RCU readers that
	  block the current preemptible RCU grace period for too long.
	  This option also prevents heavy loads from blocking RCU
	  callback invocation for all flavors of RCU.

	  Say Y here if you are working with real-time apps or heavy loads
	  Say N here if you are unsure.

config RCU_BOOST_PRIO
	int "Real-time priority to boost RCU readers to"
	range 1 99
	depends on RCU_BOOST
	default 1
	help
	  This option specifies the real-time priority to which preempted
	  RCU readers are to be boosted.  If you are working with CPU-bound
	  real-time applications, you should specify a priority higher then
	  the highest-priority CPU-bound application.

	  Specify the real-time priority, or take the default if unsure.

config RCU_BOOST_DELAY
	int "Milliseconds to delay boosting after RCU grace-period start"
	range 0 3000
	depends on RCU_BOOST
	default 500
	help
	  This option specifies the time to wait after the beginning of
	  a given grace period before priority-boosting preempted RCU
	  readers blocking that grace period.  Note that any RCU reader
	  blocking an expedited RCU grace period is boosted immediately.

	  Accept the default if unsure.

endmenu # "RCU Subsystem"

config IKCONFIG
	tristate "Kernel .config support"
	---help---
	  This option enables the complete Linux kernel ".config" file
	  contents to be saved in the kernel. It provides documentation
	  of which kernel options are used in a running kernel or in an
	  on-disk kernel.  This information can be extracted from the kernel
	  image file with the script scripts/extract-ikconfig and used as
	  input to rebuild the current kernel or to build another kernel.
	  It can also be extracted from a running kernel by reading
	  /proc/config.gz if enabled (below).

config IKCONFIG_PROC
	bool "Enable access to .config through /proc/config.gz"
	depends on IKCONFIG && PROC_FS
	---help---
	  This option enables access to the kernel configuration file
	  through /proc/config.gz.

config LOG_BUF_SHIFT
	int "Kernel log buffer size (16 => 64KB, 17 => 128KB)"
	range 12 21
	default 17
	help
	  Select kernel log buffer size as a power of 2.
	  Examples:
	  	     17 => 128 KB
		     16 => 64 KB
	             15 => 32 KB
	             14 => 16 KB
		     13 =>  8 KB
		     12 =>  4 KB

#
# Architectures with an unreliable sched_clock() should select this:
#
config HAVE_UNSTABLE_SCHED_CLOCK
	bool

menuconfig CGROUPS
	boolean "Control Group support"
	depends on EVENTFD
	help
	  This option adds support for grouping sets of processes together, for
	  use with process control subsystems such as Cpusets, CFS, memory
	  controls or device isolation.
	  See
		- Documentation/scheduler/sched-design-CFS.txt	(CFS)
		- Documentation/cgroups/ (features for grouping, isolation
					  and resource control)

	  Say N if unsure.

if CGROUPS

config CGROUP_DEBUG
	bool "Example debug cgroup subsystem"
	default n
	help
	  This option enables a simple cgroup subsystem that
	  exports useful debugging information about the cgroups
	  framework.

	  Say N if unsure.

config CGROUP_FREEZER
	bool "Freezer cgroup subsystem"
	help
	  Provides a way to freeze and unfreeze all tasks in a
	  cgroup.

config CGROUP_DEVICE
	bool "Device controller for cgroups"
	help
	  Provides a cgroup implementing whitelists for devices which
	  a process in the cgroup can mknod or open.

config CPUSETS
	bool "Cpuset support"
	help
	  This option will let you create and manage CPUSETs which
	  allow dynamically partitioning a system into sets of CPUs and
	  Memory Nodes and assigning tasks to run only within those sets.
	  This is primarily useful on large SMP or NUMA systems.

	  Say N if unsure.

config PROC_PID_CPUSET
	bool "Include legacy /proc/<pid>/cpuset file"
	depends on CPUSETS
	default y

config CGROUP_CPUACCT
	bool "Simple CPU accounting cgroup subsystem"
	help
	  Provides a simple Resource Controller for monitoring the
	  total CPU consumed by the tasks in a cgroup.

config RESOURCE_COUNTERS
	bool "Resource counters"
	help
	  This option enables controller independent resource accounting
	  infrastructure that works with cgroups.

config CGROUP_MEM_RES_CTLR
	bool "Memory Resource Controller for Control Groups"
	depends on RESOURCE_COUNTERS
	select MM_OWNER
	help
	  Provides a memory resource controller that manages both anonymous
	  memory and page cache. (See Documentation/cgroups/memory.txt)

	  Note that setting this option increases fixed memory overhead
	  associated with each page of memory in the system. By this,
	  20(40)bytes/PAGE_SIZE on 32(64)bit system will be occupied by memory
	  usage tracking struct at boot. Total amount of this is printed out
	  at boot.

	  Only enable when you're ok with these trade offs and really
	  sure you need the memory resource controller. Even when you enable
	  this, you can set "cgroup_disable=memory" at your boot option to
	  disable memory resource controller and you can avoid overheads.
	  (and lose benefits of memory resource controller)

	  This config option also selects MM_OWNER config option, which
	  could in turn add some fork/exit overhead.

config CGROUP_MEM_RES_CTLR_SWAP
	bool "Memory Resource Controller Swap Extension"
	depends on CGROUP_MEM_RES_CTLR && SWAP
	help
	  Add swap management feature to memory resource controller. When you
	  enable this, you can limit mem+swap usage per cgroup. In other words,
	  when you disable this, memory resource controller has no cares to
	  usage of swap...a process can exhaust all of the swap. This extension
	  is useful when you want to avoid exhaustion swap but this itself
	  adds more overheads and consumes memory for remembering information.
	  Especially if you use 32bit system or small memory system, please
	  be careful about enabling this. When memory resource controller
	  is disabled by boot option, this will be automatically disabled and
	  there will be no overhead from this. Even when you set this config=y,
	  if boot option "swapaccount=0" is set, swap will not be accounted.
	  Now, memory usage of swap_cgroup is 2 bytes per entry. If swap page
	  size is 4096bytes, 512k per 1Gbytes of swap.
config CGROUP_MEM_RES_CTLR_SWAP_ENABLED
	bool "Memory Resource Controller Swap Extension enabled by default"
	depends on CGROUP_MEM_RES_CTLR_SWAP
	default y
	help
	  Memory Resource Controller Swap Extension comes with its price in
	  a bigger memory consumption. General purpose distribution kernels
	  which want to enable the feature but keep it disabled by default
	  and let the user enable it by swapaccount boot command line
	  parameter should have this option unselected.
	  For those who want to have the feature enabled by default should
	  select this option (if, for some reason, they need to disable it
	  then swapaccount=0 does the trick).
config CGROUP_MEM_RES_CTLR_KMEM
	bool "Memory Resource Controller Kernel Memory accounting (EXPERIMENTAL)"
	depends on CGROUP_MEM_RES_CTLR && EXPERIMENTAL
	default n
	help
	  The Kernel Memory extension for Memory Resource Controller can limit
	  the amount of memory used by kernel objects in the system. Those are
	  fundamentally different from the entities handled by the standard
	  Memory Controller, which are page-based, and can be swapped. Users of
	  the kmem extension can use it to guarantee that no group of processes
	  will ever exhaust kernel resources alone.

config CGROUP_PERF
	bool "Enable perf_event per-cpu per-container group (cgroup) monitoring"
	depends on PERF_EVENTS && CGROUPS
	help
	  This option extends the per-cpu mode to restrict monitoring to
	  threads which belong to the cgroup specified and run on the
	  designated cpu.

	  Say N if unsure.

menuconfig CGROUP_SCHED
	bool "Group CPU scheduler"
	default n
	help
	  This feature lets CPU scheduler recognize task groups and control CPU
	  bandwidth allocation to such task groups. It uses cgroups to group
	  tasks.

if CGROUP_SCHED
config FAIR_GROUP_SCHED
	bool "Group scheduling for SCHED_OTHER"
	depends on CGROUP_SCHED
	default CGROUP_SCHED

config CFS_BANDWIDTH
	bool "CPU bandwidth provisioning for FAIR_GROUP_SCHED"
	depends on EXPERIMENTAL
	depends on FAIR_GROUP_SCHED
	default n
	help
	  This option allows users to define CPU bandwidth rates (limits) for
	  tasks running within the fair group scheduler.  Groups with no limit
	  set are considered to be unconstrained and will run with no
	  restriction.
	  See tip/Documentation/scheduler/sched-bwc.txt for more information.

config RT_GROUP_SCHED
	bool "Group scheduling for SCHED_RR/FIFO"
	depends on EXPERIMENTAL
	depends on CGROUP_SCHED
	default n
	help
	  This feature lets you explicitly allocate real CPU bandwidth
	  to task groups. If enabled, it will also make it impossible to
	  schedule realtime tasks for non-root users until you allocate
	  realtime bandwidth for them.
	  See Documentation/scheduler/sched-rt-group.txt for more information.

endif #CGROUP_SCHED

config BLK_CGROUP
	tristate "Block IO controller"
	depends on BLOCK
	default n
	---help---
	Generic block IO controller cgroup interface. This is the common
	cgroup interface which should be used by various IO controlling
	policies.

	Currently, CFQ IO scheduler uses it to recognize task groups and
	control disk bandwidth allocation (proportional time slice allocation)
	to such task groups. It is also used by bio throttling logic in
	block layer to implement upper limit in IO rates on a device.

	This option only enables generic Block IO controller infrastructure.
	One needs to also enable actual IO controlling logic/policy. For
	enabling proportional weight division of disk bandwidth in CFQ, set
	CONFIG_CFQ_GROUP_IOSCHED=y; for enabling throttling policy, set
	CONFIG_BLK_DEV_THROTTLING=y.

	See Documentation/cgroups/blkio-controller.txt for more information.

config DEBUG_BLK_CGROUP
	bool "Enable Block IO controller debugging"
	depends on BLK_CGROUP
	default n
	---help---
	Enable some debugging help. Currently it exports additional stat
	files in a cgroup which can be useful for debugging.

endif # CGROUPS

config CHECKPOINT_RESTORE
	bool "Checkpoint/restore support" if EXPERT
	default n
	help
	  Enables additional kernel features in a sake of checkpoint/restore.
	  In particular it adds auxiliary prctl codes to setup process text,
	  data and heap segment sizes, and a few additional /proc filesystem
	  entries.

	  If unsure, say N here.

menuconfig NAMESPACES
	bool "Namespaces support" if EXPERT
	default !EXPERT
	help
	  Provides the way to make tasks work with different objects using
	  the same id. For example same IPC id may refer to different objects
	  or same user id or pid may refer to different tasks when used in
	  different namespaces.

if NAMESPACES

config UTS_NS
	bool "UTS namespace"
	default y
	help
	  In this namespace tasks see different info provided with the
	  uname() system call

config IPC_NS
	bool "IPC namespace"
	depends on (SYSVIPC || POSIX_MQUEUE)
	default y
	help
	  In this namespace tasks work with IPC ids which correspond to
	  different IPC objects in different namespaces.

config USER_NS
	bool "User namespace (EXPERIMENTAL)"
	depends on EXPERIMENTAL
	default y
	help
	  This allows containers, i.e. vservers, to use user namespaces
	  to provide different user info for different servers.
	  If unsure, say N.

config PID_NS
	bool "PID Namespaces"
	default y
	help
	  Support process id namespaces.  This allows having multiple
	  processes with the same pid as long as they are in different
	  pid namespaces.  This is a building block of containers.

config NET_NS
	bool "Network namespace"
	depends on NET
	default y
	help
	  Allow user space to create what appear to be multiple instances
	  of the network stack.

endif # NAMESPACES

config SCHED_AUTOGROUP
	bool "Automatic process group scheduling"
	select EVENTFD
	select CGROUPS
	select CGROUP_SCHED
	select FAIR_GROUP_SCHED
	help
	  This option optimizes the scheduler for common desktop workloads by
	  automatically creating and populating task groups.  This separation
	  of workloads isolates aggressive CPU burners (like build jobs) from
	  desktop applications.  Task group autogeneration is currently based
	  upon task session.

config MM_OWNER
	bool

config SYSFS_DEPRECATED
	bool "Enable deprecated sysfs features to support old userspace tools"
	depends on SYSFS
	default n
	help
	  This option adds code that switches the layout of the "block" class
	  devices, to not show up in /sys/class/block/, but only in
	  /sys/block/.

	  This switch is only active when the sysfs.deprecated=1 boot option is
	  passed or the SYSFS_DEPRECATED_V2 option is set.

	  This option allows new kernels to run on old distributions and tools,
	  which might get confused by /sys/class/block/. Since 2007/2008 all
	  major distributions and tools handle this just fine.

	  Recent distributions and userspace tools after 2009/2010 depend on
	  the existence of /sys/class/block/, and will not work with this
	  option enabled.

	  Only if you are using a new kernel on an old distribution, you might
	  need to say Y here.

config SYSFS_DEPRECATED_V2
	bool "Enable deprecated sysfs features by default"
	default n
	depends on SYSFS
	depends on SYSFS_DEPRECATED
	help
	  Enable deprecated sysfs by default.

	  See the CONFIG_SYSFS_DEPRECATED option for more details about this
	  option.

	  Only if you are using a new kernel on an old distribution, you might
	  need to say Y here. Even then, odds are you would not need it
	  enabled, you can always pass the boot option if absolutely necessary.

config RELAY
	bool "Kernel->user space relay support (formerly relayfs)"
	help
	  This option enables support for relay interface support in
	  certain file systems (such as debugfs).
	  It is designed to provide an efficient mechanism for tools and
	  facilities to relay large amounts of data from kernel space to
	  user space.

	  If unsure, say N.

config BLK_DEV_INITRD
	bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support"
	depends on BROKEN || !FRV
	help
	  The initial RAM filesystem is a ramfs which is loaded by the
	  boot loader (loadlin or lilo) and that is mounted as root
	  before the normal boot procedure. It is typically used to
	  load modules needed to mount the "real" root file system,
	  etc. See <file:Documentation/initrd.txt> for details.

	  If RAM disk support (BLK_DEV_RAM) is also included, this
	  also enables initial RAM disk (initrd) support and adds
	  15 Kbytes (more on some other architectures) to the kernel size.

	  If unsure say Y.

if BLK_DEV_INITRD

source "usr/Kconfig"

endif

config CC_OPTIMIZE_FOR_SIZE
	bool "Optimize for size"
	help
	  Enabling this option will pass "-Os" instead of "-O2" to gcc
	  resulting in a smaller kernel.

	  If unsure, say Y.

config SYSCTL
	bool

config ANON_INODES
	bool

menuconfig EXPERT
	bool "Configure standard kernel features (expert users)"
	# Unhide debug options, to make the on-by-default options visible
	select DEBUG_KERNEL
	help
	  This option allows certain base kernel options and settings
          to be disabled or tweaked. This is for specialized
          environments which can tolerate a "non-standard" kernel.
          Only use this if you really know what you are doing.

config UID16
	bool "Enable 16-bit UID system calls" if EXPERT
	depends on ARM || BLACKFIN || CRIS || FRV || H8300 || X86_32 || M68K || (S390 && !64BIT) || SUPERH || SPARC32 || (SPARC64 && COMPAT) || UML || (X86_64 && IA32_EMULATION)
	default y
	help
	  This enables the legacy 16-bit UID syscall wrappers.

config SYSCTL_SYSCALL
	bool "Sysctl syscall support" if EXPERT
	depends on PROC_SYSCTL
	default n
	select SYSCTL
	---help---
	  sys_sysctl uses binary paths that have been found challenging
	  to properly maintain and use.  The interface in /proc/sys
	  using paths with ascii names is now the primary path to this
	  information.

	  Almost nothing using the binary sysctl interface so if you are
	  trying to save some space it is probably safe to disable this,
	  making your kernel marginally smaller.

	  If unsure say N here.

config KALLSYMS
	 bool "Load all symbols for debugging/ksymoops" if EXPERT
	 default y
	 help
	   Say Y here to let the kernel print out symbolic crash information and
	   symbolic stack backtraces. This increases the size of the kernel
	   somewhat, as all symbols have to be loaded into the kernel image.

config KALLSYMS_ALL
	bool "Include all symbols in kallsyms"
	depends on DEBUG_KERNEL && KALLSYMS
	help
	   Normally kallsyms only contains the symbols of functions for nicer
	   OOPS messages and backtraces (i.e., symbols from the text and inittext
	   sections). This is sufficient for most cases. And only in very rare
	   cases (e.g., when a debugger is used) all symbols are required (e.g.,
	   names of variables from the data sections, etc).

	   This option makes sure that all symbols are loaded into the kernel
	   image (i.e., symbols from all sections) in cost of increased kernel
	   size (depending on the kernel configuration, it may be 300KiB or
	   something like this).

	   Say N unless you really need all symbols.

config HOTPLUG
	bool "Support for hot-pluggable devices" if EXPERT
	default y
	help
	  This option is provided for the case where no hotplug or uevent
	  capabilities is wanted by the kernel.  You should only consider
	  disabling this option for embedded systems that do not use modules, a
	  dynamic /dev tree, or dynamic device discovery.  Just say Y.

config PRINTK
	default y
	bool "Enable support for printk" if EXPERT
	help
	  This option enables normal printk support. Removing it
	  eliminates most of the message strings from the kernel image
	  and makes the kernel more or less silent. As this makes it
	  very difficult to diagnose system problems, saying N here is
	  strongly discouraged.

config BUG
	bool "BUG() support" if EXPERT
	default y
	help
          Disabling this option eliminates support for BUG and WARN, reducing
          the size of your kernel image and potentially quietly ignoring
          numerous fatal conditions. You should only consider disabling this
          option for embedded systems with no facilities for reporting errors.
          Just say Y.

config ELF_CORE
	default y
	bool "Enable ELF core dumps" if EXPERT
	help
	  Enable support for generating core dumps. Disabling saves about 4k.


config PCSPKR_PLATFORM
	bool "Enable PC-Speaker support" if EXPERT
	depends on HAVE_PCSPKR_PLATFORM
	select I8253_LOCK
	default y
	help
          This option allows to disable the internal PC-Speaker
          support, saving some memory.

config HAVE_PCSPKR_PLATFORM
	bool

config BASE_FULL
	default y
	bool "Enable full-sized data structures for core" if EXPERT
	help
	  Disabling this option reduces the size of miscellaneous core
	  kernel data structures. This saves memory on small machines,
	  but may reduce performance.

config FUTEX
	bool "Enable futex support" if EXPERT
	default y
	select RT_MUTEXES
	help
	  Disabling this option will cause the kernel to be built without
	  support for "fast userspace mutexes".  The resulting kernel may not
	  run glibc-based applications correctly.

config EPOLL
	bool "Enable eventpoll support" if EXPERT
	default y
	select ANON_INODES
	help
	  Disabling this option will cause the kernel to be built without
	  support for epoll family of system calls.

config SIGNALFD
	bool "Enable signalfd() system call" if EXPERT
	select ANON_INODES
	default y
	help
	  Enable the signalfd() system call that allows to receive signals
	  on a file descriptor.

	  If unsure, say Y.

config TIMERFD
	bool "Enable timerfd() system call" if EXPERT
	select ANON_INODES
	default y
	help
	  Enable the timerfd() system call that allows to receive timer
	  events on a file descriptor.

	  If unsure, say Y.

config EVENTFD
	bool "Enable eventfd() system call" if EXPERT
	select ANON_INODES
	default y
	help
	  Enable the eventfd() system call that allows to receive both
	  kernel notification (ie. KAIO) or userspace notifications.

	  If unsure, say Y.

config SHMEM
	bool "Use full shmem filesystem" if EXPERT
	default y
	depends on MMU
	help
	  The shmem is an internal filesystem used to manage shared memory.
	  It is backed by swap and manages resource limits. It is also exported
	  to userspace as tmpfs if TMPFS is enabled. Disabling this
	  option replaces shmem and tmpfs with the much simpler ramfs code,
	  which may be appropriate on small systems without swap.

config AIO
	bool "Enable AIO support" if EXPERT
	default y
	help
	  This option enables POSIX asynchronous I/O which may by used
          by some high performance threaded applications. Disabling
          this option saves about 7k.

config EMBEDDED
	bool "Embedded system"
	select EXPERT
	help
	  This option should be enabled if compiling the kernel for
	  an embedded system so certain expert options are available
	  for configuration.

config HAVE_PERF_EVENTS
	bool
	help
	  See tools/perf/design.txt for details.

config PERF_USE_VMALLOC
	bool
	help
	  See tools/perf/design.txt for details

menu "Kernel Performance Events And Counters"

config PERF_EVENTS
	bool "Kernel performance events and counters"
	default y if (PROFILING || PERF_COUNTERS)
	depends on HAVE_PERF_EVENTS
	select ANON_INODES
	select IRQ_WORK
	help
	  Enable kernel support for various performance events provided
	  by software and hardware.

	  Software events are supported either built-in or via the
	  use of generic tracepoints.

	  Most modern CPUs support performance events via performance
	  counter registers. These registers count the number of certain
	  types of hw events: such as instructions executed, cachemisses
	  suffered, or branches mis-predicted - without slowing down the
	  kernel or applications. These registers can also trigger interrupts
	  when a threshold number of events have passed - and can thus be
	  used to profile the code that runs on that CPU.

	  The Linux Performance Event subsystem provides an abstraction of
	  these software and hardware event capabilities, available via a
	  system call and used by the "perf" utility in tools/perf/. It
	  provides per task and per CPU counters, and it provides event
	  capabilities on top of those.

	  Say Y if unsure.

config PERF_COUNTERS
	bool "Kernel performance counters (old config option)"
	depends on HAVE_PERF_EVENTS
	help
	  This config has been obsoleted by the PERF_EVENTS
	  config option - please see that one for details.

	  It has no effect on the kernel whether you enable
	  it or not, it is a compatibility placeholder.

	  Say N if unsure.

config DEBUG_PERF_USE_VMALLOC
	default n
	bool "Debug: use vmalloc to back perf mmap() buffers"
	depends on PERF_EVENTS && DEBUG_KERNEL
	select PERF_USE_VMALLOC
	help
	 Use vmalloc memory to back perf mmap() buffers.

	 Mostly useful for debugging the vmalloc code on platforms
	 that don't require it.

	 Say N if unsure.

endmenu

config VM_EVENT_COUNTERS
	default y
	bool "Enable VM event counters for /proc/vmstat" if EXPERT
	help
	  VM event counters are needed for event counts to be shown.
	  This option allows the disabling of the VM event counters
	  on EXPERT systems.  /proc/vmstat will only show page counts
	  if VM event counters are disabled.

config PCI_QUIRKS
	default y
	bool "Enable PCI quirk workarounds" if EXPERT
	depends on PCI
	help
	  This enables workarounds for various PCI chipset
          bugs/quirks. Disable this only if your target machine is
          unaffected by PCI quirks.

config SLUB_DEBUG
	default y
	bool "Enable SLUB debugging support" if EXPERT
	depends on SLUB && SYSFS
	help
	  SLUB has extensive debug support features. Disabling these can
	  result in significant savings in code size. This also disables
	  SLUB sysfs support. /sys/slab will not exist and there will be
	  no support for cache validation etc.

config COMPAT_BRK
	bool "Disable heap randomization"
	default y
	help
	  Randomizing heap placement makes heap exploits harder, but it
	  also breaks ancient binaries (including anything libc5 based).
	  This option changes the bootup default to heap randomization
	  disabled, and can be overridden at runtime by setting
	  /proc/sys/kernel/randomize_va_space to 2.

	  On non-ancient distros (post-2000 ones) N is usually a safe choice.

choice
	prompt "Choose SLAB allocator"
	default SLUB
	help
	   This option allows to select a slab allocator.

config SLAB
	bool "SLAB"
	help
	  The regular slab allocator that is established and known to work
	  well in all environments. It organizes cache hot objects in
	  per cpu and per node queues.

config SLUB
	bool "SLUB (Unqueued Allocator)"
	help
	   SLUB is a slab allocator that minimizes cache line usage
	   instead of managing queues of cached objects (SLAB approach).
	   Per cpu caching is realized using slabs of objects instead
	   of queues of objects. SLUB can use memory efficiently
	   and has enhanced diagnostics. SLUB is the default choice for
	   a slab allocator.

config SLOB
	depends on EXPERT
	bool "SLOB (Simple Allocator)"
	help
	   SLOB replaces the stock allocator with a drastically simpler
	   allocator. SLOB is generally more space efficient but
	   does not perform as well on large systems.

endchoice

config MMAP_ALLOW_UNINITIALIZED
	bool "Allow mmapped anonymous memory to be uninitialized"
	depends on EXPERT && !MMU
	default n
	help
	  Normally, and according to the Linux spec, anonymous memory obtained
	  from mmap() has it's contents cleared before it is passed to
	  userspace.  Enabling this config option allows you to request that
	  mmap() skip that if it is given an MAP_UNINITIALIZED flag, thus
	  providing a huge performance boost.  If this option is not enabled,
	  then the flag will be ignored.

	  This is taken advantage of by uClibc's malloc(), and also by
	  ELF-FDPIC binfmt's brk and stack allocator.

	  Because of the obvious security issues, this option should only be
	  enabled on embedded devices where you control what is run in
	  userspace.  Since that isn't generally a problem on no-MMU systems,
	  it is normally safe to say Y here.

	  See Documentation/nommu-mmap.txt for more information.

config PROFILING
	bool "Profiling support"
	help
	  Say Y here to enable the extended profiling support mechanisms used
	  by profilers such as OProfile.

#
# Place an empty function call at each tracepoint site. Can be
# dynamically changed for a probe function.
#
config TRACEPOINTS
	bool

source "arch/Kconfig"

endmenu		# General setup

config HAVE_GENERIC_DMA_COHERENT
	bool
	default n

config SLABINFO
	bool
	depends on PROC_FS
	depends on SLAB || SLUB_DEBUG
	default y

config RT_MUTEXES
	boolean

config BASE_SMALL
	int
	default 0 if BASE_FULL
	default 1 if !BASE_FULL

menuconfig MODULES
	bool "Enable loadable module support"
	help
	  Kernel modules are small pieces of compiled code which can
	  be inserted in the running kernel, rather than being
	  permanently built into the kernel.  You use the "modprobe"
	  tool to add (and sometimes remove) them.  If you say Y here,
	  many parts of the kernel can be built as modules (by
	  answering M instead of Y where indicated): this is most
	  useful for infrequently used options which are not required
	  for booting.  For more information, see the man pages for
	  modprobe, lsmod, modinfo, insmod and rmmod.

	  If you say Y here, you will need to run "make
	  modules_install" to put the modules under /lib/modules/
	  where modprobe can find them (you may need to be root to do
	  this).

	  If unsure, say Y.

if MODULES

config MODULE_FORCE_LOAD
	bool "Forced module loading"
	default n
	help
	  Allow loading of modules without version information (ie. modprobe
	  --force).  Forced module loading sets the 'F' (forced) taint flag and
	  is usually a really bad idea.

config MODULE_UNLOAD
	bool "Module unloading"
	help
	  Without this option you will not be able to unload any
	  modules (note that some modules may not be unloadable
	  anyway), which makes your kernel smaller, faster
	  and simpler.  If unsure, say Y.

config MODULE_FORCE_UNLOAD
	bool "Forced module unloading"
	depends on MODULE_UNLOAD && EXPERIMENTAL
	help
	  This option allows you to force a module to unload, even if the
	  kernel believes it is unsafe: the kernel will remove the module
	  without waiting for anyone to stop using it (using the -f option to
	  rmmod).  This is mainly for kernel developers and desperate users.
	  If unsure, say N.

config MODVERSIONS
	bool "Module versioning support"
	help
	  Usually, you have to use modules compiled with your kernel.
	  Saying Y here makes it sometimes possible to use modules
	  compiled for different kernels, by adding enough information
	  to the modules to (hopefully) spot any changes which would
	  make them incompatible with the kernel you are running.  If
	  unsure, say N.

config MODULE_SRCVERSION_ALL
	bool "Source checksum for all modules"
	help
	  Modules which contain a MODULE_VERSION get an extra "srcversion"
	  field inserted into their modinfo section, which contains a
    	  sum of the source files which made it.  This helps maintainers
	  see exactly which source was used to build a module (since
	  others sometimes change the module source without updating
	  the version).  With this option, such a "srcversion" field
	  will be created for all modules.  If unsure, say N.

endif # MODULES

config INIT_ALL_POSSIBLE
	bool
	help
	  Back when each arch used to define their own cpu_online_mask and
	  cpu_possible_mask, some of them chose to initialize cpu_possible_mask
	  with all 1s, and others with all 0s.  When they were centralised,
	  it was better to provide this option than to break all the archs
	  and have several arch maintainers pursuing me down dark alleys.

config STOP_MACHINE
	bool
	default y
	depends on (SMP && MODULE_UNLOAD) || HOTPLUG_CPU
	help
	  Need stop_machine() primitive.

source "block/Kconfig"

config PREEMPT_NOTIFIERS
	bool

config PADATA
	depends on SMP
	bool

source "kernel/Kconfig.locks"