2018-03-09 16:21+0100, Vitaly Kuznetsov: > Radim Krčmář <rkrcmar@xxxxxxxxxx> writes: > > This looks like it solves the problem when we get two SINTs with the > > same vector back-to-back , but shouldn't these bits really be cleared on > > EOI (either auto or manual)? > > Hmm, > > I was trying to address the following issue: guest programs SynIC's > SINTx with some vector but later re-programs it with a different > one. Without the patch synic->vec_bitmap and synic->auto_eoi_bitmap keep > stale data. If there's no concurrent interrupt than we're safe, but what > happens if there is one... > > kvm_hv_synic_send_eoi() already goes through all SINTx but we already > updated vector so it won't find any. We could've added something like > 'old_vector' but what if the request with this vector came _after_ we > re-programed SynIC (and, so, it wasn't meant to be serviced by SynIC?)? I now read that TLFS puts the responsitiblity on guest OS when toggling auto-EOI, so let's assume that the OS is to blame for disabling/changing vectors with pending interrupts as well. Applied all, thanks.