Merge tag 'trace-v5.15-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt...
[linux-2.6-microblaze.git] / kernel / trace / trace.c
index 2755534..7896d30 100644 (file)
@@ -2603,6 +2603,15 @@ enum print_line_t trace_handle_return(struct trace_seq *s)
 }
 EXPORT_SYMBOL_GPL(trace_handle_return);
 
+static unsigned short migration_disable_value(void)
+{
+#if defined(CONFIG_SMP)
+       return current->migration_disabled;
+#else
+       return 0;
+#endif
+}
+
 unsigned int tracing_gen_ctx_irq_test(unsigned int irqs_status)
 {
        unsigned int trace_flags = irqs_status;
@@ -2621,7 +2630,8 @@ unsigned int tracing_gen_ctx_irq_test(unsigned int irqs_status)
                trace_flags |= TRACE_FLAG_NEED_RESCHED;
        if (test_preempt_need_resched())
                trace_flags |= TRACE_FLAG_PREEMPT_RESCHED;
-       return (trace_flags << 16) | (pc & 0xff);
+       return (trace_flags << 16) | (min_t(unsigned int, pc & 0xff, 0xf)) |
+               (min_t(unsigned int, migration_disable_value(), 0xf)) << 4;
 }
 
 struct ring_buffer_event *
@@ -3697,11 +3707,11 @@ static bool trace_safe_str(struct trace_iterator *iter, const char *str)
                return false;
 
        event = container_of(trace_event, struct trace_event_call, event);
-       if (!event->mod)
+       if ((event->flags & TRACE_EVENT_FL_DYNAMIC) || !event->module)
                return false;
 
        /* Would rather have rodata, but this will suffice */
-       if (within_module_core(addr, event->mod))
+       if (within_module_core(addr, event->module))
                return true;
 
        return false;
@@ -4189,9 +4199,10 @@ static void print_lat_help_header(struct seq_file *m)
                    "#                  | / _----=> need-resched    \n"
                    "#                  || / _---=> hardirq/softirq \n"
                    "#                  ||| / _--=> preempt-depth   \n"
-                   "#                  |||| /     delay            \n"
-                   "#  cmd     pid     ||||| time  |   caller      \n"
-                   "#     \\   /        |||||  \\    |   /         \n");
+                   "#                  |||| / _-=> migrate-disable \n"
+                   "#                  ||||| /     delay           \n"
+                   "#  cmd     pid     |||||| time  |   caller     \n"
+                   "#     \\   /        ||||||  \\    |    /       \n");
 }
 
 static void print_event_info(struct array_buffer *buf, struct seq_file *m)
@@ -4229,9 +4240,10 @@ static void print_func_help_header_irq(struct array_buffer *buf, struct seq_file
        seq_printf(m, "#                            %.*s / _----=> need-resched\n", prec, space);
        seq_printf(m, "#                            %.*s| / _---=> hardirq/softirq\n", prec, space);
        seq_printf(m, "#                            %.*s|| / _--=> preempt-depth\n", prec, space);
-       seq_printf(m, "#                            %.*s||| /     delay\n", prec, space);
-       seq_printf(m, "#           TASK-PID  %.*s CPU#  ||||   TIMESTAMP  FUNCTION\n", prec, "     TGID   ");
-       seq_printf(m, "#              | |    %.*s   |   ||||      |         |\n", prec, "       |    ");
+       seq_printf(m, "#                            %.*s||| / _-=> migrate-disable\n", prec, space);
+       seq_printf(m, "#                            %.*s|||| /     delay\n", prec, space);
+       seq_printf(m, "#           TASK-PID  %.*s CPU#  |||||  TIMESTAMP  FUNCTION\n", prec, "     TGID   ");
+       seq_printf(m, "#              | |    %.*s   |   |||||     |         |\n", prec, "       |    ");
 }
 
 void
@@ -5543,6 +5555,7 @@ static const char readme_msg[] =
 #ifdef CONFIG_HIST_TRIGGERS
        "\t           s:[synthetic/]<event> <field> [<field>]\n"
 #endif
+       "\t           e[:[<group>/]<event>] <attached-group>.<attached-event> [<args>]\n"
        "\t           -:[<group>/]<event>\n"
 #ifdef CONFIG_KPROBE_EVENTS
        "\t    place: [<module>:]<symbol>[+<offset>]|<memaddr>\n"
@@ -5552,7 +5565,7 @@ static const char readme_msg[] =
   "   place (uprobe): <path>:<offset>[%return][(ref_ctr_offset)]\n"
 #endif
        "\t     args: <name>=fetcharg[:type]\n"
-       "\t fetcharg: %<register>, @<address>, @<symbol>[+|-<offset>],\n"
+       "\t fetcharg: (%<register>|$<efield>), @<address>, @<symbol>[+|-<offset>],\n"
 #ifdef CONFIG_HAVE_FUNCTION_ARG_ACCESS_API
        "\t           $stack<index>, $stack, $retval, $comm, $arg<N>,\n"
 #else
@@ -5567,6 +5580,8 @@ static const char readme_msg[] =
        "\t    stype: u8/u16/u32/u64, s8/s16/s32/s64, pid_t,\n"
        "\t           [unsigned] char/int/long\n"
 #endif
+       "\t    efield: For event probes ('e' types), the field is on of the fields\n"
+       "\t            of the <attached-group>/<attached-event>.\n"
 #endif
        "  events/\t\t- Directory containing all trace event subsystems:\n"
        "      enable\t\t- Write 0/1 to enable/disable tracing of all events\n"
@@ -5654,6 +5669,7 @@ static const char readme_msg[] =
        "\t            .execname   display a common_pid as a program name\n"
        "\t            .syscall    display a syscall id as a syscall name\n"
        "\t            .log2       display log2 value rather than raw number\n"
+       "\t            .buckets=size  display values in groups of size rather than raw number\n"
        "\t            .usecs      display a common_timestamp in microseconds\n\n"
        "\t    The 'pause' parameter can be used to pause an existing hist\n"
        "\t    trigger or to start a hist trigger but not log any events\n"