From 53eae986a5c15afd0ade74875ce96a1b70e7c53b Mon Sep 17 00:00:00 2001 From: Jean-Michel Hautbois Date: Fri, 14 Mar 2025 10:16:47 +0100 Subject: [PATCH] package/uclibc: fix NPTL alignment on m68k MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Tested on QEMU using the qemu_m68k_q800_defconfig configuration, with a switch of the toolchain to uclibc-ng and enabling rsyslog. This patch addresses an issue where rsyslog’s pthread_cond_wait was busy-looping due to futex_time64 repeatedly returning EINVAL. The correction in NPTL alignment resolves the 100% CPU usage problem. This patch is fixed upstream [1] so apply it until it is tagged. [1]: 278ac6b30 ("m68k: fix alignment in NPTL code") Signed-off-by: Jean-Michel Hautbois [Julien: - rename patch to 0002 - add "Upstream:" tag in patch to fix check-package error - add "Signed-off-by:" in patch ] Signed-off-by: Julien Olivain --- ...0002-m68k-fix-alignment-in-NPTL-code.patch | 92 +++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 package/uclibc/0002-m68k-fix-alignment-in-NPTL-code.patch diff --git a/package/uclibc/0002-m68k-fix-alignment-in-NPTL-code.patch b/package/uclibc/0002-m68k-fix-alignment-in-NPTL-code.patch new file mode 100644 index 0000000000..fbd9934376 --- /dev/null +++ b/package/uclibc/0002-m68k-fix-alignment-in-NPTL-code.patch @@ -0,0 +1,92 @@ +From 278ac6b3098315cddec8f71f27bd8de22e53ca6c Mon Sep 17 00:00:00 2001 +From: Thorsten Glaser +Date: Wed, 12 Mar 2025 22:11:51 +0100 +Subject: [PATCH] m68k: fix alignment in NPTL code + +Upstream: https://gogs.waldemar-brodkorb.de/oss/uclibc-ng/commit/278ac6b3098315cddec8f71f27bd8de22e53ca6c +Signed-off-by: Thorsten Glaser +Signed-off-by: Jean-Michel Hautbois +--- + .../unix/sysv/linux/m68k/bits/pthreadtypes.h | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/m68k/bits/pthreadtypes.h b/libpthread/nptl/sysdeps/unix/sysv/linux/m68k/bits/pthreadtypes.h +index 2a90a0b90..d2f22caee 100644 +--- a/libpthread/nptl/sysdeps/unix/sysv/linux/m68k/bits/pthreadtypes.h ++++ b/libpthread/nptl/sysdeps/unix/sysv/linux/m68k/bits/pthreadtypes.h +@@ -39,7 +39,7 @@ typedef unsigned long int pthread_t; + typedef union + { + char __size[__SIZEOF_PTHREAD_ATTR_T]; +- long int __align; ++ long int __align __attribute__((__aligned__(4))); + } pthread_attr_t; + + +@@ -69,13 +69,13 @@ typedef union + }; + } __data; + char __size[__SIZEOF_PTHREAD_MUTEX_T]; +- long int __align; ++ long int __align __attribute__((__aligned__(4))); + } pthread_mutex_t; + + typedef union + { + char __size[__SIZEOF_PTHREAD_MUTEXATTR_T]; +- long int __align; ++ long int __align __attribute__((__aligned__(4))); + } pthread_mutexattr_t; + + +@@ -95,13 +95,13 @@ typedef union + unsigned int __broadcast_seq; + } __data; + char __size[__SIZEOF_PTHREAD_COND_T]; +- __extension__ long long int __align; ++ __extension__ long long int __align __attribute__((__aligned__(8))); + } pthread_cond_t; + + typedef union + { + char __size[__SIZEOF_PTHREAD_CONDATTR_T]; +- long int __align; ++ long int __align __attribute__((__aligned__(4))); + } pthread_condattr_t; + + +@@ -144,13 +144,13 @@ typedef union + int __writer; + } __data; + char __size[__SIZEOF_PTHREAD_RWLOCK_T]; +- long int __align; ++ long int __align __attribute__((__aligned__(4))); + } pthread_rwlock_t; + + typedef union + { + char __size[__SIZEOF_PTHREAD_RWLOCKATTR_T]; +- long int __align; ++ long int __align __attribute__((__aligned__(4))); + } pthread_rwlockattr_t; + #endif + +@@ -165,13 +165,13 @@ typedef volatile int pthread_spinlock_t; + typedef union + { + char __size[__SIZEOF_PTHREAD_BARRIER_T]; +- long int __align; ++ long int __align __attribute__((__aligned__(4))); + } pthread_barrier_t; + + typedef union + { + char __size[__SIZEOF_PTHREAD_BARRIERATTR_T]; +- int __align; ++ int __align __attribute__((__aligned__(4))); + } pthread_barrierattr_t; + #endif + +-- +2.39.5 +