All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/3] pci_auto: Downgrade prefetch if necessary
@ 2025-02-26 13:56 Patrick Rudolph
  2025-02-26 13:56 ` [PATCH 2/3] emulation: qemu-sbsa: Select SYS_PCI_64BIT Patrick Rudolph
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Patrick Rudolph @ 2025-02-26 13:56 UTC (permalink / raw)
  To: Tom Rini; +Cc: Patrick Rudolph, u-boot

Legacy PCI devices, like qemu's Bochs VGA device, are allowed to have
prefetchable 32-bit BARs, while PCIe devices are not allowed to have
32-bit prefetchable BARs. Typically prefetchable BARs are 64-bit and
typically the prefetch MMIO window is also 64-bit and placed above
4GiB, as it's the case on qemu sbsa-ref.

Currently the U-Boot code assumes that prefetchable BARs are
64-bit BARs and always tries to assign them into the prefetch
MMIO window.

When a 32-bit BAR is marked as prefetch, but the prefetch area is
not within the first 4GiB of the address space, then downgrade the
BAR and place it in the non-prefetch MMIO window.

For prefetch BARs there's no downside on being placed in non prefetch
MMIO areas, besides the possible slower performance when a driver tries
to map it Write-Combine.

TEST: Fixes pci_auto on QEMU sbsa-ref fails to autoconfigure BAR0.

Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com>
---
 drivers/pci/pci_auto.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/pci/pci_auto.c b/drivers/pci/pci_auto.c
index 90f81886445..e68e31a8227 100644
--- a/drivers/pci/pci_auto.c
+++ b/drivers/pci/pci_auto.c
@@ -107,7 +107,8 @@ static void dm_pciauto_setup_device(struct udevice *dev,
 			}
 
 			if (prefetch &&
-			    (bar_response & PCI_BASE_ADDRESS_MEM_PREFETCH))
+			    (bar_response & PCI_BASE_ADDRESS_MEM_PREFETCH) &&
+			    (found_mem64 || prefetch->bus_lower < 0x100000000ULL))
 				bar_res = prefetch;
 			else
 				bar_res = mem;
-- 
2.48.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2025-03-12 19:43 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-02-26 13:56 [PATCH 1/3] pci_auto: Downgrade prefetch if necessary Patrick Rudolph
2025-02-26 13:56 ` [PATCH 2/3] emulation: qemu-sbsa: Select SYS_PCI_64BIT Patrick Rudolph
2025-02-26 13:56 ` [PATCH 3/3] emulation: qemu-sbsa: Enable PCI enumeration Patrick Rudolph
2025-03-12 19:43 ` [PATCH 1/3] pci_auto: Downgrade prefetch if necessary Tom Rini

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.