Index: arch/sparc64/sparc64/machdep.c =================================================================== RCS file: /cvs/src/sys/arch/sparc64/sparc64/machdep.c,v retrieving revision 1.167 diff -u -p -r1.167 machdep.c --- arch/sparc64/sparc64/machdep.c 21 Jul 2014 17:25:47 -0000 1.167 +++ arch/sparc64/sparc64/machdep.c 15 Sep 2014 05:27:34 -0000 @@ -115,6 +115,8 @@ #include #endif +#include "mpath.h" + int _bus_dmamap_create(bus_dma_tag_t, bus_dma_tag_t, bus_size_t, int, bus_size_t, bus_size_t, int, bus_dmamap_t *); void _bus_dmamap_destroy(bus_dma_tag_t, bus_dma_tag_t, bus_dmamap_t); @@ -648,6 +650,16 @@ boot(int howto) haltsys: doshutdownhooks(); + +#if NMPATH > 0 + { + extern struct cfdriver mpath_cd; + + if (mpath_cd.cd_ndevs >= 1) + config_suspend(mpath_cd.cd_devs[0], DVACT_POWERDOWN); + } +#endif + mainbus = device_mainbus(); if (mainbus != NULL) config_suspend(mainbus, DVACT_POWERDOWN); Index: scsi/mpath.c =================================================================== RCS file: /cvs/src/sys/scsi/mpath.c,v retrieving revision 1.36 diff -u -p -r1.36 mpath.c --- scsi/mpath.c 12 Jul 2014 18:50:25 -0000 1.36 +++ scsi/mpath.c 15 Sep 2014 05:27:34 -0000 @@ -38,7 +38,6 @@ int mpath_match(struct device *, void *, void *); void mpath_attach(struct device *, struct device *, void *); -void mpath_shutdown(void *); TAILQ_HEAD(mpath_paths, mpath_path); @@ -79,7 +78,8 @@ struct mpath_softc *mpath; struct cfattach mpath_ca = { sizeof(struct mpath_softc), mpath_match, - mpath_attach + mpath_attach, + config_activate_children }; struct cfdriver mpath_cd = {