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