Commit f7dff2b1 authored by Gautham R Shenoy's avatar Gautham R Shenoy Committed by Linus Torvalds

[PATCH] Handle per-subsystem mutexes for CONFIG_HOTPLUG_CPU not set

Provide a common interface for all the subsystems to lock and unlock their
per-subsystem hotcpu mutexes.

When CONFIG_HOTPLUG_CPU is not set, these operations would be no-ops.

[akpm@osdl.org: macros -> inlines]
Signed-off-by: default avatarGautham R Shenoy <ego@in.ibm.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent d3fa72e4
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
#include <linux/compiler.h> #include <linux/compiler.h>
#include <linux/cpumask.h> #include <linux/cpumask.h>
#include <asm/semaphore.h> #include <asm/semaphore.h>
#include <linux/mutex.h>
struct cpu { struct cpu {
int node_id; /* The node which contains the CPU */ int node_id; /* The node which contains the CPU */
...@@ -74,6 +75,17 @@ extern struct sysdev_class cpu_sysdev_class; ...@@ -74,6 +75,17 @@ extern struct sysdev_class cpu_sysdev_class;
#ifdef CONFIG_HOTPLUG_CPU #ifdef CONFIG_HOTPLUG_CPU
/* Stop CPUs going up and down. */ /* Stop CPUs going up and down. */
static inline void cpuhotplug_mutex_lock(struct mutex *cpu_hp_mutex)
{
mutex_lock(cpu_hp_mutex);
}
static inline void cpuhotplug_mutex_unlock(struct mutex *cpu_hp_mutex)
{
mutex_unlock(cpu_hp_mutex);
}
extern void lock_cpu_hotplug(void); extern void lock_cpu_hotplug(void);
extern void unlock_cpu_hotplug(void); extern void unlock_cpu_hotplug(void);
#define hotcpu_notifier(fn, pri) { \ #define hotcpu_notifier(fn, pri) { \
...@@ -85,7 +97,14 @@ extern void unlock_cpu_hotplug(void); ...@@ -85,7 +97,14 @@ extern void unlock_cpu_hotplug(void);
#define unregister_hotcpu_notifier(nb) unregister_cpu_notifier(nb) #define unregister_hotcpu_notifier(nb) unregister_cpu_notifier(nb)
int cpu_down(unsigned int cpu); int cpu_down(unsigned int cpu);
#define cpu_is_offline(cpu) unlikely(!cpu_online(cpu)) #define cpu_is_offline(cpu) unlikely(!cpu_online(cpu))
#else
#else /* CONFIG_HOTPLUG_CPU */
static inline void cpuhotplug_mutex_lock(struct mutex *cpu_hp_mutex)
{ }
static inline void cpuhotplug_mutex_unlock(struct mutex *cpu_hp_mutex)
{ }
#define lock_cpu_hotplug() do { } while (0) #define lock_cpu_hotplug() do { } while (0)
#define unlock_cpu_hotplug() do { } while (0) #define unlock_cpu_hotplug() do { } while (0)
#define lock_cpu_hotplug_interruptible() 0 #define lock_cpu_hotplug_interruptible() 0
...@@ -95,7 +114,7 @@ int cpu_down(unsigned int cpu); ...@@ -95,7 +114,7 @@ int cpu_down(unsigned int cpu);
/* CPUs don't go offline once they're online w/o CONFIG_HOTPLUG_CPU */ /* CPUs don't go offline once they're online w/o CONFIG_HOTPLUG_CPU */
static inline int cpu_is_offline(int cpu) { return 0; } static inline int cpu_is_offline(int cpu) { return 0; }
#endif #endif /* CONFIG_HOTPLUG_CPU */
#ifdef CONFIG_SUSPEND_SMP #ifdef CONFIG_SUSPEND_SMP
extern int disable_nonboot_cpus(void); extern int disable_nonboot_cpus(void);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment