tcg: Sink qemu_madvise call to common code
Move the call out of the N versions of alloc_code_gen_buffer and into tcg_region_init. Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Luis Pires <luis.pires@eldorado.org.br> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
7be9ebcf92
commit
cd9ea992e9
14
tcg/region.c
14
tcg/region.c
@ -559,7 +559,6 @@ static int alloc_code_gen_buffer(size_t tb_size, int splitwx, Error **errp)
|
|||||||
error_setg_errno(errp, errno, "mprotect of jit buffer");
|
error_setg_errno(errp, errno, "mprotect of jit buffer");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
qemu_madvise(buf, size, QEMU_MADV_HUGEPAGE);
|
|
||||||
|
|
||||||
region.start_aligned = buf;
|
region.start_aligned = buf;
|
||||||
region.total_size = size;
|
region.total_size = size;
|
||||||
@ -635,9 +634,6 @@ static int alloc_code_gen_buffer_anon(size_t size, int prot,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Request large pages for the buffer. */
|
|
||||||
qemu_madvise(buf, size, QEMU_MADV_HUGEPAGE);
|
|
||||||
|
|
||||||
region.start_aligned = buf;
|
region.start_aligned = buf;
|
||||||
region.total_size = size;
|
region.total_size = size;
|
||||||
return prot;
|
return prot;
|
||||||
@ -687,9 +683,6 @@ static bool alloc_code_gen_buffer_splitwx_memfd(size_t size, Error **errp)
|
|||||||
region.total_size = size;
|
region.total_size = size;
|
||||||
tcg_splitwx_diff = buf_rx - buf_rw;
|
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;
|
return PROT_READ | PROT_WRITE;
|
||||||
|
|
||||||
fail_rx:
|
fail_rx:
|
||||||
@ -857,6 +850,13 @@ void tcg_region_init(size_t tb_size, int splitwx, unsigned max_cpus)
|
|||||||
splitwx, &error_fatal);
|
splitwx, &error_fatal);
|
||||||
assert(have_prot >= 0);
|
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.
|
* 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
|
* As a result of this we might end up with a few extra pages at the end of
|
||||||
|
Loading…
Reference in New Issue
Block a user