Fix issue that pulseaudio freezes when pausing audio 39/6339/3
authorTadao Tanikawa <tanikawa.tadao@jp.panasonic.com>
Wed, 10 Aug 2016 11:55:25 +0000 (20:55 +0900)
committerGerrit Code Review <gerrit@172.30.200.200>
Tue, 13 Sep 2016 16:55:41 +0000 (16:55 +0000)
This patch is ported from Debian/Ubuntu.

When using glibc-2.21 or later on linux kernel < 3.14.3,
this issue should be reproduced.

Original patch is here:
https://sources.debian.net/patches/glibc/2.22-5/arm/local-arm-futex.diff/

AGL needs this patch because the version of kernel for
porter board is 3.10 (later kernel is not supported).

This patch and recipe is a provisional until upstream
(poky) would be fixed.

Thanks Isogai-san to find and test this patch.

v2: changed bbappend to use SRC_URI_append_arm
    and used glibc_2.2%.bbappend as wildcard for glibc version
    (jsmoeller)

Change-Id: I4a2a0ad8fe3927000b6826e0b1bcd214cf8c92b6
Signed-off-by: Tadao Tanikawa <tanikawa.tadao@jp.panasonic.com>
Signed-off-by: Jan-Simon Möller <jsmoeller@linuxfoundation.org>
meta-agl/recipes-core/glibc/glibc/arm/local-arm-futex.diff [new file with mode: 0644]
meta-agl/recipes-core/glibc/glibc_2.2%.bbappend [new file with mode: 0644]

diff --git a/meta-agl/recipes-core/glibc/glibc/arm/local-arm-futex.diff b/meta-agl/recipes-core/glibc/glibc/arm/local-arm-futex.diff
new file mode 100644 (file)
index 0000000..bcbdeda
--- /dev/null
@@ -0,0 +1,23 @@
+Description: Lie about futex_atomic_cmpxchg_inatomic kernel support.
+ In past versions of glibc, we incorrectly assumed all ARM kernels
+ in all configurations supported futex_atomic_cmpxchg_inatomic. This
+ was clearly a lie, however it was a lie that we relied on, because
+ the fallback implementation appears to not play nicely with certain
+ applications like pulseaudio.  Restore the lie for kernels > 2.6.32
+ and plug our ears and scream "LA LA LA" about how wrong this is.
+Author: Adam Conrad <adconrad@ubuntu.com>
+Bug-Ubuntu: https://launchpad.net/bugs/1436162
+Bug-Debian: https://bugs.debian.org/788799
+Last-Update: 2015-03-25
+
+--- glibc-2.21.orig/sysdeps/unix/sysv/linux/arm/kernel-features.h
++++ glibc-2.21/sysdeps/unix/sysv/linux/arm/kernel-features.h
+@@ -37,7 +37,7 @@
+ /* The ARM kernel before 3.14.3 may or may not support
+    futex_atomic_cmpxchg_inatomic, depending on kernel
+    configuration.  */
+-#if __LINUX_KERNEL_VERSION < 0x030E03
++#if __LINUX_KERNEL_VERSION < 0x020620
+ # undef __ASSUME_FUTEX_LOCK_PI
+ # undef __ASSUME_REQUEUE_PI
+ # undef __ASSUME_SET_ROBUST_LIST
diff --git a/meta-agl/recipes-core/glibc/glibc_2.2%.bbappend b/meta-agl/recipes-core/glibc/glibc_2.2%.bbappend
new file mode 100644 (file)
index 0000000..0868a2c
--- /dev/null
@@ -0,0 +1,3 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
+
+SRC_URI_append_arm = " file://arm/local-arm-futex.diff "