]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
KVM: s390: Add some useful mask macros
authorClaudio Imbrenda <imbrenda@linux.ibm.com>
Thu, 2 Apr 2026 15:01:30 +0000 (17:01 +0200)
committerClaudio Imbrenda <imbrenda@linux.ibm.com>
Tue, 7 Apr 2026 15:07:14 +0000 (17:07 +0200)
Add _{SEGMENT,REGION3}_FR_MASK, similar to _{SEGMENT,REGION3}_MASK, but
working on gfn/pfn instead of addresses. Use them in gaccess.c instead
of using the normal masks plus gpa_to_gfn().

Also add _PAGES_PER_{SEGMENT,REGION3} to make future code more readable.

Reviewed-by: Steffen Eiden <seiden@linux.ibm.com>
Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
arch/s390/kvm/dat.h
arch/s390/kvm/gaccess.c

index 123e11dcd70df56654cee24bd0fc85efa06aea5f..809cd7a8adb7f60556ef6ca6c5936c776b319f57 100644 (file)
@@ -104,6 +104,11 @@ union pte {
        } tok;
 };
 
+#define _SEGMENT_FR_MASK       (_SEGMENT_MASK >> PAGE_SHIFT)
+#define _REGION3_FR_MASK       (_REGION3_MASK >> PAGE_SHIFT)
+#define _PAGES_PER_SEGMENT     _PAGE_ENTRIES
+#define _PAGES_PER_REGION3     (_PAGES_PER_SEGMENT * _CRST_ENTRIES)
+
 /* Soft dirty, needed as macro for atomic operations on ptes */
 #define _PAGE_SD 0x002
 
index 4630b2a067ea61a299a3e41271cbf4bf33d90935..a2ad11e2bf61b27f8d3a72d1d48c06420f7efe34 100644 (file)
@@ -1461,7 +1461,7 @@ static int _do_shadow_crste(struct gmap *sg, gpa_t raddr, union crste *host, uni
        lockdep_assert_held(&sg->kvm->mmu_lock);
        lockdep_assert_held(&sg->parent->children_lock);
 
-       gfn = f->gfn & gpa_to_gfn(is_pmd(*table) ? _SEGMENT_MASK : _REGION3_MASK);
+       gfn = f->gfn & (is_pmd(*table) ? _SEGMENT_FR_MASK : _REGION3_FR_MASK);
        scoped_guard(spinlock, &sg->host_to_rmap_lock)
                rc = gmap_insert_rmap(sg, gfn, gpa_to_gfn(raddr), host->h.tt);
        if (rc)