kselftest/arm64: Limit the maximum VL we try to set via ptrace
When SVE was initially merged we chose to export the maximum VQ in the ABI as being 512, rather more than the architecturally supported maximum of 16. For the ptrace tests this results in us generating a lot of test cases and hence log output which are redundant since a system couldn't possibly support them. Instead only check values up to the current architectural limit, plus one more so that we're covering the constraining of higher vector lengths. This makes no practical difference to our test coverage, speeds things up on slower consoles and makes the output much more managable. Signed-off-by: Mark Brown <broonie@kernel.org> Link: https://lore.kernel.org/r/20230111-arm64-kselftest-ptrace-max-vl-v1-1-8167f41d1ad8@kernel.org Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
This commit is contained in:
parent
daac835347
commit
89ff30b9b7
@ -30,6 +30,16 @@
|
||||
#define NT_ARM_SSVE 0x40b
|
||||
#endif
|
||||
|
||||
/*
|
||||
* The architecture defines the maximum VQ as 16 but for extensibility
|
||||
* the kernel specifies the SVE_VQ_MAX as 512 resulting in us running
|
||||
* a *lot* more tests than are useful if we use it. Until the
|
||||
* architecture is extended let's limit our coverage to what is
|
||||
* currently allowed, plus one extra to ensure we cover constraining
|
||||
* the VL as expected.
|
||||
*/
|
||||
#define TEST_VQ_MAX 17
|
||||
|
||||
struct vec_type {
|
||||
const char *name;
|
||||
unsigned long hwcap_type;
|
||||
@ -55,7 +65,7 @@ static const struct vec_type vec_types[] = {
|
||||
},
|
||||
};
|
||||
|
||||
#define VL_TESTS (((SVE_VQ_MAX - SVE_VQ_MIN) + 1) * 4)
|
||||
#define VL_TESTS (((TEST_VQ_MAX - SVE_VQ_MIN) + 1) * 4)
|
||||
#define FLAG_TESTS 2
|
||||
#define FPSIMD_TESTS 2
|
||||
|
||||
@ -689,7 +699,7 @@ static int do_parent(pid_t child)
|
||||
}
|
||||
|
||||
/* Step through every possible VQ */
|
||||
for (vq = SVE_VQ_MIN; vq <= SVE_VQ_MAX; vq++) {
|
||||
for (vq = SVE_VQ_MIN; vq <= TEST_VQ_MAX; vq++) {
|
||||
vl = sve_vl_from_vq(vq);
|
||||
|
||||
/* First, try to set this vector length */
|
||||
|
@ -25,7 +25,17 @@
|
||||
#define NT_ARM_ZA 0x40c
|
||||
#endif
|
||||
|
||||
#define EXPECTED_TESTS (((SVE_VQ_MAX - SVE_VQ_MIN) + 1) * 3)
|
||||
/*
|
||||
* The architecture defines the maximum VQ as 16 but for extensibility
|
||||
* the kernel specifies the SVE_VQ_MAX as 512 resulting in us running
|
||||
* a *lot* more tests than are useful if we use it. Until the
|
||||
* architecture is extended let's limit our coverage to what is
|
||||
* currently allowed, plus one extra to ensure we cover constraining
|
||||
* the VL as expected.
|
||||
*/
|
||||
#define TEST_VQ_MAX 17
|
||||
|
||||
#define EXPECTED_TESTS (((TEST_VQ_MAX - SVE_VQ_MIN) + 1) * 3)
|
||||
|
||||
static void fill_buf(char *buf, size_t size)
|
||||
{
|
||||
@ -301,7 +311,7 @@ static int do_parent(pid_t child)
|
||||
ksft_print_msg("Parent is %d, child is %d\n", getpid(), child);
|
||||
|
||||
/* Step through every possible VQ */
|
||||
for (vq = SVE_VQ_MIN; vq <= SVE_VQ_MAX; vq++) {
|
||||
for (vq = SVE_VQ_MIN; vq <= TEST_VQ_MAX; vq++) {
|
||||
vl = sve_vl_from_vq(vq);
|
||||
|
||||
/* First, try to set this vector length */
|
||||
|
Loading…
Reference in New Issue
Block a user