Move the deactivation of the device's BAR to before the loop where we

turn deactivate the resources.  While this likely doesn't matter, it
is likely to be safer.
This commit is contained in:
Warner Losh 2009-03-12 08:42:27 +00:00
parent b1db3b7a40
commit afb1ec6d56
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=189731

View File

@ -289,6 +289,11 @@ cardbus_release_all_resources(device_t cbdev, struct cardbus_devinfo *dinfo)
struct resource_list_entry *rle;
device_t dev;
/* Turn off access to resources we're about to free */
dev = dinfo->pci.cfg.dev;
pci_write_config(dev, PCIR_COMMAND,
pci_read_config(dev, PCIR_COMMAND, 2) &
~(PCIM_CMD_MEMEN | PCIM_CMD_PORTEN), 2);
/* Free all allocated resources */
STAILQ_FOREACH(rle, &dinfo->pci.resources, link) {
if (rle->res) {
@ -298,11 +303,6 @@ cardbus_release_all_resources(device_t cbdev, struct cardbus_devinfo *dinfo)
}
}
resource_list_free(&dinfo->pci.resources);
/* turn off the card's decoding now that the resources are done */
dev = dinfo->pci.cfg.dev;
pci_write_config(dev, PCIR_COMMAND,
pci_read_config(dev, PCIR_COMMAND, 2) &
~(PCIM_CMD_MEMEN | PCIM_CMD_PORTEN), 2);
}
/************************************************************************/