diff options
author | Jan Glauber <jang@linux.vnet.ibm.com> | 2010-05-17 04:00:16 -0400 |
---|---|---|
committer | Martin Schwidefsky <sky@mschwide.boeblingen.de.ibm.com> | 2010-05-17 04:00:17 -0400 |
commit | 5382fe11d90e3ed9602ce655e523852e3dbf3e35 (patch) | |
tree | 0fa08681940ae976563eb1e5480a8568a1c762e7 | |
parent | f3eb20fafdc10aea0fb13b113ac3b9a3dc9a5dc6 (diff) |
[S390] qdio: remove memset hack
Remove memset hack that relied on the layout of struct qdio_q
to avoid deletion of the slib pointer.
Signed-off-by: Jan Glauber <jang@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
-rw-r--r-- | drivers/s390/cio/qdio.h | 6 | ||||
-rw-r--r-- | drivers/s390/cio/qdio_setup.c | 8 |
2 files changed, 7 insertions, 7 deletions
diff --git a/drivers/s390/cio/qdio.h b/drivers/s390/cio/qdio.h index 48aa0647432b..da80e9b95e45 100644 --- a/drivers/s390/cio/qdio.h +++ b/drivers/s390/cio/qdio.h | |||
@@ -296,10 +296,8 @@ struct qdio_q { | |||
296 | struct qdio_irq *irq_ptr; | 296 | struct qdio_irq *irq_ptr; |
297 | struct sl *sl; | 297 | struct sl *sl; |
298 | /* | 298 | /* |
299 | * Warning: Leave this member at the end so it won't be cleared in | 299 | * A page is allocated under this pointer and used for slib and sl. |
300 | * qdio_fill_qs. A page is allocated under this pointer and used for | 300 | * slib is 2048 bytes big and sl points to offset PAGE_SIZE / 2. |
301 | * slib and sl. slib is 2048 bytes big and sl points to offset | ||
302 | * PAGE_SIZE / 2. | ||
303 | */ | 301 | */ |
304 | struct slib *slib; | 302 | struct slib *slib; |
305 | } __attribute__ ((aligned(256))); | 303 | } __attribute__ ((aligned(256))); |
diff --git a/drivers/s390/cio/qdio_setup.c b/drivers/s390/cio/qdio_setup.c index 7f4a75465140..6326b67c45d2 100644 --- a/drivers/s390/cio/qdio_setup.c +++ b/drivers/s390/cio/qdio_setup.c | |||
@@ -106,10 +106,12 @@ int qdio_allocate_qs(struct qdio_irq *irq_ptr, int nr_input_qs, int nr_output_qs | |||
106 | static void setup_queues_misc(struct qdio_q *q, struct qdio_irq *irq_ptr, | 106 | static void setup_queues_misc(struct qdio_q *q, struct qdio_irq *irq_ptr, |
107 | qdio_handler_t *handler, int i) | 107 | qdio_handler_t *handler, int i) |
108 | { | 108 | { |
109 | /* must be cleared by every qdio_establish */ | 109 | struct slib *slib = q->slib; |
110 | memset(q, 0, ((char *)&q->slib) - ((char *)q)); | ||
111 | memset(q->slib, 0, PAGE_SIZE); | ||
112 | 110 | ||
111 | /* queue must be cleared for qdio_establish */ | ||
112 | memset(q, 0, sizeof(*q)); | ||
113 | memset(slib, 0, PAGE_SIZE); | ||
114 | q->slib = slib; | ||
113 | q->irq_ptr = irq_ptr; | 115 | q->irq_ptr = irq_ptr; |
114 | q->mask = 1 << (31 - i); | 116 | q->mask = 1 << (31 - i); |
115 | q->nr = i; | 117 | q->nr = i; |