浏览代码

[POWERPC] Make cpus_in_xmon static and remove extern mess from hvc_console.c

This is a little messier than I'd like because xmon.h only exists
on powerpc and we can't have a static inline and an extern declaration
visible at the same time.

Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Michael Ellerman 17 年之前
父节点
当前提交
1c8950ff87
共有 4 个文件被更改,包括 21 次插入8 次删除
  1. 6 1
      arch/powerpc/xmon/xmon.c
  2. 1 7
      drivers/char/hvc_console.c
  3. 10 0
      drivers/char/hvc_console.h
  4. 4 0
      include/asm-powerpc/xmon.h

+ 6 - 1
arch/powerpc/xmon/xmon.c

@@ -54,7 +54,7 @@
 #define skipbl	xmon_skipbl
 #define skipbl	xmon_skipbl
 
 
 #ifdef CONFIG_SMP
 #ifdef CONFIG_SMP
-cpumask_t cpus_in_xmon = CPU_MASK_NONE;
+static cpumask_t cpus_in_xmon = CPU_MASK_NONE;
 static unsigned long xmon_taken = 1;
 static unsigned long xmon_taken = 1;
 static int xmon_owner;
 static int xmon_owner;
 static int xmon_gate;
 static int xmon_gate;
@@ -327,6 +327,11 @@ static void release_output_lock(void)
 {
 {
 	xmon_speaker = 0;
 	xmon_speaker = 0;
 }
 }
+
+int cpus_are_in_xmon(void)
+{
+	return !cpus_empty(cpus_in_xmon);
+}
 #endif
 #endif
 
 
 static int xmon_core(struct pt_regs *regs, int fromipi)
 static int xmon_core(struct pt_regs *regs, int fromipi)

+ 1 - 7
drivers/char/hvc_console.c

@@ -675,12 +675,6 @@ static int hvc_poll(struct hvc_struct *hp)
 	return poll_mask;
 	return poll_mask;
 }
 }
 
 
-#if defined(CONFIG_XMON) && defined(CONFIG_SMP)
-extern cpumask_t cpus_in_xmon;
-#else
-static const cpumask_t cpus_in_xmon = CPU_MASK_NONE;
-#endif
-
 /*
 /*
  * This kthread is either polling or interrupt driven.  This is determined by
  * This kthread is either polling or interrupt driven.  This is determined by
  * calling hvc_poll() who determines whether a console adapter support
  * calling hvc_poll() who determines whether a console adapter support
@@ -698,7 +692,7 @@ static int khvcd(void *unused)
 		hvc_kicked = 0;
 		hvc_kicked = 0;
 		try_to_freeze();
 		try_to_freeze();
 		wmb();
 		wmb();
-		if (cpus_empty(cpus_in_xmon)) {
+		if (!cpus_are_in_xmon()) {
 			spin_lock(&hvc_structs_lock);
 			spin_lock(&hvc_structs_lock);
 			list_for_each_entry(hp, &hvc_structs, next) {
 			list_for_each_entry(hp, &hvc_structs, next) {
 				poll_mask |= hvc_poll(hp);
 				poll_mask |= hvc_poll(hp);

+ 10 - 0
drivers/char/hvc_console.h

@@ -60,4 +60,14 @@ extern struct hvc_struct * __devinit hvc_alloc(uint32_t vtermno, int irq,
 /* remove a vterm from hvc tty operation (modele_exit or hotplug remove) */
 /* remove a vterm from hvc tty operation (modele_exit or hotplug remove) */
 extern int __devexit hvc_remove(struct hvc_struct *hp);
 extern int __devexit hvc_remove(struct hvc_struct *hp);
 
 
+
+#if defined(CONFIG_XMON) && defined(CONFIG_SMP)
+#include <asm/xmon.h>
+#else
+static inline int cpus_are_in_xmon(void)
+{
+	return 0;
+}
+#endif
+
 #endif // HVC_CONSOLE_H
 #endif // HVC_CONSOLE_H

+ 4 - 0
include/asm-powerpc/xmon.h

@@ -25,5 +25,9 @@ static inline void xmon_setup(void) { };
 static inline void xmon_register_spus(struct list_head *list) { };
 static inline void xmon_register_spus(struct list_head *list) { };
 #endif
 #endif
 
 
+#if defined(CONFIG_XMON) && defined(CONFIG_SMP)
+extern int cpus_are_in_xmon(void);
+#endif
+
 #endif /* __KERNEL __ */
 #endif /* __KERNEL __ */
 #endif /* __ASM_POWERPC_XMON_H */
 #endif /* __ASM_POWERPC_XMON_H */