diff options
Diffstat (limited to 'arch/x86/kernel/cpu/perf_event.c')
-rw-r--r-- | arch/x86/kernel/cpu/perf_event.c | 20 |
1 files changed, 7 insertions, 13 deletions
diff --git a/arch/x86/kernel/cpu/perf_event.c b/arch/x86/kernel/cpu/perf_event.c index 4a4d191f9492..8af28caeafc1 100644 --- a/arch/x86/kernel/cpu/perf_event.c +++ b/arch/x86/kernel/cpu/perf_event.c | |||
@@ -1571,12 +1571,6 @@ const struct pmu *hw_perf_event_init(struct perf_event *event) | |||
1571 | * callchain support | 1571 | * callchain support |
1572 | */ | 1572 | */ |
1573 | 1573 | ||
1574 | static inline | ||
1575 | void callchain_store(struct perf_callchain_entry *entry, u64 ip) | ||
1576 | { | ||
1577 | if (entry->nr < PERF_MAX_STACK_DEPTH) | ||
1578 | entry->ip[entry->nr++] = ip; | ||
1579 | } | ||
1580 | 1574 | ||
1581 | static DEFINE_PER_CPU(struct perf_callchain_entry, pmc_irq_entry); | 1575 | static DEFINE_PER_CPU(struct perf_callchain_entry, pmc_irq_entry); |
1582 | static DEFINE_PER_CPU(struct perf_callchain_entry, pmc_nmi_entry); | 1576 | static DEFINE_PER_CPU(struct perf_callchain_entry, pmc_nmi_entry); |
@@ -1602,7 +1596,7 @@ static void backtrace_address(void *data, unsigned long addr, int reliable) | |||
1602 | { | 1596 | { |
1603 | struct perf_callchain_entry *entry = data; | 1597 | struct perf_callchain_entry *entry = data; |
1604 | 1598 | ||
1605 | callchain_store(entry, addr); | 1599 | perf_callchain_store(entry, addr); |
1606 | } | 1600 | } |
1607 | 1601 | ||
1608 | static const struct stacktrace_ops backtrace_ops = { | 1602 | static const struct stacktrace_ops backtrace_ops = { |
@@ -1616,8 +1610,8 @@ static const struct stacktrace_ops backtrace_ops = { | |||
1616 | static void | 1610 | static void |
1617 | perf_callchain_kernel(struct pt_regs *regs, struct perf_callchain_entry *entry) | 1611 | perf_callchain_kernel(struct pt_regs *regs, struct perf_callchain_entry *entry) |
1618 | { | 1612 | { |
1619 | callchain_store(entry, PERF_CONTEXT_KERNEL); | 1613 | perf_callchain_store(entry, PERF_CONTEXT_KERNEL); |
1620 | callchain_store(entry, regs->ip); | 1614 | perf_callchain_store(entry, regs->ip); |
1621 | 1615 | ||
1622 | dump_trace(NULL, regs, NULL, regs->bp, &backtrace_ops, entry); | 1616 | dump_trace(NULL, regs, NULL, regs->bp, &backtrace_ops, entry); |
1623 | } | 1617 | } |
@@ -1646,7 +1640,7 @@ perf_callchain_user32(struct pt_regs *regs, struct perf_callchain_entry *entry) | |||
1646 | if (fp < compat_ptr(regs->sp)) | 1640 | if (fp < compat_ptr(regs->sp)) |
1647 | break; | 1641 | break; |
1648 | 1642 | ||
1649 | callchain_store(entry, frame.return_address); | 1643 | perf_callchain_store(entry, frame.return_address); |
1650 | fp = compat_ptr(frame.next_frame); | 1644 | fp = compat_ptr(frame.next_frame); |
1651 | } | 1645 | } |
1652 | return 1; | 1646 | return 1; |
@@ -1670,8 +1664,8 @@ perf_callchain_user(struct pt_regs *regs, struct perf_callchain_entry *entry) | |||
1670 | 1664 | ||
1671 | fp = (void __user *)regs->bp; | 1665 | fp = (void __user *)regs->bp; |
1672 | 1666 | ||
1673 | callchain_store(entry, PERF_CONTEXT_USER); | 1667 | perf_callchain_store(entry, PERF_CONTEXT_USER); |
1674 | callchain_store(entry, regs->ip); | 1668 | perf_callchain_store(entry, regs->ip); |
1675 | 1669 | ||
1676 | if (perf_callchain_user32(regs, entry)) | 1670 | if (perf_callchain_user32(regs, entry)) |
1677 | return; | 1671 | return; |
@@ -1688,7 +1682,7 @@ perf_callchain_user(struct pt_regs *regs, struct perf_callchain_entry *entry) | |||
1688 | if ((unsigned long)fp < regs->sp) | 1682 | if ((unsigned long)fp < regs->sp) |
1689 | break; | 1683 | break; |
1690 | 1684 | ||
1691 | callchain_store(entry, frame.return_address); | 1685 | perf_callchain_store(entry, frame.return_address); |
1692 | fp = frame.next_frame; | 1686 | fp = frame.next_frame; |
1693 | } | 1687 | } |
1694 | } | 1688 | } |