[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v4 02/23] linux-user: Introduce PAGE_ANON
From: |
Richard Henderson |
Subject: |
[PATCH v4 02/23] linux-user: Introduce PAGE_ANON |
Date: |
Thu, 28 Jan 2021 12:41:20 -1000 |
Record whether the backing page is anonymous, or if it has file
backing. This will allow us to get close to the Linux AArch64
ABI for MTE, which allows tag memory only on ram-backed VMAs.
The real ABI allows tag memory on files, when those files are
on ram-backed filesystems, such as tmpfs. We will not be able
to implement that in QEMU linux-user.
Thankfully, anonymous memory for malloc arenas is the primary
consumer of this feature, so this restricted version should
still be of use.
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
include/exec/cpu-all.h | 2 ++
linux-user/mmap.c | 3 +++
2 files changed, 5 insertions(+)
diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h
index 99a09ee137..c23c77589b 100644
--- a/include/exec/cpu-all.h
+++ b/include/exec/cpu-all.h
@@ -275,6 +275,8 @@ extern intptr_t qemu_host_page_mask;
#define PAGE_WRITE_INV 0x0020
/* For use with page_set_flags: page is being replaced; target_data cleared. */
#define PAGE_RESET 0x0040
+/* For linux-user, indicates that the page is MAP_ANON. */
+#define PAGE_ANON 0x0080
#if defined(CONFIG_BSD) && defined(CONFIG_USER_ONLY)
/* FIXME: Code that sets/uses this is broken and needs to go away. */
diff --git a/linux-user/mmap.c b/linux-user/mmap.c
index c693505b60..7fb4c628e1 100644
--- a/linux-user/mmap.c
+++ b/linux-user/mmap.c
@@ -599,6 +599,9 @@ abi_long target_mmap(abi_ulong start, abi_ulong len, int
target_prot,
}
}
the_end1:
+ if (flags & MAP_ANONYMOUS) {
+ page_flags |= PAGE_ANON;
+ }
page_flags |= PAGE_RESET;
page_set_flags(start, start + len, page_flags);
the_end:
--
2.25.1
- [PATCH v4 00/23] target-arm: Implement ARMv8.5-MemTag, user mode, Richard Henderson, 2021/01/28
- [PATCH v4 01/23] tcg: Introduce target-specific page data for user-only, Richard Henderson, 2021/01/28
- [PATCH v4 03/23] exec: Use uintptr_t for guest_base, Richard Henderson, 2021/01/28
- [PATCH v4 04/23] exec: Use uintptr_t in cpu_ldst.h, Richard Henderson, 2021/01/28
- [PATCH v4 02/23] linux-user: Introduce PAGE_ANON,
Richard Henderson <=
- [PATCH v4 07/23] linux-user: Tidy VERIFY_READ/VERIFY_WRITE, Richard Henderson, 2021/01/28
- [PATCH v4 05/23] exec: Improve types for guest_addr_valid, Richard Henderson, 2021/01/28
- [PATCH v4 06/23] linux-user: Check for overflow in access_ok, Richard Henderson, 2021/01/28
- [PATCH v4 09/23] linux-user: Do not use guest_addr_valid for h2g_valid, Richard Henderson, 2021/01/28
- [PATCH v4 08/23] bsd-user: Tidy VERIFY_READ/VERIFY_WRITE, Richard Henderson, 2021/01/28
- [PATCH v4 11/23] exec: Add support for TARGET_TAGGED_ADDRESSES, Richard Henderson, 2021/01/28
- [PATCH v4 12/23] linux-user/aarch64: Implement PR_TAGGED_ADDR_ENABLE, Richard Henderson, 2021/01/28
- [PATCH v4 13/23] target/arm: Improve gen_top_byte_ignore, Richard Henderson, 2021/01/28
- [PATCH v4 10/23] linux-user: Fix guest_addr_valid vs reserved_va, Richard Henderson, 2021/01/28
- [PATCH v4 14/23] target/arm: Use the proper TBI settings for linux-user, Richard Henderson, 2021/01/28