* [LTP] [PATCH 0/2] __builtin___clear_cache() => __clear_cache() @ 2025-10-12 19:40 Petr Vorel 2025-10-12 19:40 ` [LTP] [PATCH 1/2] m4: mprotect04: Replace __builtin___clear_cache with __clear_cache Petr Vorel 2025-10-12 19:40 ` [LTP] [PATCH 2/2] hugemmap15: Check for __clear_cache() Petr Vorel 0 siblings, 2 replies; 4+ messages in thread From: Petr Vorel @ 2025-10-12 19:40 UTC (permalink / raw) To: ltp; +Cc: Hui Min Mina Chou, Khem Raj Hi, based on Khem's report and attempt to fix https://patchwork.ozlabs.org/project/ltp/patch/20240611055655.614782-1-raj.khem@gmail.com/ https://lore.kernel.org/ltp/20240611055655.614782-1-raj.khem@gmail.com/ Kind regards, Petr Petr Vorel (2): m4: mprotect04: Replace __builtin___clear_cache with __clear_cache hugemmap15: Check for __clear_cache() configure.ac | 2 +- m4/ltp-builtin_clear_cache.m4 | 19 ------------------ m4/ltp-clear_cache.m4 | 20 +++++++++++++++++++ .../kernel/mem/hugetlb/hugemmap/hugemmap15.c | 3 +++ .../kernel/syscalls/mprotect/mprotect04.c | 7 +++---- 5 files changed, 27 insertions(+), 24 deletions(-) delete mode 100644 m4/ltp-builtin_clear_cache.m4 create mode 100644 m4/ltp-clear_cache.m4 -- 2.51.0 -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply [flat|nested] 4+ messages in thread
* [LTP] [PATCH 1/2] m4: mprotect04: Replace __builtin___clear_cache with __clear_cache 2025-10-12 19:40 [LTP] [PATCH 0/2] __builtin___clear_cache() => __clear_cache() Petr Vorel @ 2025-10-12 19:40 ` Petr Vorel 2025-10-13 9:02 ` Andrea Cervesato via ltp 2025-10-12 19:40 ` [LTP] [PATCH 2/2] hugemmap15: Check for __clear_cache() Petr Vorel 1 sibling, 1 reply; 4+ messages in thread From: Petr Vorel @ 2025-10-12 19:40 UTC (permalink / raw) To: ltp; +Cc: Hui Min Mina Chou, Khem Raj __clear_cache() should be quite common now and we already use it in hugemmap15.c. Convert autotools m4 check to detect it. Signed-off-by: Petr Vorel <petr.vorel@gmail.com> --- configure.ac | 2 +- m4/ltp-builtin_clear_cache.m4 | 19 ------------------ m4/ltp-clear_cache.m4 | 20 +++++++++++++++++++ .../kernel/syscalls/mprotect/mprotect04.c | 7 +++---- 4 files changed, 24 insertions(+), 24 deletions(-) delete mode 100644 m4/ltp-builtin_clear_cache.m4 create mode 100644 m4/ltp-clear_cache.m4 diff --git a/configure.ac b/configure.ac index 0480f46ca2..461fa2b577 100644 --- a/configure.ac +++ b/configure.ac @@ -393,9 +393,9 @@ AC_CONFIG_COMMANDS([syscalls.h], [cd ${ac_top_srcdir}/include/lapi/syscalls; ./g # NOTE: don't create custom functions for simple checks, put them into this file LTP_CHECK_ACL_SUPPORT LTP_CHECK_ATOMIC_MEMORY_MODEL -LTP_CHECK_BUILTIN_CLEAR_CACHE LTP_CHECK_CAPABILITY_SUPPORT LTP_CHECK_CC_WARN_OLDSTYLE +LTP_CHECK_CLEAR_CACHE LTP_CHECK_CRYPTO LTP_CHECK_FORTIFY_SOURCE LTP_CHECK_KERNEL_DEVEL diff --git a/m4/ltp-builtin_clear_cache.m4 b/m4/ltp-builtin_clear_cache.m4 deleted file mode 100644 index 86e1cfc914..0000000000 --- a/m4/ltp-builtin_clear_cache.m4 +++ /dev/null @@ -1,19 +0,0 @@ -dnl SPDX-License-Identifier: GPL-2.0-or-later -dnl Copyright (c) Linux Test Project, 2016 - -AC_DEFUN([LTP_CHECK_BUILTIN_CLEAR_CACHE],[ - AC_MSG_CHECKING([for __builtin___clear_cache]) - AC_LINK_IFELSE([AC_LANG_SOURCE([[ -int main(void) { - char arr[16]; - __builtin___clear_cache(arr, arr + sizeof(arr)); - return 0; -}]])],[has_bcc="yes"]) - -if test "x$has_bcc" = xyes; then - AC_DEFINE(HAVE_BUILTIN_CLEAR_CACHE,1,[Define to 1 if you have __builtin___clear_cache]) - AC_MSG_RESULT(yes) -else - AC_MSG_RESULT(no) -fi -]) diff --git a/m4/ltp-clear_cache.m4 b/m4/ltp-clear_cache.m4 new file mode 100644 index 0000000000..99c6a1b653 --- /dev/null +++ b/m4/ltp-clear_cache.m4 @@ -0,0 +1,20 @@ +dnl SPDX-License-Identifier: GPL-2.0-or-later +dnl Copyright (c) Linux Test Project, 2016 +dnl Copyright (c) Linux Test Project, 2025 + +AC_DEFUN([LTP_CHECK_CLEAR_CACHE],[ + AC_MSG_CHECKING([for __clear_cache]) + AC_LINK_IFELSE([AC_LANG_SOURCE([[ +int main(void) { + char arr[16]; + __clear_cache(arr, arr + sizeof(arr)); + return 0; +}]])],[has_clear_cache="yes"]) + +if test "x$has_clear_cache" = xyes; then + AC_DEFINE(HAVE_CLEAR_CACHE, 1, [Define to 1 if you have __clear_cache]) + AC_MSG_RESULT(yes) +else + AC_MSG_RESULT(no) +fi +]) diff --git a/testcases/kernel/syscalls/mprotect/mprotect04.c b/testcases/kernel/syscalls/mprotect/mprotect04.c index 6c7f6bd017..fa4d3be4ba 100644 --- a/testcases/kernel/syscalls/mprotect/mprotect04.c +++ b/testcases/kernel/syscalls/mprotect/mprotect04.c @@ -152,11 +152,10 @@ static int page_present(void *p) static void clear_cache(void *start, int len) { -#if HAVE_BUILTIN_CLEAR_CACHE == 1 - __builtin___clear_cache(start, start + len); +#ifdef HAVE_CLEAR_CACHE + __clear_cache(start, start + len); #else - tst_brkm(TCONF, cleanup, - "compiler doesn't have __builtin___clear_cache()"); + tst_brkm(TCONF, cleanup, "compiler doesn't have __clear_cache()"); #endif } -- 2.51.0 -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [LTP] [PATCH 1/2] m4: mprotect04: Replace __builtin___clear_cache with __clear_cache 2025-10-12 19:40 ` [LTP] [PATCH 1/2] m4: mprotect04: Replace __builtin___clear_cache with __clear_cache Petr Vorel @ 2025-10-13 9:02 ` Andrea Cervesato via ltp 0 siblings, 0 replies; 4+ messages in thread From: Andrea Cervesato via ltp @ 2025-10-13 9:02 UTC (permalink / raw) To: Petr Vorel, ltp; +Cc: Hui Min Mina Chou, ltp, Khem Raj Hi! On Sun Oct 12, 2025 at 9:40 PM CEST, Petr Vorel wrote: > __clear_cache() should be quite common now and we already use it in > hugemmap15.c. Convert autotools m4 check to detect it. > > Signed-off-by: Petr Vorel <petr.vorel@gmail.com> > --- > configure.ac | 2 +- > m4/ltp-builtin_clear_cache.m4 | 19 ------------------ > m4/ltp-clear_cache.m4 | 20 +++++++++++++++++++ > .../kernel/syscalls/mprotect/mprotect04.c | 7 +++---- > 4 files changed, 24 insertions(+), 24 deletions(-) > delete mode 100644 m4/ltp-builtin_clear_cache.m4 > create mode 100644 m4/ltp-clear_cache.m4 > > diff --git a/configure.ac b/configure.ac > index 0480f46ca2..461fa2b577 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -393,9 +393,9 @@ AC_CONFIG_COMMANDS([syscalls.h], [cd ${ac_top_srcdir}/include/lapi/syscalls; ./g > # NOTE: don't create custom functions for simple checks, put them into this file > LTP_CHECK_ACL_SUPPORT > LTP_CHECK_ATOMIC_MEMORY_MODEL > -LTP_CHECK_BUILTIN_CLEAR_CACHE > LTP_CHECK_CAPABILITY_SUPPORT > LTP_CHECK_CC_WARN_OLDSTYLE > +LTP_CHECK_CLEAR_CACHE > LTP_CHECK_CRYPTO > LTP_CHECK_FORTIFY_SOURCE > LTP_CHECK_KERNEL_DEVEL > diff --git a/m4/ltp-builtin_clear_cache.m4 b/m4/ltp-builtin_clear_cache.m4 > deleted file mode 100644 > index 86e1cfc914..0000000000 > --- a/m4/ltp-builtin_clear_cache.m4 > +++ /dev/null > @@ -1,19 +0,0 @@ > -dnl SPDX-License-Identifier: GPL-2.0-or-later > -dnl Copyright (c) Linux Test Project, 2016 > - > -AC_DEFUN([LTP_CHECK_BUILTIN_CLEAR_CACHE],[ > - AC_MSG_CHECKING([for __builtin___clear_cache]) > - AC_LINK_IFELSE([AC_LANG_SOURCE([[ > -int main(void) { > - char arr[16]; > - __builtin___clear_cache(arr, arr + sizeof(arr)); > - return 0; > -}]])],[has_bcc="yes"]) > - > -if test "x$has_bcc" = xyes; then > - AC_DEFINE(HAVE_BUILTIN_CLEAR_CACHE,1,[Define to 1 if you have __builtin___clear_cache]) > - AC_MSG_RESULT(yes) > -else > - AC_MSG_RESULT(no) > -fi > -]) > diff --git a/m4/ltp-clear_cache.m4 b/m4/ltp-clear_cache.m4 > new file mode 100644 > index 0000000000..99c6a1b653 > --- /dev/null > +++ b/m4/ltp-clear_cache.m4 > @@ -0,0 +1,20 @@ > +dnl SPDX-License-Identifier: GPL-2.0-or-later > +dnl Copyright (c) Linux Test Project, 2016 > +dnl Copyright (c) Linux Test Project, 2025 > + > +AC_DEFUN([LTP_CHECK_CLEAR_CACHE],[ > + AC_MSG_CHECKING([for __clear_cache]) > + AC_LINK_IFELSE([AC_LANG_SOURCE([[ > +int main(void) { > + char arr[16]; > + __clear_cache(arr, arr + sizeof(arr)); > + return 0; > +}]])],[has_clear_cache="yes"]) > + > +if test "x$has_clear_cache" = xyes; then > + AC_DEFINE(HAVE_CLEAR_CACHE, 1, [Define to 1 if you have __clear_cache]) > + AC_MSG_RESULT(yes) > +else > + AC_MSG_RESULT(no) > +fi > +]) > diff --git a/testcases/kernel/syscalls/mprotect/mprotect04.c b/testcases/kernel/syscalls/mprotect/mprotect04.c > index 6c7f6bd017..fa4d3be4ba 100644 > --- a/testcases/kernel/syscalls/mprotect/mprotect04.c > +++ b/testcases/kernel/syscalls/mprotect/mprotect04.c > @@ -152,11 +152,10 @@ static int page_present(void *p) > > static void clear_cache(void *start, int len) > { > -#if HAVE_BUILTIN_CLEAR_CACHE == 1 > - __builtin___clear_cache(start, start + len); > +#ifdef HAVE_CLEAR_CACHE I'm not 100% sure if it's a good idea to rename HAVE_BUILTIN_CLEAR_CACHE to HAVE_CLEAR_CACHE, since this syntax is often used inside tests to check if we have missing syscalls/functions inside libc implementation. I would keep HAVE_BUILTIN_CLEAR_CACHE anyway in this case, since it's a strictly compiler related feature. > + __clear_cache(start, start + len); > #else > - tst_brkm(TCONF, cleanup, > - "compiler doesn't have __builtin___clear_cache()"); > + tst_brkm(TCONF, cleanup, "compiler doesn't have __clear_cache()"); > #endif > } > -- Andrea Cervesato SUSE QE Automation Engineer Linux andrea.cervesato@suse.com -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply [flat|nested] 4+ messages in thread
* [LTP] [PATCH 2/2] hugemmap15: Check for __clear_cache() 2025-10-12 19:40 [LTP] [PATCH 0/2] __builtin___clear_cache() => __clear_cache() Petr Vorel 2025-10-12 19:40 ` [LTP] [PATCH 1/2] m4: mprotect04: Replace __builtin___clear_cache with __clear_cache Petr Vorel @ 2025-10-12 19:40 ` Petr Vorel 1 sibling, 0 replies; 4+ messages in thread From: Petr Vorel @ 2025-10-12 19:40 UTC (permalink / raw) To: ltp; +Cc: Hui Min Mina Chou, Khem Raj It fails to compile at least on riscv64 with older compiler. It looks like it requires clang >= 20.1.0. Reported-by: Khem Raj <raj.khem@gmail.com> Cc: Hui Min Mina Chou <minachou@andestech.com> Signed-off-by: Petr Vorel <petr.vorel@gmail.com> --- testcases/kernel/mem/hugetlb/hugemmap/hugemmap15.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap15.c b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap15.c index 1dde9e87ba..641c021809 100644 --- a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap15.c +++ b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap15.c @@ -46,7 +46,10 @@ static void cacheflush(void *p) #if defined(__powerpc__) asm volatile("dcbst 0,%0; sync; icbi 0,%0; isync" : : "r"(p)); #elif defined(__arm__) || defined(__aarch64__) || defined(__riscv) || defined(__loongarch__) +# ifdef HAVE_CLEAR_CACHE __clear_cache(p, p + COPY_SIZE); +# else + tst_brk(TCONF, "compiler doesn't have __clear_cache()"); #else (void)p; #endif -- 2.51.0 -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2025-10-13 9:03 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-10-12 19:40 [LTP] [PATCH 0/2] __builtin___clear_cache() => __clear_cache() Petr Vorel 2025-10-12 19:40 ` [LTP] [PATCH 1/2] m4: mprotect04: Replace __builtin___clear_cache with __clear_cache Petr Vorel 2025-10-13 9:02 ` Andrea Cervesato via ltp 2025-10-12 19:40 ` [LTP] [PATCH 2/2] hugemmap15: Check for __clear_cache() Petr Vorel
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox