2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2024-12-18 18:23:53 +08:00

perf_counter: fix warning & lockup

- remove bogus warning
 - fix wakeup from NMI path lockup
 - also fix up whitespace noise in perf_counter.h

Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: John Kacur <jkacur@redhat.com>
LKML-Reference: <20090525153931.703093461@chello.nl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
Ingo Molnar 2009-05-25 22:03:26 +02:00
parent 53b441a565
commit 0127c3ea08
2 changed files with 40 additions and 42 deletions

View File

@ -73,7 +73,7 @@ enum sw_event_ids {
PERF_SW_EVENTS_MAX = 7, PERF_SW_EVENTS_MAX = 7,
}; };
#define __PERF_COUNTER_MASK(name) \ #define __PERF_COUNTER_MASK(name) \
(((1ULL << PERF_COUNTER_##name##_BITS) - 1) << \ (((1ULL << PERF_COUNTER_##name##_BITS) - 1) << \
PERF_COUNTER_##name##_SHIFT) PERF_COUNTER_##name##_SHIFT)
@ -98,14 +98,14 @@ enum sw_event_ids {
* in the overflow packets. * in the overflow packets.
*/ */
enum perf_counter_record_format { enum perf_counter_record_format {
PERF_RECORD_IP = 1U << 0, PERF_RECORD_IP = 1U << 0,
PERF_RECORD_TID = 1U << 1, PERF_RECORD_TID = 1U << 1,
PERF_RECORD_TIME = 1U << 2, PERF_RECORD_TIME = 1U << 2,
PERF_RECORD_ADDR = 1U << 3, PERF_RECORD_ADDR = 1U << 3,
PERF_RECORD_GROUP = 1U << 4, PERF_RECORD_GROUP = 1U << 4,
PERF_RECORD_CALLCHAIN = 1U << 5, PERF_RECORD_CALLCHAIN = 1U << 5,
PERF_RECORD_CONFIG = 1U << 6, PERF_RECORD_CONFIG = 1U << 6,
PERF_RECORD_CPU = 1U << 7, PERF_RECORD_CPU = 1U << 7,
}; };
/* /*
@ -235,13 +235,13 @@ enum perf_event_type {
* correlate userspace IPs to code. They have the following structure: * correlate userspace IPs to code. They have the following structure:
* *
* struct { * struct {
* struct perf_event_header header; * struct perf_event_header header;
* *
* u32 pid, tid; * u32 pid, tid;
* u64 addr; * u64 addr;
* u64 len; * u64 len;
* u64 pgoff; * u64 pgoff;
* char filename[]; * char filename[];
* }; * };
*/ */
PERF_EVENT_MMAP = 1, PERF_EVENT_MMAP = 1,
@ -249,27 +249,27 @@ enum perf_event_type {
/* /*
* struct { * struct {
* struct perf_event_header header; * struct perf_event_header header;
* *
* u32 pid, tid; * u32 pid, tid;
* char comm[]; * char comm[];
* }; * };
*/ */
PERF_EVENT_COMM = 3, PERF_EVENT_COMM = 3,
/* /*
* struct { * struct {
* struct perf_event_header header; * struct perf_event_header header;
* u64 time; * u64 time;
* u64 irq_period; * u64 irq_period;
* }; * };
*/ */
PERF_EVENT_PERIOD = 4, PERF_EVENT_PERIOD = 4,
/* /*
* struct { * struct {
* struct perf_event_header header; * struct perf_event_header header;
* u64 time; * u64 time;
* }; * };
*/ */
PERF_EVENT_THROTTLE = 5, PERF_EVENT_THROTTLE = 5,
@ -280,23 +280,23 @@ enum perf_event_type {
* will be PERF_RECORD_* * will be PERF_RECORD_*
* *
* struct { * struct {
* struct perf_event_header header; * struct perf_event_header header;
* *
* { u64 ip; } && PERF_RECORD_IP * { u64 ip; } && PERF_RECORD_IP
* { u32 pid, tid; } && PERF_RECORD_TID * { u32 pid, tid; } && PERF_RECORD_TID
* { u64 time; } && PERF_RECORD_TIME * { u64 time; } && PERF_RECORD_TIME
* { u64 addr; } && PERF_RECORD_ADDR * { u64 addr; } && PERF_RECORD_ADDR
* { u64 config; } && PERF_RECORD_CONFIG * { u64 config; } && PERF_RECORD_CONFIG
* { u32 cpu, res; } && PERF_RECORD_CPU * { u32 cpu, res; } && PERF_RECORD_CPU
* *
* { u64 nr; * { u64 nr;
* { u64 event, val; } cnt[nr]; } && PERF_RECORD_GROUP * { u64 event, val; } cnt[nr]; } && PERF_RECORD_GROUP
* *
* { u16 nr, * { u16 nr,
* hv, * hv,
* kernel, * kernel,
* user; * user;
* u64 ips[nr]; } && PERF_RECORD_CALLCHAIN * u64 ips[nr]; } && PERF_RECORD_CALLCHAIN
* }; * };
*/ */
}; };
@ -406,7 +406,7 @@ struct perf_mmap_data {
atomic_t wakeup; /* needs a wakeup */ atomic_t wakeup; /* needs a wakeup */
struct perf_counter_mmap_page *user_page; struct perf_counter_mmap_page *user_page;
void *data_pages[0]; void *data_pages[0];
}; };
struct perf_pending_entry { struct perf_pending_entry {
@ -422,7 +422,7 @@ struct perf_counter {
struct list_head list_entry; struct list_head list_entry;
struct list_head event_entry; struct list_head event_entry;
struct list_head sibling_list; struct list_head sibling_list;
int nr_siblings; int nr_siblings;
struct perf_counter *group_leader; struct perf_counter *group_leader;
const struct pmu *pmu; const struct pmu *pmu;

View File

@ -2576,7 +2576,7 @@ static void perf_log_throttle(struct perf_counter *counter, int enable)
.time = sched_clock(), .time = sched_clock(),
}; };
ret = perf_output_begin(&handle, counter, sizeof(throttle_event), 0, 0); ret = perf_output_begin(&handle, counter, sizeof(throttle_event), 1, 0);
if (ret) if (ret)
return; return;
@ -3449,8 +3449,6 @@ void perf_counter_exit_task(struct task_struct *child)
struct perf_counter_context *child_ctx; struct perf_counter_context *child_ctx;
unsigned long flags; unsigned long flags;
WARN_ON_ONCE(child != current);
child_ctx = child->perf_counter_ctxp; child_ctx = child->perf_counter_ctxp;
if (likely(!child_ctx)) if (likely(!child_ctx))