Module Name: src
Committed By: skrll
Date: Wed Aug 2 14:45:04 UTC 2023
Modified Files:
src/sys/arch/aarch64/aarch64: db_interface.c
Log Message:
Relax the TLB invalidation from full to by va for writing to kernel text
in db_write_text.
To generate a diff of this commit:
cvs rdiff -u -r1.22 -r1.23 src/sys/arch/aarch64/aarch64/db_interface.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/aarch64/aarch64/db_interface.c
diff -u src/sys/arch/aarch64/aarch64/db_interface.c:1.22 src/sys/arch/aarch64/aarch64/db_interface.c:1.23
--- src/sys/arch/aarch64/aarch64/db_interface.c:1.22 Wed Nov 2 08:37:32 2022
+++ src/sys/arch/aarch64/aarch64/db_interface.c Wed Aug 2 14:45:04 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: db_interface.c,v 1.22 2022/11/02 08:37:32 skrll Exp $ */
+/* $NetBSD: db_interface.c,v 1.23 2023/08/02 14:45:04 skrll Exp $ */
/*
* Copyright (c) 2017 Ryo Shimizu <[email protected]>
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: db_interface.c,v 1.22 2022/11/02 08:37:32 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: db_interface.c,v 1.23 2023/08/02 14:45:04 skrll Exp $");
#include <sys/param.h>
#include <sys/types.h>
@@ -171,7 +171,8 @@ db_write_text(vaddr_t addr, size_t size,
*/
/* old pte is returned by pmap_kvattr */
pte = pmap_kvattr(ptep, VM_PROT_EXECUTE | VM_PROT_READ | VM_PROT_WRITE);
- aarch64_tlbi_all();
+ /* dsb(ishst) included in aarch64_tlbi_by_va */
+ aarch64_tlbi_by_va(addr);
s = size;
if (size > PAGE_SIZE)
@@ -182,7 +183,8 @@ db_write_text(vaddr_t addr, size_t size,
/* restore pte */
*ptep = pte;
- aarch64_tlbi_all();
+ /* dsb(ishst) included in aarch64_tlbi_by_va */
+ aarch64_tlbi_by_va(addr);
addr += s;
size -= s;