summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFinn Callies <fcallies@linux.ibm.com>2026-07-23 17:00:38 +0200
committerVasily Gorbik <gor@linux.ibm.com>2026-07-31 13:31:30 +0200
commitbdce129e44dfc908762b63dc18d405046f05a325 (patch)
tree0301df2523110037dee64402b59ecabfde184e5c
parent2d6b38e6619b821f31d52e0abab14560f69dedd3 (diff)
downloadlinux-next-bdce129e44dfc908762b63dc18d405046f05a325.tar.gz
linux-next-bdce129e44dfc908762b63dc18d405046f05a325.zip
s390/ap: Fix queue depth field length
The queue depth field is defined as a 5 bit field in the Z architecture instead of a 4 bit field. The queue depth (qd) can be in range 0-31 and is reported in bits 59-63 of the TAPQ response. Currently this has no effect as all CEX generations report a queue depth of 7, which fits into 4 bits. However, future CEX generations reporting a value >15 would not be properly reflected by the ap bus and therefore all user space applications relying on it. Reviewed-by: Harald Freudenberger <freude@linux.ibm.com> Signed-off-by: Finn Callies <fcallies@linux.ibm.com> Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
-rw-r--r--arch/s390/include/asm/ap.h4
-rw-r--r--drivers/s390/crypto/ap_bus.h2
2 files changed, 3 insertions, 3 deletions
diff --git a/arch/s390/include/asm/ap.h b/arch/s390/include/asm/ap.h
index 3b95c6531a67..c91b6ace199d 100644
--- a/arch/s390/include/asm/ap.h
+++ b/arch/s390/include/asm/ap.h
@@ -125,8 +125,8 @@ struct ap_tapq_hwinfo {
unsigned int nd : 8; /* nr of domains */
unsigned int : 4;
unsigned int ml : 4; /* apxl ml */
- unsigned int : 4;
- unsigned int qd : 4; /* queue depth */
+ unsigned int : 3;
+ unsigned int qd : 5; /* queue depth */
};
};
};
diff --git a/drivers/s390/crypto/ap_bus.h b/drivers/s390/crypto/ap_bus.h
index b2e57e5d6c3f..fb4d678336e4 100644
--- a/drivers/s390/crypto/ap_bus.h
+++ b/drivers/s390/crypto/ap_bus.h
@@ -181,7 +181,7 @@ struct ap_card {
bool chkstop; /* checkstop state */
};
-#define TAPQ_CARD_HWINFO_MASK 0xFFFF0000FFFF0F0FUL
+#define TAPQ_CARD_HWINFO_MASK 0xFFFF0000FFFF0F1FUL
#define ASSOC_IDX_INVALID 0x10000
#define to_ap_card(x) container_of((x), struct ap_card, ap_dev.device)