summaryrefslogtreecommitdiff
path: root/arch/s390/include/asm/ap.h
diff options
context:
space:
mode:
authorHalil Pasic <pasic@linux.ibm.com>2023-02-09 02:00:24 +0300
committerHeiko Carstens <hca@linux.ibm.com>2023-02-10 12:55:30 +0300
commita2522c80f074c35254974fec39fffe8b8d75befe (patch)
treee3bf031ada7a509d0405cf2e04191dd71b54034c /arch/s390/include/asm/ap.h
parent394740d7645ea767795074287769dd26dbd4d782 (diff)
downloadlinux-a2522c80f074c35254974fec39fffe8b8d75befe.tar.xz
s390/ap: fix status returned by ap_qact()
Since commit 159491f3b509 ("s390/ap: rework assembler functions to use unions for in/out register variables") the function ap_qact() tries to grab the status from the wrong part of the register. Thus we always end up with zeros. Which is wrong, among others, because we detect failures via status.response_code. Signed-off-by: Halil Pasic <pasic@linux.ibm.com> Reported-by: Harald Freudenberger <freude@linux.ibm.com> Fixes: 159491f3b509 ("s390/ap: rework assembler functions to use unions for in/out register variables") Reviewed-by: Harald Freudenberger <freude@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Diffstat (limited to 'arch/s390/include/asm/ap.h')
-rw-r--r--arch/s390/include/asm/ap.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/arch/s390/include/asm/ap.h b/arch/s390/include/asm/ap.h
index 876afe46f316..57a2d6518d27 100644
--- a/arch/s390/include/asm/ap.h
+++ b/arch/s390/include/asm/ap.h
@@ -293,7 +293,10 @@ static inline struct ap_queue_status ap_qact(ap_qid_t qid, int ifbit,
unsigned long reg0 = qid | (5UL << 24) | ((ifbit & 0x01) << 22);
union {
unsigned long value;
- struct ap_queue_status status;
+ struct {
+ u32 _pad;
+ struct ap_queue_status status;
+ };
} reg1;
unsigned long reg2;