+ clockevents-add-broadcast-support-fix.patch added to -mm tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The patch titled
     clockevents-add-broadcast-support fix
has been added to the -mm tree.  Its filename is
     clockevents-add-broadcast-support-fix.patch

See http://www.zip.com.au/~akpm/linux/patches/stuff/added-to-mm.txt to find
out what to do about this

------------------------------------------------------
Subject: clockevents-add-broadcast-support fix
From: Thomas Gleixner <tglx@xxxxxxxxxxxxx>

> The failure _might_ be related to jiffy-wrap rather than ntp, dunno.  It
> seems to happen around then.

Sigh, this drives me crazy. Why did I ever touch that code ?  I found a
situation, where the timer gets not longer reprogrammed.



Signed-off-by: Andrew Morton <akpm@xxxxxxxx>
---

 kernel/time/clockevents.c |   12 +++++++-----
 1 files changed, 7 insertions(+), 5 deletions(-)

diff -puN kernel/time/clockevents.c~clockevents-add-broadcast-support-fix kernel/time/clockevents.c
--- a/kernel/time/clockevents.c~clockevents-add-broadcast-support-fix
+++ a/kernel/time/clockevents.c
@@ -503,8 +503,8 @@ static void do_clockevents_set_next_even
 int clockevents_set_next_event(ktime_t expires, int force)
 {
 	struct local_events *devices = &__get_cpu_var(local_eventdevices);
-	int64_t delta = ktime_to_ns(ktime_sub(expires, ktime_get()));
 	struct clock_event_device *nextevt = devices->nextevt;
+	int64_t delta = ktime_to_ns(ktime_sub(expires, ktime_get()));
 
 	if (delta <= 0 && !force) {
 		devices->expires_next.tv64 = KTIME_MAX;
@@ -529,9 +529,7 @@ static void (*global_event_handler)(stru
  * clockevents_set_broadcast - switch next event device from/to broadcast mode
  *
  * Called, when the PM code enters a state, where the next event device is
- * switched off.
- *
- * Called with interrupts disabled !
+ * switched off or comes back from this state.
  */
 void clockevents_set_broadcast(struct clock_event_device *evt, int broadcast)
 {
@@ -553,6 +551,8 @@ void clockevents_set_broadcast(struct cl
 	} else {
 		cpu_clear(cpu, local_event_broadcast);
 		evt->set_mode(CLOCK_EVT_ONESHOT, evt);
+		if (devices->expires_next.tv64 != KTIME_MAX)
+			clockevents_set_next_event(devices->expires, 1);
 	}
 
 	/* Reprogram the broadcast device */
@@ -628,8 +628,10 @@ static void handle_nextevt_broadcast(str
 	for (cpu = first_cpu(local_event_broadcast); cpu != NR_CPUS;
 	     cpu = next_cpu(cpu, local_event_broadcast)) {
 		devices = &per_cpu(local_eventdevices, cpu);
-		if (devices->expires_next.tv64 <= now.tv64)
+		if (devices->expires_next.tv64 <= now.tv64) {
+			devices->expires_next.tv64 = KTIME_MAX;
 			cpu_set(cpu, mask);
+		}
 	}
 	spin_unlock(&events_lock);
 	/* Wakeup the cpus which have an expired event */
_

Patches currently in -mm which might be from tglx@xxxxxxxxxxxxx are

printk-timed-ratelimit.patch
schedule-removal-of-futex_fd.patch
setup_irq-better-mismatch-debugging.patch
gtod-exponential-update_wall_time.patch
gtod-persistent-clock-support-core.patch
gtod-persistent-clock-support-i386.patch
time-uninline-jiffiesh.patch
time-uninline-jiffiesh-fix.patch
time-fix-msecs_to_jiffies-bug.patch
time-fix-timeout-overflow.patch
cleanup-uninline-irq_enter-and-move-it-into-a-function.patch
dynticks-extend-next_timer_interrupt-to-use-a-reference-jiffie.patch
dynticks-extend-next_timer_interrupt-to-use-a-reference-jiffie-remove-incorrect-warning-in-kernel-timerc.patch
hrtimers-namespace-and-enum-cleanup.patch
hrtimers-clean-up-locking.patch
hrtimers-state-tracking.patch
hrtimers-clean-up-callback-tracking.patch
hrtimers-move-and-add-documentation.patch
clockevents-core.patch
clockevents-drivers-for-i386.patch
high-res-timers-core.patch
gtod-mark-tsc-unusable-for-highres-timers.patch
dynticks-core.patch
dynticks-add-nohz-stats-to-proc-stat.patch
dynticks-i386-arch-code.patch
high-res-timers-dynticks-enable-i386-support.patch
debugging-feature-timer-stats.patch
highres-timer-core-fix-status-check.patch
highres-timer-core-fix-commandline-setup.patch
clockevents-smp-on-up-features.patch
highres-depend-on-clockevents.patch
i386-apic-cleanup.patch
pm-timer-allow-early-access.patch
i386-lapic-timer-calibration.patch
clockevents-add-broadcast-support.patch
clockevents-add-broadcast-support-fix.patch
acpi-include-apic-h.patch
acpi-keep-track-of-timer-broadcast.patch
i386-apic-timer-use-clockevents-broadcast.patch
acpi-verify-lapic-timer.patch
acpi-verify-lapic-timer-exports.patch
acpi-verify-lapic-timer-fix.patch
round_jiffies-infrastructure.patch
round_jiffies-infrastructure-fix.patch

-
To unsubscribe from this list: send the line "unsubscribe mm-commits" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Kernel Newbies FAQ]     [Kernel Archive]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [Bugtraq]     [Photo]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]

  Powered by Linux