1
0
Fork 0
alistair23-linux/arch
Kirill A. Shutemov 49076ec2cc mm: dynamically allocate page->ptl if it cannot be embedded to struct page
If split page table lock is in use, we embed the lock into struct page
of table's page.  We have to disable split lock, if spinlock_t is too
big be to be embedded, like when DEBUG_SPINLOCK or DEBUG_LOCK_ALLOC
enabled.

This patch add support for dynamic allocation of split page table lock
if we can't embed it to struct page.

page->ptl is unsigned long now and we use it as spinlock_t if
sizeof(spinlock_t) <= sizeof(long), otherwise it's pointer to spinlock_t.

The spinlock_t allocated in pgtable_page_ctor() for PTE table and in
pgtable_pmd_page_ctor() for PMD table.  All other helpers converted to
support dynamically allocated page->ptl.

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Reviewed-by: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2013-11-15 09:32:20 +09:00
..
alpha alpha: handle pgtable_page_ctor() fail 2013-11-15 09:32:16 +09:00
arc arc: handle pgtable_page_ctor() fail 2013-11-15 09:32:16 +09:00
arm arm: handle pgtable_page_ctor() fail 2013-11-15 09:32:16 +09:00
arm64 arm64: handle pgtable_page_ctor() fail 2013-11-15 09:32:16 +09:00
avr32 avr32: handle pgtable_page_ctor() fail 2013-11-15 09:32:17 +09:00
blackfin ACPI and power management updates for 3.13-rc1 2013-11-14 13:41:48 +09:00
c6x DeviceTree updates for 3.13. This is a bit larger pull request than 2013-11-12 16:52:17 +09:00
cris cris: handle pgtable_page_ctor() fail 2013-11-15 09:32:17 +09:00
frv frv: handle pgtable_page_ctor() fail 2013-11-15 09:32:17 +09:00
hexagon hexagon: handle pgtable_page_ctor() fail 2013-11-15 09:32:17 +09:00
ia64 ia64: handle pgtable_page_ctor() fail 2013-11-15 09:32:17 +09:00
m32r m32r: handle pgtable_page_ctor() fail 2013-11-15 09:32:17 +09:00
m68k m68k: handle pgtable_page_ctor() fail 2013-11-15 09:32:17 +09:00
metag metag: handle pgtable_page_ctor() fail 2013-11-15 09:32:18 +09:00
microblaze microblaze: add missing pgtable_page_ctor/dtor calls 2013-11-15 09:32:16 +09:00
mips mips: handle pgtable_page_ctor() fail 2013-11-15 09:32:18 +09:00
mn10300 mn10300: add missing pgtable_page_ctor/dtor calls 2013-11-15 09:32:16 +09:00
openrisc openrisc: add missing pgtable_page_ctor/dtor calls 2013-11-15 09:32:16 +09:00
parisc parisc: handle pgtable_page_ctor() fail 2013-11-15 09:32:18 +09:00
powerpc powerpc: handle pgtable_page_ctor() fail 2013-11-15 09:32:18 +09:00
s390 s390: handle pgtable_page_ctor() fail 2013-11-15 09:32:18 +09:00
score score: handle pgtable_page_ctor() fail 2013-11-15 09:32:18 +09:00
sh sh: handle pgtable_page_ctor() fail 2013-11-15 09:32:18 +09:00
sparc sparc: handle pgtable_page_ctor() fail 2013-11-15 09:32:19 +09:00
tile tile: handle pgtable_page_ctor() fail 2013-11-15 09:32:19 +09:00
um um: handle pgtable_page_ctor() fail 2013-11-15 09:32:19 +09:00
unicore32 unicore32: handle pgtable_page_ctor() fail 2013-11-15 09:32:19 +09:00
x86 mm: dynamically allocate page->ptl if it cannot be embedded to struct page 2013-11-15 09:32:20 +09:00
xtensa xtensa: use buddy allocator for PTE table 2013-11-15 09:32:19 +09:00
.gitignore
Kconfig Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2013-11-12 10:36:00 +09:00