[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 23/28] tcg: Sink qemu_madvise call to common code
From: |
Richard Henderson |
Subject: |
[PATCH v3 23/28] tcg: Sink qemu_madvise call to common code |
Date: |
Sun, 2 May 2021 16:18:39 -0700 |
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 23fe113750..b3f0b9bda5 100644
--- a/tcg/region.c
+++ b/tcg/region.c
@@ -554,7 +554,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;
@@ -630,9 +629,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;
@@ -682,9 +678,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:
@@ -852,6 +845,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 v3 07/28] tcg: Split out region.c, (continued)
- [PATCH v3 07/28] tcg: Split out region.c, Richard Henderson, 2021/05/02
- [PATCH v3 15/28] tcg: Move MAX_CODE_GEN_BUFFER_SIZE to tcg-target.h, Richard Henderson, 2021/05/02
- [PATCH v3 11/28] tcg: Create tcg_init, Richard Henderson, 2021/05/02
- [PATCH v3 18/28] tcg: Tidy tcg_n_regions, Richard Henderson, 2021/05/02
- [PATCH v3 16/28] tcg: Replace region.end with region.total_size, Richard Henderson, 2021/05/02
- [PATCH v3 24/28] util/osdep: Add qemu_mprotect_rw, Richard Henderson, 2021/05/02
- [PATCH v3 17/28] tcg: Rename region.start to region.after_prologue, Richard Henderson, 2021/05/02
- [PATCH v3 22/28] tcg: Return the map protection from alloc_code_gen_buffer, Richard Henderson, 2021/05/02
- [PATCH v3 21/28] tcg: Allocate code_gen_buffer into struct tcg_region_state, Richard Henderson, 2021/05/02
- [PATCH v3 20/28] tcg: Move in_code_gen_buffer and tests to region.c, Richard Henderson, 2021/05/02
- [PATCH v3 23/28] tcg: Sink qemu_madvise call to common code,
Richard Henderson <=
- [PATCH v3 27/28] tcg: When allocating for !splitwx, begin with PROT_NONE, Richard Henderson, 2021/05/02
- [PATCH v3 28/28] tcg: Move tcg_init_ctx and tcg_ctx from accel/tcg/, Richard Henderson, 2021/05/02
- [PATCH v3 19/28] tcg: Tidy split_cross_256mb, Richard Henderson, 2021/05/02
- [PATCH v3 26/28] tcg: Merge buffer protection and guard page protection, Richard Henderson, 2021/05/02
- [PATCH v3 09/28] accel/tcg: Move alloc_code_gen_buffer to tcg/region.c, Richard Henderson, 2021/05/02
- [PATCH v3 12/28] accel/tcg: Merge tcg_exec_init into tcg_init_machine, Richard Henderson, 2021/05/02
- [PATCH v3 13/28] accel/tcg: Pass down max_cpus to tcg_init, Richard Henderson, 2021/05/02
- [PATCH v3 14/28] tcg: Introduce tcg_max_ctxs, Richard Henderson, 2021/05/02
- [PATCH v3 25/28] tcg: Round the tb_size default from qemu_get_host_physmem, Richard Henderson, 2021/05/02
- Re: [PATCH v3 00/28] tcg: Clean up code_gen_buffer allocation, no-reply, 2021/05/02