diff options
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/events/core.c | 2 | ||||
-rw-r--r-- | kernel/events/hw_breakpoint.c | 5 |
2 files changed, 6 insertions, 1 deletions
diff --git a/kernel/events/core.c b/kernel/events/core.c index 9dc297faf7c0..e0dcced282e4 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c | |||
@@ -4961,7 +4961,7 @@ static DEFINE_PER_CPU(struct swevent_htable, swevent_htable); | |||
4961 | * sign as trigger. | 4961 | * sign as trigger. |
4962 | */ | 4962 | */ |
4963 | 4963 | ||
4964 | static u64 perf_swevent_set_period(struct perf_event *event) | 4964 | u64 perf_swevent_set_period(struct perf_event *event) |
4965 | { | 4965 | { |
4966 | struct hw_perf_event *hwc = &event->hw; | 4966 | struct hw_perf_event *hwc = &event->hw; |
4967 | u64 period = hwc->last_period; | 4967 | u64 period = hwc->last_period; |
diff --git a/kernel/events/hw_breakpoint.c b/kernel/events/hw_breakpoint.c index a64f8aeb5c1f..966a241e8616 100644 --- a/kernel/events/hw_breakpoint.c +++ b/kernel/events/hw_breakpoint.c | |||
@@ -612,6 +612,11 @@ static int hw_breakpoint_add(struct perf_event *bp, int flags) | |||
612 | if (!(flags & PERF_EF_START)) | 612 | if (!(flags & PERF_EF_START)) |
613 | bp->hw.state = PERF_HES_STOPPED; | 613 | bp->hw.state = PERF_HES_STOPPED; |
614 | 614 | ||
615 | if (is_sampling_event(bp)) { | ||
616 | bp->hw.last_period = bp->hw.sample_period; | ||
617 | perf_swevent_set_period(bp); | ||
618 | } | ||
619 | |||
615 | return arch_install_hw_breakpoint(bp); | 620 | return arch_install_hw_breakpoint(bp); |
616 | } | 621 | } |
617 | 622 | ||