Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 17 Oct 2022 15:40:52 GMT
From:      Kyle Evans <kevans@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
Subject:   git: 2258cf36241e - stable/13 - pci_host_generic: stop address translation in bus_alloc_resource
Message-ID:  <202210171540.29HFeqPU016432@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch stable/13 has been updated by kevans:

URL: https://cgit.FreeBSD.org/src/commit/?id=2258cf36241e02f8c182dae2b2d9cc93ac1b6fdc

commit 2258cf36241e02f8c182dae2b2d9cc93ac1b6fdc
Author:     Kyle Evans <kevans@FreeBSD.org>
AuthorDate: 2022-09-26 19:24:21 +0000
Commit:     Kyle Evans <kevans@FreeBSD.org>
CommitDate: 2022-10-17 15:36:59 +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
    
    (cherry picked from commit bd93b5f79ab489fb0ed6ab25d6be48242eb8c028)
---
 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 f23173ce0a43..c4099387c0cf 100644
--- a/sys/dev/pci/pci_host_generic.c
+++ b/sys/dev/pci/pci_host_generic.c
@@ -420,7 +420,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);
 
@@ -436,16 +435,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(dev, type, start, end, &phys_start,
-	    &phys_end)) {
-		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",



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202210171540.29HFeqPU016432>