1. 11 May, 2018 3 commits
    • Michael Ellerman's avatar
      powerpc/lib: Rename ftr_fixup_test7 to ftr_fixup_test_too_big · b58e7987
      Michael Ellerman authored
      We want this to remain the last test (because it's disabled by
      default), so give it a non-numbered name so we don't have to renumber
      it when adding new tests before it.
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      b58e7987
    • Michael Ellerman's avatar
      powerpc/lib: Fix the feature fixup tests to actually work · cad0e390
      Michael Ellerman authored
      The code patching code has always been a bit confused about whether
      it's best to use void *, unsigned int *, char *, etc. to point to
      instructions. In fact in the feature fixups tests we use both unsigned
      int[] and u8[] in different places.
      
      Unfortunately the tests that use unsigned int[] calculate the size of
      the code blocks using subtraction of those unsigned int pointers, and
      then pass the result to memcmp(). This means we're only comparing 1/4
      of the bytes we need to, because we need to multiply by
      sizeof(unsigned int) to get the number of *bytes*.
      
      The result is that the tests do all the patching and then only compare
      some of the resulting code, so patching bugs that only effect that
      last 3/4 of the code could slip through undetected. It turns out that
      hasn't been happening, although one test had a bad expected case (see
      previous commit).
      
      Fix it for now by multiplying the size by 4 in the affected functions.
      
      Fixes: 362e7701 ("powerpc: Add self-tests of the feature fixup code")
      Epic-brown-paper-bag-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      cad0e390
    • Michael Ellerman's avatar
      powerpc/lib: Fix feature fixup test of external branch · 32810d91
      Michael Ellerman authored
      The expected case for this test was wrong, the source of the alternate
      code sequence is:
      
        FTR_SECTION_ELSE
        2:	or	2,2,2
        	PPC_LCMPI	r3,1
        	beq	3f
        	blt	2b
        	b	3f
        	b	1b
        ALT_FTR_SECTION_END(0, 1)
        3:	or	1,1,1
        	or	2,2,2
        4:	or	3,3,3
      
      So when it's patched the '3' label should still be on the 'or 1,1,1',
      and the 4 label is irrelevant and can be removed.
      
      Fixes: 362e7701 ("powerpc: Add self-tests of the feature fixup code")
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      32810d91
  2. 10 May, 2018 21 commits
  3. 07 May, 2018 4 commits
  4. 03 May, 2018 12 commits