• Juergen Gross's avatar
    xen/pciback: use lateeoi irq binding · c2711441
    Juergen Gross authored
    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: default avatarJulien Grall <julien@xen.org>
    Signed-off-by: default avatarJuergen Gross <jgross@suse.com>
    Reviewed-by: default avatarJan Beulich <jbeulich@suse.com>
    Reviewed-by: default avatarWei Liu <wl@xen.org>
    c2711441
pci_stub.c 42 KB