Re: [PATCH v2] cxl/pci: Skip irq features if MSI/MSI-X are not supported

From: Dan Williams
Date: Thu Jan 18 2024 - 15:42:32 EST


Ira Weiny wrote:
> CXL 3.1 Section 3.1.1 states:
>
> "A Function on a CXL device must not generate INTx messages if
> that Function participates in CXL.cache protocol or CXL.mem
> protocols."
>
> The generic CXL memory driver only supports devices which use the
> CXL.mem protocol. The current driver attempts to allocate MSI/MSI-X
> vectors in anticipation of their need for mailbox interrupts or event
> processing. However, the above requirement does not require a device to
> support interrupts, only that they use MSI/MSI-X. For example, a device
> may disable mailbox interrupts and either be configured for firmware
> first or skip event processing and function.
>
> Dave Larsen reported that the following Intel / Agilex card does not
> support interrupts on function 0.
>
> CXL: Intel Corporation Device 0ddb (rev 01) (prog-if 10 [CXL Memory Device (CXL 2.x)])
>
> Rather than fail device probe if interrupts are not supported; flag that
> irqs are not enabled and avoid features which require interrupts.
> Emit messages appropriate for the situation to aid in debugging should
> device behavior be unexpected due to a failure to allocate vectors.
>
> Note that it is possible for a device to have host based event
> processing through polling. However, the driver does not support
> polling and it is not anticipated to be generally required. Leave that
> functionality to a future patch if such a device comes along.
>
> Reported-by: Dave Larsen <davelarsen58@xxxxxxxxx>
> Reviewed-by: Dave Jiang <dave.jiang@xxxxxxxxx>
> Reviewed-by: Fan Ni <fan.ni@xxxxxxxxxxx>
> Signed-off-by: Ira Weiny <ira.weiny@xxxxxxxxx>
> ---
> Changes in v2:
> - [djbw: add reported by and info about the card.]
> - [djbw: skip error reporting in the mailbox case.]
> - [djbw: clean up event message]
> - [iweiny: pick up tags]
> - Link to v1: https://lore.kernel.org/r/20240111-dont-fail-irq-v1-1-802c22a79ecb@xxxxxxxxx
> ---
> drivers/cxl/pci.c | 26 +++++++++++++++-----------
> 1 file changed, 15 insertions(+), 11 deletions(-)

Looks good, I consider this suitable as post -rc1 material. Will get it
queued once the merge window closes.