On Mon, Feb 07, 2022 at 06:52:06PM -0700, Shuah Khan wrote: > On 2/7/22 8:21 AM, Mark Brown wrote: > > +static int check_za(struct syscall_cfg *cfg, int sve_vl, int sme_vl, > > + uint64_t svcr) > > +{ > > + size_t reg_size = sme_vl * sme_vl; > Is there possibilty of size_t overfolow here? No, if the size of a vector were anywhere near to being able to being able to do that I think we'd have serious design issues with the ABI - the size being calculated here is the size of a single register. The current architectural maximum vector length is 2048 bits, which would give a size of 64K for ZA if implemented. > > + if (memcmp(za_in, za_out, reg_size) != 0) { > > + ksft_print_msg("SME VL %d ZA does not match\n", sme_vl); > Print the expected value in addition to the sme_val. This is not comparing the vector length, this is comparing the contents of the ZA register which may be up to 64K in size. There are serious presentational issues with displaying any errors in a useful fashion for such a large register which IME needs custom display code adding by whoever is debugging the issue that takes account of what the pattern being observed is. > > @@ -265,8 +357,36 @@ static void test_one_syscall(struct syscall_cfg *cfg) > > if (sve_vq != sve_vq_from_vl(sve_vl)) > > sve_vq = sve_vq_from_vl(sve_vl); > > - ksft_test_result(do_test(cfg, sve_vl), > > + ksft_test_result(do_test(cfg, sve_vl, default_sme_vl, 0), > > "%s SVE VL %d\n", cfg->name, sve_vl); > Print default_sme_vl as well. default_sme_vl is just being passed in as a dummy value here since the function takes a fixed number of arguments, this is testing the case where SME is not used or enabled and will be run on systems which do not have SME at all so there won't be any defined vector length for SME. I fear that it would cause confusion to display a SME VL here, and do_test() won't actually pay any attention to that argument in this case. We will individually step through all possible combinations of SVE and SME vector lengths in separate tests.
Attachment:
signature.asc
Description: PGP signature