Thread (28 messages) 28 messages, 5 authors, 2021-09-28

Re: [PATCH resend RFC 7/9] s390/mm: no need for pte_alloc_map_lock() if we know the pmd is present

From: David Hildenbrand <hidden>
Date: 2021-09-14 17:23:44
Also in: linux-mm, linux-s390, lkml

On 14.09.21 18:54, Claudio Imbrenda wrote:
On Thu,  9 Sep 2021 18:22:46 +0200
David Hildenbrand [off-list ref] wrote:
quoted
pte_map_lock() is sufficient.
Can you explain the difference and why it is enough?
I didn't repeat the $subject:

"No need for pte_alloc_map_lock() if we know the pmd is present; 
pte_map_lock() is sufficient, because there isn't anything to allocate."
quoted
Signed-off-by: David Hildenbrand <redacted>
---
  arch/s390/mm/pgtable.c | 15 +++------------
  1 file changed, 3 insertions(+), 12 deletions(-)
diff --git a/arch/s390/mm/pgtable.c b/arch/s390/mm/pgtable.c
index 5fb409ff7842..4e77b8ebdcc5 100644
--- a/arch/s390/mm/pgtable.c
+++ b/arch/s390/mm/pgtable.c
@@ -814,10 +814,7 @@ int set_guest_storage_key(struct mm_struct *mm, unsigned long addr,
  	}
  	spin_unlock(ptl);
  
-	ptep = pte_alloc_map_lock(mm, pmdp, addr, &ptl);
-	if (unlikely(!ptep))
-		return -EFAULT;
-
+	ptep = pte_offset_map_lock(mm, pmdp, addr, &ptl);
  	new = old = pgste_get_lock(ptep);
  	pgste_val(new) &= ~(PGSTE_GR_BIT | PGSTE_GC_BIT |
  			    PGSTE_ACC_BITS | PGSTE_FP_BIT);
@@ -912,10 +909,7 @@ int reset_guest_reference_bit(struct mm_struct *mm, unsigned long addr)
  	}
  	spin_unlock(ptl);
  
-	ptep = pte_alloc_map_lock(mm, pmdp, addr, &ptl);
-	if (unlikely(!ptep))
-		return -EFAULT;
-
+	ptep = pte_offset_map_lock(mm, pmdp, addr, &ptl);
  	new = old = pgste_get_lock(ptep);
  	/* Reset guest reference bit only */
  	pgste_val(new) &= ~PGSTE_GR_BIT;
@@ -977,10 +971,7 @@ int get_guest_storage_key(struct mm_struct *mm, unsigned long addr,
  	}
  	spin_unlock(ptl);
  
-	ptep = pte_alloc_map_lock(mm, pmdp, addr, &ptl);
-	if (unlikely(!ptep))
-		return -EFAULT;
-
+	ptep = pte_offset_map_lock(mm, pmdp, addr, &ptl);
  	pgste = pgste_get_lock(ptep);
  	*key = (pgste_val(pgste) & (PGSTE_ACC_BITS | PGSTE_FP_BIT)) >> 56;
  	paddr = pte_val(*ptep) & PAGE_MASK;

-- 
Thanks,

David / dhildenb
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help