OpenCloudOS-Kernel/arch/arm64/lib
Julien Thierry 7b77452ec5 arm64: use WFE for long delays
The current delay implementation uses the yield instruction, which is a
hint that it is beneficial to schedule another thread. As this is a hint,
it may be implemented as a NOP, causing all delays to be busy loops. This
is the case for many existing CPUs.

Taking advantage of the generic timer sending periodic events to all
cores, we can use WFE during delays to reduce power consumption. This is
beneficial only for delays longer than the period of the timer event
stream.

If timer event stream is not enabled, delays will behave as yield/busy
loops.

Signed-off-by: Julien Thierry <julien.thierry@arm.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will.deacon@arm.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
2017-10-13 18:56:15 +01:00
..
Makefile arm64: uaccess: Implement *_flushcache variants 2017-08-09 12:16:26 +01:00
atomic_ll_sc.c arm64: introduce CONFIG_ARM64_LSE_ATOMICS as fallback to ll/sc atomics 2015-07-27 15:28:50 +01:00
bitops.S arm64: atomics: prefetch the destination word for write prior to stxr 2015-07-27 15:28:53 +01:00
clear_page.S arm64: Miscellaneous library functions 2012-09-17 13:42:18 +01:00
clear_user.S arm64: don't pull uaccess.h into *.S 2016-12-26 13:05:17 -05:00
copy_from_user.S arm64: don't pull uaccess.h into *.S 2016-12-26 13:05:17 -05:00
copy_in_user.S arm64: switch to RAW_COPY_USER 2017-03-28 18:23:24 -04:00
copy_page.S arm64/lib: copy_page: use consistent prefetch stride 2017-07-25 10:04:42 +01:00
copy_template.S scripts/spelling.txt: add "overwritting" pattern and fix typo instances 2017-02-27 18:43:47 -08:00
copy_to_user.S arm64: don't pull uaccess.h into *.S 2016-12-26 13:05:17 -05:00
delay.c arm64: use WFE for long delays 2017-10-13 18:56:15 +01:00
memchr.S arm64: use ENDPIPROC() to annotate position independent assembler routines 2015-10-12 16:19:45 +01:00
memcmp.S arm64: Fix misspellings in comments. 2016-03-04 18:19:17 +00:00
memcpy.S arm64: add KASAN support 2015-10-12 17:46:36 +01:00
memmove.S arm64: add KASAN support 2015-10-12 17:46:36 +01:00
memset.S arm64: add KASAN support 2015-10-12 17:46:36 +01:00
strchr.S arm64: klib: Optimised string functions 2013-03-21 17:39:30 +00:00
strcmp.S arm64: use ENDPIPROC() to annotate position independent assembler routines 2015-10-12 16:19:45 +01:00
strlen.S arm64: use ENDPIPROC() to annotate position independent assembler routines 2015-10-12 16:19:45 +01:00
strncmp.S arm64: use ENDPIPROC() to annotate position independent assembler routines 2015-10-12 16:19:45 +01:00
strnlen.S arm64/efi: Make strnlen() available to the EFI namespace 2016-02-16 10:32:10 +00:00
strrchr.S arm64: klib: Optimised string functions 2013-03-21 17:39:30 +00:00
uaccess_flushcache.c arm64: uaccess: Add the uaccess_flushcache.c file 2017-08-10 10:49:21 +01:00