From: Peter Oberparleiter Date: Wed, 30 Aug 2006 12:33:37 +0000 (+0200) Subject: [S390] cio: no path after machine check. X-Git-Tag: v2.6.18-rc6~31^2~1 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3b88508a31a77eb3487154922e1eff282dc1d863;hp=292888c81e74115db5e5a4a838f730a7c3662982;p=linux-2.6 [S390] cio: no path after machine check. Devices enter no-path state after disabling a channel path via the SE even though another path has been reenabled at the SE. The devices are set into no-path state before triggering path verification even though other paths may have become available. To fix this trigger path verification before setting a device into no-path state. Signed-off-by: Peter Oberparleiter Signed-off-by: Martin Schwidefsky --- diff --git a/drivers/s390/cio/chsc.c b/drivers/s390/cio/chsc.c index 6405e9bd6e..c28444af09 100644 --- a/drivers/s390/cio/chsc.c +++ b/drivers/s390/cio/chsc.c @@ -238,8 +238,6 @@ s390_subchannel_remove_chpid(struct device *dev, void *data) /* Check for single path devices. */ if (sch->schib.pmcw.pim == 0x80) goto out_unreg; - if (sch->vpm == mask) - goto out_unreg; if ((sch->schib.scsw.actl & SCSW_ACTL_DEVACT) && (sch->schib.scsw.actl & SCSW_ACTL_SCHACT) && @@ -258,6 +256,8 @@ s390_subchannel_remove_chpid(struct device *dev, void *data) /* trigger path verification. */ if (sch->driver && sch->driver->verify) sch->driver->verify(&sch->dev); + else if (sch->vpm == mask) + goto out_unreg; out_unlock: spin_unlock_irq(&sch->lock); return 0;