On 27.02.19 17:02, Richard Henderson wrote: > On 2/26/19 3:38 AM, David Hildenbrand wrote: >> Also fairly easy to implement. One issue we have is that exceptions will >> result in some vectors already being modified. At least handle it >> consistently per vector by using a temporary vector. Good enough for >> now, add a FIXME. >> >> Signed-off-by: David Hildenbrand <da...@redhat.com> >> --- >> target/s390x/insn-data.def | 2 ++ >> target/s390x/translate_vx.inc.c | 26 ++++++++++++++++++++++++++ >> 2 files changed, 28 insertions(+) > > I suppose the fixme is good enough. For the record, I think you could do the > check with just two loads -- the first and last quadword. After that, none of > the other loads can fault, and you can store everything else into the > destination vectors as you read them.
Aren't such approaches prone to races if other VCPUs invalidate page tables/TLB entries? (or am I messing up things and the MMU of this VCPU won't be touched while in this block and once we touched all applicable pages, it cannot fail anymore?) > > Also missing for the fixme: MO_ALIGN{,_16}. Just like the other occurrence, I think MO_ALIGN would be wrong. "Setting the alignment hint to a non-zero value that doesn’t correspond to the alignment of the second operand may reduce performance on some models." > > Reviewed-by: Richard Henderson <richard.hender...@linaro.org> > Thanks! > > r~ > -- Thanks, David / dhildenb