Messages in this thread | | | Subject | Re: x86/apic: MSI address malformed for "flat" driver | From | Cyril Novikov <> | Date | Mon, 10 Sep 2018 23:02:46 -0700 |
| |
On 9/7/2018 12:11 PM, Thomas Gleixner wrote: > On Thu, 6 Sep 2018, Philipp Eppelt wrote: >> >> The "flat" driver defines the MSI addressing scheme to be used as >> logical addressing in flat mode. The MSI msg address is composed >> accordingly, but sets MSI_ADDR_REDIRECTION_CPU which is a zero at bit[3]. > > Correct. That's what it means: > > * When RH is 0, the interrupt is directed to the processor listed in the > Destination ID field. > > So for DM: > > * If RH is 0, then the DM bit is ignored and the message is sent ahead > independent of whether the physical or logical destination mode is > used. > > which is means that the delivery does not do any magic redirections, > because the Redirection Hint is off. If RH is set, then the delivery can > redirect according to the rules in the DM section. We are not using that > because we want targeted single CPU delivery. > > The interpretation of the DID field is purely depending on the local APIC > itself by matching the APIC ID against the DID field. And the local APIC ID > of CPU0 is 1 << 0, i.e. 0x1 which matches the MSI message you see.
I believe you are wrong here and the local APIC ID of CPU0 is 0.
processor : 0 vendor_id : GenuineIntel ... physical id : 0 siblings : 8 core id : 0 cpu cores : 4 apicid : 0
The fact that the code works means that DM is not ignored when RH is 0. In other words, RH=0 DM=1 means logical destination mode.
-- Cyril
| |