From 04a61c413d8f56171eff45929174b441211331c6 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Tue, 14 Oct 2025 14:44:56 +0100 Subject: [PATCH] [ena] Use pci_bar_set() to place device within bridge memory window Use pci_bar_set() when we need to set a device base address (on instance types such as c6i.metal where the BIOS fails to do so), so that 64-bit BARs will be handled automatically. This particular issue has so far been observed only on 6th generation instances. These use 32-bit BARs, and so the lack of support for handling 64-bit BARs has not caused any observable issue. Signed-off-by: Michael Brown --- src/drivers/net/ena.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/drivers/net/ena.c b/src/drivers/net/ena.c index 89483eae1..dc822dcf6 100644 --- a/src/drivers/net/ena.c +++ b/src/drivers/net/ena.c @@ -1102,7 +1102,7 @@ static int ena_membase ( struct ena_nic *ena, struct pci_device *pci ) { } /* Place device at start of memory window */ - pci_write_config_dword ( pci, PCI_BASE_ADDRESS_0, bridge->membase ); + pci_bar_set ( pci, PCI_BASE_ADDRESS_0, bridge->membase ); pci->membase = bridge->membase; DBGC ( ena, "ENA %p at " PCI_FMT " claiming bridge " PCI_FMT " mem " "%08x\n", ena, PCI_ARGS ( pci ), PCI_ARGS ( bridge->pci ),