diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-04-08 15:02:28 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-04-08 15:02:28 -0400 |
commit | d586c86d50cefa0897a51a2dbc714060ccedae76 (patch) | |
tree | 76a7f454637badb74390047aebca5c071c0988fe /arch/s390/mm/init.c | |
parent | e9f37d3a8d126e73f5737ef548cdf6f618e295e4 (diff) | |
parent | 457f2180951cdcbfb4657ddcc83b486e93497f56 (diff) |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux
Pull second set of s390 patches from Martin Schwidefsky:
"The second part of Heikos uaccess rework, the page table walker for
uaccess is now a thing of the past (yay!)
The code change to fix the theoretical TLB flush problem allows us to
add a TLB flush optimization for zEC12, this machine has new
instructions that allow to do CPU local TLB flushes for single pages
and for all pages of a specific address space.
Plus the usual bug fixing and some more cleanup"
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux:
s390/uaccess: rework uaccess code - fix locking issues
s390/mm,tlb: optimize TLB flushing for zEC12
s390/mm,tlb: safeguard against speculative TLB creation
s390/irq: Use defines for external interruption codes
s390/irq: Add defines for external interruption codes
s390/sclp: add timeout for queued requests
kvm/s390: also set guest pages back to stable on kexec/kdump
lcs: Add missing destroy_timer_on_stack()
s390/tape: Add missing destroy_timer_on_stack()
s390/tape: Use del_timer_sync()
s390/3270: fix crash with multiple reset device requests
s390/bitops,atomic: add missing memory barriers
s390/zcrypt: add length check for aligned data to avoid overflow in msg-type 6
Diffstat (limited to 'arch/s390/mm/init.c')
-rw-r--r-- | arch/s390/mm/init.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/arch/s390/mm/init.c b/arch/s390/mm/init.c index ad446b0c55b6..0c1073ed1e84 100644 --- a/arch/s390/mm/init.c +++ b/arch/s390/mm/init.c | |||
@@ -124,8 +124,6 @@ void __init paging_init(void) | |||
124 | __ctl_load(S390_lowcore.kernel_asce, 13, 13); | 124 | __ctl_load(S390_lowcore.kernel_asce, 13, 13); |
125 | arch_local_irq_restore(4UL << (BITS_PER_LONG - 8)); | 125 | arch_local_irq_restore(4UL << (BITS_PER_LONG - 8)); |
126 | 126 | ||
127 | atomic_set(&init_mm.context.attach_count, 1); | ||
128 | |||
129 | sparse_memory_present_with_active_regions(MAX_NUMNODES); | 127 | sparse_memory_present_with_active_regions(MAX_NUMNODES); |
130 | sparse_init(); | 128 | sparse_init(); |
131 | memset(max_zone_pfns, 0, sizeof(max_zone_pfns)); | 129 | memset(max_zone_pfns, 0, sizeof(max_zone_pfns)); |
@@ -136,6 +134,11 @@ void __init paging_init(void) | |||
136 | 134 | ||
137 | void __init mem_init(void) | 135 | void __init mem_init(void) |
138 | { | 136 | { |
137 | if (MACHINE_HAS_TLB_LC) | ||
138 | cpumask_set_cpu(0, &init_mm.context.cpu_attach_mask); | ||
139 | cpumask_set_cpu(0, mm_cpumask(&init_mm)); | ||
140 | atomic_set(&init_mm.context.attach_count, 1); | ||
141 | |||
139 | max_mapnr = max_low_pfn; | 142 | max_mapnr = max_low_pfn; |
140 | high_memory = (void *) __va(max_low_pfn * PAGE_SIZE); | 143 | high_memory = (void *) __va(max_low_pfn * PAGE_SIZE); |
141 | 144 | ||