[kernel/f20] Fix system freeze due to incorrect rt2800 initialization (rhbz 1000679)

Josh Boyer jwboyer at fedoraproject.org
Mon Sep 9 12:41:03 UTC 2013


commit e13ea7f2e90d190f11bb199072c5cc5bf4970ddb
Author: Josh Boyer <jwboyer at fedoraproject.org>
Date:   Mon Sep 9 08:35:58 2013 -0400

    Fix system freeze due to incorrect rt2800 initialization (rhbz 1000679)

 kernel.spec                                     |    9 +++
 rt2800-rearrange-bbp-rfcsr-initialization.patch |   69 +++++++++++++++++++++++
 2 files changed, 78 insertions(+), 0 deletions(-)
---
diff --git a/kernel.spec b/kernel.spec
index 8568ef3..17d4f13 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -770,6 +770,9 @@ Patch25057: iwl4965-better-skb-management-in-rx-path.patch
 #rhbz 963715
 Patch25077: media-cx23885-Fix-TeVii-S471-regression-since-introduction-of-ts2020.patch
 
+#rhbz 1000679
+Patch25078: rt2800-rearrange-bbp-rfcsr-initialization.patch
+
 Patch25090: mei-me-fix-hardware-reset-flow.patch
 
 #CVE-2013-2888 rhbz 1000451 1002543 CVE-2013-2889 rhbz 999890 1002548
@@ -1516,6 +1519,9 @@ ApplyPatch mei-me-fix-hardware-reset-flow.patch
 #CVE-2013-2897 rhbz 1000536 1002600 CVE-2013-2899 rhbz 1000373 1002604
 ApplyPatch HID-CVE-fixes.patch
 
+#rhbz 1000679
+ApplyPatch rt2800-rearrange-bbp-rfcsr-initialization.patch
+
 # END OF PATCH APPLICATIONS
 
 %endif
@@ -2315,6 +2321,9 @@ fi
 #                 ||----w |
 #                 ||     ||
 %changelog
+* Mon Sep 09 2013 Josh Boyer <jwboyer at fedoraproject.org>
+- Fix system freeze due to incorrect rt2800 initialization (rhbz 1000679)
+
 * Sun Sep  8 2013 Peter Robinson <pbrobinson at fedoraproject.org>
 - Minor OMAP config changes
 
diff --git a/rt2800-rearrange-bbp-rfcsr-initialization.patch b/rt2800-rearrange-bbp-rfcsr-initialization.patch
new file mode 100644
index 0000000..5b1e27c
--- /dev/null
+++ b/rt2800-rearrange-bbp-rfcsr-initialization.patch
@@ -0,0 +1,69 @@
+My commit
+
+commit c630ccf1a127578421a928489d51e99c05037054
+Author: Stanislaw Gruszka <stf_xl at wp.pl>
+Date:   Sat Mar 16 19:19:46 2013 +0100
+
+    rt2800: rearrange bbp/rfcsr initialization
+
+make Maxim machine freeze when try to start wireless device.
+
+Initialization order and sending MCU_BOOT_SIGNAL request, changed in
+above commit, is important. Doing things incorrectly make PCIe bus
+problems, which can froze the machine.
+
+This patch change initialization sequence like vendor driver do:
+function NICInitializeAsic() from
+2011_1007_RT5390_RT5392_Linux_STA_V2.5.0.3_DPO (PCI devices) and
+DPO_RT5572_LinuxSTA_2.6.1.3_20121022 (according Mediatek, latest driver
+for RT8070/RT3070/RT3370/RT3572/RT5370/RT5372/RT5572 USB devices).
+It fixes freezes on Maxim system.
+
+Resolve:
+https://bugzilla.redhat.com/show_bug.cgi?id=1000679
+
+Reported-and-tested-by: Maxim Polyakov <polyakov at dexmalabs.com>
+Bisected-by: Igor Gnatenko <i.gnatenko.brain at gmail.com>
+Cc: stable at vger.kernel.org # 3.10+
+Signed-off-by: Stanislaw Gruszka <sgruszka at redhat.com>
+---
+ drivers/net/wireless/rt2x00/rt2800lib.c | 11 ++++++-----
+ 1 file changed, 6 insertions(+), 5 deletions(-)
+
+diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c
+index d217c9e..8f6820a 100644
+--- a/drivers/net/wireless/rt2x00/rt2800lib.c
++++ b/drivers/net/wireless/rt2x00/rt2800lib.c
+@@ -6631,19 +6631,20 @@ int rt2800_enable_radio(struct rt2x00_dev *rt2x00dev)
+ 		     rt2800_init_registers(rt2x00dev)))
+ 		return -EIO;
+ 
++	if (unlikely(rt2800_wait_bbp_rf_ready(rt2x00dev)))
++		return -EIO;
++
+ 	/*
+ 	 * Send signal to firmware during boot time.
+ 	 */
+ 	rt2800_register_write(rt2x00dev, H2M_BBP_AGENT, 0);
+ 	rt2800_register_write(rt2x00dev, H2M_MAILBOX_CSR, 0);
+-	if (rt2x00_is_usb(rt2x00dev)) {
++	if (rt2x00_is_usb(rt2x00dev))
+ 		rt2800_register_write(rt2x00dev, H2M_INT_SRC, 0);
+-		rt2800_mcu_request(rt2x00dev, MCU_BOOT_SIGNAL, 0, 0, 0);
+-	}
++	rt2800_mcu_request(rt2x00dev, MCU_BOOT_SIGNAL, 0, 0, 0);
+ 	msleep(1);
+ 
+-	if (unlikely(rt2800_wait_bbp_rf_ready(rt2x00dev) ||
+-		     rt2800_wait_bbp_ready(rt2x00dev)))
++	if (unlikely(rt2800_wait_bbp_ready(rt2x00dev)))
+ 		return -EIO;
+ 
+ 	rt2800_init_bbp(rt2x00dev);
+-- 
+1.7.11.7
+
+--
+To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
+the body of a message to majordomo at vger.kernel.org
+More majordomo info at  http://vger.kernel.org/majordomo-info.html
\ No newline at end of file


More information about the scm-commits mailing list