diff options
author | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2013-08-16 07:31:40 -0400 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2013-08-22 06:20:09 -0400 |
commit | 5c474a1e2265c5156e6c63f87a7e99053039b8b9 (patch) | |
tree | a50c365553dbaf2c3d97c8a0dbca8c94cec34e9f /arch/s390/mm | |
parent | b6bed093f489ef0a858e63eebcf5f2fb71ed3222 (diff) |
s390/mm: introduce ptep_flush_lazy helper
Isolate the logic of IDTE vs. IPTE flushing of ptes in two functions,
ptep_flush_lazy and __tlb_flush_mm_lazy.
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/mm')
-rw-r--r-- | arch/s390/mm/pgtable.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/arch/s390/mm/pgtable.c b/arch/s390/mm/pgtable.c index b9d35d63934e..befaea7003f7 100644 --- a/arch/s390/mm/pgtable.c +++ b/arch/s390/mm/pgtable.c | |||
@@ -1008,7 +1008,6 @@ void tlb_table_flush(struct mmu_gather *tlb) | |||
1008 | struct mmu_table_batch **batch = &tlb->batch; | 1008 | struct mmu_table_batch **batch = &tlb->batch; |
1009 | 1009 | ||
1010 | if (*batch) { | 1010 | if (*batch) { |
1011 | __tlb_flush_mm(tlb->mm); | ||
1012 | call_rcu_sched(&(*batch)->rcu, tlb_remove_table_rcu); | 1011 | call_rcu_sched(&(*batch)->rcu, tlb_remove_table_rcu); |
1013 | *batch = NULL; | 1012 | *batch = NULL; |
1014 | } | 1013 | } |
@@ -1018,11 +1017,12 @@ void tlb_remove_table(struct mmu_gather *tlb, void *table) | |||
1018 | { | 1017 | { |
1019 | struct mmu_table_batch **batch = &tlb->batch; | 1018 | struct mmu_table_batch **batch = &tlb->batch; |
1020 | 1019 | ||
1020 | tlb->mm->context.flush_mm = 1; | ||
1021 | if (*batch == NULL) { | 1021 | if (*batch == NULL) { |
1022 | *batch = (struct mmu_table_batch *) | 1022 | *batch = (struct mmu_table_batch *) |
1023 | __get_free_page(GFP_NOWAIT | __GFP_NOWARN); | 1023 | __get_free_page(GFP_NOWAIT | __GFP_NOWARN); |
1024 | if (*batch == NULL) { | 1024 | if (*batch == NULL) { |
1025 | __tlb_flush_mm(tlb->mm); | 1025 | __tlb_flush_mm_lazy(tlb->mm); |
1026 | tlb_remove_table_one(table); | 1026 | tlb_remove_table_one(table); |
1027 | return; | 1027 | return; |
1028 | } | 1028 | } |
@@ -1030,7 +1030,7 @@ void tlb_remove_table(struct mmu_gather *tlb, void *table) | |||
1030 | } | 1030 | } |
1031 | (*batch)->tables[(*batch)->nr++] = table; | 1031 | (*batch)->tables[(*batch)->nr++] = table; |
1032 | if ((*batch)->nr == MAX_TABLE_BATCH) | 1032 | if ((*batch)->nr == MAX_TABLE_BATCH) |
1033 | tlb_table_flush(tlb); | 1033 | tlb_flush_mmu(tlb); |
1034 | } | 1034 | } |
1035 | 1035 | ||
1036 | #ifdef CONFIG_TRANSPARENT_HUGEPAGE | 1036 | #ifdef CONFIG_TRANSPARENT_HUGEPAGE |