diff --git a/[refs] b/[refs]
index 963aa896d8cb..97a6bb8b9f20 100644
--- a/[refs]
+++ b/[refs]
@@ -1,2 +1,2 @@
---
-refs/heads/master: ebd6c17109aed086908ae3b0949265fd07712659
+refs/heads/master: d279490543ee4e7c51371eb605b578ab47f45305
diff --git a/trunk/arch/frv/Kconfig b/trunk/arch/frv/Kconfig
index a601a17cf568..95a3892b8d1b 100644
--- a/trunk/arch/frv/Kconfig
+++ b/trunk/arch/frv/Kconfig
@@ -29,10 +29,6 @@ config GENERIC_HARDIRQS
bool
default n
-config GENERIC_TIME
- bool
- default y
-
config TIME_LOW_RES
bool
default y
diff --git a/trunk/arch/frv/kernel/time.c b/trunk/arch/frv/kernel/time.c
index 68a77fe3bb40..d5b64e193d92 100644
--- a/trunk/arch/frv/kernel/time.c
+++ b/trunk/arch/frv/kernel/time.c
@@ -32,6 +32,8 @@
#define TICK_SIZE (tick_nsec / 1000)
+extern unsigned long wall_jiffies;
+
unsigned long __nongprelbss __clkin_clock_speed_HZ;
unsigned long __nongprelbss __ext_bus_clock_speed_HZ;
unsigned long __nongprelbss __res_bus_clock_speed_HZ;
@@ -142,6 +144,85 @@ void time_init(void)
time_divisor_init();
}
+/*
+ * This version of gettimeofday has near microsecond resolution.
+ */
+void do_gettimeofday(struct timeval *tv)
+{
+ unsigned long seq;
+ unsigned long usec, sec;
+ unsigned long max_ntp_tick;
+
+ do {
+ unsigned long lost;
+
+ seq = read_seqbegin(&xtime_lock);
+
+ usec = 0;
+ lost = jiffies - wall_jiffies;
+
+ /*
+ * If time_adjust is negative then NTP is slowing the clock
+ * so make sure not to go into next possible interval.
+ * Better to lose some accuracy than have time go backwards..
+ */
+ if (unlikely(time_adjust < 0)) {
+ max_ntp_tick = (USEC_PER_SEC / HZ) - tickadj;
+ usec = min(usec, max_ntp_tick);
+
+ if (lost)
+ usec += lost * max_ntp_tick;
+ }
+ else if (unlikely(lost))
+ usec += lost * (USEC_PER_SEC / HZ);
+
+ sec = xtime.tv_sec;
+ usec += (xtime.tv_nsec / 1000);
+ } while (read_seqretry(&xtime_lock, seq));
+
+ while (usec >= 1000000) {
+ usec -= 1000000;
+ sec++;
+ }
+
+ tv->tv_sec = sec;
+ tv->tv_usec = usec;
+}
+
+EXPORT_SYMBOL(do_gettimeofday);
+
+int do_settimeofday(struct timespec *tv)
+{
+ time_t wtm_sec, sec = tv->tv_sec;
+ long wtm_nsec, nsec = tv->tv_nsec;
+
+ if ((unsigned long)tv->tv_nsec >= NSEC_PER_SEC)
+ return -EINVAL;
+
+ write_seqlock_irq(&xtime_lock);
+ /*
+ * This is revolting. We need to set "xtime" correctly. However, the
+ * value in this location is the value at the most recent update of
+ * wall time. Discover what correction gettimeofday() would have
+ * made, and then undo it!
+ */
+ nsec -= 0 * NSEC_PER_USEC;
+ nsec -= (jiffies - wall_jiffies) * TICK_NSEC;
+
+ wtm_sec = wall_to_monotonic.tv_sec + (xtime.tv_sec - sec);
+ wtm_nsec = wall_to_monotonic.tv_nsec + (xtime.tv_nsec - nsec);
+
+ set_normalized_timespec(&xtime, sec, nsec);
+ set_normalized_timespec(&wall_to_monotonic, wtm_sec, wtm_nsec);
+
+ ntp_clear();
+ write_sequnlock_irq(&xtime_lock);
+ clock_was_set();
+ return 0;
+}
+
+EXPORT_SYMBOL(do_settimeofday);
+
/*
* Scheduler clock - returns current time in nanosec units.
*/
diff --git a/trunk/drivers/net/Kconfig b/trunk/drivers/net/Kconfig
index 30b3671d833d..a2bd8119270e 100644
--- a/trunk/drivers/net/Kconfig
+++ b/trunk/drivers/net/Kconfig
@@ -2393,7 +2393,7 @@ config MYRI10GE
you will need a newer firmware image.
You may get this image or more information, at:
-
+
To compile this driver as a module, choose M here and read
. The module
diff --git a/trunk/fs/super.c b/trunk/fs/super.c
index 5c4c94d5495e..6d4e8174b6db 100644
--- a/trunk/fs/super.c
+++ b/trunk/fs/super.c
@@ -49,7 +49,6 @@ DEFINE_SPINLOCK(sb_lock);
/**
* alloc_super - create new superblock
- * @type: filesystem type superblock should belong to
*
* Allocates and initializes a new &struct super_block. alloc_super()
* returns a pointer new superblock or %NULL if allocation had failed.
diff --git a/trunk/include/asm-i386/Kbuild b/trunk/include/asm-i386/Kbuild
index 335b2fa4e066..c064a8e9170f 100644
--- a/trunk/include/asm-i386/Kbuild
+++ b/trunk/include/asm-i386/Kbuild
@@ -1,5 +1,5 @@
include include/asm-generic/Kbuild.asm
-header-y += boot.h debugreg.h ldt.h setup.h ucontext.h
+header-y += boot.h cpufeature.h debugreg.h ldt.h setup.h ucontext.h
unifdef-y += mtrr.h vm86.h
diff --git a/trunk/include/linux/atmdev.h b/trunk/include/linux/atmdev.h
index 2096e5c72827..41788a31c438 100644
--- a/trunk/include/linux/atmdev.h
+++ b/trunk/include/linux/atmdev.h
@@ -7,6 +7,7 @@
#define LINUX_ATMDEV_H
+#include
#include
#include
#include
@@ -209,7 +210,6 @@ struct atm_cirange {
#ifdef __KERNEL__
-#include
#include /* wait_queue_head_t */
#include /* struct timeval */
#include
diff --git a/trunk/include/linux/hrtimer.h b/trunk/include/linux/hrtimer.h
index 4fc379de6c2f..e4bccbcc2750 100644
--- a/trunk/include/linux/hrtimer.h
+++ b/trunk/include/linux/hrtimer.h
@@ -80,7 +80,6 @@ struct hrtimer_sleeper {
* @get_softirq_time: function to retrieve the current time from the softirq
* @curr_timer: the timer which is executing a callback right now
* @softirq_time: the time when running the hrtimer queue in the softirq
- * @lock_key: the lock_class_key for use with lockdep
*/
struct hrtimer_base {
clockid_t index;
diff --git a/trunk/include/linux/ktime.h b/trunk/include/linux/ktime.h
index 84eeecd60a02..ed3396dcc4f7 100644
--- a/trunk/include/linux/ktime.h
+++ b/trunk/include/linux/ktime.h
@@ -56,8 +56,7 @@ typedef union {
#endif
} ktime_t;
-#define KTIME_MAX ((s64)~((u64)1 << 63))
-#define KTIME_SEC_MAX (KTIME_MAX / NSEC_PER_SEC)
+#define KTIME_MAX (~((u64)1 << 63))
/*
* ktime_t definitions when using the 64-bit scalar representation:
@@ -74,10 +73,6 @@ typedef union {
*/
static inline ktime_t ktime_set(const long secs, const unsigned long nsecs)
{
-#if (BITS_PER_LONG == 64)
- if (unlikely(secs >= KTIME_SEC_MAX))
- return (ktime_t){ .tv64 = KTIME_MAX };
-#endif
return (ktime_t) { .tv64 = (s64)secs * NSEC_PER_SEC + (s64)nsecs };
}
diff --git a/trunk/kernel/panic.c b/trunk/kernel/panic.c
index 8010b9b17aca..9b8dcfd1ca93 100644
--- a/trunk/kernel/panic.c
+++ b/trunk/kernel/panic.c
@@ -173,7 +173,7 @@ const char *print_tainted(void)
void add_taint(unsigned flag)
{
- debug_locks = 0; /* can't trust the integrity of the kernel anymore */
+ debug_locks_off(); /* can't trust the integrity of the kernel anymore */
tainted |= flag;
}
EXPORT_SYMBOL(add_taint);
diff --git a/trunk/kernel/power/Kconfig b/trunk/kernel/power/Kconfig
index 619ecabf7c58..ae44a70aae8a 100644
--- a/trunk/kernel/power/Kconfig
+++ b/trunk/kernel/power/Kconfig
@@ -56,7 +56,7 @@ config PM_TRACE
config SOFTWARE_SUSPEND
bool "Software Suspend"
- depends on PM && SWAP && ((X86 && (!SMP || SUSPEND_SMP) && !X86_PAE) || ((FRV || PPC32) && !SMP))
+ depends on PM && SWAP && (X86 && (!SMP || SUSPEND_SMP)) || ((FRV || PPC32) && !SMP)
---help---
Enable the possibility of suspending the machine.
It doesn't need ACPI or APM.
@@ -78,10 +78,6 @@ config SOFTWARE_SUSPEND
For more information take a look at .
- (For now, swsusp is incompatible with PAE aka HIGHMEM_64G on i386.
- we need identity mapping for resume to work, and that is trivial
- to get with 4MB pages, but less than trivial on PAE).
-
config PM_STD_PARTITION
string "Default resume partition"
depends on SOFTWARE_SUSPEND
diff --git a/trunk/kernel/spinlock.c b/trunk/kernel/spinlock.c
index fb524b009eef..bfd6ad9c0330 100644
--- a/trunk/kernel/spinlock.c
+++ b/trunk/kernel/spinlock.c
@@ -72,7 +72,7 @@ EXPORT_SYMBOL(_write_trylock);
* not re-enabled during lock-acquire (which the preempt-spin-ops do):
*/
#if !defined(CONFIG_PREEMPT) || !defined(CONFIG_SMP) || \
- defined(CONFIG_DEBUG_LOCK_ALLOC)
+ defined(CONFIG_PROVE_LOCKING)
void __lockfunc _read_lock(rwlock_t *lock)
{