• Kevin Hao's avatar
    powerpc/e6500: hw tablewalk: make sure we invalidate and write to the same tlb entry · e1f580e8
    Kevin Hao authored
    In order to workaround Erratum A-008139, we have to invalidate the
    tlb entry with tlbilx before overwriting. Due to the performance
    consideration, we don't add any memory barrier when acquire/release
    the tcd lock. This means the two load instructions for esel_next do
    have the possibility to return different value. This is definitely
    not acceptable due to the Erratum A-008139. We have two options to
    fix this issue:
      a) Add memory barrier when acquire/release tcd lock to order the
         load/store to esel_next.
      b) Just make sure to invalidate and write to the same tlb entry and
         tolerate the race that we may get the wrong value and overwrite
         the tlb entry just updated by the other thread.
    
    We observe better performance using option b. So reserve an additional
    register to save the value of the esel_next.
    Signed-off-by: default avatarKevin Hao <haokexin@gmail.com>
    Signed-off-by: default avatarScott Wood <scottwood@freescale.com>
    e1f580e8
tlb_low_64e.S 36.8 KB