|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v2 2/2] xen/riscv: add p2m context switch handling for VSATP and HGATP
On 2/12/26 4:42 PM, Jan Beulich wrote: On 12.02.2026 15:47, Oleksii Kurochko wrote:On 2/12/26 1:56 PM, Jan Beulich wrote:On 12.02.2026 12:57, Oleksii Kurochko wrote:On 2/12/26 11:16 AM, Jan Beulich wrote:On 10.02.2026 17:36, Oleksii Kurochko wrote:--- a/xen/arch/riscv/p2m.c +++ b/xen/arch/riscv/p2m.c @@ -1434,3 +1434,126 @@ struct page_info *p2m_get_page_from_gfn(struct p2m_domain *p2m, gfn_t gfn,return get_page(page, p2m->domain) ? page : NULL; To guarantee that a guest sees a clean switch with no possibilities of using a stale entry. For example, if VMID changed between context switch and VM entry we want to have flush, but considering your reply here ... Otherwise, considering that speculation could happen between context switch and VM entry what could lead to that some entries were added to VS TLB flush with old VMID in the case if then in VM entry vCPU might receive new VMID.I don't understand: Context switch leaves vsatp.MODE at zero. Nothing can end up in the VS TLB in that case, aiui
... we just have different implementation in mind for p2m_ctxt_switch_to().
I thought that your suggestion is to set both HGATP and VSATP in
p2m_ctx_switch_to()
while calculate VMID in p2m_handle_vmenter() (with potential update of HGATP
and VSATP
if needed) and with such approach VSATP won't be zero after p2m_ctx_switch_to()
and
speculation could happen between context switch and VM entry.
So just to clarify your expectations are:
1. p2m_ctxt_switch_from(p):
p.vsatp = VSATP
VSATP = 0
2. p2m_ctxt_swith_to(n):
HGATP = construct_hgatp(...)
3. p2m_handle_vmenter(n):
update VMID if necessary
recalculate HGATP if necessary
(c) update VSATP with n.VSATP if we here from context switch
or with hardware VSATP if it wasn't context switch.
do necessary flushes
And at step (c) we can't base on that if VSATP is zero or not to understand that it is from context switch as it could that guest at the moment of trap (lets say some SBI call was requested by guest and Xen just handles it and return back to guest) also had VSTAP = 0. So it is needed to distinguish if context switch happened or not to properly deal with VSATP (and it was one of the reson to have introduced in this patch is_ctxt_switch_finished). ~ Oleksii
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |