mirror of
https://github.com/opnsense/src.git
synced 2026-06-09 08:43:19 -04:00
riscv vmm: fix remote fence.
From the spec: The remote fence function acts as a full TLB flush if • start_addr and size are both 0 • size is equal to 2^XLEN-1 Differential Revision: https://reviews.freebsd.org/D48716
This commit is contained in:
parent
7ac65902d8
commit
1fdb01ec5f
1 changed files with 4 additions and 2 deletions
|
|
@ -103,7 +103,8 @@ vmm_fence_process_one(struct vmm_fence *fence)
|
|||
sfence_vma_page(va);
|
||||
break;
|
||||
case VMM_RISCV_FENCE_VMA_ASID:
|
||||
if (fence->start == 0 && fence->size == 0)
|
||||
if ((fence->start == 0 && fence->size == 0) ||
|
||||
fence->size == -1)
|
||||
sfence_vma_asid(fence->asid);
|
||||
else
|
||||
for (va = fence->start; va < fence->start + fence->size;
|
||||
|
|
@ -165,7 +166,8 @@ vmm_fence_add(struct vm *vm, cpuset_t *cpus, struct vmm_fence *fence)
|
|||
atomic_set_32(&hypctx->fence_req, FENCE_REQ_I);
|
||||
break;
|
||||
case VMM_RISCV_FENCE_VMA:
|
||||
if (fence->start == 0 && fence->size == 0)
|
||||
if ((fence->start == 0 && fence->size == 0) ||
|
||||
fence->size == -1)
|
||||
atomic_set_32(&hypctx->fence_req,
|
||||
FENCE_REQ_VMA);
|
||||
else
|
||||
|
|
|
|||
Loading…
Reference in a new issue