On 06/06/2019 09:17, Jan Beulich wrote:
>>>> On 05.06.19 at 19:15, <andrew.coop...@citrix.com> wrote:
>> On 08/05/2019 13:46, Jan Beulich wrote:
>>> @@ -1130,8 +1130,10 @@ static void irq_guest_eoi_timer_fn(void
>>>          }
>>>      }
>>>  
>>> -    if ( action->in_flight != 0 )
>>> -        goto out;
>>> +    if ( action->in_flight )
>>> +        printk(XENLOG_G_WARNING
>>> +               "IRQ%d: %d handlers still in flight at forced EOI\n",
>>> +               desc->irq, action->in_flight);
>> AFACIT, this condition can be triggered by a buggy/malicious guest, by
>> it simply ignoring or masking the line interrupt at the vIO-APIC.
> I don't think it can, no. Or else the ASSERT_UNREACHABLE() below
> here would be invalid to add.

Which ASSERT_UNREACHABLE() ?  I know Roger asked for one, but I don't
see it anywhere in the code.

>
>> The message would be far more useful if it identified the domain in
>> question, which looks like it can be obtained from the middle of the loop.
> That very loop has just taken care of decrementing ->in_flight for
> all such guests.
>
> Also note that there could be more than one offending domain, for
> shared IRQs. Plus the loop you're referring to can specifically _not_
> be used for identifying the domain(s), because for the ones
> processed there we _did_ decrement ->in_flight. If this message
> gets logged, we simply have no idea why ->in_flight is _still_ non-
> zero. This could be a BUG_ON(), but it seems more in line with our
> general idea of how we would like to deal with such cases to try
> and keep the system running here in release builds.

Ok - lets go with this for now.  It is a net improvement, and we can
evaluate the guest-triggerability at a later point.

Reviewed-by: Andrew Cooper <andrew.coop...@citrix.com>

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

Reply via email to