Re: [PATCH] KVM: x86: Add lowest-priority support for vt-d posted-interrupts

From: Radim KrcmÃr
Date: Fri Dec 11 2015 - 09:37:59 EST


2015-12-10 01:52+0000, Wu, Feng:
>> From: Radim KrÄmÃÅ [mailto:rkrcmar@xxxxxxxxxx]
>> (Physical xAPIC+x2APIC mode is still somewhat reasonable and xAPIC CPUs
>> start with LDR=0, which means that operating system doesn't need to
>> utilize mixed mode, as defined by KVM, when switching to x2APIC.)
>
> I think you mean Physical xAPIC+Physical x2APIC mode, right? For physical
> mode, we don't use LDR in any case, do we? So in physical mode, we only
> use the APIC ID, that is why they can be mixed, is my understanding correct?

Yes. (Technically, physical and logical addressing is always active in
APIC, but xAPIC must have nonzero LDR to accept logical interrupts[1].)
If all xAPIC LDRs are zero, KVM doesn't enter a "mixed mode" even if
some are xAPIC and some x2APIC [2].

1: Real LAPICs probably do not accept broadcasts on APICs where LDR=0,
KVM LAPICs do, but lowest priority broadcast is not allowed anyway,
so PI doesn't care.

2: KVM allows OS-writeable APIC ID, which complicates things and real
hardware probably doesn't allow it because of that ... we'd be saner
with RO APIC ID, but it's not that bad. (And no major OS does it :])

>> the system uses cluster xAPIC, OS should set DFR before LDR, which
>> doesn't trigger mixed mode either.)
>
> Just curious, if the APIC is software disabled and it is in xAPIC mode. OS sets
> different value for DFR for different APICs, then when OS sets LDR, KVM can
> trigger mixed flat and cluster mode, right?

Exactly.
APICs with zeroed LDR are ignored, so KVM will use the slow-path for
delivery (= trigger mixed mode) at the moment the first APIC with
different DFR is configured.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/