-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[PATCH] memory hotplug locking: node_size_lock
pgdat->node_size_lock is basically only neeeded in one place in the normal code: show_mem(), which is the arch-specific sysrq-m printing function. Strictly speaking, the architectures not doing memory hotplug do no need this locking in show_mem(). However, they are all included for completeness. This should also make any future consolidation of all of the implementations a little more straightforward. This lock is also held in the sparsemem code during a memory removal, as sections are invalidated. This is the place there pfn_valid() is made false for a memory area that's being removed. The lock is only required when doing pfn_valid() operations on memory which the user does not already have a reference on the page, such as in show_mem(). Signed-off-by: Dave Hansen <haveblue@us.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
- Loading branch information
Dave Hansen
authored and
Linus Torvalds
committed
Oct 30, 2005
1 parent
c6a57e1
commit 208d54e
Showing
9 changed files
with
76 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
#ifndef __LINUX_MEMORY_HOTPLUG_H | ||
#define __LINUX_MEMORY_HOTPLUG_H | ||
|
||
#include <linux/mmzone.h> | ||
#include <linux/spinlock.h> | ||
|
||
#ifdef CONFIG_MEMORY_HOTPLUG | ||
/* | ||
* pgdat resizing functions | ||
*/ | ||
static inline | ||
void pgdat_resize_lock(struct pglist_data *pgdat, unsigned long *flags) | ||
{ | ||
spin_lock_irqsave(&pgdat->node_size_lock, *flags); | ||
} | ||
static inline | ||
void pgdat_resize_unlock(struct pglist_data *pgdat, unsigned long *flags) | ||
{ | ||
spin_lock_irqrestore(&pgdat->node_size_lock, *flags); | ||
} | ||
static inline | ||
void pgdat_resize_init(struct pglist_data *pgdat) | ||
{ | ||
spin_lock_init(&pgdat->node_size_lock); | ||
} | ||
#else /* ! CONFIG_MEMORY_HOTPLUG */ | ||
/* | ||
* Stub functions for when hotplug is off | ||
*/ | ||
static inline void pgdat_resize_lock(struct pglist_data *p, unsigned long *f) {} | ||
static inline void pgdat_resize_unlock(struct pglist_data *p, unsigned long *f) {} | ||
static inline void pgdat_resize_init(struct pglist_data *pgdat) {} | ||
#endif | ||
#endif /* __LINUX_MEMORY_HOTPLUG_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters