- clockevents-add-broadcast-support-fix.patch removed from -mm tree

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

 



The patch titled
     clockevents-add-broadcast-support fix
has been removed from the -mm tree.  Its filename was
     clockevents-add-broadcast-support-fix.patch

This patch was dropped because an updated version will be merged

------------------------------------------------------
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_next, 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

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
updated-hrtimers-state-tracking.patch
updated-hrtimers-clean-up-callback-tracking.patch
updated-hrtimers-move-and-add-documentation.patch
updated-add-a-framework-to-manage-clock-event-devices.patch
updated-acpi-include-apich.patch
updated-acpi-keep-track-of-timer-broadcast.patch
updated-acpi-add-state-propagation-for-dynamic-broadcasting.patch
updated-i386-cleanup-apic-code.patch
updated-i386-convert-to-clock-event-devices.patch
updated-pm_timer-allow-early-access-and-move-externs-to-a-header-file.patch
updated-i386-rework-local-apic-calibration.patch
updated-high-res-timers-core.patch
updated-gtod-mark-tsc-unusable-for-highres-timers.patch
updated-dynticks-core-code.patch
updated-dyntick-add-nohz-stats-to-proc-stat.patch
updated-dynticks-i386-arch-code.patch
updated-dynticks-fix-nmi-watchdog.patch
updated-high-res-timers-dynticks-enable-i386-support.patch
updated-debugging-feature-timer-stats.patch
clockevents-core-check-for-clock-event-device-handler-being-non-null-before-calling-it.patch
round_jiffies-infrastructure.patch
round_jiffies-infrastructure-fix.patch
clocksource-add-usage-of-config_sysfs.patch
clocksource-small-cleanup-2.patch
clocksource-small-cleanup-2-fix.patch
clocksource-small-acpi_pm-cleanup.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