pci_host_generic: Enumerate resource ranges under bootverbose

Previously ranges were only enumerated for the FDT attachment but not
ACPI.  This commit moves the enumeration to the shared attach routine
so it is done for both.  While here, don't list empty ranges but do
include the resource type for each range.

Reviewed by:	andrew
Differential Revision:	https://reviews.freebsd.org/D44132
This commit is contained in:
John Baldwin 2024-03-01 14:20:10 -08:00
parent 7485926e09
commit b28670018d
2 changed files with 8 additions and 11 deletions

View file

@ -83,6 +83,7 @@ pci_host_generic_core_attach(device_t dev)
uint64_t phys_base;
uint64_t pci_base;
uint64_t size;
const char *range_descr;
char buf[64];
int domain, error;
int flags, rid, tuple, type;
@ -179,18 +180,21 @@ pci_host_generic_core_attach(device_t dev)
switch (FLAG_TYPE(sc->ranges[tuple].flags)) {
case FLAG_TYPE_PMEM:
sc->has_pmem = true;
range_descr = "prefetch";
flags = RF_PREFETCHABLE;
type = SYS_RES_MEMORY;
error = rman_manage_region(&sc->pmem_rman,
pci_base, pci_base + size - 1);
break;
case FLAG_TYPE_MEM:
range_descr = "memory";
flags = 0;
type = SYS_RES_MEMORY;
error = rman_manage_region(&sc->mem_rman,
pci_base, pci_base + size - 1);
break;
case FLAG_TYPE_IO:
range_descr = "I/O port";
flags = 0;
type = SYS_RES_IOPORT;
error = rman_manage_region(&sc->io_rman,
@ -219,6 +223,10 @@ pci_host_generic_core_attach(device_t dev)
error = ENXIO;
goto err_rman_manage;
}
if (bootverbose)
device_printf(dev,
"PCI addr: 0x%jx, CPU addr: 0x%jx, Size: 0x%jx, Type: %s\n",
pci_base, phys_base, size, range_descr);
}
return (0);

View file

@ -183,7 +183,6 @@ parse_pci_mem_ranges(device_t dev, struct generic_pcie_core_softc *sc)
int nbase_ranges;
phandle_t node;
int i, j, k;
int tuple;
node = ofw_bus_get_node(dev);
@ -239,16 +238,6 @@ parse_pci_mem_ranges(device_t dev, struct generic_pcie_core_softc *sc)
sc->ranges[i].size = 0;
}
if (bootverbose) {
for (tuple = 0; tuple < MAX_RANGES_TUPLES; tuple++) {
device_printf(dev,
"\tPCI addr: 0x%jx, CPU addr: 0x%jx, Size: 0x%jx\n",
sc->ranges[tuple].pci_base,
sc->ranges[tuple].phys_base,
sc->ranges[tuple].size);
}
}
free(base_ranges, M_DEVBUF);
return (0);
}