On 18/03/15 23:25, Leonid Yegoshin wrote:
On 03/18/2015 03:12 PM, James Hogan wrote:Yes, exactly.
Hi Leonid,No, lose_fpu disables MSA now, saves MSA context and switches off
On Wed, Mar 18, 2015 at 12:46:51PM -0700, Leonid Yegoshin wrote:
thread_msa_context_live() == check of TIF_MSA_CTX_LIVE == existence ofRight (I mis-read when its cleared when i grepped). Still, that would
MSA context for thread.
It differs from MSA is owned by thread, it just says that thread has
already initialized MSA.
Unfortunate choice of function name, I believe.
make it even harder to hit since lose_fpu wouldn't clear it, and you
already would've taken an MSA disabled exception first.
TIF_USEDMSA. See 33c771ba5c5d067f85a5a6c4b11047219b5b8f4e, "MIPS:
save/disable MSA in lose_fpu".
However, a process still has MSA context initialized and it is indicated
by TIF_MSA_CTX_LIVE.
It should have it before it can get any AdE exception on MSA instruction.
It's valid for the user to start their program with a ld.b.Anyway, my point was that there's nothing invalid about an unalignedNo, it is invalid. If MSA is disabled it should trigger "MSA Disabled"
load being the first MSA instruction. You might use it to load the
initial vector state.
exception.
As you say, it'll raise an MSA disabled exception first though. The
handler will own MSA, and set TIF_MSA_CTX_LIVE, which makes the check
pointless?
I suppose an AdE from a normal unaligned load could still race with
another thread modifying the instruction to an MSA ld.b, but even if it
did, I don't think it would do any harm?
Unfortunately, some HW versions had AdE first and it may be logical fromYes, MSA Disabled would clearly come under "Instruction Validity
some HW point (if access is done before instruction is completely
decoded). But that is wrong.
Exceptions", which is very sensibly higher priority than "Address error
- Data access".
Anyway, at the very least it needs a comment to justify what it is
trying to catch and what harm it is trying to avoid, since it isn't
obvious, and tbh seems pointless.
Cheers
James