Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip

* 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
perf trace scripting: Fix extern struct definitions
perf ui hist browser: Fix segfault on 'a' for annotate
perf tools: Fix build breakage
perf, x86: Handle in flight NMIs on P4 platform
oprofile, ARM: Release resources on failure
oprofile: Add Support for Intel CPU Family 6 / Model 29

+15 -7
+5 -2
arch/arm/oprofile/common.c
··· 102 102 if (IS_ERR(pevent)) { 103 103 ret = PTR_ERR(pevent); 104 104 } else if (pevent->state != PERF_EVENT_STATE_ACTIVE) { 105 + perf_event_release_kernel(pevent); 105 106 pr_warning("oprofile: failed to enable event %d " 106 107 "on CPU %d\n", event, cpu); 107 108 ret = -EBUSY; ··· 366 365 ret = init_driverfs(); 367 366 if (ret) { 368 367 kfree(counter_config); 368 + counter_config = NULL; 369 369 return ret; 370 370 } 371 371 ··· 404 402 struct perf_event *event; 405 403 406 404 if (*perf_events) { 407 - exit_driverfs(); 408 405 for_each_possible_cpu(cpu) { 409 406 for (id = 0; id < perf_num_counters; ++id) { 410 407 event = perf_events[cpu][id]; ··· 414 413 } 415 414 } 416 415 417 - if (counter_config) 416 + if (counter_config) { 418 417 kfree(counter_config); 418 + exit_driverfs(); 419 + } 419 420 } 420 421 #else 421 422 int __init oprofile_arch_init(struct oprofile_operations *ops)
+5 -1
arch/x86/kernel/cpu/perf_event_p4.c
··· 660 660 for (idx = 0; idx < x86_pmu.num_counters; idx++) { 661 661 int overflow; 662 662 663 - if (!test_bit(idx, cpuc->active_mask)) 663 + if (!test_bit(idx, cpuc->active_mask)) { 664 + /* catch in-flight IRQs */ 665 + if (__test_and_clear_bit(idx, cpuc->running)) 666 + handled++; 664 667 continue; 668 + } 665 669 666 670 event = cpuc->events[idx]; 667 671 hwc = &event->hw;
+1
arch/x86/oprofile/nmi_int.c
··· 674 674 case 0x0f: 675 675 case 0x16: 676 676 case 0x17: 677 + case 0x1d: 677 678 *cpu_type = "i386/core_2"; 678 679 break; 679 680 case 0x1a:
+1 -1
tools/perf/Makefile
··· 1017 1017 # we compile into subdirectories. if the target directory is not the source directory, they might not exists. So 1018 1018 # we depend the various files onto their directories. 1019 1019 DIRECTORY_DEPS = $(LIB_OBJS) $(BUILTIN_OBJS) $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)common-cmds.h 1020 - $(DIRECTORY_DEPS): $(sort $(dir $(DIRECTORY_DEPS))) 1020 + $(DIRECTORY_DEPS): | $(sort $(dir $(DIRECTORY_DEPS))) 1021 1021 # In the second step, we make a rule to actually create these directories 1022 1022 $(sort $(dir $(DIRECTORY_DEPS))): 1023 1023 $(QUIET_MKDIR)$(MKDIR) -p $@ 2>/dev/null
+2 -2
tools/perf/util/trace-event-scripting.c
··· 97 97 register_python_scripting(&python_scripting_unsupported_ops); 98 98 } 99 99 #else 100 - struct scripting_ops python_scripting_ops; 100 + extern struct scripting_ops python_scripting_ops; 101 101 102 102 void setup_python_scripting(void) 103 103 { ··· 158 158 register_perl_scripting(&perl_scripting_unsupported_ops); 159 159 } 160 160 #else 161 - struct scripting_ops perl_scripting_ops; 161 + extern struct scripting_ops perl_scripting_ops; 162 162 163 163 void setup_perl_scripting(void) 164 164 {
+1 -1
tools/perf/util/ui/browsers/hists.c
··· 773 773 774 774 switch (key) { 775 775 case 'a': 776 - if (browser->selection->map == NULL && 776 + if (browser->selection->map == NULL || 777 777 browser->selection->map->dso->annotate_warned) 778 778 continue; 779 779 goto do_annotate;