|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH for-4.14 6/8] x86/vpt: fix injection to remote vCPU
On 18.06.2020 19:14, Roger Pau Monné wrote:
> On Thu, Jun 18, 2020 at 05:12:17PM +0200, Jan Beulich wrote:
>> On 12.06.2020 17:56, Roger Pau Monne wrote:
>>> case PTSRC_ioapic:
>>> pt_vector = hvm_ioapic_assert(v->domain, irq, level);
>>> - if ( pt_vector < 0 || !vlapic_test_irq(vcpu_vlapic(v), pt_vector) )
>>> - {
>>> - pt_vector = -1;
>>> - if ( level )
>>> + if ( pt_vector < 0 )
>>> + return pt_vector;
>>> +
>>> + break;
>>> + }
>>> +
>>> + ASSERT(pt_vector >= 0);
>>> + if ( !vlapic_test_irq(vcpu_vlapic(v), pt_vector) )
>>> + {
>>> + time_cb *cb = NULL;
>>> + void *cb_priv;
>>> +
>>> + /*
>>> + * Vector has been injected to a different vCPU, call pt_irq_fired
>>> and
>>> + * execute the callback, since the destination vCPU(s) won't call
>>> + * pt_intr_post for it.
>>
>> ... this isn't the only reason to come here. Beyond what the comment
>> says there is the hvm_domain_use_pirq() check in assert_gsi() which
>> would similarly result in the IRR bit not observed set here. At the
>> very least these cases want mentioning; I have to admit that I'm not
>> entirely clear yet whether your handling is correct for both, or
>> whether the information needs to be propagated into here.
>
> I always forget about that weird pirq stuff (and I'm refraining from
> using other adjectives) that we have for HVM.
>
> AFAICT vpt is already broken when trying to inject interrupts
> generated from it over an event channel. hvm_ioapic_assert will return
> whatever garbage is in the IO-APIC entry, which will likely not be
> initialized because the GSI is routed over an event channel.
>
> I really have no idea what hvm_ioapic_assert should return in that
> case, the event channel callback vector maybe?
>
> Maybe just returning -1 would be fine, a guest using this routing of
> pirqs over event channels shouldn't be using any of the emulated
> timers, and hence vpt is not required to be functional in that case?
I would guess(!) that -1 ought to be fine. But this whole thing
escapes me as well, so let's ask Stefano, who iirc was who
introduced this.
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |