mirror of
git://git.yoctoproject.org/linux-yocto.git
synced 2025-08-22 00:42:01 +02:00

We should have a ZT register frame with an expected size when ZA is enabled and have no ZT frame when ZA is disabled. Since we don't load any data into ZT we expect the data to all be zeros since the architecture guarantees it will be set to 0 as ZA is enabled. Signed-off-by: Mark Brown <broonie@kernel.org> Link: https://lore.kernel.org/r/20221208-arm64-sme2-v4-18-f2fa0aef982f@kernel.org Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
52 lines
1.1 KiB
C
52 lines
1.1 KiB
C
// SPDX-License-Identifier: GPL-2.0
|
|
/*
|
|
* Copyright (C) 2021 ARM Limited
|
|
*
|
|
* Verify that using an instruction not supported in streaming mode
|
|
* traps when in streaming mode.
|
|
*/
|
|
|
|
#include <signal.h>
|
|
#include <ucontext.h>
|
|
#include <sys/prctl.h>
|
|
|
|
#include "test_signals_utils.h"
|
|
#include "testcases.h"
|
|
|
|
static union {
|
|
ucontext_t uc;
|
|
char buf[1024 * 128];
|
|
} context;
|
|
|
|
int zt_no_regs_run(struct tdescr *td, siginfo_t *si, ucontext_t *uc)
|
|
{
|
|
size_t offset;
|
|
struct _aarch64_ctx *head = GET_BUF_RESV_HEAD(context);
|
|
|
|
/*
|
|
* Get a signal context which should not have a ZT frame and
|
|
* registers in it.
|
|
*/
|
|
if (!get_current_context(td, &context.uc, sizeof(context)))
|
|
return 1;
|
|
|
|
head = get_header(head, ZT_MAGIC, GET_BUF_RESV_SIZE(context), &offset);
|
|
if (head) {
|
|
fprintf(stderr, "Got unexpected ZT context\n");
|
|
return 1;
|
|
}
|
|
|
|
td->pass = 1;
|
|
|
|
return 0;
|
|
}
|
|
|
|
struct tdescr tde = {
|
|
.name = "ZT register data not present",
|
|
.descr = "Validate that ZT is not present when ZA is disabled",
|
|
.feats_required = FEAT_SME2,
|
|
.timeout = 3,
|
|
.sanity_disabled = true,
|
|
.run = zt_no_regs_run,
|
|
};
|