Commit a055f66a authored by Martin Schwidefsky's avatar Martin Schwidefsky

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: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent e5098611
...@@ -1144,10 +1144,9 @@ static inline pte_t ptep_get_and_clear_full(struct mm_struct *mm, ...@@ -1144,10 +1144,9 @@ static inline pte_t ptep_get_and_clear_full(struct mm_struct *mm,
pgste_t pgste; pgste_t pgste;
pte_t pte; pte_t pte;
if (mm_has_pgste(mm)) { if (!full && mm_has_pgste(mm)) {
pgste = pgste_get_lock(ptep); 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; pte = *ptep;
...@@ -1155,7 +1154,7 @@ static inline pte_t ptep_get_and_clear_full(struct mm_struct *mm, ...@@ -1155,7 +1154,7 @@ static inline pte_t ptep_get_and_clear_full(struct mm_struct *mm,
__ptep_ipte(address, ptep); __ptep_ipte(address, ptep);
pte_val(*ptep) = _PAGE_INVALID; pte_val(*ptep) = _PAGE_INVALID;
if (mm_has_pgste(mm)) { if (!full && mm_has_pgste(mm)) {
pgste = pgste_update_all(&pte, pgste); pgste = pgste_update_all(&pte, pgste);
pgste_set_unlock(ptep, pgste); pgste_set_unlock(ptep, pgste);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment