]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
.38 patches
authorGreg Kroah-Hartman <gregkh@suse.de>
Fri, 29 Apr 2011 16:25:32 +0000 (09:25 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 29 Apr 2011 16:25:32 +0000 (09:25 -0700)
queue-2.6.38/input-xen-kbdfront-fix-mouse-getting-stuck-after-save-restore.patch [new file with mode: 0644]
queue-2.6.38/iwl3945-disable-hw-scan-by-default.patch [new file with mode: 0644]
queue-2.6.38/iwlegacy-fix-tx_power-initialization.patch [new file with mode: 0644]
queue-2.6.38/series

diff --git a/queue-2.6.38/input-xen-kbdfront-fix-mouse-getting-stuck-after-save-restore.patch b/queue-2.6.38/input-xen-kbdfront-fix-mouse-getting-stuck-after-save-restore.patch
new file mode 100644 (file)
index 0000000..6874903
--- /dev/null
@@ -0,0 +1,63 @@
+From c36b58e8a9112017c2bcc322cc98e71241814303 Mon Sep 17 00:00:00 2001
+From: Igor Mammedov <imammedo@redhat.com>
+Date: Mon, 18 Apr 2011 10:17:17 -0700
+Subject: Input: xen-kbdfront - fix mouse getting stuck after save/restore
+
+From: Igor Mammedov <imammedo@redhat.com>
+
+commit c36b58e8a9112017c2bcc322cc98e71241814303 upstream.
+
+Mouse gets "stuck" after restore of PV guest but buttons are in working
+condition.
+
+If driver has been configured for ABS coordinates at start it will get
+XENKBD_TYPE_POS events and then suddenly after restore it'll start getting
+XENKBD_TYPE_MOTION events, that will be dropped later and they won't get
+into user-space.
+
+Regression was introduced by hunk 5 and 6 of
+5ea5254aa0ad269cfbd2875c973ef25ab5b5e9db
+("Input: xen-kbdfront - advertise either absolute or relative
+coordinates").
+
+Driver on restore should ask xen for request-abs-pointer again if it is
+available. So restore parts that did it before 5ea5254.
+
+Acked-by: Olaf Hering <olaf@aepfle.de>
+Signed-off-by: Igor Mammedov <imammedo@redhat.com>
+[v1: Expanded the commit description]
+Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
+Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
+
+---
+ drivers/input/xen-kbdfront.c |   12 +++++++++++-
+ 1 file changed, 11 insertions(+), 1 deletion(-)
+
+--- a/drivers/input/xen-kbdfront.c
++++ b/drivers/input/xen-kbdfront.c
+@@ -286,7 +286,7 @@ static void xenkbd_backend_changed(struc
+                                  enum xenbus_state backend_state)
+ {
+       struct xenkbd_info *info = dev_get_drvdata(&dev->dev);
+-      int val;
++      int ret, val;
+       switch (backend_state) {
+       case XenbusStateInitialising:
+@@ -299,6 +299,16 @@ static void xenkbd_backend_changed(struc
+       case XenbusStateInitWait:
+ InitWait:
++              ret = xenbus_scanf(XBT_NIL, info->xbdev->otherend,
++                                 "feature-abs-pointer", "%d", &val);
++              if (ret < 0)
++                      val = 0;
++              if (val) {
++                      ret = xenbus_printf(XBT_NIL, info->xbdev->nodename,
++                                          "request-abs-pointer", "1");
++                      if (ret)
++                              pr_warning("can't request abs-pointer\n");
++              }
+               xenbus_switch_state(dev, XenbusStateConnected);
+               break;
diff --git a/queue-2.6.38/iwl3945-disable-hw-scan-by-default.patch b/queue-2.6.38/iwl3945-disable-hw-scan-by-default.patch
new file mode 100644 (file)
index 0000000..4b86b04
--- /dev/null
@@ -0,0 +1,50 @@
+From 0263aa45293838b514b8af674a03faf040991a90 Mon Sep 17 00:00:00 2001
+From: Stanislaw Gruszka <sgruszka@redhat.com>
+Date: Tue, 29 Mar 2011 11:24:21 +0200
+Subject: iwl3945: disable hw scan by default
+
+From: Stanislaw Gruszka <sgruszka@redhat.com>
+
+commit 0263aa45293838b514b8af674a03faf040991a90 upstream.
+
+After new NetworkManager 0.8.996 changes, hardware scanning is causing
+microcode errors as reported here:
+https://bugzilla.redhat.com/show_bug.cgi?id=683571
+and sometimes kernel crashes:
+https://bugzilla.redhat.com/show_bug.cgi?id=688252
+
+Also with hw scan there are very bad performance on some systems
+as reported here:
+https://bugzilla.redhat.com/show_bug.cgi?id=671366
+
+Since Intel no longer supports 3945, there is no chance to get proper
+firmware fixes, we need workaround problems by disable hardware scanning
+by default.
+
+Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/wireless/iwlwifi/iwl3945-base.c |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/drivers/net/wireless/iwlwifi/iwl3945-base.c
++++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c
+@@ -94,6 +94,7 @@ MODULE_LICENSE("GPL");
+ struct iwl_mod_params iwl3945_mod_params = {
+       .sw_crypto = 1,
+       .restart_fw = 1,
++      .disable_hw_scan = 1,
+       /* the rest are 0 by default */
+ };
+@@ -4317,7 +4318,7 @@ MODULE_PARM_DESC(debug, "debug output ma
+ #endif
+ module_param_named(disable_hw_scan, iwl3945_mod_params.disable_hw_scan,
+                  int, S_IRUGO);
+-MODULE_PARM_DESC(disable_hw_scan, "disable hardware scanning (default 0)");
++MODULE_PARM_DESC(disable_hw_scan, "disable hardware scanning (default 1)");
+ module_param_named(fw_restart3945, iwl3945_mod_params.restart_fw, int, S_IRUGO);
+ MODULE_PARM_DESC(fw_restart3945, "restart firmware in case of error");
diff --git a/queue-2.6.38/iwlegacy-fix-tx_power-initialization.patch b/queue-2.6.38/iwlegacy-fix-tx_power-initialization.patch
new file mode 100644 (file)
index 0000000..1112581
--- /dev/null
@@ -0,0 +1,119 @@
+From 332704a51498a7e29aa92c19dc03f11f80b71bfe Mon Sep 17 00:00:00 2001
+From: Stanislaw Gruszka <sgruszka@redhat.com>
+Date: Wed, 13 Apr 2011 10:56:51 +0200
+Subject: iwlegacy: fix tx_power initialization
+
+From: Stanislaw Gruszka <sgruszka@redhat.com>
+
+commit 332704a51498a7e29aa92c19dc03f11f80b71bfe upstream.
+
+priv->tx_power_next is not initialized to max supported power,
+but instead default value is used, what cause errors like
+
+[   58.597834] iwl3945 0000:03:00.0: Requested user TXPOWER 15 above upper limit 14.
+[   58.597839] iwl3945 0000:03:00.0: Error setting Tx power (-22).
+
+if maximum tx power read from the eeprom is smaller than default.
+In consequence card is unable to initialize properly. Fix the problem
+and cleanup tx power initialization.
+
+Reported-and-tested-by: Robin Dong <hao.bigrat@gmail.com>
+Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/wireless/iwlwifi/iwl-3945-hw.h  |    2 --
+ drivers/net/wireless/iwlwifi/iwl-agn.c      |    6 ------
+ drivers/net/wireless/iwlwifi/iwl-core.c     |    9 +++++++--
+ drivers/net/wireless/iwlwifi/iwl-eeprom.c   |    7 -------
+ drivers/net/wireless/iwlwifi/iwl3945-base.c |    4 ----
+ 5 files changed, 7 insertions(+), 21 deletions(-)
+
+--- a/drivers/net/wireless/iwlwifi/iwl-3945-hw.h
++++ b/drivers/net/wireless/iwlwifi/iwl-3945-hw.h
+@@ -74,8 +74,6 @@
+ /* RSSI to dBm */
+ #define IWL39_RSSI_OFFSET     95
+-#define IWL_DEFAULT_TX_POWER  0x0F
+-
+ /*
+  * EEPROM related constants, enums, and structures.
+  */
+--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
++++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
+@@ -3841,12 +3841,6 @@ static int iwl_init_drv(struct iwl_priv
+               priv->dynamic_frag_thresh = BT_FRAG_THRESHOLD_DEF;
+       }
+-      /* Set the tx_power_user_lmt to the lowest power level
+-       * this value will get overwritten by channel max power avg
+-       * from eeprom */
+-      priv->tx_power_user_lmt = IWLAGN_TX_POWER_TARGET_POWER_MIN;
+-      priv->tx_power_next = IWLAGN_TX_POWER_TARGET_POWER_MIN;
+-
+       ret = iwl_init_channel_map(priv);
+       if (ret) {
+               IWL_ERR(priv, "initializing regulatory failed: %d\n", ret);
+--- a/drivers/net/wireless/iwlwifi/iwl-core.c
++++ b/drivers/net/wireless/iwlwifi/iwl-core.c
+@@ -168,6 +168,7 @@ int iwlcore_init_geos(struct iwl_priv *p
+       struct ieee80211_channel *geo_ch;
+       struct ieee80211_rate *rates;
+       int i = 0;
++      s8 max_tx_power = 0;
+       if (priv->bands[IEEE80211_BAND_2GHZ].n_bitrates ||
+           priv->bands[IEEE80211_BAND_5GHZ].n_bitrates) {
+@@ -244,8 +245,8 @@ int iwlcore_init_geos(struct iwl_priv *p
+                       geo_ch->flags |= ch->ht40_extension_channel;
+-                      if (ch->max_power_avg > priv->tx_power_device_lmt)
+-                              priv->tx_power_device_lmt = ch->max_power_avg;
++                      if (ch->max_power_avg > max_tx_power)
++                              max_tx_power = ch->max_power_avg;
+               } else {
+                       geo_ch->flags |= IEEE80211_CHAN_DISABLED;
+               }
+@@ -258,6 +259,10 @@ int iwlcore_init_geos(struct iwl_priv *p
+                                geo_ch->flags);
+       }
++      priv->tx_power_device_lmt = max_tx_power;
++      priv->tx_power_user_lmt = max_tx_power;
++      priv->tx_power_next = max_tx_power;
++
+       if ((priv->bands[IEEE80211_BAND_5GHZ].n_channels == 0) &&
+            priv->cfg->sku & IWL_SKU_A) {
+               IWL_INFO(priv, "Incorrectly detected BG card as ABG. "
+--- a/drivers/net/wireless/iwlwifi/iwl-eeprom.c
++++ b/drivers/net/wireless/iwlwifi/iwl-eeprom.c
+@@ -724,13 +724,6 @@ int iwl_init_channel_map(struct iwl_priv
+                                            flags & EEPROM_CHANNEL_RADAR))
+                                      ? "" : "not ");
+-                      /* Set the tx_power_user_lmt to the highest power
+-                       * supported by any channel */
+-                      if (eeprom_ch_info[ch].max_power_avg >
+-                                              priv->tx_power_user_lmt)
+-                              priv->tx_power_user_lmt =
+-                                  eeprom_ch_info[ch].max_power_avg;
+-
+                       ch_info++;
+               }
+       }
+--- a/drivers/net/wireless/iwlwifi/iwl3945-base.c
++++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c
+@@ -3859,10 +3859,6 @@ static int iwl3945_init_drv(struct iwl_p
+       priv->force_reset[IWL_FW_RESET].reset_duration =
+               IWL_DELAY_NEXT_FORCE_FW_RELOAD;
+-
+-      priv->tx_power_user_lmt = IWL_DEFAULT_TX_POWER;
+-      priv->tx_power_next = IWL_DEFAULT_TX_POWER;
+-
+       if (eeprom->version < EEPROM_3945_EEPROM_VERSION) {
+               IWL_WARN(priv, "Unsupported EEPROM version: 0x%04X\n",
+                        eeprom->version);
index ffb6fe8bc0f44040baaa3f2af38e722919ad9068..3441cc9180912d421683a61ab4f873b2cd2695ff 100644 (file)
@@ -50,3 +50,6 @@ agp-fix-arbitrary-kernel-memory-writes.patch
 agp-fix-oom-and-buffer-overflow.patch
 iwlwifi-do-not-set-tx-power-when-channel-is-changing.patch
 iwl3945-do-not-deprecate-software-scan.patch
+iwl3945-disable-hw-scan-by-default.patch
+iwlegacy-fix-tx_power-initialization.patch
+input-xen-kbdfront-fix-mouse-getting-stuck-after-save-restore.patch