1. 15 4月, 2009 3 次提交
    • S
      tracing/events: convert event call sites to use a link list · a59fd602
      Steven Rostedt 提交于
      Impact: makes it possible to define events in modules
      
      The events are created by reading down the section that they are linked
      in by the macros. But this is not scalable to modules. This patch converts
      the manipulations to use a global link list, and on boot up it adds
      the items in the section to the list.
      
      This change will allow modules to add their tracing events to the list as
      well.
      
      Note, this change alone does not permit modules to use the TRACE_EVENT macros,
      but the change is needed for them to eventually do so.
      Signed-off-by: NSteven Rostedt <rostedt@goodmis.org>
      a59fd602
    • S
      tracing/events: move declarations from trace directory to core include · 97f20251
      Steven Rostedt 提交于
      In preparation to allowing trace events to happen in modules, we need
      to move some of the local declarations in the kernel/trace directory
      into include/linux.
      
      This patch simply moves the declarations and performs no context changes.
      Signed-off-by: NSteven Rostedt <rostedt@goodmis.org>
      97f20251
    • S
      tracing: make trace_seq operations available for core kernel · 9504504c
      Steven Rostedt 提交于
      In the process to make TRACE_EVENT macro work for modules, the trace_seq
      operations must be available for core kernel code.
      
      These operations are quite useful and can be used for other implementations.
      
      The main idea is that we create a trace_seq handle that acts very much
      like the seq_file handle.
      
      	struct trace_seq *s = kmalloc(sizeof(*s, GFP_KERNEL);
      
      	trace_seq_init(s);
      	trace_seq_printf(s, "some data %d\n", variable);
      
      	printk("%s", s->buffer);
      
      The main use is to allow a top level function call several other functions
      that may store printf like data into the buffer. Then at the end, the top
      level function can process all the data with any method it would like to.
      It could be passed to userspace, output via printk or even use seq_file:
      
      	trace_seq_to_user(s, ubuf, cnt);
      	seq_puts(m, s->buffer);
      Signed-off-by: NSteven Rostedt <rostedt@goodmis.org>
      9504504c
  2. 14 4月, 2009 2 次提交
    • S
      tracing: consolidate trace and trace_event headers · ea20d929
      Steven Rostedt 提交于
      Impact: clean up
      
      Neil Horman (et. al.) criticized the way the trace events were broken up
      into two files. The reason for that was that ftrace needed to separate out
      the declarations from where the #include <linux/tracepoint.h> was used.
      It then dawned on me that the tracepoint.h header only needs to define the
      TRACE_EVENT macro if it is not already defined.
      
      The solution is simply to test if TRACE_EVENT is defined, and if it is not
      then the linux/tracepoint.h header can define it. This change consolidates
      all the <traces>.h and <traces>_event_types.h into the <traces>.h file.
      Reported-by: NNeil Horman <nhorman@tuxdriver.com>
      Reported-by: NTheodore Tso <tytso@mit.edu>
      Reported-by: NJiaying Zhang <jiayingz@google.com>
      Cc: Zhaolei <zhaolei@cn.fujitsu.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Jason Baron <jbaron@redhat.com>
      Cc: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
      Signed-off-by: NSteven Rostedt <rostedt@goodmis.org>
      ea20d929
    • S
      ring-buffer: add ring_buffer_discard_commit · fa1b47dd
      Steven Rostedt 提交于
      The ring_buffer_discard_commit is similar to ring_buffer_event_discard
      but it can only be done on an event that has yet to be commited.
      Unpredictable results can happen otherwise.
      
      The main difference between ring_buffer_discard_commit and
      ring_buffer_event_discard is that ring_buffer_discard_commit will try
      to free the data in the ring buffer if nothing has addded data
      after the reserved event. If something did, then it acts almost the
      same as ring_buffer_event_discard followed by a
      ring_buffer_unlock_commit.
      
      Note, either ring_buffer_commit_discard and ring_buffer_unlock_commit
      can be called on an event, not both.
      
      This commit also exports both discard functions to be usable by
      GPL modules.
      Signed-off-by: NSteven Rostedt <srostedt@redhat.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      fa1b47dd
  3. 13 4月, 2009 2 次提交
  4. 12 4月, 2009 2 次提交
    • F
      lockdep: warn about lockdep disabling after kernel taint · 9eeba613
      Frederic Weisbecker 提交于
      Impact: provide useful missing info for developers
      
      Kernel taint can occur in several situations such as warnings,
      load of prorietary or staging modules, bad page, etc...
      
      But when such taint happens, a developer might still be working on
      the kernel, expecting that lockdep is still enabled. But a taint
      disables lockdep without ever warning about it.
      Such a kernel behaviour doesn't really help for kernel development.
      
      This patch adds this missing warning.
      
      Since the taint is done most of the time after the main message that
      explain the real source issue, it seems safe to warn about it inside
      add_taint() so that it appears at last, without hurting the main
      information.
      
      v2: Use a generic helper to disable lockdep instead of an
          open coded xchg().
      Signed-off-by: NFrederic Weisbecker <fweisbec@gmail.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      LKML-Reference: <1239412638-6739-1-git-send-email-fweisbec@gmail.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      9eeba613
    • Z
      tracing, kmemtrace: Separate include/trace/kmemtrace.h to kmemtrace part and tracepoint part · 02af61bb
      Zhaolei 提交于
      Impact: refactor code for future changes
      
      Current kmemtrace.h is used both as header file of kmemtrace and kmem's
      tracepoints definition.
      
      Tracepoints' definition file may be used by other code, and should only have
      definition of tracepoint.
      
      We can separate include/trace/kmemtrace.h into 2 files:
      
        include/linux/kmemtrace.h: header file for kmemtrace
        include/trace/kmem.h:      definition of kmem tracepoints
      Signed-off-by: NZhao Lei <zhaolei@cn.fujitsu.com>
      Acked-by: NEduard - Gabriel Munteanu <eduard.munteanu@linux360.ro>
      Acked-by: NPekka Enberg <penberg@cs.helsinki.fi>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Tom Zanussi <tzanussi@gmail.com>
      LKML-Reference: <49DEE68A.5040902@cn.fujitsu.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      02af61bb
  5. 11 4月, 2009 1 次提交
    • T
      percpu: unbreak alpha percpu · 066123a5
      Tejun Heo 提交于
      For the time being, move the generic percpu_*() accessors to
      linux/percpu.h.
      
      asm-generic/percpu.h is meant to carry generic stuff for low level
      stuff - declarations, definitions and pointer offset calculation
      and so on but not for generic interface.
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      066123a5
  6. 10 4月, 2009 1 次提交
  7. 09 4月, 2009 5 次提交
  8. 08 4月, 2009 6 次提交
    • S
      ide: refactor tf_read() method · 3153c26b
      Sergei Shtylyov 提交于
      Simplify tf_read() method, making it deal only with 'struct ide_taskfile' and
      the validity flags that the upper layer passes, and factoring out the code that
      deals with the high order bytes into ide_tf_readback() to be called from the
      only two functions interested, ide_complete_cmd() and ide_dump_sector().
      
      This should stop the needless code duplication in this method and so make
      it about twice smaller than it was; along with simplifying the setup for
      the method call, this should save both time and space...
      Signed-off-by: NSergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      3153c26b
    • S
      ide: refactor tf_load() method · c9ff9e7b
      Sergei Shtylyov 提交于
      Simplify tf_load() method, making it deal only with 'struct ide_taskfile' and
      the validity flags that the upper layer passes, and moving the code that deals
      with the high order bytes into the only function interested, do_rw_taskfile().
      
      This should stop the needless code duplication in this method and so make
      it about twice smaller than it was; along with simplifying the setup for the
      method call, this should save both time and space...
      Signed-off-by: NSergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      c9ff9e7b
    • S
      ide: simplify 'struct ide_taskfile' · 745483f1
      Sergei Shtylyov 提交于
      Make 'struct ide_taskfile' cover only 8 register values and thus put two such
      fields ('tf' and 'hob') into 'struct ide_cmd', dropping unnecessary 'tf_array'
      field from it.
      
      This required changing the prototype of ide_get_lba_addr() and ide_tf_dump().
      Signed-off-by: NSergei Shtylyov <sshtylyov@ru.mvista.com>
      [bart: fix setting of ATA_LBA bit for LBA48 commands in __ide_do_rw_disk()]
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      745483f1
    • S
      ide: replace IDE_TFLAG_* flags by IDE_VALID_* · 60f85019
      Sergei Shtylyov 提交于
      Replace IDE_TFLAG_{IN|OUT}_* flags meaning to the taskfile register validity on
      input/output by the IDE_VALID_* flags and introduce 4 symmetric 8-bit register
      validity indicator subfields, 'valid.{input/output}.{tf|hob}', into the 'struct
      ide_cmd' instead of using the 'tf_flags' field for that purpose (this field can
      then be turned from 32-bit into 8-bit one).
      Signed-off-by: NSergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      60f85019
    • T
      tracing: append a comma to INIT_FTRACE_GRAPH · f876d346
      Tetsuo Handa 提交于
      Impact: dont break future extensions of INIT_TASK
      
      While not a problem right now, due to lack of a comma, build fails if
      elements are appended to INIT_TASK() macro in development code:
      
       arch/x86/kernel/init_task.c:33: error: request for member `XXXXXXXXXX' in something not a structure or union
       arch/x86/kernel/init_task.c:33: error: initializer element is not constant
       arch/x86/kernel/init_task.c:33: error: (near initialization for `init_task.ret_stack')
       make[1]: *** [arch/x86/kernel/init_task.o] Error 1
       make: *** [arch/x86/kernel] Error 2
      Signed-off-by: NTetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
      Cc: srostedt@redhat.com
      LKML-Reference: <200904080505.n3855hcn017109@www262.sakura.ne.jp>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      f876d346
    • L
      Fix build errors due to CONFIG_BRANCH_TRACER=y · aeeae868
      Linus Torvalds 提交于
      The code that enables branch tracing for all (non-constant) branches
      plays games with the preprocessor and #define's the C 'if ()' construct
      to do tracing.
      
      That's all fine, but it fails for some unusual but valid C code that is
      sometimes used in macros, notably by the intel-iommu code:
      
      	if (i=drhd->iommu, drhd->ignored) ..
      
      because now the preprocessor complains about multiple arguments to the
      'if' macro.
      
      So make the macro expansion of this particularly horrid trick use
      varargs, and handle the case of comma-expressions in if-statements.  Use
      another macro to do it cleanly in just one place.
      
      This replaces a patch by David (and acked by Steven) that did this all
      inside that one already-too-horrid macro.
      Tested-by: NIngo Molnar <mingo@elte.hu>
      Cc: David Woodhouse <dwmw2@infradead.org>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      aeeae868
  9. 07 4月, 2009 18 次提交