summaryrefslogtreecommitdiff
path: root/sys/dev/pci
diff options
context:
space:
mode:
authordyoung <dyoung@NetBSD.org>2009-07-16 18:58:38 +0000
committerdyoung <dyoung@NetBSD.org>2009-07-16 18:58:38 +0000
commitbbc238f2cd2a03d9c3c4bf4f2e1c9c4d0977acf5 (patch)
tree2d1098cc4c79a0c615bc364c5bf4143ecd5f94c6 /sys/dev/pci
parentebab3c38caf7117abd22c1c2f9e553e6e266bbe1 (diff)
Let us detach & re-attach children of mfi0. Detach mfi0 at shutdown.
Detachment may fail after freeing some but not all resources, so take care not to re-release any resource during detachment. Tested on a Dell PowerEdge 1950.
Diffstat (limited to 'sys/dev/pci')
-rw-r--r--sys/dev/pci/mfi_pci.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/sys/dev/pci/mfi_pci.c b/sys/dev/pci/mfi_pci.c
index 5cc552b0d3f..c052d383c23 100644
--- a/sys/dev/pci/mfi_pci.c
+++ b/sys/dev/pci/mfi_pci.c
@@ -1,4 +1,4 @@
-/* $NetBSD: mfi_pci.c,v 1.10 2009/07/16 18:10:00 dyoung Exp $ */
+/* $NetBSD: mfi_pci.c,v 1.11 2009/07/16 18:58:38 dyoung Exp $ */
/* $OpenBSD: mfi_pci.c,v 1.11 2006/08/06 04:40:08 brad Exp $ */
/*
* Copyright (c) 2006 Marco Peereboom <marco@peereboom.us>
@@ -17,7 +17,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: mfi_pci.c,v 1.10 2009/07/16 18:10:00 dyoung Exp $");
+__KERNEL_RCSID(0, "$NetBSD: mfi_pci.c,v 1.11 2009/07/16 18:58:38 dyoung Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -50,8 +50,9 @@ int mfi_pci_match(device_t, cfdata_t, void *);
void mfi_pci_attach(device_t, device_t, void *);
int mfi_pci_detach(device_t, int);
-CFATTACH_DECL_NEW(mfi_pci, sizeof(struct mfi_pci_softc),
- mfi_pci_match, mfi_pci_attach, mfi_pci_detach, NULL);
+CFATTACH_DECL3_NEW(mfi_pci, sizeof(struct mfi_pci_softc),
+ mfi_pci_match, mfi_pci_attach, mfi_pci_detach, NULL, mfi_rescan,
+ mfi_childdetached, DVF_DETACH_SHUTDOWN);
struct mfi_pci_subtype {
pcireg_t st_vendor;