tristate
        depends on m
 
+choice
+       prompt "Kallsym test range"
+       default TEST_KALLSYMS_LARGE
+       help
+         Selecting something other than "Fast" will enable tests which slow
+         down the build and may crash your build.
+
+config TEST_KALLSYMS_FAST
+       bool "Fast builds"
+       help
+         You won't really be testing kallsysms, so this just helps fast builds
+         when allmodconfig is used..
+
+config TEST_KALLSYMS_LARGE
+       bool "Enable testing kallsyms with large exports"
+       help
+         This will enable larger number of symbols. This will slow down
+         your build considerably.
+
+config TEST_KALLSYMS_MAX
+       bool "Known kallsysms limits"
+       help
+         This will enable exports to the point we know we'll start crashing
+         builds.
+
+endchoice
+
 config TEST_KALLSYMS_NUMSYMS
        int "test kallsyms number of symbols"
-       default 100
+       range 2 10000
+       default 2 if TEST_KALLSYMS_FAST
+       default 100 if TEST_KALLSYMS_LARGE
+       default 10000 if TEST_KALLSYMS_MAX
        help
          The number of symbols to create on TEST_KALLSYMS_A, only one of which
          module TEST_KALLSYMS_B will use. This also will be used
 
 SCALE_FACTOR=$3
 TEST_TYPE=$(echo $TARGET | sed -e 's|lib/tests/module/test_kallsyms_||g')
 TEST_TYPE=$(echo $TEST_TYPE | sed -e 's|.c||g')
+FIRST_B_LOOKUP=1
+
+if [[ $NUM_SYMS -gt 2 ]]; then
+       FIRST_B_LOOKUP=$((NUM_SYMS/2))
+fi
 
 gen_template_module_header()
 {
 
 gen_template_module_data_b()
 {
-       printf "\nextern int auto_test_a_%010d;\n\n" 28
+       printf "\nextern int auto_test_a_%010d;\n\n" $FIRST_B_LOOKUP
        echo "static int auto_runtime_test(void)"
        echo "{"
-       printf "\nreturn auto_test_a_%010d;\n" 28
+       printf "\nreturn auto_test_a_%010d;\n" $FIRST_B_LOOKUP
        echo "}"
 }