git: bd93b5f79ab4 - main - pci_host_generic: stop address translation in bus_alloc_resource
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 26 Sep 2022 19:26:03 UTC
The branch main has been updated by kevans:
URL: https://cgit.FreeBSD.org/src/commit/?id=bd93b5f79ab489fb0ed6ab25d6be48242eb8c028
commit bd93b5f79ab489fb0ed6ab25d6be48242eb8c028
Author: Kyle Evans <kevans@FreeBSD.org>
AuthorDate: 2022-09-26 19:24:21 +0000
Commit: Kyle Evans <kevans@FreeBSD.org>
CommitDate: 2022-09-26 19:25:13 +0000
pci_host_generic: stop address translation in bus_alloc_resource
Translating the provided range prior to rman_reserve_resource(9) is
decidedly wrong; the caller may be trying to do a wildcard allocation,
for which the implementation is expected to DTRT and clamp the range to
what's actually feasible.
We don't use the resulting translation here anyways, so just remove it
entirely -- the rman in the default implementation is derived from
sc->ranges, so the translation should trivially succeed every time as
long as the reservation succeeded. If something has gone awry in a
derived driver, we'll detect it when we translate prior to activation,
so there's likely no diagnostic value in retaining the translation after
reservation either.
Reviewed by: andrew
Noticed by: jhb
Differential Revision: https://reviews.freebsd.org/D36618
---
sys/dev/pci/pci_host_generic.c | 11 -----------
1 file changed, 11 deletions(-)
diff --git a/sys/dev/pci/pci_host_generic.c b/sys/dev/pci/pci_host_generic.c
index 31462a198541..fbc9c2e1d3c2 100644
--- a/sys/dev/pci/pci_host_generic.c
+++ b/sys/dev/pci/pci_host_generic.c
@@ -436,7 +436,6 @@ pci_host_generic_core_alloc_resource(device_t dev, device_t child, int type,
struct generic_pcie_core_softc *sc;
struct resource *res;
struct rman *rm;
- rman_res_t phys_start, phys_end;
sc = device_get_softc(dev);
@@ -452,16 +451,6 @@ pci_host_generic_core_alloc_resource(device_t dev, device_t child, int type,
return (BUS_ALLOC_RESOURCE(device_get_parent(dev), child,
type, rid, start, end, count, flags));
- /* Translate the address from a PCI address to a physical address */
- if (generic_pcie_translate_resource_common(dev, type, start, end,
- &phys_start, &phys_end) != 0) {
- device_printf(dev,
- "Failed to translate resource %jx-%jx type %x for %s\n",
- (uintmax_t)start, (uintmax_t)end, type,
- device_get_nameunit(child));
- return (NULL);
- }
-
if (bootverbose) {
device_printf(dev,
"rman_reserve_resource: start=%#jx, end=%#jx, count=%#jx\n",