Commit 1842f2b1 authored by Cornelia Huck's avatar Cornelia Huck Committed by Martin Schwidefsky

[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: default avatarCornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent 958974fb
...@@ -619,6 +619,11 @@ cio_validate_subchannel (struct subchannel *sch, struct subchannel_id schid) ...@@ -619,6 +619,11 @@ cio_validate_subchannel (struct subchannel *sch, struct subchannel_id schid)
sch->schib.pmcw.ena = 0; sch->schib.pmcw.ena = 0;
if ((sch->lpm & (sch->lpm - 1)) != 0) if ((sch->lpm & (sch->lpm - 1)) != 0)
sch->schib.pmcw.mp = 1; /* multipath mode */ sch->schib.pmcw.mp = 1; /* multipath mode */
/* clean up possible residual cmf stuff */
sch->schib.pmcw.mme = 0;
sch->schib.pmcw.mbfc = 0;
sch->schib.pmcw.mbi = 0;
sch->schib.mba = 0;
return 0; return 0;
out: out:
if (!cio_is_console(schid)) if (!cio_is_console(schid))
......
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
#include <asm/ccwdev.h> #include <asm/ccwdev.h>
#include <asm/cio.h> #include <asm/cio.h>
#include <asm/param.h> /* HZ */ #include <asm/param.h> /* HZ */
#include <asm/cmb.h>
#include "cio.h" #include "cio.h"
#include "cio_debug.h" #include "cio_debug.h"
...@@ -1440,6 +1441,7 @@ static void ccw_device_shutdown(struct device *dev) ...@@ -1440,6 +1441,7 @@ static void ccw_device_shutdown(struct device *dev)
cdev = to_ccwdev(dev); cdev = to_ccwdev(dev);
if (cdev->drv && cdev->drv->shutdown) if (cdev->drv && cdev->drv->shutdown)
cdev->drv->shutdown(cdev); cdev->drv->shutdown(cdev);
disable_cmf(cdev);
} }
struct bus_type ccw_bus_type = { struct bus_type ccw_bus_type = {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment