From 26a40149f48e1c4c6f7c04b7bc8a31254e68c302 Mon Sep 17 00:00:00 2001 From: Petr Vorel Date: Sat, 3 Oct 2020 00:10:31 +0200 Subject: [PATCH] package/ltp-testsuite: Fix m68k build Backport upstream proposal for fix. Fixes: br-m68k-68040-full failure. Signed-off-by: Petr Vorel Signed-off-by: Thomas Petazzoni --- ...01-cacheflush01-Rewrite-into-new-API.patch | 225 ++++++++++++++++++ 1 file changed, 225 insertions(+) create mode 100644 package/ltp-testsuite/0001-cacheflush01-Rewrite-into-new-API.patch diff --git a/package/ltp-testsuite/0001-cacheflush01-Rewrite-into-new-API.patch b/package/ltp-testsuite/0001-cacheflush01-Rewrite-into-new-API.patch new file mode 100644 index 0000000000..f9815624b9 --- /dev/null +++ b/package/ltp-testsuite/0001-cacheflush01-Rewrite-into-new-API.patch @@ -0,0 +1,225 @@ +From 48edd768850825a4d01e5e5e737122333fc55cdf Mon Sep 17 00:00:00 2001 +From: Petr Vorel +Date: Fri, 2 Oct 2020 21:29:58 +0200 +Subject: [PATCH] cacheflush01: Rewrite into new API + +This syscall is currently (v5.9) supported on these architectures: +arc, csky, mips, m68k, nds32, sh + +constants are missing for m68k, not sure if the testcase is valid for it. +Untested. + +Test for __LTP__NR_INVALID_SYSCALL saves adding autotools check for +. + +Signed-off-by: Petr Vorel +--- +[ upstream status: https://patchwork.ozlabs.org/project/ltp/patch/20201002202416.28972-1-petr.vorel@gmail.com/ ] + .../kernel/syscalls/cacheflush/cacheflush01.c | 173 ++++-------------- + 1 file changed, 40 insertions(+), 133 deletions(-) + +diff --git a/testcases/kernel/syscalls/cacheflush/cacheflush01.c b/testcases/kernel/syscalls/cacheflush/cacheflush01.c +index 29cf2014a..6ad8b953a 100644 +--- a/testcases/kernel/syscalls/cacheflush/cacheflush01.c ++++ b/testcases/kernel/syscalls/cacheflush/cacheflush01.c +@@ -1,157 +1,64 @@ +-/******************************************************************************/ +-/* Copyright (c) Maxin John , 2009 */ +-/* LKML Reference: http://lkml.org/lkml/2009/4/9/203 */ +-/* This program is free software; you can redistribute it and/or modify */ +-/* it under the terms of the GNU General Public License as published by */ +-/* the Free Software Foundation; either version 2 of the License, or */ +-/* (at your option) any later version. */ +-/* */ +-/* This program is distributed in the hope that it will be useful, */ +-/* but WITHOUT ANY WARRANTY; without even the implied warranty of */ +-/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See */ +-/* the GNU General Public License for more details. */ +-/* */ +-/* You should have received a copy of the GNU General Public License */ +-/* along with this program; if not, write to the Free Software */ +-/* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +-/* */ +-/******************************************************************************/ +-/******************************************************************************/ +-/* */ +-/* File: cacheflush01.c */ +-/* */ +-/* Description: The cacheflush_check() syscall */ +-/* Tests EINVAL error of cacheflush system call. */ +-/* Its expected behaviour is cacheflush() should return -EINVAL */ +-/* when cache parameter is not one of ICACHE, DCACHE, or BCACHE. */ +-/* */ +-/* Usage: */ +-/* cacheflush01 [-c n] [-e][-i n] [-I x] [-p x] [-t] */ +-/* where, -c n : Run n copies concurrently. */ +-/* -e : Turn on errno logging. */ +-/* -i n : Execute test n times. */ +-/* -I x : Execute test for x seconds. */ +-/* -P x : Pause for x seconds between iterations. */ +-/* -t : Turn on syscall timing. */ +-/* */ +-/* Total Tests: 1 */ +-/* */ +-/* Test Name: cacheflush01 */ +-/******************************************************************************/ ++// SPDX-License-Identifier: GPL-2.0-or-later + +-#include +-#include +-#include +-#include +- +-#include "test.h" ++#include "tst_test.h" + #include "lapi/syscalls.h" + + #if __NR_cacheflush != __LTP__NR_INVALID_SYSCALL ++ + #include +-#else ++ ++/* ++ * m68k does not have these constants ++ */ ++ + #ifndef ICACHE +-#define ICACHE (1<<0) /* flush instruction cache */ ++# define ICACHE (1<<0) + #endif ++ + #ifndef DCACHE +-#define DCACHE (1<<1) /* writeback and flush data cache */ ++# define DCACHE (1<<1) + #endif ++ + #ifndef BCACHE +-#define BCACHE (ICACHE|DCACHE) /* flush both caches */ +-#endif ++# define BCACHE (ICACHE|DCACHE) + #endif + +-char *TCID = "cacheflush01"; +-int TST_TOTAL = 1; ++#define CACHE_DESC(x) .cache = x, .desc = #x + +-/* Extern Global Functions */ +-/******************************************************************************/ +-/* */ +-/* Function: cleanup */ +-/* */ +-/* Description: Performs all one time clean up for this test on successful */ +-/* completion, premature exit or failure. Closes all temporary */ +-/* files, removes all temporary directories exits the test with */ +-/* appropriate return code by calling tst_exit() function. */ +-/* */ +-/* Input: None. */ +-/* */ +-/* Output: None. */ +-/* */ +-/* Return: On failure - Exits calling tst_exit(). Non '0' return code. */ +-/* On success - Exits calling tst_exit(). With '0' return code. */ +-/* */ +-/******************************************************************************/ +-void cleanup(void) +-{ ++static struct test_case_t { ++ int cache; ++ const char *desc; ++} test_cases[] = { ++ { CACHE_DESC(ICACHE) }, ++ { CACHE_DESC(DCACHE) }, ++ { CACHE_DESC(BCACHE) }, ++}; + +- tst_rmdir(); +-} ++static char *addr; + +-/* Local Functions */ +-/******************************************************************************/ +-/* */ +-/* Function: setup */ +-/* */ +-/* Description: Performs all one time setup for this test. This function is */ +-/* typically used to capture signals, create temporary dirs */ +-/* and temporary files that may be used in the course of this */ +-/* test. */ +-/* */ +-/* Input: None. */ +-/* */ +-/* Output: None. */ +-/* */ +-/* Return: On failure - Exits by calling cleanup(). */ +-/* On success - returns 0. */ +-/* */ +-/******************************************************************************/ +-void setup(void) ++static void setup(void) + { +- /* Capture signals if any */ +- /* Create temporary directories */ +- TEST_PAUSE; +- tst_tmpdir(); ++ addr = SAFE_MALLOC(getpagesize()); + } + +-int main(int ac, char **av) ++static void test_cacheflush(unsigned int i) + { ++ struct test_case_t *tc = &test_cases[i]; + +- char *addr = NULL; +- +- tst_parse_opts(ac, av, NULL, NULL); +- +- setup(); +- +- tst_count = 0; +- /* Create some user address range */ +- addr = malloc(getpagesize()); +- if (addr == NULL) { +- tst_brkm(TFAIL | TTERRNO, cleanup, "malloc failed"); +- } +- +- /* Invokes cacheflush() with proper parameters */ +- TEST(ltp_syscall(__NR_cacheflush, addr, getpagesize(), ICACHE)); +- if (TEST_RETURN == 0) { +- tst_resm(TPASS, "passed with no errno"); +- } else { +- tst_resm(TFAIL, "failed with unexpected errno"); +- } +- +- TEST(ltp_syscall(__NR_cacheflush, addr, getpagesize(), DCACHE)); +- if (TEST_RETURN == 0) { +- tst_resm(TPASS, "passed with no errno"); ++ TEST(tst_syscall(__NR_cacheflush, addr, getpagesize(), tc->cache)); ++ if (TST_RET == 0) { ++ tst_res(TPASS, "%s passed", tc->desc); + } else { +- tst_resm(TFAIL, "failed with unexpected errno"); ++ tst_res(TFAIL | TTERRNO, "%s failed", tc->desc); + } ++} + +- TEST(ltp_syscall(__NR_cacheflush, addr, getpagesize(), BCACHE)); +- if (TEST_RETURN == 0) { +- tst_resm(TPASS, "passed with no errno"); +- } else { +- tst_resm(TFAIL, "failed with unexpected errno"); +- } ++static struct tst_test test = { ++ .setup = setup, ++ .test = test_cacheflush, ++ .tcnt = ARRAY_SIZE(test_cases), ++}; + +- cleanup(); +- tst_exit(); +-} ++#else ++ TST_TEST_TCONF("system doesn't support cacheflush()"); ++#endif +-- +2.28.0 + -- 2.30.2