x86/dpci: remove the dpci EOI timer
authorRoger Pau Monné <roger.pau@citrix.com>
Tue, 20 Apr 2021 09:36:54 +0000 (11:36 +0200)
committerJan Beulich <jbeulich@suse.com>
Tue, 20 Apr 2021 09:36:54 +0000 (11:36 +0200)
commit730d0f6082e66eefae64f35bc62e51fc54d02d55
treeab77bb5901c997cda42a8eb0166a356b70e3cc91
parent2d494f2198d7909a394085d079475bb099d7afe7
x86/dpci: remove the dpci EOI timer

Current interrupt pass though code will setup a timer for each
interrupt injected to the guest that requires an EOI from the guest.
Such timer would perform two actions if the guest doesn't EOI the
interrupt before a given period of time. The first one is deasserting
the virtual line, the second is perform an EOI of the physical
interrupt source if it requires such.

The deasserting of the guest virtual line is wrong, since it messes
with the interrupt status of the guest. This seems to have been done
in order to compensate for missing deasserts when certain interrupt
controller actions are performed. The original motivation of the
introduction of the timer was to fix issues when a GSI was shared
between different guests. We believe that other changes in the
interrupt handling code (ie: proper propagation of EOI related actions
to dpci) will have fixed such errors now.

Performing an EOI of the physical interrupt source is redundant, since
there's already a timer that takes care of this for all interrupts,
not just the HVM dpci ones, see irq_guest_action_t struct eoi_timer
field.

Since both of the actions performed by the dpci timer are not
required, remove it altogether.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
xen/drivers/passthrough/vtd/x86/hvm.c
xen/drivers/passthrough/x86/hvm.c
xen/include/asm-x86/hvm/irq.h
xen/include/xen/iommu.h