diff options
author | Harald Freudenberger <freude@linux.ibm.com> | 2020-07-02 11:22:01 +0200 |
---|---|---|
committer | Vasily Gorbik <gor@linux.ibm.com> | 2020-10-07 21:49:59 +0200 |
commit | 0b641cbd24445e56073c69dd046be488dcf1965b (patch) | |
tree | 3e5843837542e091d06687bd94583f6bbd92b7e6 /drivers/s390/crypto/ap_bus.c | |
parent | 0ae88ccf4c160e02316e054db67156230568cf49 (diff) | |
download | linux-0b641cbd24445e56073c69dd046be488dcf1965b.tar.bz2 |
s390/ap: split ap queue state machine state from device state
The state machine for each ap queue covered a mixture of
device states and state machine (firmware queue state) states.
This patch splits the device states and the state machine
states into two different enums and variables. The major
state is the device state with currently these values:
AP_DEV_STATE_UNINITIATED - fresh and virgin, not touched
AP_DEV_STATE_OPERATING - queue dev is working normal
AP_DEV_STATE_SHUTDOWN - remove/unbind/shutdown in progress
AP_DEV_STATE_ERROR - device is in error state
only when the device state is > UNINITIATED the state machine
is run. The state machine represents the states of the firmware
queue:
AP_SM_STATE_RESET_START - starting point, reset (RAPQ) ap queue
AP_SM_STATE_RESET_WAIT - reset triggered, waiting to be finished
if irqs enabled, set up irq (AQIC)
AP_SM_STATE_SETIRQ_WAIT - enable irq triggered, waiting to be
finished, then go to IDLE
AP_SM_STATE_IDLE - queue is operational but empty
AP_SM_STATE_WORKING - queue is operational, requests are stored
and replies may wait for getting fetched
AP_SM_STATE_QUEUE_FULL - firmware queue is full, so only replies
can get fetched
For debugging each ap queue shows a sysfs attribute 'states' which
displays the device and state machine state and is only available
when the kernel is build with CONFIG_ZCRYPT_DEBUG enabled.
Signed-off-by: Harald Freudenberger <freude@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
Diffstat (limited to 'drivers/s390/crypto/ap_bus.c')
-rw-r--r-- | drivers/s390/crypto/ap_bus.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/s390/crypto/ap_bus.c b/drivers/s390/crypto/ap_bus.c index 231a98c9165d..1e895fcd25cc 100644 --- a/drivers/s390/crypto/ap_bus.c +++ b/drivers/s390/crypto/ap_bus.c @@ -1380,7 +1380,7 @@ static void _ap_scan_bus_adapter(int id) if (dev) { if (!broken) { spin_lock_bh(&aq->lock); - broken = aq->sm_state == AP_SM_STATE_BORKED; + broken = aq->dev_state == AP_DEV_STATE_ERROR; spin_unlock_bh(&aq->lock); } if (broken) { |