s390/cmf: fix virtual vs physical address confusion
authorHeiko Carstens <hca@linux.ibm.com>
Fri, 19 Jan 2024 11:19:30 +0000 (12:19 +0100)
committerHeiko Carstens <hca@linux.ibm.com>
Fri, 9 Feb 2024 12:58:15 +0000 (13:58 +0100)
The measurement block origin address is an absolute address; therefore
add a missing virt_to_phys() translation to the cmf_activate() inline
assembly.

This doesn't fix a bug, since virtual and physical addresses are
currently identical.

Acked-by: Alexander Gordeev <agordeev@linux.ibm.com>
Acked-by: Vineeth Vijayan <vneethv@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
drivers/s390/cio/cmf.c

index 6a6e61ceb3c19fc478b7989d985186ca50d3160f..f80dc18e2a761662dcd491faad85296ea951d252 100644 (file)
@@ -169,7 +169,8 @@ static inline void cmf_activate(void *area, unsigned int onoff)
                "       lgr     2,%[mbo]\n"
                "       schm\n"
                :
-               : [r1] "d" ((unsigned long)onoff), [mbo] "d" (area)
+               : [r1] "d" ((unsigned long)onoff),
+                 [mbo] "d" (virt_to_phys(area))
                : "1", "2");
 }