arm64 fixes for 5.19-rc2:
- SME save/restore for EFI fix - incorrect logic for detecting the need for saving/restoring the FFR state. - SME fix for a CPU ID field value. - Sysreg generation awk script fix (comparison operator). - Some typos in documentation or comments and silence a sparse warning (missing prototype). -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEE5RElWfyWxS+3PLO2a9axLQDIXvEFAmKjfnMACgkQa9axLQDI XvFaZQ/7B4KO2DCVy9EgUQn6sC+9fIra60nb4INGezzyxPgYvPfeX51U16jaxNXB iPAQCJy5RKOioN76Ew8HgQd6UHGyspjLGC8Va/xvnGzWa4zSEqX6uFx7t7t6p2G7 CgP2BjF7hQEaRZoluhs5b3lXKnVx2zooLp7HBRaVukGd1f75evSUE68hOqSLX2DO bhFGyCsOlpZyKC0HwVA2bl2ozaujQFAp+MHvzsb+yRdHc/IhNaaqpACrarUGXinR Dj4kQ/lo3nh7nNsVpsq0xwtwGV+3LrlIhIhyIMTUNE5fTCq7IlN8yy/j7yeMDhMb jSKPz+n9ZzHOBF2rwK4zmQC/1Pe0HFHWq/kCB66kUrtjFug9rJeTcUThkpSay7Ya 2HEYwdPvT59OAw+IPSFtHQD5XOV33ci8wykLT8dV4mffrWtY9nx6E3xlCW8/5Ue8 Q3ti08gN3aARUMj8sJTE/E/O02idMoU/pSzaqowtG8psZxSFf9DSZGs1WjvKVKRj x4JGzBv5egAk/fSDw5NbMCAh1KW94Wm1pdXYdzYp90iJQwPfXrf5YyJ+c2FzuuIj 8YW7jxq/dBp880yWFa77d41uzauWsIpflaekzCnLBz7oXOrkpQBVxRAOEwWA35Fx JKeAqJieyPILymSM9e1HnBRYR5WQztPSFwHmCnUiVwCIOHM6kl4= =dll5 -----END PGP SIGNATURE----- Merge tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux Pull arm64 fixes from Catalin Marinas: - SME save/restore for EFI fix - incorrect logic for detecting the need for saving/restoring the FFR state. - SME fix for a CPU ID field value. - Sysreg generation awk script fix (comparison operator). - Some typos in documentation or comments and silence a sparse warning (missing prototype). * tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux: arm64: Add kasan_hw_tags_enable() prototype to silence sparse arm64/sme: Fix EFI save/restore arm64/fpsimd: Fix typo in comment arm64/sysreg: Fix typo in Enum element regex arm64/sme: Fix SVE/SME typo in ABI documentation arm64/sme: Fix tests for 0b1111 value ID registers
This commit is contained in:
commit
36a2366379
|
@ -371,7 +371,7 @@ The regset data starts with struct user_za_header, containing:
|
|||
Appendix A. SME programmer's model (informative)
|
||||
=================================================
|
||||
|
||||
This section provides a minimal description of the additions made by SVE to the
|
||||
This section provides a minimal description of the additions made by SME to the
|
||||
ARMv8-A programmer's model that are relevant to this document.
|
||||
|
||||
Note: This section is for information only and not intended to be complete or
|
||||
|
|
|
@ -843,9 +843,9 @@
|
|||
#define ID_AA64SMFR0_F32F32_SHIFT 32
|
||||
|
||||
#define ID_AA64SMFR0_FA64 0x1
|
||||
#define ID_AA64SMFR0_I16I64 0x4
|
||||
#define ID_AA64SMFR0_I16I64 0xf
|
||||
#define ID_AA64SMFR0_F64F64 0x1
|
||||
#define ID_AA64SMFR0_I8I32 0x4
|
||||
#define ID_AA64SMFR0_I8I32 0xf
|
||||
#define ID_AA64SMFR0_F16F32 0x1
|
||||
#define ID_AA64SMFR0_B16F32 0x1
|
||||
#define ID_AA64SMFR0_F32F32 0x1
|
||||
|
|
|
@ -331,7 +331,7 @@ void task_set_vl_onexec(struct task_struct *task, enum vec_type type,
|
|||
* trapping to the kernel.
|
||||
*
|
||||
* When stored, Z0-Z31 (incorporating Vn in bits[127:0] or the
|
||||
* corresponding Zn), P0-P15 and FFR are encoded in in
|
||||
* corresponding Zn), P0-P15 and FFR are encoded in
|
||||
* task->thread.sve_state, formatted appropriately for vector
|
||||
* length task->thread.sve_vl or, if SVCR.SM is set,
|
||||
* task->thread.sme_vl.
|
||||
|
@ -1916,10 +1916,15 @@ void __efi_fpsimd_begin(void)
|
|||
if (system_supports_sme()) {
|
||||
svcr = read_sysreg_s(SYS_SVCR);
|
||||
|
||||
if (!system_supports_fa64())
|
||||
ffr = svcr & SVCR_SM_MASK;
|
||||
__this_cpu_write(efi_sm_state,
|
||||
svcr & SVCR_SM_MASK);
|
||||
|
||||
__this_cpu_write(efi_sm_state, ffr);
|
||||
/*
|
||||
* Unless we have FA64 FFR does not
|
||||
* exist in streaming mode.
|
||||
*/
|
||||
if (!system_supports_fa64())
|
||||
ffr = !(svcr & SVCR_SM_MASK);
|
||||
}
|
||||
|
||||
sve_save_state(sve_state + sve_ffr_offset(sve_max_vl()),
|
||||
|
@ -1964,8 +1969,13 @@ void __efi_fpsimd_end(void)
|
|||
sysreg_clear_set_s(SYS_SVCR,
|
||||
0,
|
||||
SVCR_SM_MASK);
|
||||
|
||||
/*
|
||||
* Unless we have FA64 FFR does not
|
||||
* exist in streaming mode.
|
||||
*/
|
||||
if (!system_supports_fa64())
|
||||
ffr = efi_sm_state;
|
||||
ffr = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -244,6 +244,11 @@ static void mte_update_gcr_excl(struct task_struct *task)
|
|||
SYS_GCR_EL1);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_KASAN_HW_TAGS
|
||||
/* Only called from assembly, silence sparse */
|
||||
void __init kasan_hw_tags_enable(struct alt_instr *alt, __le32 *origptr,
|
||||
__le32 *updptr, int nr_inst);
|
||||
|
||||
void __init kasan_hw_tags_enable(struct alt_instr *alt, __le32 *origptr,
|
||||
__le32 *updptr, int nr_inst)
|
||||
{
|
||||
|
@ -252,6 +257,7 @@ void __init kasan_hw_tags_enable(struct alt_instr *alt, __le32 *origptr,
|
|||
if (kasan_hw_tags_enabled())
|
||||
*updptr = cpu_to_le32(aarch64_insn_gen_nop());
|
||||
}
|
||||
#endif
|
||||
|
||||
void mte_thread_init_user(void)
|
||||
{
|
||||
|
|
|
@ -253,7 +253,7 @@ END {
|
|||
next
|
||||
}
|
||||
|
||||
/0b[01]+/ && block = "Enum" {
|
||||
/0b[01]+/ && block == "Enum" {
|
||||
expect_fields(2)
|
||||
val = $1
|
||||
name = $2
|
||||
|
|
Loading…
Reference in New Issue