diff options
author | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2013-07-19 10:31:55 +0200 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2013-08-22 12:20:06 +0200 |
commit | a055f66a3a099e2c886a53421405f98683e94b2b (patch) | |
tree | 39eb742a6ae54fce3c14a6a9dc73db476d54bf81 /arch/s390/include | |
parent | e509861105a3c1425f3f929bd631f88340b499bf (diff) | |
download | op-kernel-dev-a055f66a3a099e2c886a53421405f98683e94b2b.zip op-kernel-dev-a055f66a3a099e2c886a53421405f98683e94b2b.tar.gz |
s390/pgtable: skip pgste updates on full flush
On process exit there is no more need for the pgste information.
Skip the expensive storage key operations which should speed up
termination of KVM processes.
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/include')
-rw-r--r-- | arch/s390/include/asm/pgtable.h | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/arch/s390/include/asm/pgtable.h b/arch/s390/include/asm/pgtable.h index b09c00b..b59b44b 100644 --- a/arch/s390/include/asm/pgtable.h +++ b/arch/s390/include/asm/pgtable.h @@ -1144,10 +1144,9 @@ static inline pte_t ptep_get_and_clear_full(struct mm_struct *mm, pgste_t pgste; pte_t pte; - if (mm_has_pgste(mm)) { + if (!full && mm_has_pgste(mm)) { pgste = pgste_get_lock(ptep); - if (!full) - pgste = pgste_ipte_notify(mm, address, ptep, pgste); + pgste = pgste_ipte_notify(mm, address, ptep, pgste); } pte = *ptep; @@ -1155,7 +1154,7 @@ static inline pte_t ptep_get_and_clear_full(struct mm_struct *mm, __ptep_ipte(address, ptep); pte_val(*ptep) = _PAGE_INVALID; - if (mm_has_pgste(mm)) { + if (!full && mm_has_pgste(mm)) { pgste = pgste_update_all(&pte, pgste); pgste_set_unlock(ptep, pgste); } |