seL4/include
Kent McLeod 8402de52db aarch64: Add option for user cache maintenance
Add a config option, KernelAArch64UserCacheEnable, that enables user
level access to DC CVAU, DC CIVAC, DC CVAC, and IC IVAU which are cache
maintenance operations for the data caches and instruction caches
underlying Normal memory and also access to the read-only cache-type
register CTR_EL0 that provides cache type information. The ArmV8-A
architecture allows access from EL0 as fast cache maintenance operations
improves DMA performance in user-level device drivers.

These instructions are a subset of the available cache maintenance
instructions as they can only address lines by virtual address (VA).
They also require that the VA provided referrs to a valid mapping
with at least read permissions. This corresponds to lines that the
EL0 could already affect via regular operation and so it's not expected
to break any cache-partitioning scheme.

The config option allows this policy to be selected for a particular
kernel configuration, but it is default enabled as this has been the
existing behavior for current aarch64,hyp configurations and have not
been explicitly disabled in non-hyp configurations.

Signed-off-by: Kent McLeod <kent@kry10.com>
2023-04-25 15:49:28 +10:00
..
32/mode replacing all ifndef with pargma once 2020-03-23 11:04:46 +11:00
64/mode replacing all ifndef with pargma once 2020-03-23 11:04:46 +11:00
api print value for unknown entry reason 2022-03-16 16:00:42 +11:00
arch aarch64: Add option for user cache maintenance 2023-04-25 15:49:28 +10:00
benchmark benchmark: config opt. name to enable log buffer 2022-03-31 08:56:06 +11:00
drivers rocketchip-zcu102: use plic0 2023-02-22 09:35:14 +11:00
fastpath Implemented the vm fault fastpath on aarch64 2023-03-08 17:58:14 +11:00
kernel boot: remove unused return values 2022-10-30 19:54:02 +11:00
machine debug: restructure kernel console handling 2021-05-14 13:13:36 +10:00
model mcs: Create ksIdleSC global variable 2022-01-04 19:00:24 +11:00
object Implemented signal fastpath on AARCH64 (#793) 2023-01-10 10:15:39 +11:00
plat make physBase a static inline function 2023-03-07 14:29:14 +11:00
smp create helper function handle_SysDebugSendIPI() 2022-01-10 11:58:30 +11:00
api.h replacing all ifndef with pargma once 2020-03-23 11:04:46 +11:00
assert.h trivial: fix typos 2022-02-27 13:10:34 +11:00
basic_types.h boot: document region types 2023-04-12 15:07:02 +10:00
bootinfo.h boot: use helper variable to simplify code 2021-09-06 09:22:04 +10:00
compound_types.h trivial: remove superfluous empty lines 2021-09-27 23:09:09 +10:00
config.h libsel4: Fix name for AARCH64_VSPACE_S2_START_L1 2021-09-06 08:08:54 +10:00
hardware.h remove unused define KERNEL_ELF_PADDR_TOP 2021-11-17 11:29:36 +11:00
linker.h replacing all ifndef with pargma once 2020-03-23 11:04:46 +11:00
machine.h re-use existing functions to avoid redundancy 2022-09-15 11:25:04 +02:00
object.h trivial: remove duplicate headers 2022-02-05 15:30:25 +11:00
stdarg.h trivial: remove superfluous empty lines 2021-09-27 23:09:09 +10:00
stdint.h print 64-bit integers on 32-bits systems fully 2021-11-26 06:01:11 +01:00
string.h trivial: remove superfluous empty lines 2021-09-27 23:09:09 +10:00
types.h trivial: remove superfluous empty lines 2021-09-27 23:09:09 +10:00
util.h make macro ARRAY_SIZE() handle corner cases 2022-03-10 18:16:00 +11:00