From de7cefc1f13563812006f2b9ce58527ae774c645 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Andreas=20M=C3=BCller?= Date: Thu, 23 Aug 2012 18:22:52 +0200 Subject: [PATCH] pixman: fix qemu workaround MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit (From meta-openembedded rev: 624dcdc1fd83643323ecf0b426bd2ad5032f13ac) Signed-off-by: Andreas Müller Signed-off-by: Martin Jansa Signed-off-by: Patrick Ohly --- ...lated-workarounds-in-cpu-features-detecti.patch | 63 +++++++++++----------- .../xorg-lib/pixman_0.27.2.bbappend | 2 + 2 files changed, 33 insertions(+), 32 deletions(-) diff --git a/meta-openembedded/meta-oe/recipes-graphics/xorg-lib/pixman-0.27.2/0001-ARM-qemu-related-workarounds-in-cpu-features-detecti.patch b/meta-openembedded/meta-oe/recipes-graphics/xorg-lib/pixman-0.27.2/0001-ARM-qemu-related-workarounds-in-cpu-features-detecti.patch index 8a1c524..4569dca 100644 --- a/meta-openembedded/meta-oe/recipes-graphics/xorg-lib/pixman-0.27.2/0001-ARM-qemu-related-workarounds-in-cpu-features-detecti.patch +++ b/meta-openembedded/meta-oe/recipes-graphics/xorg-lib/pixman-0.27.2/0001-ARM-qemu-related-workarounds-in-cpu-features-detecti.patch @@ -1,25 +1,27 @@ -From d140e69c1d76ed61d1feb53b79820951707ee5a6 Mon Sep 17 00:00:00 2001 +From a0f53e1dbb3851bb0f0efcfdbd565b05e4be9cac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=BCller?= -Date: Sun, 19 Aug 2012 15:15:45 +0200 +Date: Thu, 23 Aug 2012 18:10:57 +0200 Subject: [PATCH 1/2] ARM: qemu related workarounds in cpu features detection code MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -This was ported from meta-oe's patch [1] +This was ported from meta-oe's patch [1]. The original pixman patch is found +at [2]. [1] http://cgit.openembedded.org/meta-openembedded/tree/meta-oe/recipes-graphics/xorg-lib/pixman-0.26.2/0001-ARM-qemu-related-workarounds-in-cpu-features-detecti.patch +[2] http://lists.freedesktop.org/archives/pixman/2011-January/000906.html Upstream-Status: Inappropriate [other] qemu fix Signed-off-by: Andreas Müller --- - pixman/pixman-arm.c | 74 +++++++++++++++++++++++++++++++++++++++++++++++--- - 1 files changed, 69 insertions(+), 5 deletions(-) + pixman/pixman-arm.c | 82 ++++++++++++++++++++++++++++++++++++++++---------- + 1 files changed, 65 insertions(+), 17 deletions(-) diff --git a/pixman/pixman-arm.c b/pixman/pixman-arm.c -index 23374e4..d0771fd 100644 +index 23374e4..d98bda6 100644 --- a/pixman/pixman-arm.c +++ b/pixman/pixman-arm.c @@ -129,16 +129,35 @@ detect_cpu_features (void) @@ -58,40 +60,34 @@ index 23374e4..d0771fd 100644 fd = open ("/proc/self/auxv", O_RDONLY); if (fd >= 0) -@@ -147,22 +166,23 @@ detect_cpu_features (void) +@@ -147,32 +166,61 @@ detect_cpu_features (void) { if (aux.a_type == AT_HWCAP) { - uint32_t hwcap = aux.a_un.a_val; -+ hwcap = aux.a_un.a_val; - - /* hardcode these values to avoid depending on specific - * versions of the hwcap header, e.g. HWCAP_NEON - */ +- +- /* hardcode these values to avoid depending on specific +- * versions of the hwcap header, e.g. HWCAP_NEON +- */ - if ((hwcap & 64) != 0) -+ if ((hwcap & ARM_HWCAP_VFP) != 0) - features |= ARM_VFP; +- features |= ARM_VFP; - if ((hwcap & 512) != 0) -+ if ((hwcap & ARM_HWCAP_IWMMXT) != 0) - features |= ARM_IWMMXT; - /* this flag is only present on kernel 2.6.29 */ +- features |= ARM_IWMMXT; +- /* this flag is only present on kernel 2.6.29 */ - if ((hwcap & 4096) != 0) -+ if ((hwcap & ARM_HWCAP_NEON) != 0) - features |= ARM_NEON; +- features |= ARM_NEON; ++ hwcap = aux.a_un.a_val; } else if (aux.a_type == AT_PLATFORM) { - const char *plat = (const char*) aux.a_un.a_val; +- +- if (strncmp (plat, "v7l", 3) == 0) + plat = (const char*) aux.a_un.a_val; + plat_cnt++; - - if (strncmp (plat, "v7l", 3) == 0) - features |= (ARM_V7 | ARM_V6); -@@ -171,8 +191,52 @@ detect_cpu_features (void) - } - } - close (fd); -+ ++ } ++ } ++ close (fd); + if (plat == NULL || plat_cnt != 1 || *plat != 'v') + { + /* @@ -106,17 +102,19 @@ index 23374e4..d0771fd 100644 + { + if (strcmp (u.machine, "armv7l") == 0) + { -+ features |= (ARM_V7 | ARM_V6); + features |= (ARM_V7 | ARM_V6); +- else if (strncmp (plat, "v6l", 3) == 0) + hwcap |= ARM_HWCAP_VFP; /* qemu is supposed to emulate vfp */ + hwcap |= ARM_HWCAP_NEON; /* qemu is supposed to emulate neon */ + } + else if (strcmp (u.machine, "armv6l") == 0) + { -+ features |= ARM_V6; + features |= ARM_V6; + hwcap |= ARM_HWCAP_VFP; /* qemu is supposed to emulate vfp */ + } -+ } -+ } + } + } +- close (fd); + else if (strncmp (plat, "v7l", 3) == 0) + { + features |= (ARM_V7 | ARM_V6); @@ -134,6 +132,7 @@ index 23374e4..d0771fd 100644 + features |= ARM_VFP; + if ((hwcap & ARM_HWCAP_IWMMXT) != 0) + features |= ARM_IWMMXT; ++ /* this flag is only present on kernel 2.6.29 */ + if ((hwcap & ARM_HWCAP_NEON) != 0) + features |= ARM_NEON; + @@ -141,5 +140,5 @@ index 23374e4..d0771fd 100644 } -- -1.7.4.4 +1.7.6.5 diff --git a/meta-openembedded/meta-oe/recipes-graphics/xorg-lib/pixman_0.27.2.bbappend b/meta-openembedded/meta-oe/recipes-graphics/xorg-lib/pixman_0.27.2.bbappend index a04a549..c677167 100644 --- a/meta-openembedded/meta-oe/recipes-graphics/xorg-lib/pixman_0.27.2.bbappend +++ b/meta-openembedded/meta-oe/recipes-graphics/xorg-lib/pixman_0.27.2.bbappend @@ -1,5 +1,7 @@ FILESEXTRAPATHS_prepend := "${THISDIR}/${P}:" +PRINC := "${@int(PRINC) + 1}" + SRC_URI += " \ file://0001-ARM-qemu-related-workarounds-in-cpu-features-detecti.patch \ file://0002-Generic-C-implementation-of-pixman_blt-with-overlapp.patch \ -- 2.7.4