On Tue, Aug 10, 2021 at 10:27 AM Richard Henderson < richard.hender...@linaro.org> wrote:
> On 8/7/21 11:42 AM, Warner Losh wrote: > > From: Warner Losh <i...@freebsd.org> > > > > Update the reserved base based on what platform we're on, as well as the > > start of the mmap range. Update routines that find va ranges to interact > > with the reserved ranges as well as properly align the mapping (this is > > especially important for targets whose page size does not match the > > host's). Loop where appropriate when the initial address space offered > > by mmap does not meet the contraints. > > > > Signed-off-by: Mikaƫl Urankar <mikael.uran...@gmail.com> > > Signed-off-by: Stacey Son <s...@freebsd.org> > > Signed-off-by: Warner Losh <i...@bsdimp.com> > > --- > > bsd-user/main.c | 23 ++- > > bsd-user/mmap.c | 372 ++++++++++++++++++++++++++++++++++++++++-------- > > bsd-user/qemu.h | 5 +- > > 3 files changed, 335 insertions(+), 65 deletions(-) > > > > diff --git a/bsd-user/main.c b/bsd-user/main.c > > index 93ef9298b8..36852604f8 100644 > > --- a/bsd-user/main.c > > +++ b/bsd-user/main.c > > @@ -49,12 +49,29 @@ > > #include "target_arch_cpu.h" > > > > int singlestep; > > -unsigned long mmap_min_addr; > > uintptr_t guest_base; > > static const char *cpu_model; > > static const char *cpu_type; > > bool have_guest_base; > > +#if (TARGET_LONG_BITS == 32) && (HOST_LONG_BITS == 64) > > +/* > > + * When running 32-on-64 we should make sure we can fit all of the > possible > > + * guest address space into a contiguous chunk of virtual host memory. > > + * > > + * This way we will never overlap with our own libraries or binaries or > stack > > + * or anything else that QEMU maps. > > + */ > > +# ifdef TARGET_MIPS > > +/* MIPS only supports 31 bits of virtual address space for user space */ > > +unsigned long reserved_va = 0x77000000; > > +# elif defined(TARGET_PPC64) > > +unsigned long reserved_va = 0xfffff000; > > +# else > > +unsigned long reserved_va = 0xf7000000; > > +# endif > > +#else > > unsigned long reserved_va; > > +#endif > > All of these 7's look to be copying an old linux-user bug. > I cleaned this up in 18e80c55bb6. > Oh nice. I'd missed that one... a bit before I started hacking on bsd-user, but quite nice indeed. > Otherwise, > Acked-by: Richard Henderson <richard.hender...@linaro.org> > > I would hope one day this memory management could be shared between the > user-only > implementations. It's complicated enough... > Honestly, one reason I want to get "caught up" with upstream is for such a refactor. There's so much duplication that it's hard to keep up. Warner