s390/ap: add missing virt_to_phys address conversion
authorHeiko Carstens <hca@linux.ibm.com>
Thu, 2 Dec 2021 19:58:07 +0000 (20:58 +0100)
committerHeiko Carstens <hca@linux.ibm.com>
Fri, 10 Dec 2021 15:14:26 +0000 (16:14 +0100)
The address of the notification-indicator byte is an absolute
address. Therefore convert its virtual to a physical address before
being used with PQAP(AQIC).

Note: this currently doesn't fix a real bug, since virtual addresses
are indentical to physical ones.

Reviewed-by: Alexander Gordeev <agordeev@linux.ibm.com>
Reviewed-by: Harald Freudenberger <freude@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
arch/s390/include/asm/ap.h

index 3afbee2..c0c8a1f 100644 (file)
@@ -12,6 +12,8 @@
 #ifndef _ASM_S390_AP_H_
 #define _ASM_S390_AP_H_
 
+#include <linux/io.h>
+
 /**
  * The ap_qid_t identifier of an ap queue.
  * If the AP facilities test (APFT) facility is available,
@@ -238,7 +240,7 @@ static inline struct ap_queue_status ap_aqic(ap_qid_t qid,
                struct ap_qirq_ctrl qirqctrl;
                struct ap_queue_status status;
        } reg1;
-       void *reg2 = ind;
+       unsigned long reg2 = virt_to_phys(ind);
 
        reg1.qirqctrl = qirqctrl;