Re: [PATCH net-next] ionic: advertise 52-bit addressing limitation for MSI-X

From: Nelson, Shannon
Date: Thu May 30 2024 - 18:34:22 EST


On 5/30/2024 2:40 PM, David Christensen wrote:

Current ionic devices only support 52 internal physical address
lines. This is sufficient for x86_64 systems which have similar
limitations but does not apply to all other architectures,
notably IBM POWER (ppc64). To ensure that MSI/MSI-X vectors are
not set outside the physical address limits of the NIC, set the
recently added no_64bit_msi value of the pci_dev structure
during device probe.

Signed-off-by: David Christensen <drc@xxxxxxxxxxxxx>
---
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c b/drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
index 6ba8d4aca0a0..1e7f507f461f 100644
--- a/drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
+++ b/drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
@@ -326,6 +326,10 @@ static int ionic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
goto err_out;
}

+ /* Ensure MSI/MSI-X interrupts lie within addressable physical memory */
+ if (IONIC_ADDR_LEN < 64)
+ pdev->no_64bit_msi = 1;
+

Thanks, David, for the reminder that we have something like this in our out-of-tree driver. I'm far from being a DMA expert, but this seems limiting for those architectures that don't need it, and I would have thought that setting the dma mask would already be the way of telling the system what our limitation was so there wouldn't be this problem. (I'm sure someone will point out the error in my thinking...)

Perhaps to solve your problem with less limitation on others we could do something like:

#ifdef CONFIG_PPC64
pdev->no_64bit_msi = 1;
#endif

Thanks,
sln

err = ionic_setup_one(ionic);
if (err)
goto err_out;
--
2.43.0