svn commit: r235007 - stable/9/sys/dev/pci
Hans Petter Selasky
hselasky at FreeBSD.org
Fri May 4 15:38:47 UTC 2012
Author: hselasky
Date: Fri May 4 15:38:47 2012
New Revision: 235007
URL: http://svn.freebsd.org/changeset/base/235007
Log:
MFC r233662, r233677 and r233678:
Writing zero to BAR actually does not disable it and
it is even harmful as hselasky found out. Historically,
this code was originated from (OLDCARD) CardBus driver and later leaked into
PCI driver when CardBus was newbus'ified and refactored with PCI driver.
However, it is not really necessary even for CardBus.
Modified:
stable/9/sys/dev/pci/pci.c
Directory Properties:
stable/9/sys/ (props changed)
Modified: stable/9/sys/dev/pci/pci.c
==============================================================================
--- stable/9/sys/dev/pci/pci.c Fri May 4 15:36:51 2012 (r235006)
+++ stable/9/sys/dev/pci/pci.c Fri May 4 15:38:47 2012 (r235007)
@@ -2746,16 +2746,15 @@ pci_add_map(device_t bus, device_t dev,
prefetch ? RF_PREFETCHABLE : 0);
if (res == NULL) {
/*
- * If the allocation fails, clear the BAR and delete
- * the resource list entry to force
- * pci_alloc_resource() to allocate resources from the
- * parent.
+ * If the allocation fails, delete the resource list entry
+ * to force pci_alloc_resource() to allocate resources
+ * from the parent.
*/
resource_list_delete(rl, type, reg);
- start = 0;
- } else
+ } else {
start = rman_get_start(res);
- pci_write_bar(dev, pm, start);
+ pci_write_bar(dev, pm, start);
+ }
return (barlen);
}
@@ -3824,7 +3823,7 @@ pci_describe_device(device_t dev)
if ((desc = malloc(strlen(vp) + strlen(dp) + 3, M_DEVBUF, M_NOWAIT)) !=
NULL)
sprintf(desc, "%s, %s", vp, dp);
- out:
+out:
if (vp != NULL)
free(vp, M_DEVBUF);
if (dp != NULL)
@@ -4100,7 +4099,7 @@ pci_reserve_map(device_t dev, device_t c
count, *rid, type, rman_get_start(res));
map = rman_get_start(res);
pci_write_bar(child, pm, map);
-out:;
+out:
return (res);
}
@@ -4289,19 +4288,6 @@ pci_delete_resource(device_t dev, device
type, rid, rman_get_start(rle->res));
return;
}
-
-#ifndef __PCI_BAR_ZERO_VALID
- /*
- * If this is a BAR, clear the BAR so it stops
- * decoding before releasing the resource.
- */
- switch (type) {
- case SYS_RES_IOPORT:
- case SYS_RES_MEMORY:
- pci_write_bar(child, pci_find_bar(child, rid), 0);
- break;
- }
-#endif
resource_list_unreserve(rl, dev, child, type, rid);
}
resource_list_delete(rl, type, rid);
More information about the svn-src-stable-9
mailing list