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>