mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-08 15:04:45 +00:00
kselftest/arm64: Don't probe the current VL for unsupported vector types
The vec-syscfg selftest verifies that setting the VL of the currently tested vector type does not disrupt the VL of the other vector type. To do this it records the current vector length for each type but neglects to guard this with a check for that vector type actually being supported. Add one, using a helper function which we also update all the other instances of this pattern. Signed-off-by: Mark Brown <broonie@kernel.org> Link: https://lore.kernel.org/r/20231218-kselftest-arm64-vec-syscfg-rdvl-v1-1-0ac22d47e81f@kernel.org Signed-off-by: Will Deacon <will@kernel.org>
This commit is contained in:
parent
48f7ab21f7
commit
9a802ddb21
@ -66,6 +66,11 @@ static struct vec_data vec_data[] = {
|
||||
},
|
||||
};
|
||||
|
||||
static bool vec_type_supported(struct vec_data *data)
|
||||
{
|
||||
return getauxval(data->hwcap_type) & data->hwcap;
|
||||
}
|
||||
|
||||
static int stdio_read_integer(FILE *f, const char *what, int *val)
|
||||
{
|
||||
int n = 0;
|
||||
@ -564,8 +569,11 @@ static void prctl_set_all_vqs(struct vec_data *data)
|
||||
return;
|
||||
}
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(vec_data); i++)
|
||||
for (i = 0; i < ARRAY_SIZE(vec_data); i++) {
|
||||
if (!vec_type_supported(&vec_data[i]))
|
||||
continue;
|
||||
orig_vls[i] = vec_data[i].rdvl();
|
||||
}
|
||||
|
||||
for (vq = SVE_VQ_MIN; vq <= SVE_VQ_MAX; vq++) {
|
||||
vl = sve_vl_from_vq(vq);
|
||||
@ -594,7 +602,7 @@ static void prctl_set_all_vqs(struct vec_data *data)
|
||||
if (&vec_data[i] == data)
|
||||
continue;
|
||||
|
||||
if (!(getauxval(vec_data[i].hwcap_type) & vec_data[i].hwcap))
|
||||
if (!vec_type_supported(&vec_data[i]))
|
||||
continue;
|
||||
|
||||
if (vec_data[i].rdvl() != orig_vls[i]) {
|
||||
@ -765,7 +773,7 @@ int main(void)
|
||||
struct vec_data *data = &vec_data[i];
|
||||
unsigned long supported;
|
||||
|
||||
supported = getauxval(data->hwcap_type) & data->hwcap;
|
||||
supported = vec_type_supported(data);
|
||||
if (!supported)
|
||||
all_supported = false;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user