aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCornelia Huck <cornelia.huck@de.ibm.com>2007-10-12 10:11:22 -0400
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2007-10-12 10:13:01 -0400
commit1842f2b1847155805f9cc8c834ef4272198b272b (patch)
treeb887ba8c29702a378c408c12702e8d5c6ce131ac
parent958974fb596ad037fb571cf2899f783764a83e1a (diff)
[S390] cio: Disable channel measurements (cmf) on shutdown/reboot.
Disable channel measurements for all ccw devices via the ccw bus's shutdown method. Clear residual cmf related information that may be in the schib when setting up a new subchannel. Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
-rw-r--r--drivers/s390/cio/cio.c5
-rw-r--r--drivers/s390/cio/device.c2
2 files changed, 7 insertions, 0 deletions
diff --git a/drivers/s390/cio/cio.c b/drivers/s390/cio/cio.c
index f2708d65be5a..46905345159e 100644
--- a/drivers/s390/cio/cio.c
+++ b/drivers/s390/cio/cio.c
@@ -619,6 +619,11 @@ cio_validate_subchannel (struct subchannel *sch, struct subchannel_id schid)
619 sch->schib.pmcw.ena = 0; 619 sch->schib.pmcw.ena = 0;
620 if ((sch->lpm & (sch->lpm - 1)) != 0) 620 if ((sch->lpm & (sch->lpm - 1)) != 0)
621 sch->schib.pmcw.mp = 1; /* multipath mode */ 621 sch->schib.pmcw.mp = 1; /* multipath mode */
622 /* clean up possible residual cmf stuff */
623 sch->schib.pmcw.mme = 0;
624 sch->schib.pmcw.mbfc = 0;
625 sch->schib.pmcw.mbi = 0;
626 sch->schib.mba = 0;
622 return 0; 627 return 0;
623out: 628out:
624 if (!cio_is_console(schid)) 629 if (!cio_is_console(schid))
diff --git a/drivers/s390/cio/device.c b/drivers/s390/cio/device.c
index 7fb271c60c27..eea9b1de0af7 100644
--- a/drivers/s390/cio/device.c
+++ b/drivers/s390/cio/device.c
@@ -21,6 +21,7 @@
21#include <asm/ccwdev.h> 21#include <asm/ccwdev.h>
22#include <asm/cio.h> 22#include <asm/cio.h>
23#include <asm/param.h> /* HZ */ 23#include <asm/param.h> /* HZ */
24#include <asm/cmb.h>
24 25
25#include "cio.h" 26#include "cio.h"
26#include "cio_debug.h" 27#include "cio_debug.h"
@@ -1440,6 +1441,7 @@ static void ccw_device_shutdown(struct device *dev)
1440 cdev = to_ccwdev(dev); 1441 cdev = to_ccwdev(dev);
1441 if (cdev->drv && cdev->drv->shutdown) 1442 if (cdev->drv && cdev->drv->shutdown)
1442 cdev->drv->shutdown(cdev); 1443 cdev->drv->shutdown(cdev);
1444 disable_cmf(cdev);
1443} 1445}
1444 1446
1445struct bus_type ccw_bus_type = { 1447struct bus_type ccw_bus_type = {