Patches contributed by Eötvös Lorand University
commit 251a169c69d1ff07cee7a9bb9fc4faff6b1d2ac3
Merge: 6679ce6e5f51 796aadeb1b2d
Author: Ingo Molnar <mingo@elte.hu>
Date: Mon Aug 11 13:40:56 2008 +0200
Merge branch 'linus' into sched/urgent
commit 78635fc739b1254f3e0362ac430edbdd2cff01dc
Author: Ingo Molnar <mingo@elte.hu>
Date: Mon Aug 11 13:34:15 2008 +0200
rcu, debug: detect stalled grace periods, cleanups
small cleanups.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
diff --git a/kernel/rcuclassic.c b/kernel/rcuclassic.c
index d7ec731de75c..56b8712fe5aa 100644
--- a/kernel/rcuclassic.c
+++ b/kernel/rcuclassic.c
@@ -294,6 +294,7 @@ static inline void record_gp_check_time(struct rcu_ctrlblk *rcp)
{
rcp->gp_check = get_seconds() + 3;
}
+
static void print_other_cpu_stall(struct rcu_ctrlblk *rcp)
{
int cpu;
@@ -303,11 +304,9 @@ static void print_other_cpu_stall(struct rcu_ctrlblk *rcp)
spin_lock(&rcp->lock);
delta = get_seconds() - rcp->gp_check;
- if (delta < 2L ||
- cpus_empty(rcp->cpumask)) {
+ if (delta < 2L || cpus_empty(rcp->cpumask)) {
spin_unlock(&rcp->lock);
return;
- rcp->gp_check = get_seconds() + 30;
}
spin_unlock(&rcp->lock);
@@ -319,6 +318,7 @@ static void print_other_cpu_stall(struct rcu_ctrlblk *rcp)
printk(" (detected by %d, t=%lu/%lu)\n",
smp_processor_id(), get_seconds(), rcp->gp_check);
}
+
static void print_cpu_stall(struct rcu_ctrlblk *rcp)
{
printk(KERN_ERR "RCU detected CPU %d stall (t=%lu/%lu)\n",
@@ -329,8 +329,8 @@ static void print_cpu_stall(struct rcu_ctrlblk *rcp)
rcp->gp_check = get_seconds() + 30;
spin_unlock(&rcp->lock);
}
-static inline void check_cpu_stall(struct rcu_ctrlblk *rcp,
- struct rcu_data *rdp)
+
+static void check_cpu_stall(struct rcu_ctrlblk *rcp, struct rcu_data *rdp)
{
long delta;
@@ -341,12 +341,11 @@ static inline void check_cpu_stall(struct rcu_ctrlblk *rcp,
print_cpu_stall(rcp);
- } else if (!cpus_empty(rcp->cpumask) && delta >= 2L) {
-
- /* They had two seconds to dump stack, so complain. */
-
- print_other_cpu_stall(rcp);
-
+ } else {
+ if (!cpus_empty(rcp->cpumask) && delta >= 2L) {
+ /* They had two seconds to dump stack, so complain. */
+ print_other_cpu_stall(rcp);
+ }
}
}
@@ -355,8 +354,9 @@ static inline void check_cpu_stall(struct rcu_ctrlblk *rcp,
static inline void record_gp_check_time(struct rcu_ctrlblk *rcp)
{
}
-static inline void check_cpu_stall(struct rcu_ctrlblk *rcp,
- struct rcu_data *rdp)
+
+static inline void
+check_cpu_stall(struct rcu_ctrlblk *rcp, struct rcu_data *rdp)
{
}
commit c4c0c56a7a85ed5725786219e4fbca7e840b1531
Merge: 5127bed588a2 796aadeb1b2d
Author: Ingo Molnar <mingo@elte.hu>
Date: Mon Aug 11 13:27:47 2008 +0200
Merge branch 'linus' into core/rcu
commit 6de9c70882ecdee63a652d493bf2353963bd4c22
Merge: d406d21d90dc 796aadeb1b2d
Author: Ingo Molnar <mingo@elte.hu>
Date: Mon Aug 11 12:57:01 2008 +0200
Merge branch 'linus' into x86/cleanups
commit 8067794bec1cc5de1431102cf0a6a1c7ce75cd85
Merge: 7ab6af7ab69d 796aadeb1b2d
Author: Ingo Molnar <mingo@elte.hu>
Date: Mon Aug 11 11:19:20 2008 +0200
Merge branch 'linus' into x86/x2apic
Conflicts:
arch/x86/kernel/genapic_64.c
Manual merge:
arch/x86/kernel/genx2apic_uv_x.c
Signed-off-by: Ingo Molnar <mingo@elte.hu>
diff --cc arch/x86/kernel/genx2apic_uv_x.c
index 3fe472223a99,2cfcbded888a..16a93ed7baf1
--- a/arch/x86/kernel/genx2apic_uv_x.c
+++ b/arch/x86/kernel/genx2apic_uv_x.c
@@@ -26,35 -26,6 +26,36 @@@
#include <asm/uv/uv_hub.h>
#include <asm/uv/bios.h>
+DEFINE_PER_CPU(int, x2apic_extra_bits);
+
+static enum uv_system_type uv_system_type;
+
+static int __init uv_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
+{
+ if (!strcmp(oem_id, "SGI")) {
+ if (!strcmp(oem_table_id, "UVL"))
+ uv_system_type = UV_LEGACY_APIC;
+ else if (!strcmp(oem_table_id, "UVX"))
+ uv_system_type = UV_X2APIC;
+ else if (!strcmp(oem_table_id, "UVH")) {
+ uv_system_type = UV_NON_UNIQUE_APIC;
+ return 1;
+ }
+ }
+ return 0;
+}
+
+enum uv_system_type get_uv_system_type(void)
+{
+ return uv_system_type;
+}
+
+int is_uv_system(void)
+{
+ return uv_system_type != UV_NONE;
+}
++EXPORT_SYMBOL_GPL(is_uv_system);
+
DEFINE_PER_CPU(struct uv_hub_info_s, __uv_hub_info);
EXPORT_PER_CPU_SYMBOL_GPL(__uv_hub_info);
commit 3295f0ef9ff048a4619ede597ad9ec9cab725654
Author: Ingo Molnar <mingo@elte.hu>
Date: Mon Aug 11 10:30:30 2008 +0200
lockdep: rename map_[acquire|release]() => lock_map_[acquire|release]()
the names were too generic:
drivers/uio/uio.c:87: error: expected identifier or '(' before 'do'
drivers/uio/uio.c:87: error: expected identifier or '(' before 'while'
drivers/uio/uio.c:113: error: 'map_release' undeclared here (not in a function)
Signed-off-by: Ingo Molnar <mingo@elte.hu>
diff --git a/fs/jbd/transaction.c b/fs/jbd/transaction.c
index 31a4bd7f78d7..0540ca27a446 100644
--- a/fs/jbd/transaction.c
+++ b/fs/jbd/transaction.c
@@ -291,7 +291,7 @@ handle_t *journal_start(journal_t *journal, int nblocks)
goto out;
}
- map_acquire(&handle->h_lockdep_map);
+ lock_map_acquire(&handle->h_lockdep_map);
out:
return handle;
@@ -1448,7 +1448,7 @@ int journal_stop(handle_t *handle)
spin_unlock(&journal->j_state_lock);
}
- map_release(&handle->h_lockdep_map);
+ lock_map_release(&handle->h_lockdep_map);
jbd_free_handle(handle);
return err;
diff --git a/fs/jbd2/transaction.c b/fs/jbd2/transaction.c
index c074971215ed..e5d540588fa9 100644
--- a/fs/jbd2/transaction.c
+++ b/fs/jbd2/transaction.c
@@ -301,7 +301,7 @@ handle_t *jbd2_journal_start(journal_t *journal, int nblocks)
goto out;
}
- map_acquire(&handle->h_lockdep_map);
+ lock_map_acquire(&handle->h_lockdep_map);
out:
return handle;
}
@@ -1279,7 +1279,7 @@ int jbd2_journal_stop(handle_t *handle)
spin_unlock(&journal->j_state_lock);
}
- map_release(&handle->h_lockdep_map);
+ lock_map_release(&handle->h_lockdep_map);
jbd2_free_handle(handle);
return err;
diff --git a/include/linux/lockdep.h b/include/linux/lockdep.h
index 4452c04a7f6e..67f42b300c65 100644
--- a/include/linux/lockdep.h
+++ b/include/linux/lockdep.h
@@ -465,14 +465,14 @@ static inline void print_irqtrace_events(struct task_struct *curr)
#ifdef CONFIG_DEBUG_LOCK_ALLOC
# ifdef CONFIG_PROVE_LOCKING
-# define map_acquire(l) lock_acquire(l, 0, 0, 0, 2, NULL, _THIS_IP_)
+# define lock_map_acquire(l) lock_acquire(l, 0, 0, 0, 2, NULL, _THIS_IP_)
# else
-# define map_acquire(l) lock_acquire(l, 0, 0, 0, 1, NULL, _THIS_IP_)
+# define lock_map_acquire(l) lock_acquire(l, 0, 0, 0, 1, NULL, _THIS_IP_)
# endif
-# define map_release(l) lock_release(l, 1, _THIS_IP_)
+# define lock_map_release(l) lock_release(l, 1, _THIS_IP_)
#else
-# define map_acquire(l) do { } while (0)
-# define map_release(l) do { } while (0)
+# define lock_map_acquire(l) do { } while (0)
+# define lock_map_release(l) do { } while (0)
#endif
#endif /* __LINUX_LOCKDEP_H */
diff --git a/kernel/workqueue.c b/kernel/workqueue.c
index 53564ae894a6..8bb5b68fb3a9 100644
--- a/kernel/workqueue.c
+++ b/kernel/workqueue.c
@@ -290,11 +290,11 @@ static void run_workqueue(struct cpu_workqueue_struct *cwq)
BUG_ON(get_wq_data(work) != cwq);
work_clear_pending(work);
- map_acquire(&cwq->wq->lockdep_map);
- map_acquire(&lockdep_map);
+ lock_map_acquire(&cwq->wq->lockdep_map);
+ lock_map_acquire(&lockdep_map);
f(work);
- map_release(&lockdep_map);
- map_release(&cwq->wq->lockdep_map);
+ lock_map_release(&lockdep_map);
+ lock_map_release(&cwq->wq->lockdep_map);
if (unlikely(in_atomic() || lockdep_depth(current) > 0)) {
printk(KERN_ERR "BUG: workqueue leaked lock or atomic: "
@@ -413,8 +413,8 @@ void flush_workqueue(struct workqueue_struct *wq)
int cpu;
might_sleep();
- map_acquire(&wq->lockdep_map);
- map_release(&wq->lockdep_map);
+ lock_map_acquire(&wq->lockdep_map);
+ lock_map_release(&wq->lockdep_map);
for_each_cpu_mask_nr(cpu, *cpu_map)
flush_cpu_workqueue(per_cpu_ptr(wq->cpu_wq, cpu));
}
@@ -441,8 +441,8 @@ int flush_work(struct work_struct *work)
if (!cwq)
return 0;
- map_acquire(&cwq->wq->lockdep_map);
- map_release(&cwq->wq->lockdep_map);
+ lock_map_acquire(&cwq->wq->lockdep_map);
+ lock_map_release(&cwq->wq->lockdep_map);
prev = NULL;
spin_lock_irq(&cwq->lock);
@@ -536,8 +536,8 @@ static void wait_on_work(struct work_struct *work)
might_sleep();
- map_acquire(&work->lockdep_map);
- map_release(&work->lockdep_map);
+ lock_map_acquire(&work->lockdep_map);
+ lock_map_release(&work->lockdep_map);
cwq = get_wq_data(work);
if (!cwq)
@@ -861,8 +861,8 @@ static void cleanup_workqueue_thread(struct cpu_workqueue_struct *cwq)
if (cwq->thread == NULL)
return;
- map_acquire(&cwq->wq->lockdep_map);
- map_release(&cwq->wq->lockdep_map);
+ lock_map_acquire(&cwq->wq->lockdep_map);
+ lock_map_release(&cwq->wq->lockdep_map);
flush_cpu_workqueue(cwq);
/*
commit cf206bffbb7542df54043fad9898113172af99d8
Merge: c1955a3d4762 796aadeb1b2d
Author: Ingo Molnar <mingo@elte.hu>
Date: Mon Aug 11 08:59:21 2008 +0200
Merge branch 'linus' into sched/clock
commit 8a9204db665365354b349ed5b0bc054f0433a2a4
Author: Ingo Molnar <mingo@elte.hu>
Date: Thu Jul 31 20:51:22 2008 -0700
net/ipv4/route.c: fix build error
fix:
net/ipv4/route.c: In function 'ip_static_sysctl_init':
net/ipv4/route.c:3225: error: 'ipv4_route_path' undeclared (first use in this function)
net/ipv4/route.c:3225: error: (Each undeclared identifier is reported only once
net/ipv4/route.c:3225: error: for each function it appears in.)
net/ipv4/route.c:3225: error: 'ipv4_route_table' undeclared (first use in this function)
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: David S. Miller <davem@davemloft.net>
diff --git a/net/ipv4/route.c b/net/ipv4/route.c
index 380d6474cf66..d7bf0564b5f4 100644
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
@@ -3222,7 +3222,9 @@ int __init ip_rt_init(void)
*/
void __init ip_static_sysctl_init(void)
{
+#ifdef CONFIG_SYSCTL
register_sysctl_paths(ipv4_route_path, ipv4_route_table);
+#endif
}
EXPORT_SYMBOL(__ip_select_ident);
commit 85e9ca333d03fbd56b9e123c8456f0d98e20faad
Merge: a300bec95212 6e86841d05f3
Author: Ingo Molnar <mingo@elte.hu>
Date: Thu Jul 31 18:43:41 2008 +0200
Merge branch 'linus' into timers/hpet
diff --cc drivers/char/hpet.c
index c9bf5d44402d,b3f5dbc6d880..f3981ffe20f0
--- a/drivers/char/hpet.c
+++ b/drivers/char/hpet.c
@@@ -275,9 -217,8 +278,10 @@@ static int hpet_open(struct inode *inod
devp->hd_irqdata = 0;
devp->hd_flags |= HPET_OPEN;
spin_unlock_irq(&hpet_lock);
+ unlock_kernel();
+ hpet_timer_set_irq(devp);
+
return 0;
}
commit 6679ce6e5f519096612b480d255d9ca97be0c2be
Merge: 2c3d103ba908 6e86841d05f3
Author: Ingo Molnar <mingo@elte.hu>
Date: Thu Jul 31 18:34:22 2008 +0200
Merge branch 'linus' into sched/urgent