Message ID | 20240102015808.132373-16-richard.henderson@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | linux-user: Improve host and guest page size handling | expand |
On 2/1/24 02:57, Richard Henderson wrote: > Use qemu_real_host_page_size() instead. > > Signed-off-by: Richard Henderson <richard.henderson@linaro.org> > --- > linux-user/main.c | 10 ++++++---- > 1 file changed, 6 insertions(+), 4 deletions(-) Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
On Tue, Jan 02, 2024 at 12:57:50PM +1100, Richard Henderson wrote: > Use qemu_real_host_page_size() instead. > > Signed-off-by: Richard Henderson <richard.henderson@linaro.org> > --- > linux-user/main.c | 10 ++++++---- > 1 file changed, 6 insertions(+), 4 deletions(-) > > diff --git a/linux-user/main.c b/linux-user/main.c > index 0cdaf30d34..5f217cc2a8 100644 > --- a/linux-user/main.c > +++ b/linux-user/main.c [...] > @@ -806,8 +806,10 @@ int main(int argc, char **argv, char **envp) > */ > max_reserved_va = MAX_RESERVED_VA(cpu); > if (reserved_va != 0) { > - if ((reserved_va + 1) % qemu_host_page_size) { > - char *s = size_to_str(qemu_host_page_size); > + int host_page_size = qemu_real_host_page_size(); > + > + if ((reserved_va + 1) % host_page_size) { > + char *s = size_to_str(host_page_size); Does it make sense to allow values not divisible by TARGET_PAGE_SIZE here? It's probably not a big deal, since in the worst case we'll only waste a few bytes, so: Reviewed-by: Ilya Leoshkevich <iii@linux.ibm.com> [...]
diff --git a/linux-user/main.c b/linux-user/main.c index 0cdaf30d34..5f217cc2a8 100644 --- a/linux-user/main.c +++ b/linux-user/main.c @@ -783,7 +783,7 @@ int main(int argc, char **argv, char **envp) } cpu_type = parse_cpu_option(cpu_model); - /* init tcg before creating CPUs and to get qemu_host_page_size */ + /* init tcg before creating CPUs */ { AccelState *accel = current_accel(); AccelClass *ac = ACCEL_GET_CLASS(accel); @@ -806,8 +806,10 @@ int main(int argc, char **argv, char **envp) */ max_reserved_va = MAX_RESERVED_VA(cpu); if (reserved_va != 0) { - if ((reserved_va + 1) % qemu_host_page_size) { - char *s = size_to_str(qemu_host_page_size); + int host_page_size = qemu_real_host_page_size(); + + if ((reserved_va + 1) % host_page_size) { + char *s = size_to_str(host_page_size); fprintf(stderr, "Reserved virtual address not aligned mod %s\n", s); g_free(s); exit(EXIT_FAILURE); @@ -904,7 +906,7 @@ int main(int argc, char **argv, char **envp) * If we're in a chroot with no /proc, fall back to 1 page. */ if (mmap_min_addr == 0) { - mmap_min_addr = qemu_host_page_size; + mmap_min_addr = qemu_real_host_page_size(); qemu_log_mask(CPU_LOG_PAGE, "host mmap_min_addr=0x%lx (fallback)\n", mmap_min_addr);
Use qemu_real_host_page_size() instead. Signed-off-by: Richard Henderson <richard.henderson@linaro.org> --- linux-user/main.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-)