]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
s390/pgtable: skip pgste updates on full flush
authorMartin Schwidefsky <schwidefsky@de.ibm.com>
Fri, 19 Jul 2013 08:31:55 +0000 (10:31 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Tue, 30 Jul 2013 14:17:47 +0000 (16:17 +0200)
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>
arch/s390/include/asm/pgtable.h

index 2a6364b6f55617ab47d12b2d43778b708064dbbc..236b24ad1f2b130b1456ec14faa1201170e87888 100644 (file)
@@ -1146,10 +1146,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;
@@ -1157,7 +1156,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);
        }