linux/arch/blackfin/Kconfig.debug
<<
>>
Prefs
   1menu "Kernel hacking"
   2
   3source "lib/Kconfig.debug"
   4
   5config DEBUG_STACKOVERFLOW
   6        bool "Check for stack overflows"
   7        depends on DEBUG_KERNEL
   8        help
   9          This option will cause messages to be printed if free stack space
  10          drops below a certain limit.
  11
  12config DEBUG_STACK_USAGE
  13        bool "Enable stack utilization instrumentation"
  14        depends on DEBUG_KERNEL
  15        help
  16          Enables the display of the minimum amount of free stack which each
  17          task has ever had available in the sysrq-T output.
  18
  19          This option will slow down process creation somewhat.
  20
  21config DEBUG_VERBOSE
  22        bool "Verbose fault messages"
  23        default y
  24        select PRINTK
  25        help
  26          When a program crashes due to an exception, or the kernel detects
  27          an internal error, the kernel can print a not so brief message
  28          explaining what the problem was. This debugging information is
  29          useful to developers and kernel hackers when tracking down problems,
  30          but mostly meaningless to other people. This is always helpful for
  31          debugging but serves no purpose on a production system.
  32          Most people should say N here.
  33
  34config DEBUG_MMRS
  35        bool "Generate Blackfin MMR tree"
  36        select DEBUG_FS
  37        help
  38          Create a tree of Blackfin MMRs via the debugfs tree.  If
  39          you enable this, you will find all MMRs laid out in the
  40          /sys/kernel/debug/blackfin/ directory where you can read/write
  41          MMRs directly from userspace.  This is obviously just a debug
  42          feature.
  43
  44config DEBUG_HWERR
  45        bool "Hardware error interrupt debugging"
  46        depends on DEBUG_KERNEL
  47        help
  48          When enabled, the hardware error interrupt is never disabled, and
  49          will happen immediately when an error condition occurs.  This comes
  50          at a slight cost in code size, but is necessary if you are getting
  51          hardware error interrupts and need to know where they are coming
  52          from.
  53
  54config EXACT_HWERR
  55        bool "Try to make Hardware errors exact"
  56        depends on DEBUG_HWERR
  57        help
  58          By default, the Blackfin hardware errors are not exact - the error
  59          be reported multiple cycles after the error happens. This delay
  60          can cause the wrong application, or even the kernel to receive a
  61          signal to be killed. If you are getting HW errors in your system,
  62          try turning this on to ensure they are at least comming from the
  63          proper thread.
  64
  65          On production systems, it is safe (and a small optimization) to say N.
  66
  67config DEBUG_DOUBLEFAULT
  68        bool "Debug Double Faults"
  69        default n
  70        help
  71          If an exception is caused while executing code within the exception
  72          handler, the NMI handler, the reset vector, or in emulator mode,
  73          a double fault occurs. On the Blackfin, this is a unrecoverable
  74          event. You have two options:
  75          - RESET exactly when double fault occurs. The excepting
  76            instruction address is stored in RETX, where the next kernel
  77            boot will print it out.
  78          - Print debug message. This is much more error prone, although
  79            easier to handle. It is error prone since:
  80            - The excepting instruction is not committed.
  81            - All writebacks from the instruction are prevented.
  82            - The generated exception is not taken.
  83            - The EXCAUSE field is updated with an unrecoverable event
  84            The only way to check this is to see if EXCAUSE contains the
  85            unrecoverable event value at every exception return. By selecting
  86            this option, you are skipping over the faulting instruction, and 
  87            hoping things stay together enough to print out a debug message.
  88
  89          This does add a little kernel code, but is the only method to debug
  90          double faults - if unsure say "Y"
  91
  92choice
  93        prompt "Double Fault Failure Method"
  94        default DEBUG_DOUBLEFAULT_PRINT
  95        depends on DEBUG_DOUBLEFAULT
  96
  97config DEBUG_DOUBLEFAULT_PRINT
  98        bool "Print"
  99
 100config DEBUG_DOUBLEFAULT_RESET
 101        bool "Reset"
 102
 103endchoice
 104
 105config DEBUG_HUNT_FOR_ZERO
 106        bool "Catch NULL pointer reads/writes"
 107        default y
 108        help
 109          Say Y here to catch reads/writes to anywhere in the memory range
 110          from 0x0000 - 0x0FFF (the first 4k) of memory.  This is useful in
 111          catching common programming errors such as NULL pointer dereferences.
 112
 113          Misbehaving applications will be killed (generate a SEGV) while the
 114          kernel will trigger a panic.
 115
 116          Enabling this option will take up an extra entry in CPLB table.
 117          Otherwise, there is no extra overhead.
 118
 119config DEBUG_BFIN_HWTRACE_ON
 120        bool "Turn on Blackfin's Hardware Trace"
 121        default y
 122        help
 123          All Blackfins include a Trace Unit which stores a history of the last
 124          16 changes in program flow taken by the program sequencer. The history
 125          allows the user to recreate the program sequencer’s recent path. This
 126          can be handy when an application dies - we print out the execution
 127          path of how it got to the offending instruction.
 128
 129          By turning this off, you may save a tiny amount of power.
 130
 131choice
 132        prompt "Omit loop Tracing"
 133        default DEBUG_BFIN_HWTRACE_COMPRESSION_OFF
 134        depends on DEBUG_BFIN_HWTRACE_ON
 135        help
 136          The trace buffer can be configured to omit recording of changes in
 137          program flow that match either the last entry or one of the last
 138          two entries. Omitting one of these entries from the record prevents
 139          the trace buffer from overflowing because of any sort of loop (for, do
 140          while, etc) in the program.
 141
 142          Because zero-overhead Hardware loops are not recorded in the trace buffer,
 143          this feature can be used to prevent trace overflow from loops that
 144          are nested four deep.
 145
 146config DEBUG_BFIN_HWTRACE_COMPRESSION_OFF
 147        bool "Trace all Loops"
 148        help
 149          The trace buffer records all changes of flow 
 150
 151config DEBUG_BFIN_HWTRACE_COMPRESSION_ONE
 152        bool "Compress single-level loops"
 153        help
 154          The trace buffer does not record single loops - helpful if trace 
 155          is spinning on a while or do loop.
 156
 157config DEBUG_BFIN_HWTRACE_COMPRESSION_TWO
 158        bool "Compress two-level loops"
 159        help
 160          The trace buffer does not record loops two levels deep. Helpful if
 161          the trace is spinning in a nested loop
 162
 163endchoice
 164
 165config DEBUG_BFIN_HWTRACE_COMPRESSION
 166        int
 167        depends on DEBUG_BFIN_HWTRACE_ON
 168        default 0 if DEBUG_BFIN_HWTRACE_COMPRESSION_OFF
 169        default 1 if DEBUG_BFIN_HWTRACE_COMPRESSION_ONE
 170        default 2 if DEBUG_BFIN_HWTRACE_COMPRESSION_TWO
 171
 172
 173config DEBUG_BFIN_HWTRACE_EXPAND
 174        bool "Expand Trace Buffer greater than 16 entries"
 175        depends on DEBUG_BFIN_HWTRACE_ON
 176        default n
 177        help
 178          By selecting this option, every time the 16 hardware entries in
 179          the Blackfin's HW Trace buffer are full, the kernel will move them
 180          into a software buffer, for dumping when there is an issue. This 
 181          has a great impact on performance, (an interrupt every 16 change of 
 182          flows) and should normally be turned off, except in those nasty
 183          debugging sessions
 184
 185config DEBUG_BFIN_HWTRACE_EXPAND_LEN
 186        int "Size of Trace buffer (in power of 2k)"
 187        range 0 4
 188        depends on DEBUG_BFIN_HWTRACE_EXPAND
 189        default 1
 190        help
 191          This sets the size of the software buffer that the trace information
 192          is kept in.
 193          0 for (2^0)  1k, or 256 entries,
 194          1 for (2^1)  2k, or 512 entries,
 195          2 for (2^2)  4k, or 1024 entries,
 196          3 for (2^3)  8k, or 2048 entries,
 197          4 for (2^4) 16k, or 4096 entries
 198
 199config DEBUG_BFIN_NO_KERN_HWTRACE
 200        bool "Turn off hwtrace in CPLB handlers"
 201        depends on DEBUG_BFIN_HWTRACE_ON
 202        default y
 203        help
 204          The CPLB error handler contains a lot of flow changes which can
 205          quickly fill up the hardware trace buffer.  When debugging crashes,
 206          the hardware trace may indicate that the problem lies in kernel
 207          space when in reality an application is buggy.
 208
 209          Say Y here to disable hardware tracing in some known "jumpy" pieces
 210          of code so that the trace buffer will extend further back.
 211
 212config EARLY_PRINTK
 213        bool "Early printk" 
 214        default n
 215        select SERIAL_CORE_CONSOLE
 216        help
 217          This option enables special console drivers which allow the kernel
 218          to print messages very early in the bootup process.
 219
 220          This is useful for kernel debugging when your machine crashes very
 221          early before the console code is initialized. After enabling this
 222          feature, you must add "earlyprintk=serial,uart0,57600" to the
 223          command line (bootargs). It is safe to say Y here in all cases, as
 224          all of this lives in the init section and is thrown away after the
 225          kernel boots completely.
 226
 227config NMI_WATCHDOG
 228        bool "Enable NMI watchdog to help debugging lockup on SMP"
 229        default n
 230        depends on SMP
 231        help
 232          If any CPU in the system does not execute the period local timer
 233          interrupt for more than 5 seconds, then the NMI handler dumps debug
 234          information. This information can be used to debug the lockup.
 235
 236config CPLB_INFO
 237        bool "Display the CPLB information"
 238        help
 239          Display the CPLB information via /proc/cplbinfo.
 240
 241config ACCESS_CHECK
 242        bool "Check the user pointer address"
 243        default y
 244        help
 245          Usually the pointer transfer from user space is checked to see if its
 246          address is in the kernel space.
 247
 248          Say N here to disable that check to improve the performance.
 249
 250config BFIN_ISRAM_SELF_TEST
 251        bool "isram boot self tests"
 252        default n
 253        help
 254          Run some self tests of the isram driver code at boot.
 255
 256config BFIN_PSEUDODBG_INSNS
 257        bool "Support pseudo debug instructions"
 258        default n
 259        help
 260          This option allows the kernel to emulate some pseudo instructions which
 261          allow simulator test cases to be run under Linux with no changes.
 262
 263          Most people should say N here.
 264
 265endmenu
 266