Lines Matching +full:read +full:- +full:out
1 // SPDX-License-Identifier: GPL-2.0-only
3 * Copyright (C) 2015-2021 ARM Limited.
68 #define VL_TESTS (((TEST_VQ_MAX - SVE_VQ_MIN) + 1) * 4)
84 if (ptrace(PTRACE_TRACEME, -1, NULL, NULL)) in do_child()
103 if (ret == -1) in get_fpsimd()
116 if (ret == -1) in set_fpsimd()
144 ret = ptrace(PTRACE_GETREGSET, pid, type->regset, &iov); in get_sve()
151 if (sve->size <= sz) in get_sve()
154 sz = sve->size; in get_sve()
170 iov.iov_len = sve->size; in set_sve()
171 ret = ptrace(PTRACE_SETREGSET, pid, type->regset, &iov); in set_sve()
172 if (ret == -1) in set_sve()
177 /* A read operation fails */
186 ksft_test_result(ret == NULL, "%s unsupported read fails\n", in read_fails()
187 type->name); in read_fails()
206 type->name); in write_fails()
225 type->name); in ptrace_set_get_inherit()
230 * Read back the new register state and verify that we have in ptrace_set_get_inherit()
234 ksft_test_result_fail("Failed to read %s SVE flags\n", in ptrace_set_get_inherit()
235 type->name); in ptrace_set_get_inherit()
239 ksft_test_result(new_sve->flags & SVE_PT_VL_INHERIT, in ptrace_set_get_inherit()
240 "%s SVE_PT_VL_INHERIT set\n", type->name); in ptrace_set_get_inherit()
247 type->name); in ptrace_set_get_inherit()
252 ksft_test_result_fail("Failed to read %s SVE flags\n", in ptrace_set_get_inherit()
253 type->name); in ptrace_set_get_inherit()
257 ksft_test_result(!(new_sve->flags & SVE_PT_VL_INHERIT), in ptrace_set_get_inherit()
258 "%s SVE_PT_VL_INHERIT cleared\n", type->name); in ptrace_set_get_inherit()
275 prctl_vl = prctl(type->prctl_set, vl); in ptrace_set_get_vl()
276 if (prctl_vl == -1) in ptrace_set_get_vl()
278 type->name, strerror(errno), errno); in ptrace_set_get_vl()
291 type->name, vl); in ptrace_set_get_vl()
296 * Read back the new register state and verify that we have the in ptrace_set_get_vl()
300 ksft_test_result_fail("Failed to read %s VL %u\n", in ptrace_set_get_vl()
301 type->name, vl); in ptrace_set_get_vl()
305 ksft_test_result(new_sve->vl == prctl_vl, "Set %s VL %u\n", in ptrace_set_get_vl()
306 type->name, vl); in ptrace_set_get_vl()
312 uint32_t *in, uint32_t *out, int *errors) in check_u32() argument
314 if (*in != *out) { in check_u32()
315 printf("# VL %d %s wrote %x read %x\n", in check_u32()
316 vl, reg, *in, *out); in check_u32()
321 /* Set out of range VLs */
332 ksft_test_result(ret != 0, "%s Set invalid VL 0\n", type->name); in ptrace_set_vl_ranges()
336 ksft_test_result(ret != 0, "%s Set invalid VL %d\n", type->name, in ptrace_set_vl_ranges()
358 sve->flags = SVE_PT_REGS_FPSIMD; in ptrace_sve_fpsimd()
359 sve->size = SVE_PT_SIZE(0, SVE_PT_REGS_FPSIMD); in ptrace_sve_fpsimd()
360 sve->vl = 16; /* We don't care what the VL is */ in ptrace_sve_fpsimd()
366 p = (unsigned char *)&fpsimd->vregs[i]; in ptrace_sve_fpsimd()
368 for (j = 0; j < sizeof(fpsimd->vregs[i]); ++j) in ptrace_sve_fpsimd()
374 ksft_test_result((type->regset == NT_ARM_SVE) == (ret == 0), in ptrace_sve_fpsimd()
376 type->name, ret); in ptrace_sve_fpsimd()
378 goto out; in ptrace_sve_fpsimd()
384 goto out; in ptrace_sve_fpsimd()
388 type->name); in ptrace_sve_fpsimd()
391 type->name); in ptrace_sve_fpsimd()
393 out: in ptrace_sve_fpsimd()
397 /* Validate attempting to set SVE data and read SVE data */
416 data_size, type->name, vl); in ptrace_set_sve_get_sve_data()
421 /* Set up some data and write it out */ in ptrace_set_sve_get_sve_data()
423 write_sve->size = data_size; in ptrace_set_sve_get_sve_data()
424 write_sve->vl = vl; in ptrace_set_sve_get_sve_data()
425 write_sve->flags = SVE_PT_REGS_SVE; in ptrace_set_sve_get_sve_data()
443 type->name, vl); in ptrace_set_sve_get_sve_data()
444 goto out; in ptrace_set_sve_get_sve_data()
447 /* Read the data back */ in ptrace_set_sve_get_sve_data()
449 ksft_test_result_fail("Failed to read %s VL %u data\n", in ptrace_set_sve_get_sve_data()
450 type->name, vl); in ptrace_set_sve_get_sve_data()
451 goto out; in ptrace_set_sve_get_sve_data()
455 /* We might read more data if there's extensions we don't know */ in ptrace_set_sve_get_sve_data()
456 if (read_sve->size < write_sve->size) { in ptrace_set_sve_get_sve_data()
457 ksft_test_result_fail("%s wrote %d bytes, only read %d\n", in ptrace_set_sve_get_sve_data()
458 type->name, write_sve->size, in ptrace_set_sve_get_sve_data()
459 read_sve->size); in ptrace_set_sve_get_sve_data()
487 type->name, vl); in ptrace_set_sve_get_sve_data()
491 out: in ptrace_set_sve_get_sve_data()
495 /* Validate attempting to set SVE data and read it via the FPSIMD regset */
517 data_size, type->name, vl); in ptrace_set_sve_get_fpsimd_data()
522 /* Set up some data and write it out */ in ptrace_set_sve_get_fpsimd_data()
524 write_sve->size = data_size; in ptrace_set_sve_get_fpsimd_data()
525 write_sve->vl = vl; in ptrace_set_sve_get_fpsimd_data()
526 write_sve->flags = SVE_PT_REGS_SVE; in ptrace_set_sve_get_fpsimd_data()
538 type->name, vl); in ptrace_set_sve_get_fpsimd_data()
539 goto out; in ptrace_set_sve_get_fpsimd_data()
542 /* Read the data back */ in ptrace_set_sve_get_fpsimd_data()
544 ksft_test_result_fail("Failed to read %s VL %u FPSIMD data\n", in ptrace_set_sve_get_fpsimd_data()
545 type->name, vl); in ptrace_set_sve_get_fpsimd_data()
546 goto out; in ptrace_set_sve_get_fpsimd_data()
561 type->name, vl, i); in ptrace_set_sve_get_fpsimd_data()
572 type->name, vl); in ptrace_set_sve_get_fpsimd_data()
574 out: in ptrace_set_sve_get_fpsimd_data()
578 /* Validate attempting to set FPSIMD data and read it via the SVE regset */
613 ksft_test_result_fail("Failed to read %s VL %u data\n", in ptrace_set_fpsimd_get_sve_data()
614 type->name, vl); in ptrace_set_fpsimd_get_sve_data()
619 if (read_sve->vl != vl) { in ptrace_set_fpsimd_get_sve_data()
621 read_sve->vl, vl); in ptrace_set_fpsimd_get_sve_data()
622 goto out; in ptrace_set_fpsimd_get_sve_data()
626 switch (read_sve->flags & SVE_PT_REGS_MASK) { in ptrace_set_fpsimd_get_sve_data()
630 ksft_test_result_fail("Read %ld bytes, expected %ld\n", in ptrace_set_fpsimd_get_sve_data()
632 goto out; in ptrace_set_fpsimd_get_sve_data()
638 ksft_print_msg("Read FPSIMD data mismatch\n"); in ptrace_set_fpsimd_get_sve_data()
646 ksft_test_result_fail("Read %ld bytes, expected %ld\n", in ptrace_set_fpsimd_get_sve_data()
648 goto out; in ptrace_set_fpsimd_get_sve_data()
663 type->name, vl, i, i); in ptrace_set_fpsimd_get_sve_data()
675 read_sve->flags & SVE_PT_REGS_MASK); in ptrace_set_fpsimd_get_sve_data()
680 ksft_test_result(errors == 0, "Set FPSIMD, read via SVE for %s VL %u\n", in ptrace_set_fpsimd_get_sve_data()
681 type->name, vl); in ptrace_set_fpsimd_get_sve_data()
683 out: in ptrace_set_fpsimd_get_sve_data()
703 if (pid == -1) { in do_parent()
728 sig = 0; /* bust group-stop */ in do_parent()
761 ksft_test_result_skip("%s unsupported read fails\n", in do_parent()
773 ksft_test_result_skip("%s FPSIMD read\n", in do_parent()
787 /* Setting out of bounds VLs should fail */ in do_parent()