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()
133 if (ptrace(PTRACE_GETREGSET, pid, type->regset, &iov)) in get_sve()
137 if (sve->size <= sz) in get_sve()
140 sz = sve->size; in get_sve()
155 iov.iov_len = sve->size; in set_sve()
156 return ptrace(PTRACE_SETREGSET, pid, type->regset, &iov); in set_sve()
175 type->name); in ptrace_set_get_inherit()
180 * Read back the new register state and verify that we have in ptrace_set_get_inherit()
184 ksft_test_result_fail("Failed to read %s SVE flags\n", in ptrace_set_get_inherit()
185 type->name); in ptrace_set_get_inherit()
189 ksft_test_result(new_sve->flags & SVE_PT_VL_INHERIT, in ptrace_set_get_inherit()
190 "%s SVE_PT_VL_INHERIT set\n", type->name); in ptrace_set_get_inherit()
197 type->name); in ptrace_set_get_inherit()
202 ksft_test_result_fail("Failed to read %s SVE flags\n", in ptrace_set_get_inherit()
203 type->name); in ptrace_set_get_inherit()
207 ksft_test_result(!(new_sve->flags & SVE_PT_VL_INHERIT), in ptrace_set_get_inherit()
208 "%s SVE_PT_VL_INHERIT cleared\n", type->name); in ptrace_set_get_inherit()
225 prctl_vl = prctl(type->prctl_set, vl); in ptrace_set_get_vl()
226 if (prctl_vl == -1) in ptrace_set_get_vl()
228 type->name, strerror(errno), errno); in ptrace_set_get_vl()
240 type->name, vl); in ptrace_set_get_vl()
245 * Read back the new register state and verify that we have the in ptrace_set_get_vl()
249 ksft_test_result_fail("Failed to read %s VL %u\n", in ptrace_set_get_vl()
250 type->name, vl); in ptrace_set_get_vl()
254 ksft_test_result(new_sve->vl = prctl_vl, "Set %s VL %u\n", in ptrace_set_get_vl()
255 type->name, vl); in ptrace_set_get_vl()
261 uint32_t *in, uint32_t *out, int *errors) in check_u32() argument
263 if (*in != *out) { in check_u32()
264 printf("# VL %d %s wrote %x read %x\n", in check_u32()
265 vl, reg, *in, *out); in check_u32()
288 sve->flags = SVE_PT_REGS_FPSIMD; in ptrace_sve_fpsimd()
289 sve->size = SVE_PT_SIZE(0, SVE_PT_REGS_FPSIMD); in ptrace_sve_fpsimd()
290 sve->vl = 16; /* We don't care what the VL is */ in ptrace_sve_fpsimd()
296 p = (unsigned char *)&fpsimd->vregs[i]; in ptrace_sve_fpsimd()
298 for (j = 0; j < sizeof(fpsimd->vregs[i]); ++j) in ptrace_sve_fpsimd()
304 type->name, ret); in ptrace_sve_fpsimd()
306 goto out; in ptrace_sve_fpsimd()
312 goto out; in ptrace_sve_fpsimd()
316 type->name); in ptrace_sve_fpsimd()
319 type->name); in ptrace_sve_fpsimd()
321 out: in ptrace_sve_fpsimd()
325 /* Validate attempting to set SVE data and read SVE data */
344 data_size, type->name, vl); in ptrace_set_sve_get_sve_data()
349 /* Set up some data and write it out */ in ptrace_set_sve_get_sve_data()
351 write_sve->size = data_size; in ptrace_set_sve_get_sve_data()
352 write_sve->vl = vl; in ptrace_set_sve_get_sve_data()
353 write_sve->flags = SVE_PT_REGS_SVE; in ptrace_set_sve_get_sve_data()
371 type->name, vl); in ptrace_set_sve_get_sve_data()
372 goto out; in ptrace_set_sve_get_sve_data()
375 /* Read the data back */ in ptrace_set_sve_get_sve_data()
377 ksft_test_result_fail("Failed to read %s VL %u data\n", in ptrace_set_sve_get_sve_data()
378 type->name, vl); in ptrace_set_sve_get_sve_data()
379 goto out; in ptrace_set_sve_get_sve_data()
383 /* We might read more data if there's extensions we don't know */ in ptrace_set_sve_get_sve_data()
384 if (read_sve->size < write_sve->size) { in ptrace_set_sve_get_sve_data()
385 ksft_test_result_fail("%s wrote %d bytes, only read %d\n", in ptrace_set_sve_get_sve_data()
386 type->name, write_sve->size, in ptrace_set_sve_get_sve_data()
387 read_sve->size); in ptrace_set_sve_get_sve_data()
415 type->name, vl); in ptrace_set_sve_get_sve_data()
419 out: in ptrace_set_sve_get_sve_data()
423 /* Validate attempting to set SVE data and read it via the FPSIMD regset */
445 data_size, type->name, vl); in ptrace_set_sve_get_fpsimd_data()
450 /* Set up some data and write it out */ in ptrace_set_sve_get_fpsimd_data()
452 write_sve->size = data_size; in ptrace_set_sve_get_fpsimd_data()
453 write_sve->vl = vl; in ptrace_set_sve_get_fpsimd_data()
454 write_sve->flags = SVE_PT_REGS_SVE; in ptrace_set_sve_get_fpsimd_data()
466 type->name, vl); in ptrace_set_sve_get_fpsimd_data()
467 goto out; in ptrace_set_sve_get_fpsimd_data()
470 /* Read the data back */ in ptrace_set_sve_get_fpsimd_data()
472 ksft_test_result_fail("Failed to read %s VL %u FPSIMD data\n", in ptrace_set_sve_get_fpsimd_data()
473 type->name, vl); in ptrace_set_sve_get_fpsimd_data()
474 goto out; in ptrace_set_sve_get_fpsimd_data()
489 type->name, vl, i); in ptrace_set_sve_get_fpsimd_data()
500 type->name, vl); in ptrace_set_sve_get_fpsimd_data()
502 out: in ptrace_set_sve_get_fpsimd_data()
506 /* Validate attempting to set FPSIMD data and read it via the SVE regset */
541 ksft_test_result_fail("Failed to read %s VL %u data\n", in ptrace_set_fpsimd_get_sve_data()
542 type->name, vl); in ptrace_set_fpsimd_get_sve_data()
547 if (read_sve->vl != vl) { in ptrace_set_fpsimd_get_sve_data()
549 read_sve->vl, vl); in ptrace_set_fpsimd_get_sve_data()
550 goto out; in ptrace_set_fpsimd_get_sve_data()
554 switch (read_sve->flags & SVE_PT_REGS_MASK) { in ptrace_set_fpsimd_get_sve_data()
558 ksft_test_result_fail("Read %d bytes, expected %d\n", in ptrace_set_fpsimd_get_sve_data()
560 goto out; in ptrace_set_fpsimd_get_sve_data()
566 ksft_print_msg("Read FPSIMD data mismatch\n"); in ptrace_set_fpsimd_get_sve_data()
574 ksft_test_result_fail("Read %d bytes, expected %d\n", in ptrace_set_fpsimd_get_sve_data()
576 goto out; in ptrace_set_fpsimd_get_sve_data()
591 type->name, vl, i, i); in ptrace_set_fpsimd_get_sve_data()
603 read_sve->flags & SVE_PT_REGS_MASK); in ptrace_set_fpsimd_get_sve_data()
608 ksft_test_result(errors == 0, "Set FPSIMD, read via SVE for %s VL %u\n", in ptrace_set_fpsimd_get_sve_data()
609 type->name, vl); in ptrace_set_fpsimd_get_sve_data()
611 out: in ptrace_set_fpsimd_get_sve_data()
631 if (pid == -1) { in do_parent()
656 sig = 0; /* bust group-stop */ in do_parent()
687 ksft_test_result_skip("%s FPSIMD read\n", in do_parent()