From: Greg Kroah-Hartman Date: Fri, 29 Apr 2011 16:25:32 +0000 (-0700) Subject: .38 patches X-Git-Tag: v2.6.38.5~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f71d7279448701b5027eb478a4fb5d4d459e733a;p=thirdparty%2Fkernel%2Fstable-queue.git .38 patches --- 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 index 00000000000..68749039746 --- /dev/null +++ b/queue-2.6.38/input-xen-kbdfront-fix-mouse-getting-stuck-after-save-restore.patch @@ -0,0 +1,63 @@ +From c36b58e8a9112017c2bcc322cc98e71241814303 Mon Sep 17 00:00:00 2001 +From: Igor Mammedov +Date: Mon, 18 Apr 2011 10:17:17 -0700 +Subject: Input: xen-kbdfront - fix mouse getting stuck after save/restore + +From: Igor Mammedov + +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 +Signed-off-by: Igor Mammedov +[v1: Expanded the commit description] +Signed-off-by: Konrad Rzeszutek Wilk +Signed-off-by: Dmitry Torokhov + +--- + 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 index 00000000000..4b86b04b3ca --- /dev/null +++ b/queue-2.6.38/iwl3945-disable-hw-scan-by-default.patch @@ -0,0 +1,50 @@ +From 0263aa45293838b514b8af674a03faf040991a90 Mon Sep 17 00:00:00 2001 +From: Stanislaw Gruszka +Date: Tue, 29 Mar 2011 11:24:21 +0200 +Subject: iwl3945: disable hw scan by default + +From: Stanislaw Gruszka + +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 +Signed-off-by: John W. Linville +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..11125816991 --- /dev/null +++ b/queue-2.6.38/iwlegacy-fix-tx_power-initialization.patch @@ -0,0 +1,119 @@ +From 332704a51498a7e29aa92c19dc03f11f80b71bfe Mon Sep 17 00:00:00 2001 +From: Stanislaw Gruszka +Date: Wed, 13 Apr 2011 10:56:51 +0200 +Subject: iwlegacy: fix tx_power initialization + +From: Stanislaw Gruszka + +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 +Signed-off-by: Stanislaw Gruszka +Signed-off-by: John W. Linville +Signed-off-by: Greg Kroah-Hartman + +--- + 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); diff --git a/queue-2.6.38/series b/queue-2.6.38/series index ffb6fe8bc0f..3441cc91809 100644 --- a/queue-2.6.38/series +++ b/queue-2.6.38/series @@ -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