diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-01-07 17:50:50 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-01-07 17:50:50 -0500 |
commit | fb5131e1880ea1ba3ba7197cd5cc66c9c288f715 (patch) | |
tree | f0d9f25f9079727b9ead5a2b4cc85a0fea9b4668 /drivers/s390/cio/css.c | |
parent | d074b104cefcb6e8ded55a53e62fed59a246f55d (diff) | |
parent | 8e1023016cf17152972b98bce6c144834a4916d5 (diff) |
Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6
* 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6: (65 commits)
[S390] prevent unneccesary loops_per_jiffy recalculation
[S390] cpuinfo: use get_online_cpus() instead of preempt_disable()
[S390] smp: remove cpu hotplug messages
[S390] mutex: enable spinning mutex on s390
[S390] mutex: Introduce arch_mutex_cpu_relax()
[S390] cio: fix ccwgroup unregistration race condition
[S390] perf: add DWARF register lookup for s390
[S390] cleanup ftrace backend functions
[S390] ptrace cleanup
[S390] smp/idle: call init_idle() before starting a new cpu
[S390] smp: delay idle task creation
[S390] dasd: Correct retry counter for terminated I/O.
[S390] dasd: Add support for raw ECKD access.
[S390] dasd: Prevent deadlock during suspend/resume.
[S390] dasd: Improve handling of stolen DASD reservation
[S390] dasd: do path verification for paths added at runtime
[S390] dasd: add High Performance FICON multitrack support
[S390] cio: reduce memory consumption of itcw structures
[S390] nmi: enable machine checks early
[S390] qeth: buffer count imbalance
...
Diffstat (limited to 'drivers/s390/cio/css.c')
-rw-r--r-- | drivers/s390/cio/css.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/s390/cio/css.c b/drivers/s390/cio/css.c index 825951b6b83f..24d8e97355b9 100644 --- a/drivers/s390/cio/css.c +++ b/drivers/s390/cio/css.c | |||
@@ -618,6 +618,7 @@ EXPORT_SYMBOL_GPL(css_schedule_reprobe); | |||
618 | static void css_process_crw(struct crw *crw0, struct crw *crw1, int overflow) | 618 | static void css_process_crw(struct crw *crw0, struct crw *crw1, int overflow) |
619 | { | 619 | { |
620 | struct subchannel_id mchk_schid; | 620 | struct subchannel_id mchk_schid; |
621 | struct subchannel *sch; | ||
621 | 622 | ||
622 | if (overflow) { | 623 | if (overflow) { |
623 | css_schedule_eval_all(); | 624 | css_schedule_eval_all(); |
@@ -637,6 +638,13 @@ static void css_process_crw(struct crw *crw0, struct crw *crw1, int overflow) | |||
637 | if (crw1) | 638 | if (crw1) |
638 | mchk_schid.ssid = (crw1->rsid >> 4) & 3; | 639 | mchk_schid.ssid = (crw1->rsid >> 4) & 3; |
639 | 640 | ||
641 | if (crw0->erc == CRW_ERC_PMOD) { | ||
642 | sch = get_subchannel_by_schid(mchk_schid); | ||
643 | if (sch) { | ||
644 | css_update_ssd_info(sch); | ||
645 | put_device(&sch->dev); | ||
646 | } | ||
647 | } | ||
640 | /* | 648 | /* |
641 | * Since we are always presented with IPI in the CRW, we have to | 649 | * Since we are always presented with IPI in the CRW, we have to |
642 | * use stsch() to find out if the subchannel in question has come | 650 | * use stsch() to find out if the subchannel in question has come |