[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 11/45] linux-user: Introduce PAGE_ANON
From: |
Peter Maydell |
Subject: |
[PULL 11/45] linux-user: Introduce PAGE_ANON |
Date: |
Thu, 11 Feb 2021 12:58:26 +0000 |
From: Richard Henderson <richard.henderson@linaro.org>
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>
Message-id: 20210210000223.884088-3-richard.henderson@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@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 af555f1798d..1f47e0fe44a 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 c693505b601..7fb4c628e11 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.20.1
- [PULL 01/45] target/arm: Don't migrate CPUARMState.features, (continued)
- [PULL 01/45] target/arm: Don't migrate CPUARMState.features, Peter Maydell, 2021/02/11
- [PULL 05/45] target/arm: Support AA32 DIT by moving PSTATE_SS from cpsr into env->pstate, Peter Maydell, 2021/02/11
- [PULL 07/45] target/arm: Set ID_PFR0.DIT to 1 for "max" 32-bit CPU, Peter Maydell, 2021/02/11
- [PULL 04/45] target/arm: Add support for FEAT_DIT, Data Independent Timing, Peter Maydell, 2021/02/11
- [PULL 02/45] target/arm: Fix SCR RES1 handling, Peter Maydell, 2021/02/11
- [PULL 08/45] arm: Update infocenter.arm.com URLs, Peter Maydell, 2021/02/11
- [PULL 03/45] hw/arm: Remove GPIO from unimplemented NPCM7XX, Peter Maydell, 2021/02/11
- [PULL 06/45] target/arm: Set ID_AA64PFR0.DIT and ID_PFR0.DIT to 1 for "max" AA64 CPU, Peter Maydell, 2021/02/11
- [PULL 09/45] accel/tcg: Add URL of clang bug to comment about our workaround, Peter Maydell, 2021/02/11
- [PULL 10/45] tcg: Introduce target-specific page data for user-only, Peter Maydell, 2021/02/11
- [PULL 11/45] linux-user: Introduce PAGE_ANON,
Peter Maydell <=
- [PULL 12/45] exec: Use uintptr_t for guest_base, Peter Maydell, 2021/02/11
- [PULL 13/45] exec: Use uintptr_t in cpu_ldst.h, Peter Maydell, 2021/02/11
- [PULL 16/45] linux-user: Tidy VERIFY_READ/VERIFY_WRITE, Peter Maydell, 2021/02/11
- [PULL 17/45] bsd-user: Tidy VERIFY_READ/VERIFY_WRITE, Peter Maydell, 2021/02/11
- [PULL 15/45] linux-user: Check for overflow in access_ok, Peter Maydell, 2021/02/11
- [PULL 14/45] exec: Improve types for guest_addr_valid, Peter Maydell, 2021/02/11
- [PULL 20/45] exec: Introduce cpu_untagged_addr, Peter Maydell, 2021/02/11
- [PULL 18/45] linux-user: Do not use guest_addr_valid for h2g_valid, Peter Maydell, 2021/02/11
- [PULL 19/45] linux-user: Fix guest_addr_valid vs reserved_va, Peter Maydell, 2021/02/11