Hi,
On 12/06/2020 02:10, Stefano Stabellini wrote:
On Thu, 11 Jun 2020, Bertrand Marquis wrote:
Add support for runstate area register with the structure crossing pages
The code is storing up to 2 pages reference during the hypercall.
During a context switch, the code is computing where the
state_entry_time is and is breaking the memcpy in 2 parts when it is
required.
Signed-off-by: Bertrand Marquis <[email protected]>
Clearly a lot of efforts went into this patch, thanks you Bertrand.
The change is complex for the feature it adds. I wonder if we could use
ioremap (or maybe something similar but using a different virtual space)
to simplify it. Julien, do you have good ideas?
ioremap() is for MMIO region, so you would want to use vmap(). Note that
former is just a wrapper of the latter.
vmap() is probably a good start for now, but not ideal for long term
because the vmap() area is fairly small (768MB) and if we want to go
towards a secret-free hypervisor on Arm, we would want to restrict the
visibility of the mapping to the other CPUs.
I think it would be good to have some per-CPU/per-domain mapping to
limit the waste of the address space. But this will require to
deduplicate page-tables for arm64 (I was actually looking at it over the
past few week-ends).
For the time-being, I would suggest to use vmap(). The memory is always
direct mapped on arm64, so it should make no different for security concern.
Cheers,
--
Julien Grall