The bus resource adjustment API is not meant to work on active resources.
Return an error if a driver attempts this, and, if INVARIANTS is on, panic. Reviewed by: jhb
This commit is contained in:
parent
ae5458e1fb
commit
8a1a60d49a
@ -431,7 +431,11 @@ ofw_pci_adjust_resource(device_t bus, device_t child, int type,
|
||||
{
|
||||
struct rman *rm = NULL;
|
||||
struct ofw_pci_softc *sc = device_get_softc(bus);
|
||||
int error;
|
||||
|
||||
KASSERT(!(rman_get_flags(res) & RF_ACTIVE),
|
||||
("active resources cannot be adjusted"));
|
||||
if (rman_get_flags(res) & RF_ACTIVE)
|
||||
return (EINVAL);
|
||||
|
||||
switch (type) {
|
||||
case SYS_RES_MEMORY:
|
||||
@ -447,21 +451,7 @@ ofw_pci_adjust_resource(device_t bus, device_t child, int type,
|
||||
if (!rman_is_region_manager(res, rm))
|
||||
return (EINVAL);
|
||||
|
||||
error = rman_adjust_resource(res, start, end);
|
||||
if (error)
|
||||
return (error);
|
||||
|
||||
if (rman_get_flags(res) & RF_ACTIVE) {
|
||||
/* Remap memory resources */
|
||||
error = ofw_pci_deactivate_resource(bus, child, type,
|
||||
rman_get_rid(res), res);
|
||||
if (error)
|
||||
return (error);
|
||||
error = ofw_pci_activate_resource(bus, child, type,
|
||||
rman_get_rid(res), res);
|
||||
}
|
||||
|
||||
return (error);
|
||||
return (rman_adjust_resource(res, start, end));
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user