|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v2 23/39] xen/riscv: look up the exception table for any trap taken in Xen context
On 9/18/26 10:44 AM, Baptiste Le Duc wrote: do_trap() consulted the exception table only for CAUSE_ILLEGAL_INSTRUCTION, which covers csr_read_safe() but not the hlv/hlvx sequences reading guest memory: those fault with load/store (guest) page fault causes and would reach do_unexpected_trap() instead of their fixup. Move the lookup ahead of the cause switch, and gate it on the trap having been taken in Xen context and not being an interrupt: - sepc of a trap taken from the guest is a guest VA/PA, which the guest can point at an address listed in the exception table; Xen would then act on that entry and, for EX_TYPE_TRAP_INFO, write through a pointer fully under guest control. Entries are matched by exact address, so this needs no more than a numerical collision. - an interrupt taken at an address listed in the table would otherwise be "fixed up" as if the access itself had faulted, silently skipping it and handing the caller the interrupt's scause as a fault cause. Returning early skips check_for_pcpu_work(), which is correct: that only runs for traps taken from the guest. With that in place a G-stage fault reaching the switch can no longer have been caused by an hlv/hlvx covered by an entry, so anything left must have come from the guest; assert as much.What means `assert as much` here? As you referencing any assert in the code, because in this patch, I couldn't find any. It refers to the BUG_ON(!from_guest) in the guest page fault case of do_trap(). That BUG_ON() (and the comment above it) ended up in "xen/riscv: add guest page fault handling stub" when the series was reordered, so this sentence is stale. I will drop 'assert as much' from commit message. Cache the "trap came from the guest" test in a local, it is now used four times.Nit: By reading this sentence, I would expect to have the introduction of `from_guest` local here instead of in patch cc2d3b97e8 xen/riscv: add guest page fault handling stub `from_guest` is introduced in "xen/riscv: add guest page fault handling stub" so it is a stale part of the commit message. Thanks! ~ Oleksii
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |