diff options
| author | dyoung <dyoung@NetBSD.org> | 2009-07-16 18:58:38 +0000 |
|---|---|---|
| committer | dyoung <dyoung@NetBSD.org> | 2009-07-16 18:58:38 +0000 |
| commit | bbc238f2cd2a03d9c3c4bf4f2e1c9c4d0977acf5 (patch) | |
| tree | 2d1098cc4c79a0c615bc364c5bf4143ecd5f94c6 /sys/dev/pci | |
| parent | ebab3c38caf7117abd22c1c2f9e553e6e266bbe1 (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.c | 9 |
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; |
