This patchset fixes following issues in the RISC-V vector
fault-only-first load implementation and the probe_pages helper
function.
1. probe_pages flag handling:
When probing memory spanning two pages, probe_pages calls
probe_access_flags twice. The flags from the second page were
overwriting the first page's flags instead of being merged, causing
watchpoint and other TLB attributes to be lost.
2. vext_ldff cross-page logic:
The manual two-phase probing in vext_ldff had three issues:
a) Wrong condition: checked "env->vl > elems" instead of
"env->vl > elems + env->vstart", missing the vstart offset
b) Wrong address: used "addr + (elems << log2_esz)" instead of
"addr + page_split", probing incorrect addresses for segment
loads (nf > 1)
c) Wrong size: used "elems * msize" (first page size) instead of
calculating remaining size, potentially missing faults
Patch 1 fixes the probe_pages helper to properly merge flags from both
pages.
Patch 2 fixes vext_ldff by replacing the buggy manual cross-page logic
by a single probe_pages call with the correct total size. This
leverages the infrastructure that probe_pages already provides for
handling cross-page accesses automatically.
rnax
Max Chou (2):
target/riscv: rvv: Fix missing flags merge in probe_pages for
cross-page accesses
target/riscv: rvv: Fix page probe issues in vext_ldff
target/riscv/vector_helper.c | 23 +++++++----------------
1 file changed, 7 insertions(+), 16 deletions(-)
--
2.43.7