linux/drivers/s390/cio
Julian Wiedmann 0a6e634535 s390/qdio: extend polling support to multiple queues
When the support for polling drivers was initially added, it only
considered Input Queue 0. But as QDIO interrupts are actually for the
full device and not a single queue, this doesn't really fit for
configurations where multiple Input Queues are used.

Rework the qdio code so that interrupts for a polling driver are not
split up into actions for each queue. Instead deliver the interrupt as
a single event, and let the driver decide which queue needs what action.

When re-enabling the QDIO interrupt via qdio_start_irq(), this means
that the qdio code needs to
(1) put _all_ eligible queues back into a state where they raise IRQs,
(2) and afterwards check _all_ eligible queues for new work to bridge
    the race window.

On the qeth side of things (as the only qdio polling driver), we can now
add CQ polling support to the main NAPI poll routine. It doesn't consume
NAPI budget, and to avoid hogging the CPU we yield control after
completing one full queue worth of buffers.
The subsequent qdio_start_irq() will check for any additional work, and
have us re-schedule the NAPI instance accordingly.

Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
Acked-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2020-03-25 12:07:15 -07:00
..
airq.c s390/airq: use DMA memory for adapter interrupts 2019-06-15 12:25:05 +02:00
blacklist.c s390/cio: cio_ignore_proc_seq_next should increase position index 2020-02-17 18:01:57 +01:00
blacklist.h s390: add a few more SPDX identifiers 2017-12-05 07:51:09 +01:00
ccwgroup.c s390 updates for the 5.4 merge window #2 2019-09-26 11:30:16 -07:00
ccwreq.c s390/cio: add basic protected virtualization support 2019-06-15 12:25:00 +02:00
chp.c s390/cio: use kobj_to_dev() API 2020-02-17 18:01:57 +01:00
chp.h s390/chsc: query utility strings via fmt3 channel path descriptor 2018-03-26 16:13:16 +02:00
chsc_sch.c driver_find_device: Unify the match function with class_find_device() 2019-06-24 05:22:31 +02:00
chsc_sch.h
chsc.c s390/cio: move struct node_descriptor to cio.h 2019-06-19 17:54:27 +02:00
chsc.h s390/cio: add function chsc_sgib() 2019-02-05 14:29:23 +01:00
cio_debug.h
cio.c s390: show statistics for MSI IRQs 2019-04-29 10:47:01 +02:00
cio.h s390/cio: fix virtio-ccw DMA without PV 2019-10-10 10:49:46 +02:00
cmf.c mm: remove include/linux/bootmem.h 2018-10-31 08:54:16 -07:00
crw.c
css.c proc: convert everything to "struct proc_ops" 2020-02-04 03:05:26 +00:00
css.h s390/css: reduce stsch calls 2018-07-17 07:27:55 +02:00
device_fsm.c s390/cio: add basic protected virtualization support 2019-06-15 12:25:00 +02:00
device_id.c s390/cio: add basic protected virtualization support 2019-06-15 12:25:00 +02:00
device_ops.c s390/dasd/cio: Interpret ccw_device_get_mdc return value correctly 2019-12-20 11:52:01 -07:00
device_pgid.c s390/cio: add basic protected virtualization support 2019-06-15 12:25:00 +02:00
device_status.c s390/cio: add basic protected virtualization support 2019-06-15 12:25:00 +02:00
device.c s390/cio: fix virtio-ccw DMA without PV 2019-10-10 10:49:46 +02:00
device.h
eadm_sch.c s390: cio: add SPDX identifiers to the remaining files 2017-11-24 14:28:41 +01:00
eadm_sch.h
fcx.c
idset.c
idset.h
io_sch.h s390/cio: add basic protected virtualization support 2019-06-15 12:25:00 +02:00
ioasm.c s390/cio: export hsch to modules 2019-04-24 14:18:51 +02:00
ioasm.h s390: assume diag308 set always works 2018-04-10 07:38:59 +02:00
isc.c s390: cio: add SPDX identifiers to the remaining files 2017-11-24 14:28:41 +01:00
itcw.c s390/cio: fix kernel-doc usage 2018-02-05 07:34:52 +01:00
Makefile vfio-ccw: Refactor how the traces are built 2019-10-17 11:35:56 +02:00
orb.h
qdio_debug.c s390/qdio: extend polling support to multiple queues 2020-03-25 12:07:15 -07:00
qdio_debug.h
qdio_main.c s390/qdio: extend polling support to multiple queues 2020-03-25 12:07:15 -07:00
qdio_setup.c s390/qdio: extend polling support to multiple queues 2020-03-25 12:07:15 -07:00
qdio_thinint.c s390/qdio: extend polling support to multiple queues 2020-03-25 12:07:15 -07:00
qdio.h s390/qdio: extend polling support to multiple queues 2020-03-25 12:07:15 -07:00
scm.c bus_find_device: Unify the match callback with class_find_device 2019-06-24 05:22:31 +02:00
trace.c s390/cio: Remove tracing for rchp instruction 2019-05-08 15:01:22 +02:00
trace.h s390/cio: Remove tracing for rchp instruction 2019-05-08 15:01:22 +02:00
vfio_ccw_async.c vfio-ccw: make vfio_ccw_async_region_ops static 2019-07-29 18:05:03 +02:00
vfio_ccw_cp.c vfio-ccw: Set pa_nr to 0 if memory allocation fails for pa_iova_pfn 2019-07-15 14:16:37 +02:00
vfio_ccw_cp.h vfio-ccw: Refactor how the traces are built 2019-10-17 11:35:56 +02:00
vfio_ccw_drv.c vfio-ccw: fix error return code in vfio_ccw_sch_init() 2019-09-05 15:18:15 +02:00
vfio_ccw_fsm.c vfio-ccw: Rework the io_fctl trace 2019-10-17 11:37:24 +02:00
vfio_ccw_ops.c vfio-ccw: add some logging 2019-08-23 12:53:32 +02:00
vfio_ccw_private.h vfio-ccw: Trace the FSM jumptable 2019-10-17 11:36:29 +02:00
vfio_ccw_trace.c vfio-ccw: Rework the io_fctl trace 2019-10-17 11:37:24 +02:00
vfio_ccw_trace.h vfio-ccw: Use the correct style for SPDX License Identifier 2020-01-07 10:37:34 +01:00