[arch-commits] Commit in linux/trunk (12 files)

Thomas Bächler thomas at nymeria.archlinux.org
Fri Apr 11 21:45:37 UTC 2014


    Date: Friday, April 11, 2014 @ 23:45:37
  Author: thomas
Revision: 210209

linux 3.14-5: Fix a futex bug and add some iwlwifi fixes

Added:
  linux/trunk/0007-x86-efi-Correct-EFI-boot-stub-use-of-code32_start.patch
  linux/trunk/0008-futex-avoid-race-between-requeue-and-wake.patch
  linux/trunk/0009-iwlwifi-mvm-rs-fix-search-cycle-rules.patch
  linux/trunk/0010-iwlwifi-mvm-delay-enabling-smart-FIFO-until-after-be.patch
Modified:
  linux/trunk/0001-Bluetooth-allocate-static-minor-for-vhci.patch
  linux/trunk/0002-module-allow-multiple-calls-to-MODULE_DEVICE_TABLE-p.patch
  linux/trunk/0003-module-remove-MODULE_GENERIC_TABLE.patch
  linux/trunk/0004-fs-Don-t-return-0-from-get_anon_bdev.patch
  linux/trunk/0005-Revert-Bluetooth-Enable-autosuspend-for-Intel-Blueto.patch
  linux/trunk/0006-genksyms-fix-typeof-handling.patch
  linux/trunk/PKGBUILD
Deleted:
  linux/trunk/0007-Fix-the-use-of-code32_start-in-the-EFI-boot-stub.patch

-----------------------------------------------------------------+
 0001-Bluetooth-allocate-static-minor-for-vhci.patch             |    4 
 0002-module-allow-multiple-calls-to-MODULE_DEVICE_TABLE-p.patch |    6 
 0003-module-remove-MODULE_GENERIC_TABLE.patch                   |    4 
 0004-fs-Don-t-return-0-from-get_anon_bdev.patch                 |    4 
 0005-Revert-Bluetooth-Enable-autosuspend-for-Intel-Blueto.patch |    6 
 0006-genksyms-fix-typeof-handling.patch                         |    4 
 0007-Fix-the-use-of-code32_start-in-the-EFI-boot-stub.patch     |   96 -------
 0007-x86-efi-Correct-EFI-boot-stub-use-of-code32_start.patch    |  110 ++++++++
 0008-futex-avoid-race-between-requeue-and-wake.patch            |   94 +++++++
 0009-iwlwifi-mvm-rs-fix-search-cycle-rules.patch                |  125 ++++++++++
 0010-iwlwifi-mvm-delay-enabling-smart-FIFO-until-after-be.patch |   52 ++++
 PKGBUILD                                                        |   38 ++-
 12 files changed, 423 insertions(+), 120 deletions(-)

Modified: 0001-Bluetooth-allocate-static-minor-for-vhci.patch
===================================================================
--- 0001-Bluetooth-allocate-static-minor-for-vhci.patch	2014-04-11 19:22:18 UTC (rev 210208)
+++ 0001-Bluetooth-allocate-static-minor-for-vhci.patch	2014-04-11 21:45:37 UTC (rev 210209)
@@ -1,7 +1,7 @@
 From 5d77ba2d26110c678b40fd723866a17d4036de12 Mon Sep 17 00:00:00 2001
 From: Lucas De Marchi <lucas.demarchi at intel.com>
 Date: Tue, 18 Feb 2014 02:19:26 -0300
-Subject: [PATCH 1/7] Bluetooth: allocate static minor for vhci
+Subject: [PATCH 01/10] Bluetooth: allocate static minor for vhci
 
 Commit bfacbb9 (Bluetooth: Use devname:vhci module alias for virtual HCI
 driver) added the module alias to hci_vhci module so it's possible to
@@ -70,5 +70,5 @@
  #define DMAPI_MINOR		140	/* DMAPI */
  #define NVRAM_MINOR		144
 -- 
-1.9.1
+1.9.2
 

Modified: 0002-module-allow-multiple-calls-to-MODULE_DEVICE_TABLE-p.patch
===================================================================
--- 0002-module-allow-multiple-calls-to-MODULE_DEVICE_TABLE-p.patch	2014-04-11 19:22:18 UTC (rev 210208)
+++ 0002-module-allow-multiple-calls-to-MODULE_DEVICE_TABLE-p.patch	2014-04-11 21:45:37 UTC (rev 210209)
@@ -1,8 +1,8 @@
 From 9bc5b710f5957763d6944f38143b627d127c15ff Mon Sep 17 00:00:00 2001
 From: Tom Gundersen <teg at jklm.no>
 Date: Mon, 3 Feb 2014 11:14:13 +1030
-Subject: [PATCH 2/7] module: allow multiple calls to MODULE_DEVICE_TABLE() per
- module
+Subject: [PATCH 02/10] module: allow multiple calls to MODULE_DEVICE_TABLE()
+ per module
 
 Commit 78551277e4df5: "Input: i8042 - add PNP modaliases" had a bug, where the
 second call to MODULE_DEVICE_TABLE() overrode the first resulting in not all
@@ -89,5 +89,5 @@
  	/* Handle all-NULL symbols allocated into .bss */
  	if (info->sechdrs[get_secindex(info, sym)].sh_type & SHT_NOBITS) {
 -- 
-1.9.1
+1.9.2
 

Modified: 0003-module-remove-MODULE_GENERIC_TABLE.patch
===================================================================
--- 0003-module-remove-MODULE_GENERIC_TABLE.patch	2014-04-11 19:22:18 UTC (rev 210208)
+++ 0003-module-remove-MODULE_GENERIC_TABLE.patch	2014-04-11 21:45:37 UTC (rev 210209)
@@ -1,7 +1,7 @@
 From 06d2e746733a83469944481cb7f4fb1c7134a8ce Mon Sep 17 00:00:00 2001
 From: Rusty Russell <rusty at rustcorp.com.au>
 Date: Mon, 3 Feb 2014 11:15:13 +1030
-Subject: [PATCH 3/7] module: remove MODULE_GENERIC_TABLE
+Subject: [PATCH 03/10] module: remove MODULE_GENERIC_TABLE
 
 MODULE_DEVICE_TABLE() calles MODULE_GENERIC_TABLE(); make it do the
 work directly.  This also removes a wart introduced in the last patch,
@@ -71,5 +71,5 @@
  /* Version of form [<epoch>:]<version>[-<extra-version>].
   * Or for CVS/RCS ID version, everything but the number is stripped.
 -- 
-1.9.1
+1.9.2
 

Modified: 0004-fs-Don-t-return-0-from-get_anon_bdev.patch
===================================================================
--- 0004-fs-Don-t-return-0-from-get_anon_bdev.patch	2014-04-11 19:22:18 UTC (rev 210208)
+++ 0004-fs-Don-t-return-0-from-get_anon_bdev.patch	2014-04-11 21:45:37 UTC (rev 210209)
@@ -1,7 +1,7 @@
 From 835a463e190af87a36df681863db7c3ea7ba0d66 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Thomas=20B=C3=A4chler?= <thomas at archlinux.org>
 Date: Thu, 3 Apr 2014 21:55:37 +0200
-Subject: [PATCH 4/7] fs: Don't return 0 from get_anon_bdev
+Subject: [PATCH 04/10] fs: Don't return 0 from get_anon_bdev
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
@@ -40,5 +40,5 @@
  int get_anon_bdev(dev_t *p)
  {
 -- 
-1.9.1
+1.9.2
 

Modified: 0005-Revert-Bluetooth-Enable-autosuspend-for-Intel-Blueto.patch
===================================================================
--- 0005-Revert-Bluetooth-Enable-autosuspend-for-Intel-Blueto.patch	2014-04-11 19:22:18 UTC (rev 210208)
+++ 0005-Revert-Bluetooth-Enable-autosuspend-for-Intel-Blueto.patch	2014-04-11 21:45:37 UTC (rev 210209)
@@ -1,8 +1,8 @@
 From 71d4f3022d1f625d94187f7cda682d2233a692d8 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Thomas=20B=C3=A4chler?= <thomas at archlinux.org>
 Date: Thu, 3 Apr 2014 23:59:49 +0200
-Subject: [PATCH 5/7] Revert "Bluetooth: Enable autosuspend for Intel Bluetooth
- device"
+Subject: [PATCH 05/10] Revert "Bluetooth: Enable autosuspend for Intel
+ Bluetooth device"
 
 This reverts commit d2bee8fb6e18f6116aada39851918473761f7ab1.
 
@@ -29,5 +29,5 @@
  	/* Interface numbers are hardcoded in the specification */
  	data->isoc = usb_ifnum_to_if(data->udev, 1);
 -- 
-1.9.1
+1.9.2
 

Modified: 0006-genksyms-fix-typeof-handling.patch
===================================================================
--- 0006-genksyms-fix-typeof-handling.patch	2014-04-11 19:22:18 UTC (rev 210208)
+++ 0006-genksyms-fix-typeof-handling.patch	2014-04-11 21:45:37 UTC (rev 210209)
@@ -1,7 +1,7 @@
 From 39a7f4024e3e7d54a3bb49dcb645b3d7af16354e Mon Sep 17 00:00:00 2001
 From: Jan Beulich <JBeulich at suse.com>
 Date: Thu, 3 Apr 2014 14:46:37 -0700
-Subject: [PATCH 6/7] genksyms: fix typeof() handling
+Subject: [PATCH 06/10] genksyms: fix typeof() handling
 
 Recent increased use of typeof() throughout the tree resulted in a
 number of symbols (25 in a typical distro config of ours) not getting a
@@ -1356,5 +1356,5 @@
  	/* References to s/u/e's defined elsewhere.  Rearrange things
  	   so that it is easier to expand the definition fully later.  */
 -- 
-1.9.1
+1.9.2
 

Deleted: 0007-Fix-the-use-of-code32_start-in-the-EFI-boot-stub.patch
===================================================================
--- 0007-Fix-the-use-of-code32_start-in-the-EFI-boot-stub.patch	2014-04-11 19:22:18 UTC (rev 210208)
+++ 0007-Fix-the-use-of-code32_start-in-the-EFI-boot-stub.patch	2014-04-11 21:45:37 UTC (rev 210209)
@@ -1,96 +0,0 @@
-From ec8ec8362c46fd86571204d0fcce11c03477e5c5 Mon Sep 17 00:00:00 2001
-From: Matt Fleming <matt at console-pimps.org>
-Date: Wed, 9 Apr 2014 10:33:49 +0200
-Subject: [PATCH 7/7] Fix the use of code32_start in the EFI boot stub
-
----
- arch/x86/boot/compressed/eboot.c   |  5 +++--
- arch/x86/boot/compressed/head_32.S | 14 ++++++++------
- arch/x86/boot/compressed/head_64.S |  9 +++------
- 3 files changed, 14 insertions(+), 14 deletions(-)
-
-diff --git a/arch/x86/boot/compressed/eboot.c b/arch/x86/boot/compressed/eboot.c
-index a7677ba..78cbb2d 100644
---- a/arch/x86/boot/compressed/eboot.c
-+++ b/arch/x86/boot/compressed/eboot.c
-@@ -425,6 +425,9 @@ void setup_graphics(struct boot_params *boot_params)
-  * Because the x86 boot code expects to be passed a boot_params we
-  * need to create one ourselves (usually the bootloader would create
-  * one for us).
-+ *
-+ * The caller is responsible for filling out ->code32_start in the
-+ * returned boot_params.
-  */
- struct boot_params *make_boot_params(void *handle, efi_system_table_t *_table)
- {
-@@ -483,8 +486,6 @@ struct boot_params *make_boot_params(void *handle, efi_system_table_t *_table)
- 	hdr->vid_mode = 0xffff;
- 	hdr->boot_flag = 0xAA55;
- 
--	hdr->code32_start = (__u64)(unsigned long)image->image_base;
--
- 	hdr->type_of_loader = 0x21;
- 
- 	/* Convert unicode cmdline to ascii */
-diff --git a/arch/x86/boot/compressed/head_32.S b/arch/x86/boot/compressed/head_32.S
-index 9116aac..f45ab7a 100644
---- a/arch/x86/boot/compressed/head_32.S
-+++ b/arch/x86/boot/compressed/head_32.S
-@@ -50,6 +50,13 @@ ENTRY(efi_pe_entry)
- 	pushl	%eax
- 	pushl	%esi
- 	pushl	%ecx
-+
-+	call	reloc
-+reloc:
-+	popl	%ecx
-+	subl	reloc, %ecx
-+	movl	%ecx, BP_code32_start(%eax)
-+
- 	sub	$0x4, %esp
- 
- ENTRY(efi_stub_entry)
-@@ -63,12 +70,7 @@ ENTRY(efi_stub_entry)
- 	hlt
- 	jmp	1b
- 2:
--	call	3f
--3:
--	popl	%eax
--	subl	$3b, %eax
--	subl	BP_pref_address(%esi), %eax
--	add	BP_code32_start(%esi), %eax
-+	movl	BP_code32_start(%esi), %eax
- 	leal	preferred_addr(%eax), %eax
- 	jmp	*%eax
- 
-diff --git a/arch/x86/boot/compressed/head_64.S b/arch/x86/boot/compressed/head_64.S
-index c5c1ae0..b10fa66 100644
---- a/arch/x86/boot/compressed/head_64.S
-+++ b/arch/x86/boot/compressed/head_64.S
-@@ -217,6 +217,8 @@ ENTRY(efi_pe_entry)
- 	cmpq	$0,%rax
- 	je	1f
- 	mov	%rax, %rdx
-+	leaq	startup_32(%rip), %rax
-+	movl	%eax, BP_code32_start(%rdx)
- 	popq	%rsi
- 	popq	%rdi
- 
-@@ -230,12 +232,7 @@ ENTRY(efi_stub_entry)
- 	hlt
- 	jmp	1b
- 2:
--	call	3f
--3:
--	popq	%rax
--	subq	$3b, %rax
--	subq	BP_pref_address(%rsi), %rax
--	add	BP_code32_start(%esi), %eax
-+	movl	BP_code32_start(%esi), %eax
- 	leaq	preferred_addr(%rax), %rax
- 	jmp	*%rax
- 
--- 
-1.9.1
-

Added: 0007-x86-efi-Correct-EFI-boot-stub-use-of-code32_start.patch
===================================================================
--- 0007-x86-efi-Correct-EFI-boot-stub-use-of-code32_start.patch	                        (rev 0)
+++ 0007-x86-efi-Correct-EFI-boot-stub-use-of-code32_start.patch	2014-04-11 21:45:37 UTC (rev 210209)
@@ -0,0 +1,110 @@
+From 720a9dbf61c88bd57d6f8198ed8ccb2bd4a6abd8 Mon Sep 17 00:00:00 2001
+From: Matt Fleming <matt at console-pimps.org>
+Date: Wed, 9 Apr 2014 10:33:49 +0200
+Subject: [PATCH 07/10] x86/efi: Correct EFI boot stub use of code32_start
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+code32_start should point at the start of the protected mode code, and
+*not* at the beginning of the bzImage. This is much easier to do in
+assembly so document that callers of make_boot_params() need to fill out
+code32_start.
+
+The fallout from this bug is that we would end up relocating the image
+but copying the image at some offset, resulting in what appeared to be
+memory corruption.
+
+Reported-by: Thomas Bächler <thomas at archlinux.org>
+Signed-off-by: Matt Fleming <matt.fleming at intel.com>
+---
+ arch/x86/boot/compressed/eboot.c   |  5 +++--
+ arch/x86/boot/compressed/head_32.S | 14 ++++++++------
+ arch/x86/boot/compressed/head_64.S |  9 +++------
+ 3 files changed, 14 insertions(+), 14 deletions(-)
+
+diff --git a/arch/x86/boot/compressed/eboot.c b/arch/x86/boot/compressed/eboot.c
+index a7677ba..78cbb2d 100644
+--- a/arch/x86/boot/compressed/eboot.c
++++ b/arch/x86/boot/compressed/eboot.c
+@@ -425,6 +425,9 @@ void setup_graphics(struct boot_params *boot_params)
+  * Because the x86 boot code expects to be passed a boot_params we
+  * need to create one ourselves (usually the bootloader would create
+  * one for us).
++ *
++ * The caller is responsible for filling out ->code32_start in the
++ * returned boot_params.
+  */
+ struct boot_params *make_boot_params(void *handle, efi_system_table_t *_table)
+ {
+@@ -483,8 +486,6 @@ struct boot_params *make_boot_params(void *handle, efi_system_table_t *_table)
+ 	hdr->vid_mode = 0xffff;
+ 	hdr->boot_flag = 0xAA55;
+ 
+-	hdr->code32_start = (__u64)(unsigned long)image->image_base;
+-
+ 	hdr->type_of_loader = 0x21;
+ 
+ 	/* Convert unicode cmdline to ascii */
+diff --git a/arch/x86/boot/compressed/head_32.S b/arch/x86/boot/compressed/head_32.S
+index 9116aac..f45ab7a 100644
+--- a/arch/x86/boot/compressed/head_32.S
++++ b/arch/x86/boot/compressed/head_32.S
+@@ -50,6 +50,13 @@ ENTRY(efi_pe_entry)
+ 	pushl	%eax
+ 	pushl	%esi
+ 	pushl	%ecx
++
++	call	reloc
++reloc:
++	popl	%ecx
++	subl	reloc, %ecx
++	movl	%ecx, BP_code32_start(%eax)
++
+ 	sub	$0x4, %esp
+ 
+ ENTRY(efi_stub_entry)
+@@ -63,12 +70,7 @@ ENTRY(efi_stub_entry)
+ 	hlt
+ 	jmp	1b
+ 2:
+-	call	3f
+-3:
+-	popl	%eax
+-	subl	$3b, %eax
+-	subl	BP_pref_address(%esi), %eax
+-	add	BP_code32_start(%esi), %eax
++	movl	BP_code32_start(%esi), %eax
+ 	leal	preferred_addr(%eax), %eax
+ 	jmp	*%eax
+ 
+diff --git a/arch/x86/boot/compressed/head_64.S b/arch/x86/boot/compressed/head_64.S
+index c5c1ae0..b10fa66 100644
+--- a/arch/x86/boot/compressed/head_64.S
++++ b/arch/x86/boot/compressed/head_64.S
+@@ -217,6 +217,8 @@ ENTRY(efi_pe_entry)
+ 	cmpq	$0,%rax
+ 	je	1f
+ 	mov	%rax, %rdx
++	leaq	startup_32(%rip), %rax
++	movl	%eax, BP_code32_start(%rdx)
+ 	popq	%rsi
+ 	popq	%rdi
+ 
+@@ -230,12 +232,7 @@ ENTRY(efi_stub_entry)
+ 	hlt
+ 	jmp	1b
+ 2:
+-	call	3f
+-3:
+-	popq	%rax
+-	subq	$3b, %rax
+-	subq	BP_pref_address(%rsi), %rax
+-	add	BP_code32_start(%esi), %eax
++	movl	BP_code32_start(%esi), %eax
+ 	leaq	preferred_addr(%rax), %rax
+ 	jmp	*%rax
+ 
+-- 
+1.9.2
+

Added: 0008-futex-avoid-race-between-requeue-and-wake.patch
===================================================================
--- 0008-futex-avoid-race-between-requeue-and-wake.patch	                        (rev 0)
+++ 0008-futex-avoid-race-between-requeue-and-wake.patch	2014-04-11 21:45:37 UTC (rev 210209)
@@ -0,0 +1,94 @@
+From aafcd8f8692fb9e389608c1efad2e57c0bbb9362 Mon Sep 17 00:00:00 2001
+From: Linus Torvalds <torvalds at linux-foundation.org>
+Date: Tue, 8 Apr 2014 15:30:07 -0700
+Subject: [PATCH 08/10] futex: avoid race between requeue and wake
+
+commit 69cd9eba38867a493a043bb13eb9b33cad5f1a9a upstream.
+
+Jan Stancek reported:
+ "pthread_cond_broadcast/4-1.c testcase from openposix testsuite (LTP)
+  occasionally fails, because some threads fail to wake up.
+
+  Testcase creates 5 threads, which are all waiting on same condition.
+  Main thread then calls pthread_cond_broadcast() without holding mutex,
+  which calls:
+
+      futex(uaddr1, FUTEX_CMP_REQUEUE_PRIVATE, 1, 2147483647, uaddr2, ..)
+
+  This immediately wakes up single thread A, which unlocks mutex and
+  tries to wake up another thread:
+
+      futex(uaddr2, FUTEX_WAKE_PRIVATE, 1)
+
+  If thread A manages to call futex_wake() before any waiters are
+  requeued for uaddr2, no other thread is woken up"
+
+The ordering constraints for the hash bucket waiter counting are that
+the waiter counts have to be incremented _before_ getting the spinlock
+(because the spinlock acts as part of the memory barrier), but the
+"requeue" operation didn't honor those rules, and nobody had even
+thought about that case.
+
+This fairly simple patch just increments the waiter count for the target
+hash bucket (hb2) when requeing a futex before taking the locks.  It
+then decrements them again after releasing the lock - the code that
+actually moves the futex(es) between hash buckets will do the additional
+required waiter count housekeeping.
+
+Reported-and-tested-by: Jan Stancek <jstancek at redhat.com>
+Acked-by: Davidlohr Bueso <davidlohr at hp.com>
+Cc: Peter Zijlstra <peterz at infradead.org>
+Cc: Thomas Gleixner <tglx at linutronix.de>
+Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ kernel/futex.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/kernel/futex.c b/kernel/futex.c
+index 08ec814..16b1f2c 100644
+--- a/kernel/futex.c
++++ b/kernel/futex.c
+@@ -1450,6 +1450,7 @@ retry:
+ 	hb2 = hash_futex(&key2);
+ 
+ retry_private:
++	hb_waiters_inc(hb2);
+ 	double_lock_hb(hb1, hb2);
+ 
+ 	if (likely(cmpval != NULL)) {
+@@ -1459,6 +1460,7 @@ retry_private:
+ 
+ 		if (unlikely(ret)) {
+ 			double_unlock_hb(hb1, hb2);
++			hb_waiters_dec(hb2);
+ 
+ 			ret = get_user(curval, uaddr1);
+ 			if (ret)
+@@ -1508,6 +1510,7 @@ retry_private:
+ 			break;
+ 		case -EFAULT:
+ 			double_unlock_hb(hb1, hb2);
++			hb_waiters_dec(hb2);
+ 			put_futex_key(&key2);
+ 			put_futex_key(&key1);
+ 			ret = fault_in_user_writeable(uaddr2);
+@@ -1517,6 +1520,7 @@ retry_private:
+ 		case -EAGAIN:
+ 			/* The owner was exiting, try again. */
+ 			double_unlock_hb(hb1, hb2);
++			hb_waiters_dec(hb2);
+ 			put_futex_key(&key2);
+ 			put_futex_key(&key1);
+ 			cond_resched();
+@@ -1592,6 +1596,7 @@ retry_private:
+ 
+ out_unlock:
+ 	double_unlock_hb(hb1, hb2);
++	hb_waiters_dec(hb2);
+ 
+ 	/*
+ 	 * drop_futex_key_refs() must be called outside the spinlocks. During
+-- 
+1.9.2
+

Added: 0009-iwlwifi-mvm-rs-fix-search-cycle-rules.patch
===================================================================
--- 0009-iwlwifi-mvm-rs-fix-search-cycle-rules.patch	                        (rev 0)
+++ 0009-iwlwifi-mvm-rs-fix-search-cycle-rules.patch	2014-04-11 21:45:37 UTC (rev 210209)
@@ -0,0 +1,125 @@
+From 06af061dd673d749d5516bea41e2becb034e00b8 Mon Sep 17 00:00:00 2001
+From: Eyal Shapira <eyal at wizery.com>
+Date: Sun, 16 Mar 2014 05:23:21 +0200
+Subject: [PATCH 09/10] iwlwifi: mvm: rs: fix search cycle rules
+
+commit 8930b05090acd321b1fc7c642528c697cb105c42 upstream.
+
+We should explore all possible columns when searching to be
+as resilient as possible to changing conditions. This fixes
+for example a scenario where even after a sudden creation of
+rssi difference between the 2 antennas we would keep doing MIMO
+at a low rate instead of switching to SISO at a higher rate using
+the better antenna which was the optimal configuration.
+
+Signed-off-by: Eyal Shapira <eyalx.shapira at intel.com>
+Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach at intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/net/wireless/iwlwifi/mvm/rs.c | 36 +++++++++++++++++------------------
+ 1 file changed, 18 insertions(+), 18 deletions(-)
+
+diff --git a/drivers/net/wireless/iwlwifi/mvm/rs.c b/drivers/net/wireless/iwlwifi/mvm/rs.c
+index 6abf74e..5bc8715 100644
+--- a/drivers/net/wireless/iwlwifi/mvm/rs.c
++++ b/drivers/net/wireless/iwlwifi/mvm/rs.c
+@@ -211,9 +211,9 @@ static const struct rs_tx_column rs_tx_columns[] = {
+ 		.next_columns = {
+ 			RS_COLUMN_LEGACY_ANT_B,
+ 			RS_COLUMN_SISO_ANT_A,
++			RS_COLUMN_SISO_ANT_B,
+ 			RS_COLUMN_MIMO2,
+-			RS_COLUMN_INVALID,
+-			RS_COLUMN_INVALID,
++			RS_COLUMN_MIMO2_SGI,
+ 		},
+ 	},
+ 	[RS_COLUMN_LEGACY_ANT_B] = {
+@@ -221,10 +221,10 @@ static const struct rs_tx_column rs_tx_columns[] = {
+ 		.ant = ANT_B,
+ 		.next_columns = {
+ 			RS_COLUMN_LEGACY_ANT_A,
++			RS_COLUMN_SISO_ANT_A,
+ 			RS_COLUMN_SISO_ANT_B,
+ 			RS_COLUMN_MIMO2,
+-			RS_COLUMN_INVALID,
+-			RS_COLUMN_INVALID,
++			RS_COLUMN_MIMO2_SGI,
+ 		},
+ 	},
+ 	[RS_COLUMN_SISO_ANT_A] = {
+@@ -234,8 +234,8 @@ static const struct rs_tx_column rs_tx_columns[] = {
+ 			RS_COLUMN_SISO_ANT_B,
+ 			RS_COLUMN_MIMO2,
+ 			RS_COLUMN_SISO_ANT_A_SGI,
+-			RS_COLUMN_INVALID,
+-			RS_COLUMN_INVALID,
++			RS_COLUMN_SISO_ANT_B_SGI,
++			RS_COLUMN_MIMO2_SGI,
+ 		},
+ 		.checks = {
+ 			rs_siso_allow,
+@@ -248,8 +248,8 @@ static const struct rs_tx_column rs_tx_columns[] = {
+ 			RS_COLUMN_SISO_ANT_A,
+ 			RS_COLUMN_MIMO2,
+ 			RS_COLUMN_SISO_ANT_B_SGI,
+-			RS_COLUMN_INVALID,
+-			RS_COLUMN_INVALID,
++			RS_COLUMN_SISO_ANT_A_SGI,
++			RS_COLUMN_MIMO2_SGI,
+ 		},
+ 		.checks = {
+ 			rs_siso_allow,
+@@ -263,8 +263,8 @@ static const struct rs_tx_column rs_tx_columns[] = {
+ 			RS_COLUMN_SISO_ANT_B_SGI,
+ 			RS_COLUMN_MIMO2_SGI,
+ 			RS_COLUMN_SISO_ANT_A,
+-			RS_COLUMN_INVALID,
+-			RS_COLUMN_INVALID,
++			RS_COLUMN_SISO_ANT_B,
++			RS_COLUMN_MIMO2,
+ 		},
+ 		.checks = {
+ 			rs_siso_allow,
+@@ -279,8 +279,8 @@ static const struct rs_tx_column rs_tx_columns[] = {
+ 			RS_COLUMN_SISO_ANT_A_SGI,
+ 			RS_COLUMN_MIMO2_SGI,
+ 			RS_COLUMN_SISO_ANT_B,
+-			RS_COLUMN_INVALID,
+-			RS_COLUMN_INVALID,
++			RS_COLUMN_SISO_ANT_A,
++			RS_COLUMN_MIMO2,
+ 		},
+ 		.checks = {
+ 			rs_siso_allow,
+@@ -292,10 +292,10 @@ static const struct rs_tx_column rs_tx_columns[] = {
+ 		.ant = ANT_AB,
+ 		.next_columns = {
+ 			RS_COLUMN_SISO_ANT_A,
++			RS_COLUMN_SISO_ANT_B,
++			RS_COLUMN_SISO_ANT_A_SGI,
++			RS_COLUMN_SISO_ANT_B_SGI,
+ 			RS_COLUMN_MIMO2_SGI,
+-			RS_COLUMN_INVALID,
+-			RS_COLUMN_INVALID,
+-			RS_COLUMN_INVALID,
+ 		},
+ 		.checks = {
+ 			rs_mimo_allow,
+@@ -307,10 +307,10 @@ static const struct rs_tx_column rs_tx_columns[] = {
+ 		.sgi = true,
+ 		.next_columns = {
+ 			RS_COLUMN_SISO_ANT_A_SGI,
++			RS_COLUMN_SISO_ANT_B_SGI,
++			RS_COLUMN_SISO_ANT_A,
++			RS_COLUMN_SISO_ANT_B,
+ 			RS_COLUMN_MIMO2,
+-			RS_COLUMN_INVALID,
+-			RS_COLUMN_INVALID,
+-			RS_COLUMN_INVALID,
+ 		},
+ 		.checks = {
+ 			rs_mimo_allow,
+-- 
+1.9.2
+

Added: 0010-iwlwifi-mvm-delay-enabling-smart-FIFO-until-after-be.patch
===================================================================
--- 0010-iwlwifi-mvm-delay-enabling-smart-FIFO-until-after-be.patch	                        (rev 0)
+++ 0010-iwlwifi-mvm-delay-enabling-smart-FIFO-until-after-be.patch	2014-04-11 21:45:37 UTC (rev 210209)
@@ -0,0 +1,52 @@
+From 784c4f0b18f89922ddc0fe21e5ec64cc370bb3f2 Mon Sep 17 00:00:00 2001
+From: Johannes Berg <johannes.berg at intel.com>
+Date: Wed, 19 Mar 2014 18:36:39 +0100
+Subject: [PATCH 10/10] iwlwifi: mvm: delay enabling smart FIFO until after
+ beacon RX
+
+If we have no beacon data before association, delay smart FIFO
+enablement until after we have this data.
+
+Not doing so can cause association failures in extremely silent
+environments (usually only a shielded box/room) as beacon RX is
+not sent to the host immediately, and then the association time
+event ends without the host receiving any beacon even though it
+was on the air - it's just stuck on the FIFO.
+
+Cc: <stable at vger.kernel.org> [3.14]
+Signed-off-by: Johannes Berg <johannes.berg at intel.com>
+Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach at intel.com>
+---
+ drivers/net/wireless/iwlwifi/mvm/mac80211.c | 1 +
+ drivers/net/wireless/iwlwifi/mvm/sf.c       | 3 ++-
+ 2 files changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/net/wireless/iwlwifi/mvm/mac80211.c b/drivers/net/wireless/iwlwifi/mvm/mac80211.c
+index c35b866..45e861e 100644
+--- a/drivers/net/wireless/iwlwifi/mvm/mac80211.c
++++ b/drivers/net/wireless/iwlwifi/mvm/mac80211.c
+@@ -971,6 +971,7 @@ static void iwl_mvm_bss_info_changed_station(struct iwl_mvm *mvm,
+ 		 */
+ 		iwl_mvm_remove_time_event(mvm, mvmvif,
+ 					  &mvmvif->time_event_data);
++		iwl_mvm_sf_update(mvm, vif, false);
+ 	} else if (changes & (BSS_CHANGED_PS | BSS_CHANGED_P2P_PS |
+ 			      BSS_CHANGED_QOS)) {
+ 		ret = iwl_mvm_power_update_mode(mvm, vif);
+diff --git a/drivers/net/wireless/iwlwifi/mvm/sf.c b/drivers/net/wireless/iwlwifi/mvm/sf.c
+index 8401627..88809b2 100644
+--- a/drivers/net/wireless/iwlwifi/mvm/sf.c
++++ b/drivers/net/wireless/iwlwifi/mvm/sf.c
+@@ -274,7 +274,8 @@ int iwl_mvm_sf_update(struct iwl_mvm *mvm, struct ieee80211_vif *changed_vif,
+ 				return -EINVAL;
+ 			if (changed_vif->type != NL80211_IFTYPE_STATION) {
+ 				new_state = SF_UNINIT;
+-			} else if (changed_vif->bss_conf.assoc) {
++			} else if (changed_vif->bss_conf.assoc &&
++				   changed_vif->bss_conf.dtim_period) {
+ 				mvmvif = iwl_mvm_vif_from_mac80211(changed_vif);
+ 				sta_id = mvmvif->ap_sta_id;
+ 				new_state = SF_FULL_ON;
+-- 
+1.9.2
+

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2014-04-11 19:22:18 UTC (rev 210208)
+++ PKGBUILD	2014-04-11 21:45:37 UTC (rev 210209)
@@ -6,7 +6,7 @@
 #pkgbase=linux-custom       # Build kernel with a different name
 _srcname=linux-3.14
 pkgver=3.14
-pkgrel=4
+pkgrel=5
 arch=('i686' 'x86_64')
 url="http://www.kernel.org/"
 license=('GPL2')
@@ -25,7 +25,10 @@
         '0004-fs-Don-t-return-0-from-get_anon_bdev.patch'
         '0005-Revert-Bluetooth-Enable-autosuspend-for-Intel-Blueto.patch'
         '0006-genksyms-fix-typeof-handling.patch'
-        '0007-Fix-the-use-of-code32_start-in-the-EFI-boot-stub.patch'
+        '0007-x86-efi-Correct-EFI-boot-stub-use-of-code32_start.patch'
+        '0008-futex-avoid-race-between-requeue-and-wake.patch'
+        '0009-iwlwifi-mvm-rs-fix-search-cycle-rules.patch'
+        '0010-iwlwifi-mvm-delay-enabling-smart-FIFO-until-after-be.patch'
         )
 sha256sums=('61558aa490855f42b6340d1a1596be47454909629327c49a5e4e10268065dffa'
             'f2131f0f5a20a6cc65a987cf5363d08c343041c859686ceb4bb93d2d2a3d6b34'
@@ -32,13 +35,16 @@
             '3545e2754c2f55f04818bc17461ddcabaf0760c35a0fec5d1d70f75c2ac93dbe'
             'f0d90e756f14533ee67afda280500511a62465b4f76adcc5effa95a40045179c'
             'faced4eb4c47c4eb1a9ee8a5bf8a7c4b49d6b4d78efbe426e410730e6267d182'
-            'aa17aa9a5c663552ea047b9d2a9a916207bed361bd387418c122f6611ee576a6'
-            '48c459a2a14e8f161b79943e9ea405c4e98cd5abdab62749c4e9d65e5735382a'
-            'f15a6831736e4c0b8b355fd7887445e770500d439cb851623ea300cc50ba4d97'
-            '4b9aed8d0b7c2389d9413caa2152e6591200630c19dda8224d43eae7d863a0d6'
-            'e0666f75eabc2bbfa668cb35ee72dfbad48e5963828a444fbb50388048a8cd3c'
-            'd2c449d346ae52724d36c3224bd06fcae7775b0698a9096eb89eeaa6dbc092e5'
-            '5a175c698cfdbf942f712afeda2a6af3f4e63a742ec6b6dc3a64bc6a7fb685bb')
+            '6d72e14552df59e6310f16c176806c408355951724cd5b48a47bf01591b8be02'
+            '52dec83a8805a8642d74d764494acda863e0aa23e3d249e80d4b457e20a3fd29'
+            '65d58f63215ee3c5f9c4fc6bce36fc5311a6c7dbdbe1ad29de40647b47ff9c0d'
+            '1e1ae0f31f722e80da083ecada1f1be57f9ddad133941820c4483b0240e494c1'
+            '3fffb01cf97a5a7ab9601cb277d2468c0fb1e1cceba4225915f3ffae3a5694ec'
+            'cf2e7a2d00787f754028e7459688c2755a406e632ce48b60952fa4ff7ed6f4b7'
+            'a98bc3836bcf85774a974a1585e6b64432ba8c42363ee484d14515ccd6a88e24'
+            'f8699fcf4242c0727c3c0af56928515cef9b6ce329968537ce2894b30d43eade'
+            '1d4c7b24312ed3781e5d139dfb52f0c22350bf5a2845fe747469dfa7b6ed861f'
+            'c0af4622f75c89fef62183e18b7d49998228d4eaa906c6accaf4aa4ff0134f85')
 
 _kernelname=${pkgbase#linux}
 
@@ -78,8 +84,20 @@
 
   # Fix the use of code32_start in the EFI boot stub
   # http://permalink.gmane.org/gmane.linux.kernel/1679881
-  patch -p1 -i "${srcdir}/0007-Fix-the-use-of-code32_start-in-the-EFI-boot-stub.patch"
+  # https://git.kernel.org/cgit/linux/kernel/git/mfleming/efi.git/commit/?h=urgent&id=7e8213c1f3acc064aef37813a39f13cbfe7c3ce7
+  patch -p1 -i "${srcdir}/0007-x86-efi-Correct-EFI-boot-stub-use-of-code32_start.patch"
 
+  # https://git.kernel.org/cgit/linux/kernel/git/stable/stable-queue.git/tree/queue-3.14/futex-avoid-race-between-requeue-and-wake.patch
+  # FS#39806
+  patch -p1 -i "${srcdir}/0008-futex-avoid-race-between-requeue-and-wake.patch"
+
+  # Fix some intel wifi issues
+  # https://git.kernel.org/cgit/linux/kernel/git/stable/stable-queue.git/tree/queue-3.14/iwlwifi-mvm-rs-fix-search-cycle-rules.patch
+  patch -p1 -i "${srcdir}/0009-iwlwifi-mvm-rs-fix-search-cycle-rules.patch"
+  # https://git.kernel.org/cgit/linux/kernel/git/iwlwifi/iwlwifi-fixes.git/commit/?id=12f853a89e29f50b17698e17e73c328a35f1498d
+  # FS#39815
+  patch -p1 -i "${srcdir}/0010-iwlwifi-mvm-delay-enabling-smart-FIFO-until-after-be.patch"
+
   if [ "${CARCH}" = "x86_64" ]; then
     cat "${srcdir}/config.x86_64" > ./.config
   else




More information about the arch-commits mailing list