Re: [PATCH RFC 11/13] iommu/vt-d: Add an irq_chip for posted MSIs

From: Thomas Gleixner
Date: Wed Dec 06 2023 - 15:44:08 EST


On Sat, Nov 11 2023 at 20:16, Jacob Pan wrote:
> static void fill_msi_msg(struct msi_msg *msg, u32 index, u32 subhandle)
> {
> memset(msg, 0, sizeof(*msg));
> @@ -1361,7 +1397,7 @@ static int intel_irq_remapping_alloc(struct irq_domain *domain,
>
> irq_data->hwirq = (index << 16) + i;
> irq_data->chip_data = ird;
> - irq_data->chip = &intel_ir_chip;
> + irq_data->chip = posted_msi_supported() ? &intel_ir_chip_post_msi : &intel_ir_chip;

This is just wrong because you change the chip to posted for _ALL_
domains unconditionally.

The only domains which want this chip are the PCI/MSI domains. And those
are distinct from the domains which serve IO/APIC, HPET, no?

So you can set that chip only for PCI/MSI and just let IO/APIC, HPET
domains keep the original chip, which spares any modification of the
IO/APIC domain.