Skip to content

Commit 56cd0ae

Browse files
YangY-Xiaodavem330
authored andcommitted
sparc: perf: fix updated event period in response to PERF_EVENT_IOC_PERIOD
The PERF_EVENT_IOC_PERIOD ioctl command can be used to change the sample period of a running perf_event. Consequently, when calculating the next event period, the new period will only be considered after the previous one has overflowed. This patch changes the calculation of the remaining event ticks so that they are offset if the period has changed. See commit 3581fe0 ("ARM: 7556/1: perf: fix updated event period in response to PERF_EVENT_IOC_PERIOD") for details. Signed-off-by: Young Xiao <92siuyang@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 80caf43 commit 56cd0ae

File tree

1 file changed

+4
-0
lines changed

1 file changed

+4
-0
lines changed

arch/sparc/kernel/perf_event.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -891,6 +891,10 @@ static int sparc_perf_event_set_period(struct perf_event *event,
891891
s64 period = hwc->sample_period;
892892
int ret = 0;
893893

894+
/* The period may have been changed by PERF_EVENT_IOC_PERIOD */
895+
if (unlikely(period != hwc->last_period))
896+
left = period - (hwc->last_period - left);
897+
894898
if (unlikely(left <= -period)) {
895899
left = period;
896900
local64_set(&hwc->period_left, left);

0 commit comments

Comments
 (0)