• Gautham R Shenoy's avatar
    Define and use new events,CPU_LOCK_ACQUIRE and CPU_LOCK_RELEASE · baaca49f
    Gautham R Shenoy authored
    This is an attempt to provide an alternate mechanism for postponing
    a hotplug event instead of using a global mechanism like lock_cpu_hotplug.
    
    The proposal is to add two new events namely CPU_LOCK_ACQUIRE and
    CPU_LOCK_RELEASE. The notification for these two events would be sent
    out before and after a cpu_hotplug event respectively.
    
    During the CPU_LOCK_ACQUIRE event, a cpu-hotplug-aware subsystem is
    supposed to acquire any per-subsystem hotcpu mutex ( Eg. workqueue_mutex
    in kernel/workqueue.c ).
    
    During the CPU_LOCK_RELEASE release event the cpu-hotplug-aware subsystem
    is supposed to release the per-subsystem hotcpu mutex.
    
    The reasons for defining new events as opposed to reusing the existing events
    like CPU_UP_PREPARE/CPU_UP_FAILED/CPU_ONLINE for locking/unlocking of
    per-subsystem hotcpu mutexes are as follow:
    
    	- CPU_LOCK_ACQUIRE: All hotcpu mutexes are taken before subsystems
    	start handling pre-hotplug events like CPU_UP_PREPARE/CPU_DOWN_PREPARE
    	etc, thus ensuring a clean handling of these events.
    
    	- CPU_LOCK_RELEASE: The hotcpu mutexes will be released only after
    	all subsystems have handled post-hotplug events like CPU_DOWN_FAILED,
    	CPU_DEAD,CPU_ONLINE etc thereby ensuring that there are no subsequent
    	clashes amongst the interdependent subsystems after a cpu hotplugs.
    
    This patch also uses __raw_notifier_call chain in _cpu_up to take care
    of the dependency between the two consequetive calls to
    raw_notifier_call_chain.
    
    [akpm@linux-foundation.org: fix a bug]
    Signed-off-by: default avatarGautham R Shenoy <ego@in.ibm.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    baaca49f
cpu.c 7.58 KB