mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-15 23:25:07 +00:00
sparc: perf: fix updated event period in response to PERF_EVENT_IOC_PERIOD
[ Upstream commit56cd0aefa4
] 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 commit3581fe0ef3
("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> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
7b460a9bb1
commit
16cdab6398
1 changed files with 4 additions and 0 deletions
|
@ -891,6 +891,10 @@ static int sparc_perf_event_set_period(struct perf_event *event,
|
|||
s64 period = hwc->sample_period;
|
||||
int ret = 0;
|
||||
|
||||
/* The period may have been changed by PERF_EVENT_IOC_PERIOD */
|
||||
if (unlikely(period != hwc->last_period))
|
||||
left = period - (hwc->last_period - left);
|
||||
|
||||
if (unlikely(left <= -period)) {
|
||||
left = period;
|
||||
local64_set(&hwc->period_left, left);
|
||||
|
|
Loading…
Reference in a new issue