mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-02 16:26:38 +07:00
s390/mm: simplify get_guest_storage_key
We can safe a few LOC and make that function easier to understand by rewriting existing code. Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com> Signed-off-by: David Hildenbrand <dahi@linux.vnet.ibm.com> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
This commit is contained in:
parent
d3ed1ceeac
commit
8d6037a7b4
@ -551,20 +551,11 @@ unsigned long get_guest_storage_key(struct mm_struct *mm, unsigned long addr)
|
||||
return -EFAULT;
|
||||
|
||||
pgste = pgste_get_lock(ptep);
|
||||
if (pte_val(*ptep) & _PAGE_INVALID) {
|
||||
key = (pgste_val(pgste) & PGSTE_ACC_BITS) >> 56;
|
||||
key |= (pgste_val(pgste) & PGSTE_FP_BIT) >> 56;
|
||||
key |= (pgste_val(pgste) & PGSTE_GR_BIT) >> 48;
|
||||
key |= (pgste_val(pgste) & PGSTE_GC_BIT) >> 48;
|
||||
} else {
|
||||
key = (pgste_val(pgste) & (PGSTE_ACC_BITS | PGSTE_FP_BIT)) >> 56;
|
||||
if (!(pte_val(*ptep) & _PAGE_INVALID))
|
||||
key = page_get_storage_key(pte_val(*ptep) & PAGE_MASK);
|
||||
|
||||
/* Reflect guest's logical view, not physical */
|
||||
if (pgste_val(pgste) & PGSTE_GR_BIT)
|
||||
key |= _PAGE_REFERENCED;
|
||||
if (pgste_val(pgste) & PGSTE_GC_BIT)
|
||||
key |= _PAGE_CHANGED;
|
||||
}
|
||||
/* Reflect guest's logical view, not physical */
|
||||
key |= (pgste_val(pgste) & (PGSTE_GR_BIT | PGSTE_GC_BIT)) >> 48;
|
||||
pgste_set_unlock(ptep, pgste);
|
||||
pte_unmap_unlock(ptep, ptl);
|
||||
return key;
|
||||
|
Loading…
Reference in New Issue
Block a user