lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Wed, 20 Jan 2021 17:36:07 +0000 From: Will Deacon <will@...nel.org> To: linux-kernel@...r.kernel.org Cc: linux-mm@...ck.org, linux-arm-kernel@...ts.infradead.org, Will Deacon <will@...nel.org>, Catalin Marinas <catalin.marinas@....com>, Jan Kara <jack@...e.cz>, Minchan Kim <minchan@...nel.org>, Andrew Morton <akpm@...ux-foundation.org>, "Kirill A . Shutemov" <kirill.shutemov@...ux.intel.com>, Linus Torvalds <torvalds@...ux-foundation.org>, Vinayak Menon <vinmenon@...eaurora.org>, Hugh Dickins <hughd@...gle.com>, Nick Desaulniers <ndesaulniers@...gle.com>, kernel-team@...roid.com Subject: [PATCH v4 3/8] arm64: mm: Implement arch_wants_old_prefaulted_pte() On CPUs with hardware AF/DBM, initialising prefaulted PTEs as 'old' improves vmscan behaviour and does not appear to introduce any overhead elsewhere. Implement arch_wants_old_prefaulted_pte() to return 'true' if we detect hardware access flag support at runtime. This can be extended in future based on MIDR matching if necessary. Cc: Catalin Marinas <catalin.marinas@....com> Signed-off-by: Will Deacon <will@...nel.org> --- arch/arm64/include/asm/pgtable.h | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h index 501562793ce2..e17b96d0e4b5 100644 --- a/arch/arm64/include/asm/pgtable.h +++ b/arch/arm64/include/asm/pgtable.h @@ -980,7 +980,17 @@ static inline bool arch_faults_on_old_pte(void) return !cpu_has_hw_af(); } -#define arch_faults_on_old_pte arch_faults_on_old_pte +#define arch_faults_on_old_pte arch_faults_on_old_pte + +/* + * Experimentally, it's cheap to set the access flag in hardware and we + * benefit from prefaulting mappings as 'old' to start with. + */ +static inline bool arch_wants_old_prefaulted_pte(void) +{ + return !arch_faults_on_old_pte(); +} +#define arch_wants_old_prefaulted_pte arch_wants_old_prefaulted_pte #endif /* !__ASSEMBLY__ */ -- 2.30.0.284.gd98b1dd5eaa7-goog
Powered by blists - more mailing lists