aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/cio/qdio_thinint.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/s390/cio/qdio_thinint.c')
-rw-r--r--drivers/s390/cio/qdio_thinint.c13
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