linux/drivers/xen/xen-pciback
Juergen Gross c2711441bc xen/pciback: use lateeoi irq binding
In order to reduce the chance for the system becoming unresponsive due
to event storms triggered by a misbehaving pcifront use the lateeoi irq
binding for pciback and unmask the event channel only just before
leaving the event handling function.

Restructure the handling to support that scheme. Basically an event can
come in for two reasons: either a normal request for a pciback action,
which is handled in a worker, or in case the guest has finished an AER
request which was requested by pciback.

When an AER request is issued to the guest and a normal pciback action
is currently active issue an EOI early in order to be able to receive
another event when the AER request has been finished by the guest.

Let the worker processing the normal requests run until no further
request is pending, instead of starting a new worker ion that case.
Issue the EOI only just before leaving the worker.

This scheme allows to drop calling the generic function
xen_pcibk_test_and_schedule_op() after processing of any request as
the handling of both request types is now separated more cleanly.

This is part of XSA-332.

Cc: stable@vger.kernel.org
Reported-by: Julien Grall <julien@xen.org>
Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Wei Liu <wl@xen.org>
2020-10-20 10:22:08 +02:00
..
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
conf_space.c xen/pci: Get rid of verbose_request and use dev_dbg() instead 2020-05-29 10:44:59 -05:00
conf_space.h xen-pciback: fix INTERRUPT_TYPE_* defines 2020-03-30 17:31:57 +02:00
conf_space_capability.c xen-pciback: optionally allow interrupt enable flag writes 2020-01-15 16:50:13 -06:00
conf_space_header.c xen/pci: Get rid of verbose_request and use dev_dbg() instead 2020-05-29 10:44:59 -05:00
conf_space_quirks.c xen-pciback: Use dev_printk() when possible 2020-05-27 17:27:37 -05:00
conf_space_quirks.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
passthrough.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
pci_stub.c xen/pciback: use lateeoi irq binding 2020-10-20 10:22:08 +02:00
pciback.h xen/pciback: use lateeoi irq binding 2020-10-20 10:22:08 +02:00
pciback_ops.c xen/pciback: use lateeoi irq binding 2020-10-20 10:22:08 +02:00
vpci.c xen-pciback: Use dev_printk() when possible 2020-05-27 17:27:37 -05:00
xenbus.c xen/pciback: use lateeoi irq binding 2020-10-20 10:22:08 +02:00