diff options
Diffstat (limited to 'drivers/s390/cio/qdio_thinint.c')
-rw-r--r-- | drivers/s390/cio/qdio_thinint.c | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/drivers/s390/cio/qdio_thinint.c b/drivers/s390/cio/qdio_thinint.c index 981a77ea7ee2..ce5f8910ff83 100644 --- a/drivers/s390/cio/qdio_thinint.c +++ b/drivers/s390/cio/qdio_thinint.c | |||
@@ -1,14 +1,13 @@ | |||
1 | /* | 1 | /* |
2 | * linux/drivers/s390/cio/thinint_qdio.c | 2 | * linux/drivers/s390/cio/thinint_qdio.c |
3 | * | 3 | * |
4 | * thin interrupt support for qdio | 4 | * Copyright 2000,2009 IBM Corp. |
5 | * | ||
6 | * Copyright 2000-2008 IBM Corp. | ||
7 | * Author(s): Utz Bacher <utz.bacher@de.ibm.com> | 5 | * Author(s): Utz Bacher <utz.bacher@de.ibm.com> |
8 | * Cornelia Huck <cornelia.huck@de.ibm.com> | 6 | * Cornelia Huck <cornelia.huck@de.ibm.com> |
9 | * Jan Glauber <jang@linux.vnet.ibm.com> | 7 | * Jan Glauber <jang@linux.vnet.ibm.com> |
10 | */ | 8 | */ |
11 | #include <linux/io.h> | 9 | #include <linux/io.h> |
10 | #include <linux/slab.h> | ||
12 | #include <asm/atomic.h> | 11 | #include <asm/atomic.h> |
13 | #include <asm/debug.h> | 12 | #include <asm/debug.h> |
14 | #include <asm/qdio.h> | 13 | #include <asm/qdio.h> |
@@ -19,7 +18,6 @@ | |||
19 | #include "ioasm.h" | 18 | #include "ioasm.h" |
20 | #include "qdio.h" | 19 | #include "qdio.h" |
21 | #include "qdio_debug.h" | 20 | #include "qdio_debug.h" |
22 | #include "qdio_perf.h" | ||
23 | 21 | ||
24 | /* | 22 | /* |
25 | * Restriction: only 63 iqdio subchannels would have its own indicator, | 23 | * Restriction: only 63 iqdio subchannels would have its own indicator, |
@@ -132,8 +130,6 @@ static void tiqdio_thinint_handler(void *ind, void *drv_data) | |||
132 | { | 130 | { |
133 | struct qdio_q *q; | 131 | struct qdio_q *q; |
134 | 132 | ||
135 | qdio_perf_stat_inc(&perf_stats.thin_int); | ||
136 | |||
137 | /* | 133 | /* |
138 | * SVS only when needed: issue SVS to benefit from iqdio interrupt | 134 | * SVS only when needed: issue SVS to benefit from iqdio interrupt |
139 | * avoidance (SVS clears adapter interrupt suppression overwrite) | 135 | * avoidance (SVS clears adapter interrupt suppression overwrite) |
@@ -154,6 +150,7 @@ static void tiqdio_thinint_handler(void *ind, void *drv_data) | |||
154 | list_for_each_entry_rcu(q, &tiq_list, entry) | 150 | list_for_each_entry_rcu(q, &tiq_list, entry) |
155 | /* only process queues from changed sets */ | 151 | /* only process queues from changed sets */ |
156 | if (*q->irq_ptr->dsci) { | 152 | if (*q->irq_ptr->dsci) { |
153 | qperf_inc(q, adapter_int); | ||
157 | 154 | ||
158 | /* only clear it if the indicator is non-shared */ | 155 | /* only clear it if the indicator is non-shared */ |
159 | if (!shared_ind(q->irq_ptr)) | 156 | if (!shared_ind(q->irq_ptr)) |
@@ -202,8 +199,8 @@ static int set_subchannel_ind(struct qdio_irq *irq_ptr, int reset) | |||
202 | .code = 0x0021, | 199 | .code = 0x0021, |
203 | }; | 200 | }; |
204 | scssc_area->operation_code = 0; | 201 | scssc_area->operation_code = 0; |
205 | scssc_area->ks = PAGE_DEFAULT_KEY; | 202 | scssc_area->ks = PAGE_DEFAULT_KEY >> 4; |
206 | scssc_area->kc = PAGE_DEFAULT_KEY; | 203 | scssc_area->kc = PAGE_DEFAULT_KEY >> 4; |
207 | scssc_area->isc = QDIO_AIRQ_ISC; | 204 | scssc_area->isc = QDIO_AIRQ_ISC; |
208 | scssc_area->schid = irq_ptr->schid; | 205 | scssc_area->schid = irq_ptr->schid; |
209 | 206 | ||