Re: [PATCH v15 02/15] irqdomain: Add IRQ_DOMAIN_FLAG_MSI_IMMUTABLE and irq_domain_is_msi_immutable()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, Mar 01, 2025 at 11:10:35AM +0000, Marc Zyngier wrote:
> On Tue, 11 Feb 2025 19:21:55 +0000,
> Frank Li <Frank.Li@xxxxxxx> wrote:
> >
> > Add the flag IRQ_DOMAIN_FLAG_MSI_IMMUTABLE and the API function
> > irq_domain_is_msi_immutable() to check if the MSI controller retains an
> > immutable address/data pair during irq_set_affinity().
> >
> > Ensure compatibility with MSI users like PCIe Endpoint Doorbell, which
> > require the address/data pair to remain unchanged after setup. Use this
> > function to verify if the MSI controller is immutable.
>
> Why is that a requirement? Why should a driver even care?

At v9, there were detail discussion about this
https://lore.kernel.org/all/87v7w0s9a8.ffs@tglx/

let me summary:

Host driver workflow like:

1. read address/data from shared memory (PC bar<n>)
2. write data to address to trigger doorbell.

1 and 2 is not atomic. So EP side may call set_affinity function during 1
and 2, address/data may be changed in some MSI provider, so 2 write to
previous address/data pair, which may not existed or map to other place and
cause write to unexpected place.

Frank

>
> 	M.
>
> --
> Without deviation from the norm, progress is not possible.




[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux