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:
parent
53b441a565
commit
0127c3ea08
@ -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;
|
||||||
|
|
||||||
|
@ -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))
|
||||||
|
Loading…
Reference in New Issue
Block a user