Re: [PATCH v3 2/4] KVM: x86: Use vector-hashing to deliver lowest-priority interrupts

From: rkrcmar@xxxxxxxxxx
Date: Thu Jan 21 2016 - 12:21:17 EST


2016-01-21 05:33+0000, Wu, Feng:
>> From: linux-kernel-owner@xxxxxxxxxxxxxxx [mailto:linux-kernel-
>> owner@xxxxxxxxxxxxxxx] On Behalf Of Yang Zhang
>> On 2016/1/20 9:42, Feng Wu wrote:
>> > + /*
>> > + * We may find a hardware disabled LAPIC here, if
>> that
>> > + * is the case, print out a error message once for each
>> > + * guest and return.
>> > + */
>> > + if (!dst[idx-1] &&
>> > + (kvm->arch.disabled_lapic_found == 0)) {
>> > + kvm->arch.disabled_lapic_found = 1;
>> > + printk(KERN_ERR
>> > + "Disabled LAPIC found during irq
>> injection\n");
>> > + goto out;
>>
>> What does "goto out" mean? Inject successfully or fail? According the
>> value of ret which is set to ture here, it means inject successfully but

(true actually means that fast path did the job and slow path isn't
needed.)

>> i = -1.

(I think there isn't a practical difference between *r=-1 and *r=0.)

> Oh, I didn't notice 'ret' is initialized to true, I thought it was initialized
> to false like another function, I should add a "ret = false' here. We should
> failed to inject the interrupt since hardware disabled LAPIC is found.

'ret = true' is the better one. We know that the interrupt is not
deliverable [1], so there's no point in trying to deliver with the slow
path. We behave similarly when the interrupt targets a single disabled
APIC.

---
1: Well ... it's possible that slowpath would deliver it thanks to
different handling of disabled APICs, but it's undefined behavior,
so it doesn't matter matter if we don't try.