]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blobdiff - src/patches/suse-2.6.27.31/patches.arch/s390-11-06-qdio_tiq_list_lock.patch
Revert "Move xen patchset to new version's subdir."
[people/pmueller/ipfire-2.x.git] / src / patches / suse-2.6.27.31 / patches.arch / s390-11-06-qdio_tiq_list_lock.patch
diff --git a/src/patches/suse-2.6.27.31/patches.arch/s390-11-06-qdio_tiq_list_lock.patch b/src/patches/suse-2.6.27.31/patches.arch/s390-11-06-qdio_tiq_list_lock.patch
deleted file mode 100644 (file)
index 78ab65c..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-From: Gerald Schaefer <geraldsc@de.ibm.com>
-Subject: qdio: add missing tiq_list locking
-References: bnc#484767,LTC#52205
-
-Symptom:     The system may hang if multiple qdio devices are added or
-             removed in parallel.
-Problem:     Although reading the tiq_list is done using RCU adding and 
-             removing elements from the list must still happen locked since
-             multiple qdio devices may change the list in parallel otherwise.
-Solution:    Add a mutex to protect the tiq_list.
-
-Acked-by: John Jolly <jjolly@suse.de>
----
- drivers/s390/cio/qdio_main.c    |    1 +
- drivers/s390/cio/qdio_thinint.c |   10 +++++++---
- 2 files changed, 8 insertions(+), 3 deletions(-)
-
-Index: linux-sles11/drivers/s390/cio/qdio_main.c
-===================================================================
---- linux-sles11.orig/drivers/s390/cio/qdio_main.c
-+++ linux-sles11/drivers/s390/cio/qdio_main.c
-@@ -1094,6 +1094,7 @@ int qdio_shutdown(struct ccw_device *cde
-       if (!irq_ptr)
-               return -ENODEV;
-+      BUG_ON(irqs_disabled());
-       DBF_EVENT("qshutdown:%4x", cdev->private->schid.sch_no);
-       mutex_lock(&irq_ptr->setup_mutex);
-Index: linux-sles11/drivers/s390/cio/qdio_thinint.c
-===================================================================
---- linux-sles11.orig/drivers/s390/cio/qdio_thinint.c
-+++ linux-sles11/drivers/s390/cio/qdio_thinint.c
-@@ -31,6 +31,7 @@
- /* list of thin interrupt input queues */
- static LIST_HEAD(tiq_list);
-+DEFINE_MUTEX(tiq_list_lock);
- /* adapter local summary indicator */
- static unsigned char *tiqdio_alsi;
-@@ -95,10 +96,10 @@ void tiqdio_add_input_queues(struct qdio
-       if (!css_qdio_omit_svs && irq_ptr->siga_flag.sync)
-               css_qdio_omit_svs = 1;
--      for_each_input_queue(irq_ptr, q, i) {
-+      mutex_lock(&tiq_list_lock);
-+      for_each_input_queue(irq_ptr, q, i)
-               list_add_rcu(&q->entry, &tiq_list);
--              synchronize_rcu();
--      }
-+      mutex_unlock(&tiq_list_lock);
-       xchg(irq_ptr->dsci, 1);
-       tasklet_schedule(&tiqdio_tasklet);
- }
-@@ -118,7 +119,10 @@ void tiqdio_remove_input_queues(struct q
-               /* if establish triggered an error */
-               if (!q || !q->entry.prev || !q->entry.next)
-                       continue;
-+
-+              mutex_lock(&tiq_list_lock);
-               list_del_rcu(&q->entry);
-+              mutex_unlock(&tiq_list_lock);
-               synchronize_rcu();
-       }
- }