diff options
author | Cornelia Huck <cornelia.huck@de.ibm.com> | 2007-10-12 10:11:22 -0400 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2007-10-12 10:13:01 -0400 |
commit | 1842f2b1847155805f9cc8c834ef4272198b272b (patch) | |
tree | b887ba8c29702a378c408c12702e8d5c6ce131ac | |
parent | 958974fb596ad037fb571cf2899f783764a83e1a (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.c | 5 | ||||
-rw-r--r-- | drivers/s390/cio/device.c | 2 |
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; |
623 | out: | 628 | out: |
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 | ||
1445 | struct bus_type ccw_bus_type = { | 1447 | struct bus_type ccw_bus_type = { |