mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-18 22:14:16 +00:00
KVM: arm64: Document the behaviour of S1PTW faults on RO memslots
Although the KVM API says that a write to a RO memslot must result in a KVM_EXIT_MMIO describing the write, the arm64 architecture doesn't provide the *data* written by a Stage-1 page table walk (we only get the address). Since there isn't much userspace can do with so little information anyway, document the fact that such an access results in a guest exception, not an exit. This is consistent with the guest being terminally broken anyway. Reviewed-by: Oliver Upton <oliver.upton@linux.dev> Signed-off-by: Marc Zyngier <maz@kernel.org>
This commit is contained in:
parent
406504c7b0
commit
b8f8d190fa
1 changed files with 8 additions and 0 deletions
|
@ -1354,6 +1354,14 @@ the memory region are automatically reflected into the guest. For example, an
|
||||||
mmap() that affects the region will be made visible immediately. Another
|
mmap() that affects the region will be made visible immediately. Another
|
||||||
example is madvise(MADV_DROP).
|
example is madvise(MADV_DROP).
|
||||||
|
|
||||||
|
Note: On arm64, a write generated by the page-table walker (to update
|
||||||
|
the Access and Dirty flags, for example) never results in a
|
||||||
|
KVM_EXIT_MMIO exit when the slot has the KVM_MEM_READONLY flag. This
|
||||||
|
is because KVM cannot provide the data that would be written by the
|
||||||
|
page-table walker, making it impossible to emulate the access.
|
||||||
|
Instead, an abort (data abort if the cause of the page-table update
|
||||||
|
was a load or a store, instruction abort if it was an instruction
|
||||||
|
fetch) is injected in the guest.
|
||||||
|
|
||||||
4.36 KVM_SET_TSS_ADDR
|
4.36 KVM_SET_TSS_ADDR
|
||||||
---------------------
|
---------------------
|
||||||
|
|
Loading…
Add table
Reference in a new issue