diff options
| author | Ingo Molnar <mingo@kernel.org> | 2012-09-19 16:59:01 +0200 |
|---|---|---|
| committer | Ingo Molnar <mingo@kernel.org> | 2012-09-19 16:59:01 +0200 |
| commit | bea8f35421628266658c14ea990d18b0969c4c0b (patch) | |
| tree | 46c5d4616a003011a1237ed8d31592a662cf9720 /arch/x86/kernel | |
| parent | 26f45274afd938d82463816a12ec67448513294a (diff) | |
| parent | 7ae92e744e3fb389afb1e24920ecda331d360c61 (diff) | |
| download | linux-bea8f35421628266658c14ea990d18b0969c4c0b.tar.gz linux-bea8f35421628266658c14ea990d18b0969c4c0b.tar.bz2 linux-bea8f35421628266658c14ea990d18b0969c4c0b.zip | |
Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core
Pull perf/core improvements and fixes from Arnaldo Carvalho de Melo:
* Fix handling of unresolved samples when --symbols is used in 'report',
from Feng Tang.
* Add --symbols to 'script', similar to the one in 'report', from Feng Tang.
* Add union member access support to 'probe', from Hyeoncheol Lee.
* Make 'archive' work on Android, tweaking some of the utility parameters
used (tar, rm), from Irina Tirdea.
* Fixups to die() removal, from Namhyung Kim.
* Render fixes for the TUI, from Namhyung Kim.
* Don't enable annotation in non symbolic view, from Namhyung Kim.
* Fix pipe mode in 'report', from Namhyung Kim.
* Move related stats code from stat to util/, will be used by the 'stat'
kvm tool, from Xiao Guangrong.
* Add cpumask for uncore pmu, use it in 'stat', from Yan, Zheng.
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'arch/x86/kernel')
| -rw-r--r-- | arch/x86/kernel/cpu/perf_event_intel_uncore.c | 28 | ||||
| -rw-r--r-- | arch/x86/kernel/cpu/perf_event_intel_uncore.h | 6 |
2 files changed, 29 insertions, 5 deletions
diff --git a/arch/x86/kernel/cpu/perf_event_intel_uncore.c b/arch/x86/kernel/cpu/perf_event_intel_uncore.c index 0a5571080e74..62ec3e6af7ea 100644 --- a/arch/x86/kernel/cpu/perf_event_intel_uncore.c +++ b/arch/x86/kernel/cpu/perf_event_intel_uncore.c @@ -2341,6 +2341,27 @@ int uncore_pmu_event_init(struct perf_event *event) return ret; } +static ssize_t uncore_get_attr_cpumask(struct device *dev, + struct device_attribute *attr, char *buf) +{ + int n = cpulist_scnprintf(buf, PAGE_SIZE - 2, &uncore_cpu_mask); + + buf[n++] = '\n'; + buf[n] = '\0'; + return n; +} + +static DEVICE_ATTR(cpumask, S_IRUGO, uncore_get_attr_cpumask, NULL); + +static struct attribute *uncore_pmu_attrs[] = { + &dev_attr_cpumask.attr, + NULL, +}; + +static struct attribute_group uncore_pmu_attr_group = { + .attrs = uncore_pmu_attrs, +}; + static int __init uncore_pmu_register(struct intel_uncore_pmu *pmu) { int ret; @@ -2378,8 +2399,8 @@ static void __init uncore_type_exit(struct intel_uncore_type *type) free_percpu(type->pmus[i].box); kfree(type->pmus); type->pmus = NULL; - kfree(type->attr_groups[1]); - type->attr_groups[1] = NULL; + kfree(type->events_group); + type->events_group = NULL; } static void __init uncore_types_exit(struct intel_uncore_type **types) @@ -2431,9 +2452,10 @@ static int __init uncore_type_init(struct intel_uncore_type *type) for (j = 0; j < i; j++) attrs[j] = &type->event_descs[j].attr.attr; - type->attr_groups[1] = events_group; + type->events_group = events_group; } + type->pmu_group = &uncore_pmu_attr_group; type->pmus = pmus; return 0; fail: diff --git a/arch/x86/kernel/cpu/perf_event_intel_uncore.h b/arch/x86/kernel/cpu/perf_event_intel_uncore.h index 5b81c1856aac..e68a4550e952 100644 --- a/arch/x86/kernel/cpu/perf_event_intel_uncore.h +++ b/arch/x86/kernel/cpu/perf_event_intel_uncore.h @@ -369,10 +369,12 @@ struct intel_uncore_type { struct intel_uncore_pmu *pmus; struct intel_uncore_ops *ops; struct uncore_event_desc *event_descs; - const struct attribute_group *attr_groups[3]; + const struct attribute_group *attr_groups[4]; }; -#define format_group attr_groups[0] +#define pmu_group attr_groups[0] +#define format_group attr_groups[1] +#define events_group attr_groups[2] struct intel_uncore_ops { void (*init_box)(struct intel_uncore_box *); |
