On Tue, Oct 13 2020 at 12:51, David Woodhouse wrote:
> With that realisation, I've fixed the comment in my ext_dest_id branch
> to remove all mention of IRQ remapping. It now looks like this:
>
> static int x86_vector_select(struct irq_domain *d, struct irq_fwspec *fwspec,
>                            enum irq_domain_bus_token bus_token)
> {
>       /*
>        * HPET and I/OAPIC drivers use irq_find_matching_irqdomain()
>        * to find their parent irqdomain. For x86_vector_domain to be
>        * suitable, all CPUs in the system must be reachable by its
>        * x86_vector_msi_compose_msg() function. Which is only true
>        * in !x2apic mode, or in x2apic physical mode if APIC IDs were
>        * restricted to 8 or 15 bits at boot time. In those cases,
>        * 1<<15 will *not* be a valid APIC ID.
>        */
>       if (apic->apic_id_valid(1<<15))
>               return 0;
>
>       return x86_fwspec_is_ioapic(fwspec) || x86_fwspec_is_hpet(fwspec);
> }
>
> That makes it clearer that this isn't just some incestuous interaction
> with IRQ remapping — that APIC ID limit really is the basis on which
> this irqdomain, all by itself, makes the decision about whether it's
> capable of being the parent irqdomain to the requesting device.

Yes, that makes sense now.

Thanks,

        tglx

Reply via email to