From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Julian Wiedmann <jwi@linux.ibm.com>,
Jens Remus <jremus@linux.ibm.com>,
Heiko Carstens <heiko.carstens@de.ibm.com>,
Sasha Levin <sashal@kernel.org>,
linux-s390@vger.kernel.org
Subject: [PATCH AUTOSEL 4.4 08/17] s390/qdio: add sanity checks to the fast-requeue path
Date: Fri, 2 Aug 2019 09:26:25 -0400 [thread overview]
Message-ID: <20190802132635.14885-8-sashal@kernel.org> (raw)
In-Reply-To: <20190802132635.14885-1-sashal@kernel.org>
From: Julian Wiedmann <jwi@linux.ibm.com>
[ Upstream commit a6ec414a4dd529eeac5c3ea51c661daba3397108 ]
If the device driver were to send out a full queue's worth of SBALs,
current code would end up discovering the last of those SBALs as PRIMED
and erroneously skip the SIGA-w. This immediately stalls the queue.
Add a check to not attempt fast-requeue in this case. While at it also
make sure that the state of the previous SBAL was successfully extracted
before inspecting it.
Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
Reviewed-by: Jens Remus <jremus@linux.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/s390/cio/qdio_main.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/drivers/s390/cio/qdio_main.c b/drivers/s390/cio/qdio_main.c
index d64b401f3d058..51cdccaec1648 100644
--- a/drivers/s390/cio/qdio_main.c
+++ b/drivers/s390/cio/qdio_main.c
@@ -1575,13 +1575,13 @@ static int handle_outbound(struct qdio_q *q, unsigned int callflags,
rc = qdio_kick_outbound_q(q, phys_aob);
} else if (need_siga_sync(q)) {
rc = qdio_siga_sync_q(q);
+ } else if (count < QDIO_MAX_BUFFERS_PER_Q &&
+ get_buf_state(q, prev_buf(bufnr), &state, 0) > 0 &&
+ state == SLSB_CU_OUTPUT_PRIMED) {
+ /* The previous buffer is not processed yet, tack on. */
+ qperf_inc(q, fast_requeue);
} else {
- /* try to fast requeue buffers */
- get_buf_state(q, prev_buf(bufnr), &state, 0);
- if (state != SLSB_CU_OUTPUT_PRIMED)
- rc = qdio_kick_outbound_q(q, 0);
- else
- qperf_inc(q, fast_requeue);
+ rc = qdio_kick_outbound_q(q, 0);
}
/* in case of SIGA errors we must process the error immediately */
--
2.20.1
next prev parent reply other threads:[~2019-08-02 13:27 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-02 13:26 [PATCH AUTOSEL 4.4 01/17] netfilter: nfnetlink: avoid deadlock due to synchronous request_module Sasha Levin
2019-08-02 13:26 ` [PATCH AUTOSEL 4.4 02/17] iscsi_ibft: make ISCSI_IBFT dependson ACPI instead of ISCSI_IBFT_FIND Sasha Levin
2019-08-02 13:26 ` [PATCH AUTOSEL 4.4 03/17] mac80211: don't warn about CW params when not using them Sasha Levin
2019-08-02 13:26 ` [PATCH AUTOSEL 4.4 04/17] hwmon: (nct6775) Fix register address and added missed tolerance for nct6106 Sasha Levin
2019-08-02 13:26 ` [PATCH AUTOSEL 4.4 05/17] x86/mm: Check for pfn instead of page in vmalloc_sync_one() Sasha Levin
2019-08-02 13:26 ` [PATCH AUTOSEL 4.4 06/17] x86/mm: Sync also unmappings in vmalloc_sync_all() Sasha Levin
2019-08-02 13:26 ` [PATCH AUTOSEL 4.4 07/17] cpufreq/pasemi: fix use-after-free in pas_cpufreq_cpu_init() Sasha Levin
2019-08-02 13:26 ` Sasha Levin [this message]
2019-08-02 13:26 ` [PATCH AUTOSEL 4.4 09/17] ALSA: compress: Fix regression on compressed capture streams Sasha Levin
2019-08-02 13:26 ` [PATCH AUTOSEL 4.4 10/17] ALSA: compress: Prevent bypasses of set_params Sasha Levin
2019-08-02 13:26 ` [PATCH AUTOSEL 4.4 11/17] ALSA: compress: Be more restrictive about when a drain is allowed Sasha Levin
2019-08-02 13:26 ` [PATCH AUTOSEL 4.4 12/17] perf probe: Avoid calling freeing routine multiple times for same pointer Sasha Levin
2019-08-02 13:26 ` [PATCH AUTOSEL 4.4 13/17] ARM: davinci: fix sleep.S build error on ARMv4 Sasha Levin
2019-08-02 19:02 ` Arnd Bergmann
2019-08-02 13:26 ` [PATCH AUTOSEL 4.4 14/17] scsi: megaraid_sas: fix panic on loading firmware crashdump Sasha Levin
2019-08-02 13:26 ` [PATCH AUTOSEL 4.4 15/17] scsi: ibmvfc: fix WARN_ON during event pool release Sasha Levin
2019-08-02 13:26 ` [PATCH AUTOSEL 4.4 16/17] tty/ldsem, locking/rwsem: Add missing ACQUIRE to read_failed sleep loop Sasha Levin
2019-08-02 13:26 ` [PATCH AUTOSEL 4.4 17/17] perf/core: Fix creating kernel counters for PMUs that override event->cpu Sasha Levin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190802132635.14885-8-sashal@kernel.org \
--to=sashal@kernel.org \
--cc=heiko.carstens@de.ibm.com \
--cc=jremus@linux.ibm.com \
--cc=jwi@linux.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome