Messages in this thread | | | Subject | Re: [PATCH v2 2/4] arm64: mte: Add asynchronous mode support | From | Vincenzo Frascino <> | Date | Thu, 14 Jan 2021 09:43:19 +0000 |
| |
On 1/13/21 5:22 PM, Catalin Marinas wrote: > On Thu, Jan 07, 2021 at 05:29:06PM +0000, Vincenzo Frascino wrote: >> MTE provides an asynchronous mode for detecting tag exceptions. In >> particular instead of triggering a fault the arm64 core updates a >> register which is checked by the kernel at the first entry after the tag >> exception has occurred. > > Just rephrase the "tag exception" here as there's no exception taken. > Also we don't check this only when the kernel is first entered after a > tag check fault, as per patch 3. >
Ok, I will clarify it in v3.
>> --- a/arch/arm64/kernel/mte.c >> +++ b/arch/arm64/kernel/mte.c >> @@ -153,8 +153,35 @@ void mte_init_tags(u64 max_tag) >> >> void mte_enable_kernel(enum kasan_arg_mode mode) >> { >> - /* Enable MTE Sync Mode for EL1. */ >> - sysreg_clear_set(sctlr_el1, SCTLR_ELx_TCF_MASK, SCTLR_ELx_TCF_SYNC); >> + const char *m; >> + >> + /* Preset parameter values based on the mode. */ >> + switch (mode) { >> + case KASAN_ARG_MODE_OFF: >> + return; >> + case KASAN_ARG_MODE_LIGHT: >> + /* Enable MTE Async Mode for EL1. */ >> + sysreg_clear_set(sctlr_el1, SCTLR_ELx_TCF_MASK, SCTLR_ELx_TCF_ASYNC); >> + m = "asynchronous"; >> + break; >> + case KASAN_ARG_MODE_DEFAULT: >> + case KASAN_ARG_MODE_PROD: >> + case KASAN_ARG_MODE_FULL: >> + /* Enable MTE Sync Mode for EL1. */ >> + sysreg_clear_set(sctlr_el1, SCTLR_ELx_TCF_MASK, SCTLR_ELx_TCF_SYNC); >> + m = "synchronous"; >> + break; >> + default: >> + /* >> + * kasan mode should be always set hence we should >> + * not reach this condition. >> + */ >> + WARN_ON_ONCE(1); >> + return; >> + } > > I guess the switch statement here will be re-written as we want kasan to > drive the actual sync/async modes as it sees fit rather than MTE > guessing what PROD/FULL/LIGHT means. >
Yes, this is correct, it will present only sync/async mode.
-- Regards, Vincenzo
| |