Commit df2c88a7 authored by Julian Wiedmann's avatar Julian Wiedmann Committed by Greg Kroah-Hartman

s390/qdio: handle PENDING state for QEBSM devices

[ Upstream commit 04310324 ]

When a CQ-enabled device uses QEBSM for SBAL state inspection,
get_buf_states() can return the PENDING state for an Output Queue.
get_outbound_buffer_frontier() isn't prepared for this, and any PENDING
buffer will permanently stall all further completion processing on this
Queue.

This isn't a concern for non-QEBSM devices, as get_buf_states() for such
devices will manually turn PENDING buffers into EMPTY ones.

Fixes: 104ea556 ("qdio: support asynchronous delivery of storage blocks")
Signed-off-by: default avatarJulian Wiedmann <jwi@linux.ibm.com>
Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
parent 5b0c0598
...@@ -738,6 +738,7 @@ static int get_outbound_buffer_frontier(struct qdio_q *q) ...@@ -738,6 +738,7 @@ static int get_outbound_buffer_frontier(struct qdio_q *q)
switch (state) { switch (state) {
case SLSB_P_OUTPUT_EMPTY: case SLSB_P_OUTPUT_EMPTY:
case SLSB_P_OUTPUT_PENDING:
/* the adapter got it */ /* the adapter got it */
DBF_DEV_EVENT(DBF_INFO, q->irq_ptr, DBF_DEV_EVENT(DBF_INFO, q->irq_ptr,
"out empty:%1d %02x", q->nr, count); "out empty:%1d %02x", q->nr, count);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment