• Dmitry Korotin's avatar
    MIPS: Add missing EHB in mtc0 -> mfc0 sequence. · 4b961552
    Dmitry Korotin authored
    commit 0b24cae4 upstream.
    
    Add a missing EHB (Execution Hazard Barrier) in mtc0 -> mfc0 sequence.
    Without this execution hazard barrier it's possible for the value read
    back from the KScratch register to be the value from before the mtc0.
    
    Reproducible on P5600 & P6600.
    
    The hazard is documented in the MIPS Architecture Reference Manual Vol.
    III: MIPS32/microMIPS32 Privileged Resource Architecture (MD00088), rev
    6.03 table 8.1 which includes:
    
       Producer | Consumer | Hazard
      ----------|----------|----------------------------
       mtc0     | mfc0     | any coprocessor 0 register
    Signed-off-by: default avatarDmitry Korotin <dkorotin@wavecomp.com>
    [paul.burton@mips.com:
      - Commit message tweaks.
      - Add Fixes tags.
      - Mark for stable back to v3.15 where P5600 support was introduced.]
    Signed-off-by: default avatarPaul Burton <paul.burton@mips.com>
    Fixes: 3d8bfdd0 ("MIPS: Use C0_KScratch (if present) to hold PGD pointer.")
    Fixes: 829dcc0a ("MIPS: Add MIPS P5600 probe support")
    Cc: linux-mips@vger.kernel.org
    Cc: stable@vger.kernel.org # v3.15+
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    4b961552
tlbex.c 71 KB