Re: [PATCH v5 00/12] KVM: introduce readonly memslot

From: Marcelo Tosatti
Date: Wed Aug 15 2012 - 14:00:28 EST


On Wed, Aug 15, 2012 at 01:44:14PM +0300, Avi Kivity wrote:
> On 08/14/2012 06:51 PM, Marcelo Tosatti wrote:
> >>
> >> Userspace may want to modify the ROM (for example, when programming a
> >> flash device). It is also possible to map an hva range rw through one
> >> slot and ro through another.
> >
> > Right, can do that with multiple userspace maps to the same anonymous
> > memory region (see other email).
>
> Yes it's possible. It requires that we move all memory allocation to be
> fd based, since userspace can't predict what memory will be dual-mapped
> (at least if emulated hardware allows this).

It can:
- Create named memory object, with associated fd.
- Copy data from large anonymous memory region to named memory.
- Unmap region that must be dual-mapped from large anonymous memory chunk.
- Map named memory object at address.

The last step can be replaced by adjusting KVM memory slots.

The disadvantage of protection information in memory slots
is that it duplicates functionality that is handled by
userspace mappings.

Moreover, multiple memory maps are necessary for any
split-qemu-into-smaller-pieces solutions.

> Is this a reasonable
> requirement? Do ksm/thp/autonuma work with this?

As mentioned, only memory used for ROM purposes must be dual mapped.

I don't think there is any way to create multiple mappings
to one anonymous memory object ATM, but POSIX defines it
(posix_typed_mem_open).

The limitation of thp/ksm on shared memory also affects any other user
of shared memory, so it should be fixed there.

Also, QEMU ROM is allocated separately from RAM, correct?

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/