+Igor On Thu, Nov 28, 2019 at 06:15:18PM +0400, Marc-André Lureau wrote: > Add an option to simplify shared memory / vhost-user setup. > > Currently, using vhost-user requires NUMA setup such as: > -m 4G -object memory-backend-file,id=mem,size=4G,mem-path=/dev/shm,share=on > -numa node,memdev=mem > > As there is no other way to allocate shareable RAM, afaik. > > -mem-shared aims to have a simple way instead: -m 4G -mem-shared > > Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> > --- [...] > diff --git a/hw/core/numa.c b/hw/core/numa.c > index e3332a984f..6f72cddb1c 100644 > --- a/hw/core/numa.c > +++ b/hw/core/numa.c > @@ -493,7 +493,8 @@ static void allocate_system_memory_nonnuma(MemoryRegion > *mr, Object *owner, > if (mem_path) { > #ifdef __linux__ > Error *err = NULL; > - memory_region_init_ram_from_file(mr, owner, name, ram_size, 0, 0, > + memory_region_init_ram_from_file(mr, owner, name, ram_size, 0, > + mem_shared ? RAM_SHARED : 0, > mem_path, &err); > if (err) { > error_report_err(err); > @@ -513,6 +514,19 @@ static void allocate_system_memory_nonnuma(MemoryRegion > *mr, Object *owner, > #else > fprintf(stderr, "-mem-path not supported on this host\n"); > exit(1); > +#endif > + } else if (mem_shared) { > +#ifdef CONFIG_POSIX > + Error *err = NULL; > + memory_region_init_ram_from_file(mr, owner, NULL, ram_size, 0, > + RAM_SHARED, NULL, &err); > + if (err) { > + error_report_err(err); > + exit(1); > + } > +#else > + fprintf(stderr, "-mem-shared not supported on this host\n"); > + exit(1); > #endif > } else { > memory_region_init_ram_nomigrate(mr, owner, name, ram_size, > &error_fatal);
I'd really like make allocate_system_memory_nonnuma() just create a memory backend object. This way non-NUMA and NUMA configuration would be able to use exactly the same set of options. I have the impression we tried to do this in the past. Igor, do you remember if we did? -- Eduardo