diff options
| -rw-r--r-- | Documentation/DocBook/debugobjects.tmpl | 2 | ||||
| -rw-r--r-- | Documentation/cdrom/packet-writing.txt | 2 | ||||
| -rw-r--r-- | Documentation/fault-injection/fault-injection.txt | 70 | ||||
| -rw-r--r-- | Documentation/kprobes.txt | 6 | ||||
| -rw-r--r-- | Documentation/trace/ftrace.txt | 233 | ||||
| -rw-r--r-- | Documentation/trace/mmiotrace.txt | 26 | ||||
| -rw-r--r-- | drivers/block/pktcdvd.c | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/drm_debugfs.c | 12 | ||||
| -rw-r--r-- | drivers/gpu/drm/drm_drv.c | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/drm_stub.c | 2 | ||||
| -rw-r--r-- | drivers/net/Kconfig | 4 | ||||
| -rw-r--r-- | drivers/net/wimax/i2400m/i2400m.h | 2 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath5k/Kconfig | 5 | ||||
| -rw-r--r-- | drivers/net/wireless/libertas/README | 12 | ||||
| -rw-r--r-- | drivers/scsi/lpfc/lpfc_debugfs.c | 3 | ||||
| -rw-r--r-- | include/linux/kernel.h | 2 | ||||
| -rw-r--r-- | include/linux/tracepoint.h | 4 | ||||
| -rw-r--r-- | kernel/trace/Kconfig | 10 | ||||
| -rw-r--r-- | kernel/trace/trace.c | 23 | ||||
| -rw-r--r-- | scripts/tracing/draw_functrace.py | 7 | 
20 files changed, 238 insertions, 191 deletions
diff --git a/Documentation/DocBook/debugobjects.tmpl b/Documentation/DocBook/debugobjects.tmpl index 7f5f218015f..08ff908aa7a 100644 --- a/Documentation/DocBook/debugobjects.tmpl +++ b/Documentation/DocBook/debugobjects.tmpl @@ -106,7 +106,7 @@        number of errors are printk'ed including a full stack trace.      </para>      <para> -      The statistics are available via debugfs/debug_objects/stats. +      The statistics are available via /sys/kernel/debug/debug_objects/stats.        They provide information about the number of warnings and the        number of successful fixups along with information about the        usage of the internal tracking objects and the state of the diff --git a/Documentation/cdrom/packet-writing.txt b/Documentation/cdrom/packet-writing.txt index cf1f8126991..1c407778c8b 100644 --- a/Documentation/cdrom/packet-writing.txt +++ b/Documentation/cdrom/packet-writing.txt @@ -117,7 +117,7 @@ Using the pktcdvd debugfs interface  To read pktcdvd device infos in human readable form, do: -	# cat /debug/pktcdvd/pktcdvd[0-7]/info +	# cat /sys/kernel/debug/pktcdvd/pktcdvd[0-7]/info  For a description of the debugfs interface look into the file: diff --git a/Documentation/fault-injection/fault-injection.txt b/Documentation/fault-injection/fault-injection.txt index 4bc374a1434..07930564079 100644 --- a/Documentation/fault-injection/fault-injection.txt +++ b/Documentation/fault-injection/fault-injection.txt @@ -29,16 +29,16 @@ o debugfs entries  fault-inject-debugfs kernel module provides some debugfs entries for runtime  configuration of fault-injection capabilities. -- /debug/fail*/probability: +- /sys/kernel/debug/fail*/probability:  	likelihood of failure injection, in percent.  	Format: <percent>  	Note that one-failure-per-hundred is a very high error rate  	for some testcases.  Consider setting probability=100 and configure -	/debug/fail*/interval for such testcases. +	/sys/kernel/debug/fail*/interval for such testcases. -- /debug/fail*/interval: +- /sys/kernel/debug/fail*/interval:  	specifies the interval between failures, for calls to  	should_fail() that pass all the other tests. @@ -46,18 +46,18 @@ configuration of fault-injection capabilities.  	Note that if you enable this, by setting interval>1, you will  	probably want to set probability=100. -- /debug/fail*/times: +- /sys/kernel/debug/fail*/times:  	specifies how many times failures may happen at most.  	A value of -1 means "no limit". -- /debug/fail*/space: +- /sys/kernel/debug/fail*/space:  	specifies an initial resource "budget", decremented by "size"  	on each call to should_fail(,size).  Failure injection is  	suppressed until "space" reaches zero. -- /debug/fail*/verbose +- /sys/kernel/debug/fail*/verbose  	Format: { 0 | 1 | 2 }  	specifies the verbosity of the messages when failure is @@ -65,17 +65,17 @@ configuration of fault-injection capabilities.  	log line per failure; '2' will print a call trace too -- useful  	to debug the problems revealed by fault injection. -- /debug/fail*/task-filter: +- /sys/kernel/debug/fail*/task-filter:  	Format: { 'Y' | 'N' }  	A value of 'N' disables filtering by process (default).  	Any positive value limits failures to only processes indicated by  	/proc/<pid>/make-it-fail==1. -- /debug/fail*/require-start: -- /debug/fail*/require-end: -- /debug/fail*/reject-start: -- /debug/fail*/reject-end: +- /sys/kernel/debug/fail*/require-start: +- /sys/kernel/debug/fail*/require-end: +- /sys/kernel/debug/fail*/reject-start: +- /sys/kernel/debug/fail*/reject-end:  	specifies the range of virtual addresses tested during  	stacktrace walking.  Failure is injected only if some caller @@ -84,26 +84,26 @@ configuration of fault-injection capabilities.  	Default required range is [0,ULONG_MAX) (whole of virtual address space).  	Default rejected range is [0,0). -- /debug/fail*/stacktrace-depth: +- /sys/kernel/debug/fail*/stacktrace-depth:  	specifies the maximum stacktrace depth walked during search  	for a caller within [require-start,require-end) OR  	[reject-start,reject-end). -- /debug/fail_page_alloc/ignore-gfp-highmem: +- /sys/kernel/debug/fail_page_alloc/ignore-gfp-highmem:  	Format: { 'Y' | 'N' }  	default is 'N', setting it to 'Y' won't inject failures into  	highmem/user allocations. -- /debug/failslab/ignore-gfp-wait: -- /debug/fail_page_alloc/ignore-gfp-wait: +- /sys/kernel/debug/failslab/ignore-gfp-wait: +- /sys/kernel/debug/fail_page_alloc/ignore-gfp-wait:  	Format: { 'Y' | 'N' }  	default is 'N', setting it to 'Y' will inject failures  	only into non-sleep allocations (GFP_ATOMIC allocations). -- /debug/fail_page_alloc/min-order: +- /sys/kernel/debug/fail_page_alloc/min-order:  	specifies the minimum page allocation order to be injected  	failures. @@ -166,13 +166,13 @@ o Inject slab allocation failures into module init/exit code  #!/bin/bash  FAILTYPE=failslab -echo Y > /debug/$FAILTYPE/task-filter -echo 10 > /debug/$FAILTYPE/probability -echo 100 > /debug/$FAILTYPE/interval -echo -1 > /debug/$FAILTYPE/times -echo 0 > /debug/$FAILTYPE/space -echo 2 > /debug/$FAILTYPE/verbose -echo 1 > /debug/$FAILTYPE/ignore-gfp-wait +echo Y > /sys/kernel/debug/$FAILTYPE/task-filter +echo 10 > /sys/kernel/debug/$FAILTYPE/probability +echo 100 > /sys/kernel/debug/$FAILTYPE/interval +echo -1 > /sys/kernel/debug/$FAILTYPE/times +echo 0 > /sys/kernel/debug/$FAILTYPE/space +echo 2 > /sys/kernel/debug/$FAILTYPE/verbose +echo 1 > /sys/kernel/debug/$FAILTYPE/ignore-gfp-wait  faulty_system()  { @@ -217,20 +217,20 @@ then  	exit 1  fi -cat /sys/module/$module/sections/.text > /debug/$FAILTYPE/require-start -cat /sys/module/$module/sections/.data > /debug/$FAILTYPE/require-end +cat /sys/module/$module/sections/.text > /sys/kernel/debug/$FAILTYPE/require-start +cat /sys/module/$module/sections/.data > /sys/kernel/debug/$FAILTYPE/require-end -echo N > /debug/$FAILTYPE/task-filter -echo 10 > /debug/$FAILTYPE/probability -echo 100 > /debug/$FAILTYPE/interval -echo -1 > /debug/$FAILTYPE/times -echo 0 > /debug/$FAILTYPE/space -echo 2 > /debug/$FAILTYPE/verbose -echo 1 > /debug/$FAILTYPE/ignore-gfp-wait -echo 1 > /debug/$FAILTYPE/ignore-gfp-highmem -echo 10 > /debug/$FAILTYPE/stacktrace-depth +echo N > /sys/kernel/debug/$FAILTYPE/task-filter +echo 10 > /sys/kernel/debug/$FAILTYPE/probability +echo 100 > /sys/kernel/debug/$FAILTYPE/interval +echo -1 > /sys/kernel/debug/$FAILTYPE/times +echo 0 > /sys/kernel/debug/$FAILTYPE/space +echo 2 > /sys/kernel/debug/$FAILTYPE/verbose +echo 1 > /sys/kernel/debug/$FAILTYPE/ignore-gfp-wait +echo 1 > /sys/kernel/debug/$FAILTYPE/ignore-gfp-highmem +echo 10 > /sys/kernel/debug/$FAILTYPE/stacktrace-depth -trap "echo 0 > /debug/$FAILTYPE/probability" SIGINT SIGTERM EXIT +trap "echo 0 > /sys/kernel/debug/$FAILTYPE/probability" SIGINT SIGTERM EXIT  echo "Injecting errors into the module $module... (interrupt to stop)"  sleep 1000000 diff --git a/Documentation/kprobes.txt b/Documentation/kprobes.txt index 1e7a769a10f..053037a1fe6 100644 --- a/Documentation/kprobes.txt +++ b/Documentation/kprobes.txt @@ -507,9 +507,9 @@ http://www.linuxsymposium.org/2006/linuxsymposium_procv2.pdf (pages 101-115)  Appendix A: The kprobes debugfs interface  With recent kernels (> 2.6.20) the list of registered kprobes is visible -under the /debug/kprobes/ directory (assuming debugfs is mounted at /debug). +under the /sys/kernel/debug/kprobes/ directory (assuming debugfs is mounted at //sys/kernel/debug). -/debug/kprobes/list: Lists all registered probes on the system +/sys/kernel/debug/kprobes/list: Lists all registered probes on the system  c015d71a  k  vfs_read+0x0  c011a316  j  do_fork+0x0 @@ -525,7 +525,7 @@ virtual addresses that correspond to modules that've been unloaded),  such probes are marked with [GONE]. If the probe is temporarily disabled,  such probes are marked with [DISABLED]. -/debug/kprobes/enabled: Turn kprobes ON/OFF forcibly. +/sys/kernel/debug/kprobes/enabled: Turn kprobes ON/OFF forcibly.  Provides a knob to globally and forcibly turn registered kprobes ON or OFF.  By default, all kprobes are enabled. By echoing "0" to this file, all diff --git a/Documentation/trace/ftrace.txt b/Documentation/trace/ftrace.txt index 7bd27f0e288..a39b3c749de 100644 --- a/Documentation/trace/ftrace.txt +++ b/Documentation/trace/ftrace.txt @@ -7,7 +7,6 @@ Copyright 2008 Red Hat Inc.                 (dual licensed under the GPL v2)  Reviewers:   Elias Oltmanns, Randy Dunlap, Andrew Morton,  	     John Kacur, and David Teigland. -  Written for: 2.6.28-rc2  Introduction @@ -33,13 +32,26 @@ The File System  Ftrace uses the debugfs file system to hold the control files as  well as the files to display output. -To mount the debugfs system: +When debugfs is configured into the kernel (which selecting any ftrace +option will do) the directory /sys/kernel/debug will be created. To mount +this directory, you can add to your /etc/fstab file: + + debugfs       /sys/kernel/debug          debugfs defaults        0       0 + +Or you can mount it at run time with: + + mount -t debugfs nodev /sys/kernel/debug + +For quicker access to that directory you may want to make a soft link to +it: -  # mkdir /debug -  # mount -t debugfs nodev /debug + ln -s /sys/kernel/debug /debug -( Note: it is more common to mount at /sys/kernel/debug, but for -  simplicity this document will use /debug) +Any selected ftrace option will also create a directory called tracing +within the debugfs. The rest of the document will assume that you are in +the ftrace directory (cd /sys/kernel/debug/tracing) and will only concentrate +on the files within that directory and not distract from the content with +the extended "/sys/kernel/debug/tracing" path name.  That's it! (assuming that you have ftrace configured into your kernel) @@ -389,18 +401,18 @@ trace_options  The trace_options file is used to control what gets printed in  the trace output. To see what is available, simply cat the file: -  cat /debug/tracing/trace_options +  cat trace_options    print-parent nosym-offset nosym-addr noverbose noraw nohex nobin \    noblock nostacktrace nosched-tree nouserstacktrace nosym-userobj  To disable one of the options, echo in the option prepended with  "no". -  echo noprint-parent > /debug/tracing/trace_options +  echo noprint-parent > trace_options  To enable an option, leave off the "no". -  echo sym-offset > /debug/tracing/trace_options +  echo sym-offset > trace_options  Here are the available options: @@ -476,11 +488,11 @@ sched_switch  This tracer simply records schedule switches. Here is an example  of how to use it. - # echo sched_switch > /debug/tracing/current_tracer - # echo 1 > /debug/tracing/tracing_enabled + # echo sched_switch > current_tracer + # echo 1 > tracing_enabled   # sleep 1 - # echo 0 > /debug/tracing/tracing_enabled - # cat /debug/tracing/trace + # echo 0 > tracing_enabled + # cat trace  # tracer: sched_switch  # @@ -583,13 +595,13 @@ new trace is saved.  To reset the maximum, echo 0 into tracing_max_latency. Here is  an example: - # echo irqsoff > /debug/tracing/current_tracer - # echo 0 > /debug/tracing/tracing_max_latency - # echo 1 > /debug/tracing/tracing_enabled + # echo irqsoff > current_tracer + # echo 0 > tracing_max_latency + # echo 1 > tracing_enabled   # ls -ltr   [...] - # echo 0 > /debug/tracing/tracing_enabled - # cat /debug/tracing/latency_trace + # echo 0 > tracing_enabled + # cat latency_trace  # tracer: irqsoff  #  irqsoff latency trace v1.1.5 on 2.6.26 @@ -690,13 +702,13 @@ Like the irqsoff tracer, it records the maximum latency for  which preemption was disabled. The control of preemptoff tracer  is much like the irqsoff tracer. - # echo preemptoff > /debug/tracing/current_tracer - # echo 0 > /debug/tracing/tracing_max_latency - # echo 1 > /debug/tracing/tracing_enabled + # echo preemptoff > current_tracer + # echo 0 > tracing_max_latency + # echo 1 > tracing_enabled   # ls -ltr   [...] - # echo 0 > /debug/tracing/tracing_enabled - # cat /debug/tracing/latency_trace + # echo 0 > tracing_enabled + # cat latency_trace  # tracer: preemptoff  #  preemptoff latency trace v1.1.5 on 2.6.26-rc8 @@ -837,13 +849,13 @@ tracer.  Again, using this trace is much like the irqsoff and preemptoff  tracers. - # echo preemptirqsoff > /debug/tracing/current_tracer - # echo 0 > /debug/tracing/tracing_max_latency - # echo 1 > /debug/tracing/tracing_enabled + # echo preemptirqsoff > current_tracer + # echo 0 > tracing_max_latency + # echo 1 > tracing_enabled   # ls -ltr   [...] - # echo 0 > /debug/tracing/tracing_enabled - # cat /debug/tracing/latency_trace + # echo 0 > tracing_enabled + # cat latency_trace  # tracer: preemptirqsoff  #  preemptirqsoff latency trace v1.1.5 on 2.6.26-rc8 @@ -999,12 +1011,12 @@ slightly differently than we did with the previous tracers.  Instead of performing an 'ls', we will run 'sleep 1' under  'chrt' which changes the priority of the task. - # echo wakeup > /debug/tracing/current_tracer - # echo 0 > /debug/tracing/tracing_max_latency - # echo 1 > /debug/tracing/tracing_enabled + # echo wakeup > current_tracer + # echo 0 > tracing_max_latency + # echo 1 > tracing_enabled   # chrt -f 5 sleep 1 - # echo 0 > /debug/tracing/tracing_enabled - # cat /debug/tracing/latency_trace + # echo 0 > tracing_enabled + # cat latency_trace  # tracer: wakeup  #  wakeup latency trace v1.1.5 on 2.6.26-rc8 @@ -1114,11 +1126,11 @@ can be done from the debug file system. Make sure the  ftrace_enabled is set; otherwise this tracer is a nop.   # sysctl kernel.ftrace_enabled=1 - # echo function > /debug/tracing/current_tracer - # echo 1 > /debug/tracing/tracing_enabled + # echo function > current_tracer + # echo 1 > tracing_enabled   # usleep 1 - # echo 0 > /debug/tracing/tracing_enabled - # cat /debug/tracing/trace + # echo 0 > tracing_enabled + # cat trace  # tracer: function  #  #           TASK-PID   CPU#    TIMESTAMP  FUNCTION @@ -1155,7 +1167,7 @@ int trace_fd;  [...]  int main(int argc, char *argv[]) {  	[...] -	trace_fd = open("/debug/tracing/tracing_enabled", O_WRONLY); +	trace_fd = open(tracing_file("tracing_enabled"), O_WRONLY);  	[...]  	if (condition_hit()) {  		write(trace_fd, "0", 1); @@ -1163,26 +1175,20 @@ int main(int argc, char *argv[]) {  	[...]  } -Note: Here we hard coded the path name. The debugfs mount is not -guaranteed to be at /debug (and is more commonly at -/sys/kernel/debug). For simple one time traces, the above is -sufficent. For anything else, a search through /proc/mounts may -be needed to find where the debugfs file-system is mounted. -  Single thread tracing  --------------------- -By writing into /debug/tracing/set_ftrace_pid you can trace a +By writing into set_ftrace_pid you can trace a  single thread. For example: -# cat /debug/tracing/set_ftrace_pid +# cat set_ftrace_pid  no pid -# echo 3111 > /debug/tracing/set_ftrace_pid -# cat /debug/tracing/set_ftrace_pid +# echo 3111 > set_ftrace_pid +# cat set_ftrace_pid  3111 -# echo function > /debug/tracing/current_tracer -# cat /debug/tracing/trace | head +# echo function > current_tracer +# cat trace | head   # tracer: function   #   #           TASK-PID    CPU#    TIMESTAMP  FUNCTION @@ -1193,8 +1199,8 @@ no pid       yum-updatesd-3111  [003]  1637.254683: lock_hrtimer_base <-hrtimer_try_to_cancel       yum-updatesd-3111  [003]  1637.254685: fget_light <-do_sys_poll       yum-updatesd-3111  [003]  1637.254686: pipe_poll <-do_sys_poll -# echo -1 > /debug/tracing/set_ftrace_pid -# cat /debug/tracing/trace |head +# echo -1 > set_ftrace_pid +# cat trace |head   # tracer: function   #   #           TASK-PID    CPU#    TIMESTAMP  FUNCTION @@ -1216,6 +1222,51 @@ something like this simple program:  #include <fcntl.h>  #include <unistd.h> +#define _STR(x) #x +#define STR(x) _STR(x) +#define MAX_PATH 256 + +const char *find_debugfs(void) +{ +       static char debugfs[MAX_PATH+1]; +       static int debugfs_found; +       char type[100]; +       FILE *fp; + +       if (debugfs_found) +               return debugfs; + +       if ((fp = fopen("/proc/mounts","r")) == NULL) { +               perror("/proc/mounts"); +               return NULL; +       } + +       while (fscanf(fp, "%*s %" +                     STR(MAX_PATH) +                     "s %99s %*s %*d %*d\n", +                     debugfs, type) == 2) { +               if (strcmp(type, "debugfs") == 0) +                       break; +       } +       fclose(fp); + +       if (strcmp(type, "debugfs") != 0) { +               fprintf(stderr, "debugfs not mounted"); +               return NULL; +       } + +       debugfs_found = 1; + +       return debugfs; +} + +const char *tracing_file(const char *file_name) +{ +       static char trace_file[MAX_PATH+1]; +       snprintf(trace_file, MAX_PATH, "%s/%s", find_debugfs(), file_name); +       return trace_file; +} +  int main (int argc, char **argv)  {          if (argc < 1) @@ -1226,12 +1277,12 @@ int main (int argc, char **argv)                  char line[64];                  int s; -                ffd = open("/debug/tracing/current_tracer", O_WRONLY); +                ffd = open(tracing_file("current_tracer"), O_WRONLY);                  if (ffd < 0)                          exit(-1);                  write(ffd, "nop", 3); -                fd = open("/debug/tracing/set_ftrace_pid", O_WRONLY); +                fd = open(tracing_file("set_ftrace_pid"), O_WRONLY);                  s = sprintf(line, "%d\n", getpid());                  write(fd, line, s); @@ -1383,22 +1434,22 @@ want, depending on your needs.    tracing_cpu_mask file) or you might sometimes see unordered    function calls while cpu tracing switch. -	hide: echo nofuncgraph-cpu > /debug/tracing/trace_options -	show: echo funcgraph-cpu > /debug/tracing/trace_options +	hide: echo nofuncgraph-cpu > trace_options +	show: echo funcgraph-cpu > trace_options  - The duration (function's time of execution) is displayed on    the closing bracket line of a function or on the same line    than the current function in case of a leaf one. It is default    enabled. -	hide: echo nofuncgraph-duration > /debug/tracing/trace_options -	show: echo funcgraph-duration > /debug/tracing/trace_options +	hide: echo nofuncgraph-duration > trace_options +	show: echo funcgraph-duration > trace_options  - The overhead field precedes the duration field in case of    reached duration thresholds. -	hide: echo nofuncgraph-overhead > /debug/tracing/trace_options -	show: echo funcgraph-overhead > /debug/tracing/trace_options +	hide: echo nofuncgraph-overhead > trace_options +	show: echo funcgraph-overhead > trace_options  	depends on: funcgraph-duration    ie: @@ -1427,8 +1478,8 @@ want, depending on your needs.  - The task/pid field displays the thread cmdline and pid which    executed the function. It is default disabled. -	hide: echo nofuncgraph-proc > /debug/tracing/trace_options -	show: echo funcgraph-proc > /debug/tracing/trace_options +	hide: echo nofuncgraph-proc > trace_options +	show: echo funcgraph-proc > trace_options    ie: @@ -1451,8 +1502,8 @@ want, depending on your needs.    system clock since it started. A snapshot of this time is    given on each entry/exit of functions -	hide: echo nofuncgraph-abstime > /debug/tracing/trace_options -	show: echo funcgraph-abstime > /debug/tracing/trace_options +	hide: echo nofuncgraph-abstime > trace_options +	show: echo funcgraph-abstime > trace_options    ie: @@ -1549,7 +1600,7 @@ listed in:     available_filter_functions - # cat /debug/tracing/available_filter_functions + # cat available_filter_functions  put_prev_task_idle  kmem_cache_create  pick_next_task_rt @@ -1561,12 +1612,12 @@ mutex_lock  If I am only interested in sys_nanosleep and hrtimer_interrupt:   # echo sys_nanosleep hrtimer_interrupt \ -		> /debug/tracing/set_ftrace_filter - # echo ftrace > /debug/tracing/current_tracer - # echo 1 > /debug/tracing/tracing_enabled +		> set_ftrace_filter + # echo ftrace > current_tracer + # echo 1 > tracing_enabled   # usleep 1 - # echo 0 > /debug/tracing/tracing_enabled - # cat /debug/tracing/trace + # echo 0 > tracing_enabled + # cat trace  # tracer: ftrace  #  #           TASK-PID   CPU#    TIMESTAMP  FUNCTION @@ -1577,7 +1628,7 @@ If I am only interested in sys_nanosleep and hrtimer_interrupt:  To see which functions are being traced, you can cat the file: - # cat /debug/tracing/set_ftrace_filter + # cat set_ftrace_filter  hrtimer_interrupt  sys_nanosleep @@ -1597,7 +1648,7 @@ Note: It is better to use quotes to enclose the wild cards,        otherwise the shell may expand the parameters into names        of files in the local directory. - # echo 'hrtimer_*' > /debug/tracing/set_ftrace_filter + # echo 'hrtimer_*' > set_ftrace_filter  Produces: @@ -1618,7 +1669,7 @@ Produces:  Notice that we lost the sys_nanosleep. - # cat /debug/tracing/set_ftrace_filter + # cat set_ftrace_filter  hrtimer_run_queues  hrtimer_run_pending  hrtimer_init @@ -1644,17 +1695,17 @@ To append to the filters, use '>>'  To clear out a filter so that all functions will be recorded  again: - # echo > /debug/tracing/set_ftrace_filter - # cat /debug/tracing/set_ftrace_filter + # echo > set_ftrace_filter + # cat set_ftrace_filter   #  Again, now we want to append. - # echo sys_nanosleep > /debug/tracing/set_ftrace_filter - # cat /debug/tracing/set_ftrace_filter + # echo sys_nanosleep > set_ftrace_filter + # cat set_ftrace_filter  sys_nanosleep - # echo 'hrtimer_*' >> /debug/tracing/set_ftrace_filter - # cat /debug/tracing/set_ftrace_filter + # echo 'hrtimer_*' >> set_ftrace_filter + # cat set_ftrace_filter  hrtimer_run_queues  hrtimer_run_pending  hrtimer_init @@ -1677,7 +1728,7 @@ hrtimer_init_sleeper  The set_ftrace_notrace prevents those functions from being  traced. - # echo '*preempt*' '*lock*' > /debug/tracing/set_ftrace_notrace + # echo '*preempt*' '*lock*' > set_ftrace_notrace  Produces: @@ -1767,13 +1818,13 @@ the effect on the tracing is different. Every read from  trace_pipe is consumed. This means that subsequent reads will be  different. The trace is live. - # echo function > /debug/tracing/current_tracer - # cat /debug/tracing/trace_pipe > /tmp/trace.out & + # echo function > current_tracer + # cat trace_pipe > /tmp/trace.out &  [1] 4153 - # echo 1 > /debug/tracing/tracing_enabled + # echo 1 > tracing_enabled   # usleep 1 - # echo 0 > /debug/tracing/tracing_enabled - # cat /debug/tracing/trace + # echo 0 > tracing_enabled + # cat trace  # tracer: function  #  #           TASK-PID   CPU#    TIMESTAMP  FUNCTION @@ -1809,7 +1860,7 @@ number listed is the number of entries that can be recorded per  CPU. To know the full size, multiply the number of possible CPUS  with the number of entries. - # cat /debug/tracing/buffer_size_kb + # cat buffer_size_kb  1408 (units kilobytes)  Note, to modify this, you must have tracing completely disabled. @@ -1817,18 +1868,18 @@ To do that, echo "nop" into the current_tracer. If the  current_tracer is not set to "nop", an EINVAL error will be  returned. - # echo nop > /debug/tracing/current_tracer - # echo 10000 > /debug/tracing/buffer_size_kb - # cat /debug/tracing/buffer_size_kb + # echo nop > current_tracer + # echo 10000 > buffer_size_kb + # cat buffer_size_kb  10000 (units kilobytes)  The number of pages which will be allocated is limited to a  percentage of available memory. Allocating too much will produce  an error. - # echo 1000000000000 > /debug/tracing/buffer_size_kb + # echo 1000000000000 > buffer_size_kb  -bash: echo: write error: Cannot allocate memory - # cat /debug/tracing/buffer_size_kb + # cat buffer_size_kb  85  ----------- diff --git a/Documentation/trace/mmiotrace.txt b/Documentation/trace/mmiotrace.txt index 5731c67abc5..162effbfbde 100644 --- a/Documentation/trace/mmiotrace.txt +++ b/Documentation/trace/mmiotrace.txt @@ -32,41 +32,41 @@ is no way to automatically detect if you are losing events due to CPUs racing.  Usage Quick Reference  --------------------- -$ mount -t debugfs debugfs /debug -$ echo mmiotrace > /debug/tracing/current_tracer -$ cat /debug/tracing/trace_pipe > mydump.txt & +$ mount -t debugfs debugfs /sys/kernel/debug +$ echo mmiotrace > /sys/kernel/debug/tracing/current_tracer +$ cat /sys/kernel/debug/tracing/trace_pipe > mydump.txt &  Start X or whatever. -$ echo "X is up" > /debug/tracing/trace_marker -$ echo nop > /debug/tracing/current_tracer +$ echo "X is up" > /sys/kernel/debug/tracing/trace_marker +$ echo nop > /sys/kernel/debug/tracing/current_tracer  Check for lost events.  Usage  ----- -Make sure debugfs is mounted to /debug. If not, (requires root privileges) -$ mount -t debugfs debugfs /debug +Make sure debugfs is mounted to /sys/kernel/debug. If not, (requires root privileges) +$ mount -t debugfs debugfs /sys/kernel/debug  Check that the driver you are about to trace is not loaded.  Activate mmiotrace (requires root privileges): -$ echo mmiotrace > /debug/tracing/current_tracer +$ echo mmiotrace > /sys/kernel/debug/tracing/current_tracer  Start storing the trace: -$ cat /debug/tracing/trace_pipe > mydump.txt & +$ cat /sys/kernel/debug/tracing/trace_pipe > mydump.txt &  The 'cat' process should stay running (sleeping) in the background.  Load the driver you want to trace and use it. Mmiotrace will only catch MMIO  accesses to areas that are ioremapped while mmiotrace is active.  During tracing you can place comments (markers) into the trace by -$ echo "X is up" > /debug/tracing/trace_marker +$ echo "X is up" > /sys/kernel/debug/tracing/trace_marker  This makes it easier to see which part of the (huge) trace corresponds to  which action. It is recommended to place descriptive markers about what you  do.  Shut down mmiotrace (requires root privileges): -$ echo nop > /debug/tracing/current_tracer +$ echo nop > /sys/kernel/debug/tracing/current_tracer  The 'cat' process exits. If it does not, kill it by issuing 'fg' command and  pressing ctrl+c. @@ -78,10 +78,10 @@ to view your kernel log and look for "mmiotrace has lost events" warning. If  events were lost, the trace is incomplete. You should enlarge the buffers and  try again. Buffers are enlarged by first seeing how large the current buffers  are: -$ cat /debug/tracing/buffer_size_kb +$ cat /sys/kernel/debug/tracing/buffer_size_kb  gives you a number. Approximately double this number and write it back, for  instance: -$ echo 128000 > /debug/tracing/buffer_size_kb +$ echo 128000 > /sys/kernel/debug/tracing/buffer_size_kb  Then start again from the top.  If you are doing a trace for a driver project, e.g. Nouveau, you should also diff --git a/drivers/block/pktcdvd.c b/drivers/block/pktcdvd.c index 37e0f81cada..83650e00632 100644 --- a/drivers/block/pktcdvd.c +++ b/drivers/block/pktcdvd.c @@ -430,7 +430,7 @@ static void pkt_sysfs_cleanup(void)  /********************************************************************    entries in debugfs -  /debugfs/pktcdvd[0-7]/ +  /sys/kernel/debug/pktcdvd[0-7]/  			info   *******************************************************************/ diff --git a/drivers/gpu/drm/drm_debugfs.c b/drivers/gpu/drm/drm_debugfs.c index c77c6c6d9d2..6ce0e2667a8 100644 --- a/drivers/gpu/drm/drm_debugfs.c +++ b/drivers/gpu/drm/drm_debugfs.c @@ -105,7 +105,7 @@ int drm_debugfs_create_files(struct drm_info_list *files, int count,  		ent = debugfs_create_file(files[i].name, S_IFREG | S_IRUGO,  					  root, tmp, &drm_debugfs_fops);  		if (!ent) { -			DRM_ERROR("Cannot create /debugfs/dri/%s/%s\n", +			DRM_ERROR("Cannot create /sys/kernel/debug/dri/%s/%s\n",  				  name, files[i].name);  			drm_free(tmp, sizeof(struct drm_info_node),  				 _DRM_DRIVER); @@ -133,9 +133,9 @@ EXPORT_SYMBOL(drm_debugfs_create_files);   * \param minor device minor number   * \param root DRI debugfs dir entry.   * - * Create the DRI debugfs root entry "/debugfs/dri", the device debugfs root entry - * "/debugfs/dri/%minor%/", and each entry in debugfs_list as - * "/debugfs/dri/%minor%/%name%". + * Create the DRI debugfs root entry "/sys/kernel/debug/dri", the device debugfs root entry + * "/sys/kernel/debug/dri/%minor%/", and each entry in debugfs_list as + * "/sys/kernel/debug/dri/%minor%/%name%".   */  int drm_debugfs_init(struct drm_minor *minor, int minor_id,  		     struct dentry *root) @@ -148,7 +148,7 @@ int drm_debugfs_init(struct drm_minor *minor, int minor_id,  	sprintf(name, "%d", minor_id);  	minor->debugfs_root = debugfs_create_dir(name, root);  	if (!minor->debugfs_root) { -		DRM_ERROR("Cannot create /debugfs/dri/%s\n", name); +		DRM_ERROR("Cannot create /sys/kernel/debug/dri/%s\n", name);  		return -1;  	} @@ -165,7 +165,7 @@ int drm_debugfs_init(struct drm_minor *minor, int minor_id,  		ret = dev->driver->debugfs_init(minor);  		if (ret) {  			DRM_ERROR("DRM: Driver failed to initialize " -				  "/debugfs/dri.\n"); +				  "/sys/kernel/debug/dri.\n");  			return ret;  		}  	} diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c index 019b7c57823..1bf7efd8d33 100644 --- a/drivers/gpu/drm/drm_drv.c +++ b/drivers/gpu/drm/drm_drv.c @@ -339,7 +339,7 @@ static int __init drm_core_init(void)  	drm_debugfs_root = debugfs_create_dir("dri", NULL);  	if (!drm_debugfs_root) { -		DRM_ERROR("Cannot create /debugfs/dri\n"); +		DRM_ERROR("Cannot create /sys/kernel/debug/dri\n");  		ret = -1;  		goto err_p3;  	} diff --git a/drivers/gpu/drm/drm_stub.c b/drivers/gpu/drm/drm_stub.c index 89050684fe0..387a8de1bc7 100644 --- a/drivers/gpu/drm/drm_stub.c +++ b/drivers/gpu/drm/drm_stub.c @@ -343,7 +343,7 @@ static int drm_get_minor(struct drm_device *dev, struct drm_minor **minor, int t  #if defined(CONFIG_DEBUG_FS)  	ret = drm_debugfs_init(new_minor, minor_id, drm_debugfs_root);  	if (ret) { -		DRM_ERROR("DRM: Failed to initialize /debugfs/dri.\n"); +		DRM_ERROR("DRM: Failed to initialize /sys/kernel/debug/dri.\n");  		goto err_g2;  	}  #endif diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig index 01f282cd098..3b6383168c6 100644 --- a/drivers/net/Kconfig +++ b/drivers/net/Kconfig @@ -2206,7 +2206,7 @@ config SKGE_DEBUG         depends on SKGE && DEBUG_FS         help  	 This option adds the ability to dump driver state for debugging. -	 The file debugfs/skge/ethX displays the state of the internal +	 The file /sys/kernel/debug/skge/ethX displays the state of the internal  	 transmit and receive rings.  	 If unsure, say N. @@ -2232,7 +2232,7 @@ config SKY2_DEBUG         depends on SKY2 && DEBUG_FS         help  	 This option adds the ability to dump driver state for debugging. -	 The file debugfs/sky2/ethX displays the state of the internal +	 The file /sys/kernel/debug/sky2/ethX displays the state of the internal  	 transmit and receive rings.  	 If unsure, say N. diff --git a/drivers/net/wimax/i2400m/i2400m.h b/drivers/net/wimax/i2400m/i2400m.h index 1fe5da4cf0a..60330f313f2 100644 --- a/drivers/net/wimax/i2400m/i2400m.h +++ b/drivers/net/wimax/i2400m/i2400m.h @@ -432,7 +432,7 @@ struct i2400m {  	unsigned ready:1;		/* all probing steps done */  	unsigned rx_reorder:1;		/* RX reorder is enabled */  	u8 trace_msg_from_user;		/* echo rx msgs to 'trace' pipe */ -					/* typed u8 so debugfs/u8 can tweak */ +					/* typed u8 so /sys/kernel/debug/u8 can tweak */  	enum i2400m_system_state state;  	wait_queue_head_t state_wq;	/* Woken up when on state updates */ diff --git a/drivers/net/wireless/ath/ath5k/Kconfig b/drivers/net/wireless/ath/ath5k/Kconfig index 509b6f94f73..daf0c83527d 100644 --- a/drivers/net/wireless/ath/ath5k/Kconfig +++ b/drivers/net/wireless/ath/ath5k/Kconfig @@ -28,11 +28,10 @@ config ATH5K_DEBUG  	  Say Y, if and you will get debug options for ath5k.  	  To use this, you need to mount debugfs: -	  mkdir /debug/ -	  mount -t debugfs debug /debug/ +	  mount -t debugfs debug /sys/kernel/debug  	  You will get access to files under: -	  /debug/ath5k/phy0/ +	  /sys/kernel/debug/ath5k/phy0/  	  To enable debug, pass the debug level to the debug module  	  parameter. For example: diff --git a/drivers/net/wireless/libertas/README b/drivers/net/wireless/libertas/README index d860fc37575..ab6a2d518af 100644 --- a/drivers/net/wireless/libertas/README +++ b/drivers/net/wireless/libertas/README @@ -72,7 +72,7 @@ rdrf  	location that is to be read.  This parameter must be specified in  	hexadecimal (its possible to preceed preceding the number with a "0x"). -	Path: /debugfs/libertas_wireless/ethX/registers/ +	Path: /sys/kernel/debug/libertas_wireless/ethX/registers/  	Usage:  		echo "0xa123" > rdmac ; cat rdmac @@ -95,7 +95,7 @@ wrrf  sleepparams  	This command is used to set the sleepclock configurations -	Path: /debugfs/libertas_wireless/ethX/ +	Path: /sys/kernel/debug/libertas_wireless/ethX/  	Usage:  		cat sleepparams: reads the current sleepclock configuration @@ -115,7 +115,7 @@ subscribed_events  	The subscribed_events directory contains the interface for the  	subscribed events API. -	Path: /debugfs/libertas_wireless/ethX/subscribed_events/ +	Path: /sys/kernel/debug/libertas_wireless/ethX/subscribed_events/  	Each event is represented by a filename. Each filename consists of the  	following three fields: @@ -165,7 +165,7 @@ subscribed_events  extscan  	This command is used to do a specific scan. -	Path: /debugfs/libertas_wireless/ethX/ +	Path: /sys/kernel/debug/libertas_wireless/ethX/  	Usage: echo "SSID" > extscan @@ -179,7 +179,7 @@ getscantable  	Display the current contents of the driver scan table (ie. get the  	scan results). -	Path: /debugfs/libertas_wireless/ethX/ +	Path: /sys/kernel/debug/libertas_wireless/ethX/  	Usage:  		cat getscantable @@ -188,7 +188,7 @@ setuserscan  	Initiate a customized scan and retrieve the results -	Path: /debugfs/libertas_wireless/ethX/ +	Path: /sys/kernel/debug/libertas_wireless/ethX/      Usage:         echo "[ARGS]" > setuserscan diff --git a/drivers/scsi/lpfc/lpfc_debugfs.c b/drivers/scsi/lpfc/lpfc_debugfs.c index 2b02b1fb39a..8d0f0de76b6 100644 --- a/drivers/scsi/lpfc/lpfc_debugfs.c +++ b/drivers/scsi/lpfc/lpfc_debugfs.c @@ -53,8 +53,7 @@   * debugfs interface   *   * To access this interface the user should: - * # mkdir /debug - * # mount -t debugfs none /debug + * # mount -t debugfs none /sys/kernel/debug   *   * The lpfc debugfs directory hierarchy is:   * lpfc/lpfcX/vportY diff --git a/include/linux/kernel.h b/include/linux/kernel.h index 883cd44ff76..99b7aada28d 100644 --- a/include/linux/kernel.h +++ b/include/linux/kernel.h @@ -406,7 +406,7 @@ static inline char *pack_hex_byte(char *buf, u8 byte)   *   * Use tracing_on/tracing_off when you want to quickly turn on or off   * tracing. It simply enables or disables the recording of the trace events. - * This also corresponds to the user space debugfs/tracing/tracing_on + * This also corresponds to the user space /sys/kernel/debug/tracing/tracing_on   * file, which gives a means for the kernel and userspace to interact.   * Place a tracing_off() in the kernel where you want tracing to end.   * From user space, examine the trace, and then echo 1 > tracing_on diff --git a/include/linux/tracepoint.h b/include/linux/tracepoint.h index 14df7e635d4..b9dc4ca0246 100644 --- a/include/linux/tracepoint.h +++ b/include/linux/tracepoint.h @@ -198,7 +198,7 @@ static inline void tracepoint_synchronize_unregister(void)   *	* This is how the trace record is structured and will   *	* be saved into the ring buffer. These are the fields   *	* that will be exposed to user-space in - *	* /debug/tracing/events/<*>/format. + *	* /sys/kernel/debug/tracing/events/<*>/format.   *	*   *	* The declared 'local variable' is called '__entry'   *	* @@ -258,7 +258,7 @@ static inline void tracepoint_synchronize_unregister(void)   * tracepoint callback (this is used by programmatic plugins and   * can also by used by generic instrumentation like SystemTap), and   * it is also used to expose a structured trace record in - * /debug/tracing/events/. + * /sys/kernel/debug/tracing/events/.   */  #define TRACE_EVENT(name, proto, args, struct, assign, print)	\ diff --git a/kernel/trace/Kconfig b/kernel/trace/Kconfig index 4a13e5a01ce..61071fecc82 100644 --- a/kernel/trace/Kconfig +++ b/kernel/trace/Kconfig @@ -147,7 +147,7 @@ config IRQSOFF_TRACER  	  disabled by default and can be runtime (re-)started  	  via: -	      echo 0 > /debugfs/tracing/tracing_max_latency +	      echo 0 > /sys/kernel/debug/tracing/tracing_max_latency  	  (Note that kernel size and overhead increases with this option  	  enabled. This option and the preempt-off timing option can be @@ -168,7 +168,7 @@ config PREEMPT_TRACER  	  disabled by default and can be runtime (re-)started  	  via: -	      echo 0 > /debugfs/tracing/tracing_max_latency +	      echo 0 > /sys/kernel/debug/tracing/tracing_max_latency  	  (Note that kernel size and overhead increases with this option  	  enabled. This option and the irqs-off timing option can be @@ -261,7 +261,7 @@ config PROFILE_ANNOTATED_BRANCHES  	  This tracer profiles all the the likely and unlikely macros  	  in the kernel. It will display the results in: -	  /debugfs/tracing/profile_annotated_branch +	  /sys/kernel/debug/tracing/profile_annotated_branch  	  Note: this will add a significant overhead, only turn this  	  on if you need to profile the system's use of these macros. @@ -274,7 +274,7 @@ config PROFILE_ALL_BRANCHES  	  taken in the kernel is recorded whether it hit or miss.  	  The results will be displayed in: -	  /debugfs/tracing/profile_branch +	  /sys/kernel/debug/tracing/profile_branch  	  This option also enables the likely/unlikely profiler. @@ -323,7 +323,7 @@ config STACK_TRACER  	select KALLSYMS  	help  	  This special tracer records the maximum stack footprint of the -	  kernel and displays it in debugfs/tracing/stack_trace. +	  kernel and displays it in /sys/kernel/debug/tracing/stack_trace.  	  This tracer works by hooking into every function call that the  	  kernel executes, and keeping a maximum stack depth value and diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index 8acd9b81a5d..c1878bfb2e1 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c @@ -344,7 +344,7 @@ static raw_spinlock_t ftrace_max_lock =  /*   * Copy the new maximum trace into the separate maximum-trace   * structure. (this way the maximum trace is permanently saved, - * for later retrieval via /debugfs/tracing/latency_trace) + * for later retrieval via /sys/kernel/debug/tracing/latency_trace)   */  static void  __update_max_tr(struct trace_array *tr, struct task_struct *tsk, int cpu) @@ -2414,21 +2414,20 @@ static const struct file_operations tracing_iter_fops = {  static const char readme_msg[] =  	"tracing mini-HOWTO:\n\n" -	"# mkdir /debug\n" -	"# mount -t debugfs nodev /debug\n\n" -	"# cat /debug/tracing/available_tracers\n" +	"# mount -t debugfs nodev /sys/kernel/debug\n\n" +	"# cat /sys/kernel/debug/tracing/available_tracers\n"  	"wakeup preemptirqsoff preemptoff irqsoff function sched_switch nop\n\n" -	"# cat /debug/tracing/current_tracer\n" +	"# cat /sys/kernel/debug/tracing/current_tracer\n"  	"nop\n" -	"# echo sched_switch > /debug/tracing/current_tracer\n" -	"# cat /debug/tracing/current_tracer\n" +	"# echo sched_switch > /sys/kernel/debug/tracing/current_tracer\n" +	"# cat /sys/kernel/debug/tracing/current_tracer\n"  	"sched_switch\n" -	"# cat /debug/tracing/trace_options\n" +	"# cat /sys/kernel/debug/tracing/trace_options\n"  	"noprint-parent nosym-offset nosym-addr noverbose\n" -	"# echo print-parent > /debug/tracing/trace_options\n" -	"# echo 1 > /debug/tracing/tracing_enabled\n" -	"# cat /debug/tracing/trace > /tmp/trace.txt\n" -	"# echo 0 > /debug/tracing/tracing_enabled\n" +	"# echo print-parent > /sys/kernel/debug/tracing/trace_options\n" +	"# echo 1 > /sys/kernel/debug/tracing/tracing_enabled\n" +	"# cat /sys/kernel/debug/tracing/trace > /tmp/trace.txt\n" +	"# echo 0 > /sys/kernel/debug/tracing/tracing_enabled\n"  ;  static ssize_t diff --git a/scripts/tracing/draw_functrace.py b/scripts/tracing/draw_functrace.py index 902f9a99262..db40fa04cd5 100644 --- a/scripts/tracing/draw_functrace.py +++ b/scripts/tracing/draw_functrace.py @@ -12,10 +12,9 @@ calls. Only the functions's names and the the call time are provided.  Usage:  	Be sure that you have CONFIG_FUNCTION_TRACER -	# mkdir /debugfs -	# mount -t debug debug /debug -	# echo function > /debug/tracing/current_tracer -	$ cat /debug/tracing/trace_pipe > ~/raw_trace_func +	# mount -t debugfs nodev /sys/kernel/debug +	# echo function > /sys/kernel/debug/tracing/current_tracer +	$ cat /sys/kernel/debug/tracing/trace_pipe > ~/raw_trace_func  	Wait some times but not too much, the script is a bit slow.  	Break the pipe (Ctrl + Z)  	$ scripts/draw_functrace.py < raw_trace_func > draw_functrace  |