[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 22/26] tcg: Sink qemu_madvise call to common code
From: |
Richard Henderson |
Subject: |
[PATCH 22/26] tcg: Sink qemu_madvise call to common code |
Date: |
Wed, 10 Mar 2021 18:21:52 -0600 |
Move the call out of the N versions of alloc_code_gen_buffer
and into tcg_region_init.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
tcg/region.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/tcg/region.c b/tcg/region.c
index f25ec1ecad..7640aac243 100644
--- a/tcg/region.c
+++ b/tcg/region.c
@@ -518,7 +518,6 @@ static int alloc_code_gen_buffer(size_t tb_size, int
splitwx, Error **errp)
error_setg_errno(errp, errno, "mprotect of jit buffer");
return false;
}
- qemu_madvise(buf, size, QEMU_MADV_HUGEPAGE);
region.start_aligned = buf;
region.total_size = size;
@@ -594,9 +593,6 @@ static int alloc_code_gen_buffer_anon(size_t size, int prot,
}
#endif
- /* Request large pages for the buffer. */
- qemu_madvise(buf, size, QEMU_MADV_HUGEPAGE);
-
region.start_aligned = buf;
region.total_size = size;
return prot;
@@ -646,9 +642,6 @@ static bool alloc_code_gen_buffer_splitwx_memfd(size_t
size, Error **errp)
region.total_size = size;
tcg_splitwx_diff = buf_rx - buf_rw;
- /* Request large pages for the buffer and the splitwx. */
- qemu_madvise(buf_rw, size, QEMU_MADV_HUGEPAGE);
- qemu_madvise(buf_rx, size, QEMU_MADV_HUGEPAGE);
return PROT_READ | PROT_WRITE;
fail_rx:
@@ -817,6 +810,13 @@ void tcg_region_init(size_t tb_size, int splitwx, unsigned
max_cpus)
splitwx, &error_fatal);
assert(have_prot >= 0);
+ /* Request large pages for the buffer and the splitwx. */
+ qemu_madvise(region.start_aligned, region.total_size, QEMU_MADV_HUGEPAGE);
+ if (tcg_splitwx_diff) {
+ qemu_madvise(region.start_aligned + tcg_splitwx_diff,
+ region.total_size, QEMU_MADV_HUGEPAGE);
+ }
+
/*
* Make region_size a multiple of page_size, using aligned as the start.
* As a result of this we might end up with a few extra pages at the end of
--
2.25.1
- [PATCH 18/26] tcg: Tidy tcg_n_regions, (continued)
- [PATCH 18/26] tcg: Tidy tcg_n_regions, Richard Henderson, 2021/03/10
- [PATCH 17/26] tcg: Replace region.end with region.total_size, Richard Henderson, 2021/03/10
- [PATCH 19/26] tcg: Tidy split_cross_256mb, Richard Henderson, 2021/03/10
- [PATCH 16/26] tcg: Move MAX_CODE_GEN_BUFFER_SIZE to tcg-target.h, Richard Henderson, 2021/03/10
- [PATCH 13/26] accel/tcg: Merge tcg_exec_init into tcg_init_machine, Richard Henderson, 2021/03/10
- [PATCH 23/26] tcg: Do not set guard pages in the rx buffer, Richard Henderson, 2021/03/10
- [PATCH 21/26] tcg: Return the map protection from alloc_code_gen_buffer, Richard Henderson, 2021/03/10
- [PATCH 20/26] tcg: Allocate code_gen_buffer into struct tcg_region_state, Richard Henderson, 2021/03/10
- [PATCH 22/26] tcg: Sink qemu_madvise call to common code,
Richard Henderson <=
- [PATCH 15/26] tcg: Introduce tcg_max_ctxs, Richard Henderson, 2021/03/10
- [PATCH 25/26] tcg: Merge buffer protection and guard page protection, Richard Henderson, 2021/03/10
- [PATCH 24/26] util/osdep: Add qemu_mprotect_rw, Richard Henderson, 2021/03/10
- [PATCH 26/26] tcg: When allocating for !splitwx, begin with PROT_NONE, Richard Henderson, 2021/03/10
- Re: [PATCH 00/26] tcg: Workaround macOS 11.2 mprotect bug, no-reply, 2021/03/10