Merge branch 'perfcounters-core-for-linus' of git://git.kernel.org/pub/scm/linux...
authorLinus Torvalds <torvalds@linux-foundation.org>
Sun, 20 Sep 2009 22:54:37 +0000 (15:54 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sun, 20 Sep 2009 22:54:37 +0000 (15:54 -0700)
* 'perfcounters-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (58 commits)
  perf_counter: Fix perf_copy_attr() pointer arithmetic
  perf utils: Use a define for the maximum length of a trace event
  perf: Add timechart help text and add timechart to "perf help"
  tracing, x86, cpuidle: Move the end point of a C state in the power tracer
  perf utils: Be consistent about minimum text size in the svghelper
  perf timechart: Add "perf timechart record"
  perf: Add the timechart tool
  perf: Add a SVG helper library file
  tracing, perf: Convert the power tracer into an event tracer
  perf: Add a sample_event type to the event_union
  perf: Allow perf utilities to have "callback" options without arguments
  perf: Store trace event name/id pairs in perf.data
  perf: Add a timestamp to fork events
  sched_clock: Make it NMI safe
  perf_counter: Fix up swcounter throttling
  x86, perf_counter, bts: Optimize BTS overflow handling
  perf sched: Add --input=file option to builtin-sched.c
  perf trace: Sample timestamp and cpu when using record flag
  perf tools: Increase MAX_EVENT_LENGTH
  perf tools: Fix memory leak in read_ftrace_printk()
  ...

1  2 
arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c

index 7bb676c533aa8258c0d075323b3031b7f6bd5951,479cc8c418c1929e29d090f612d529f2ede96881..7d5c3b0ea8dad3a69eaf24d9b99d7eb3a2bacfd2
@@@ -33,7 -33,7 +33,7 @@@
  #include <linux/cpufreq.h>
  #include <linux/compiler.h>
  #include <linux/dmi.h>
- #include <trace/power.h>
+ #include <trace/events/power.h>
  
  #include <linux/acpi.h>
  #include <linux/io.h>
@@@ -72,8 -72,6 +72,6 @@@ static DEFINE_PER_CPU(struct acpi_cpufr
  
  static DEFINE_PER_CPU(struct aperfmperf, old_perf);
  
- DEFINE_TRACE(power_mark);
  /* acpi_perf_data is a pointer to percpu data. */
  static struct acpi_processor_performance *acpi_perf_data;
  
@@@ -332,7 -330,6 +330,6 @@@ static int acpi_cpufreq_target(struct c
        unsigned int next_perf_state = 0; /* Index into perf table */
        unsigned int i;
        int result = 0;
-       struct power_trace it;
  
        dprintk("acpi_cpufreq_target %d (%d)\n", target_freq, policy->cpu);
  
                }
        }
  
-       trace_power_mark(&it, POWER_PSTATE, next_perf_state);
+       trace_power_frequency(POWER_PSTATE, data->freq_table[next_state].frequency);
  
        switch (data->cpu_feature) {
        case SYSTEM_INTEL_MSR_CAPABLE:
@@@ -526,21 -523,6 +523,21 @@@ static const struct dmi_system_id sw_an
        },
        { }
  };
 +
 +static int acpi_cpufreq_blacklist(struct cpuinfo_x86 *c)
 +{
 +      /* http://www.intel.com/Assets/PDF/specupdate/314554.pdf
 +       * AL30: A Machine Check Exception (MCE) Occurring during an
 +       * Enhanced Intel SpeedStep Technology Ratio Change May Cause
 +       * Both Processor Cores to Lock Up when HT is enabled*/
 +      if (c->x86_vendor == X86_VENDOR_INTEL) {
 +              if ((c->x86 == 15) &&
 +                  (c->x86_model == 6) &&
 +                  (c->x86_mask == 8) && smt_capable())
 +                      return -ENODEV;
 +              }
 +      return 0;
 +}
  #endif
  
  static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy)
  
        dprintk("acpi_cpufreq_cpu_init\n");
  
 +#ifdef CONFIG_SMP
 +      result = acpi_cpufreq_blacklist(c);
 +      if (result)
 +              return result;
 +#endif
 +
        data = kzalloc(sizeof(struct acpi_cpufreq_data), GFP_KERNEL);
        if (!data)
                return -ENOMEM;