aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/s390/cio/chsc.c40
1 files changed, 4 insertions, 36 deletions
diff --git a/drivers/s390/cio/chsc.c b/drivers/s390/cio/chsc.c
index 13299f902676..eee70cb8730b 100644
--- a/drivers/s390/cio/chsc.c
+++ b/drivers/s390/cio/chsc.c
@@ -237,26 +237,6 @@ void chsc_chp_offline(struct chp_id chpid)
237 for_each_subchannel_staged(s390_subchannel_remove_chpid, NULL, &link); 237 for_each_subchannel_staged(s390_subchannel_remove_chpid, NULL, &link);
238} 238}
239 239
240static int s390_process_res_acc_new_sch(struct subchannel_id schid, void *data)
241{
242 struct schib schib;
243 /*
244 * We don't know the device yet, but since a path
245 * may be available now to the device we'll have
246 * to do recognition again.
247 * Since we don't have any idea about which chpid
248 * that beast may be on we'll have to do a stsch
249 * on all devices, grr...
250 */
251 if (stsch_err(schid, &schib))
252 /* We're through */
253 return -ENXIO;
254
255 /* Put it on the slow path. */
256 css_schedule_eval(schid);
257 return 0;
258}
259
260static int __s390_process_res_acc(struct subchannel *sch, void *data) 240static int __s390_process_res_acc(struct subchannel *sch, void *data)
261{ 241{
262 spin_lock_irq(sch->lock); 242 spin_lock_irq(sch->lock);
@@ -287,8 +267,8 @@ static void s390_process_res_acc(struct chp_link *link)
287 * The more information we have (info), the less scanning 267 * The more information we have (info), the less scanning
288 * will we have to do. 268 * will we have to do.
289 */ 269 */
290 for_each_subchannel_staged(__s390_process_res_acc, 270 for_each_subchannel_staged(__s390_process_res_acc, NULL, link);
291 s390_process_res_acc_new_sch, link); 271 css_schedule_reprobe();
292} 272}
293 273
294static int 274static int
@@ -663,19 +643,6 @@ static int s390_subchannel_vary_chpid_on(struct subchannel *sch, void *data)
663 return 0; 643 return 0;
664} 644}
665 645
666static int
667__s390_vary_chpid_on(struct subchannel_id schid, void *data)
668{
669 struct schib schib;
670
671 if (stsch_err(schid, &schib))
672 /* We're through */
673 return -ENXIO;
674 /* Put it on the slow path. */
675 css_schedule_eval(schid);
676 return 0;
677}
678
679/** 646/**
680 * chsc_chp_vary - propagate channel-path vary operation to subchannels 647 * chsc_chp_vary - propagate channel-path vary operation to subchannels
681 * @chpid: channl-path ID 648 * @chpid: channl-path ID
@@ -694,7 +661,8 @@ int chsc_chp_vary(struct chp_id chpid, int on)
694 /* Try to update the channel path description. */ 661 /* Try to update the channel path description. */
695 chp_update_desc(chp); 662 chp_update_desc(chp);
696 for_each_subchannel_staged(s390_subchannel_vary_chpid_on, 663 for_each_subchannel_staged(s390_subchannel_vary_chpid_on,
697 __s390_vary_chpid_on, &chpid); 664 NULL, &chpid);
665 css_schedule_reprobe();
698 } else 666 } else
699 for_each_subchannel_staged(s390_subchannel_vary_chpid_off, 667 for_each_subchannel_staged(s390_subchannel_vary_chpid_off,
700 NULL, &chpid); 668 NULL, &chpid);