]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blobdiff - src/patches/suse-2.6.27.25/patches.arch/s390-disable-etr-stp
Revert "Move xen patchset to new version's subdir."
[people/pmueller/ipfire-2.x.git] / src / patches / suse-2.6.27.25 / patches.arch / s390-disable-etr-stp
diff --git a/src/patches/suse-2.6.27.25/patches.arch/s390-disable-etr-stp b/src/patches/suse-2.6.27.25/patches.arch/s390-disable-etr-stp
new file mode 100644 (file)
index 0000000..561484d
--- /dev/null
@@ -0,0 +1,71 @@
+From: Hannes Reinecke <hare@suse.de>
+Subject: Disable ETR/STP on S/390
+References: bnc#450468
+
+STP/ETR support need an update to the in-kernel workqueue support
+to be avoid running into a deadlock. However, this update was not
+accepted for SLES11, so we should make sure to not enable ETR/STP
+support by accident.
+
+Signed-off-by: Hannes Reinecke <hare@suse.de>
+
+diff --git a/arch/s390/kernel/time.c b/arch/s390/kernel/time.c
+index dbce49b..f171abf 100644
+--- a/arch/s390/kernel/time.c
++++ b/arch/s390/kernel/time.c
+@@ -383,20 +383,6 @@ static int etr_port0_online;
+ static int etr_port1_online;
+ static int etr_steai_available;
+-static int __init early_parse_etr(char *p)
+-{
+-      if (strncmp(p, "off", 3) == 0)
+-              etr_port0_online = etr_port1_online = 0;
+-      else if (strncmp(p, "port0", 5) == 0)
+-              etr_port0_online = 1;
+-      else if (strncmp(p, "port1", 5) == 0)
+-              etr_port1_online = 1;
+-      else if (strncmp(p, "on", 2) == 0)
+-              etr_port0_online = etr_port1_online = 1;
+-      return 0;
+-}
+-early_param("etr", early_parse_etr);
+-
+ enum etr_event {
+       ETR_EVENT_PORT0_CHANGE,
+       ETR_EVENT_PORT1_CHANGE,
+@@ -1178,7 +1164,7 @@ static ssize_t etr_online_store(struct sys_device *dev,
+       return count;
+ }
+-static SYSDEV_ATTR(online, 0600, etr_online_show, etr_online_store);
++static SYSDEV_ATTR(online, 0400, etr_online_show, etr_online_store);
+ static ssize_t etr_stepping_control_show(struct sys_device *dev,
+                                       struct sysdev_attribute *attr,
+@@ -1377,16 +1363,6 @@ static void stp_work_fn(struct work_struct *work);
+ static DEFINE_MUTEX(stp_work_mutex);
+ static DECLARE_WORK(stp_work, stp_work_fn);
+-static int __init early_parse_stp(char *p)
+-{
+-      if (strncmp(p, "off", 3) == 0)
+-              stp_online = 0;
+-      else if (strncmp(p, "on", 2) == 0)
+-              stp_online = 1;
+-      return 0;
+-}
+-early_param("stp", early_parse_stp);
+-
+ /*
+  * Reset STP attachment.
+  */
+@@ -1665,7 +1641,7 @@ static ssize_t stp_online_store(struct sysdev_class *class,
+  * stp/online but attr_online already exists in this file ..
+  */
+ static struct sysdev_class_attribute attr_stp_online = {
+-      .attr = { .name = "online", .mode = 0600 },
++      .attr = { .name = "online", .mode = 0400 },
+       .show   = stp_online_show,
+       .store  = stp_online_store,
+ };