]> www.infradead.org Git - users/hch/block.git/commit
s390/qdio: reduce SLSB writes during Input Queue processing
authorJulian Wiedmann <jwi@linux.ibm.com>
Tue, 21 Apr 2020 10:35:00 +0000 (11:35 +0100)
committerVasily Gorbik <gor@linux.ibm.com>
Tue, 16 Jun 2020 11:44:04 +0000 (13:44 +0200)
commita87ee11607b853a31c8612d9f47b7fe974953b77
tree8f135b6eb0873fe2d890f27c0ad1716151cb483e
parent4bae85b620dc1f7aa4d2338b923d9d9b394b58c4
s390/qdio: reduce SLSB writes during Input Queue processing

Streamline the processing of QDIO Input Queues, and remove some
intermittent SLSB updates (no deleting of old ACKs, no redundant
transitions through NOT_INIT).

Rather than counting ACKs, we now keep track of the whole batch of
SBALs that were completed during the current polling cycle.
Most completed SBALs stay in their initial state (ie. PRIMED or ERROR),
except that the most recent SBAL in each sub-run is ACKed for
IRQ reduction.

The only logic changes happen in inbound_handle_work(), the other
delta is just a renaming of the variables that track the SBAL batch.

Note that in particular we don't need to flip the _oldest_ SBAL to
an idle state (eg. NOT_INIT or ACKed) as a guard against catching our
own tail. Since get_inbound_buffer_frontier() will never scan more than
the remaining nr_buf_used SBALs, this scenario just doesn't occur.

Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
drivers/s390/cio/qdio.h
drivers/s390/cio/qdio_debug.c
drivers/s390/cio/qdio_main.c