On 1 September 2012 10:11, Avi Kivity <a...@redhat.com> wrote:
> Other x86 state:
>   Control registers: ok.  Should userspace be careful to set registers
> in legal ways only? i.e. cannot set cr3[0:11] if cr4.pae=0, or vice
> versa, so need three writes?

The principle I'm hoping we can hold to for ARM is that the
kernel only exposes state in such a way that it's always
possible for userspace to migrate it with a simple "read
everything, send to destination, write everything", ie
without needing to know anything of the semantics of any
of these registers.

This means that registers which have access controls (eg
"can't write this unless you wrote to that other one first")
should not enforce those checks for userspace get/set.
More significantly, it means that registers with odd
behaviour, like "write 1 to clear" or "register A selects
which of an array of underlying registers is exposed
in register B" are not directly exposed at all. Instead
the kernel provides some other (ersatz) register indexes
which let userspace do plain get/set on the underlying
state.

The idea is that then migration depends only on whether
the destination kernel supports all the registers the
source kernel does, and we avoid extra dependencies
on the source and destination qemu. (Most of the state
being transferred is of no interest to userspace at all.)
[It also makes write-multiple easier to use.]

-- PMM
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to