1. 07 3月, 2018 3 次提交
    • I
      ARM: pxa: ulpi: fix ulpi timeout and slowpath warn · 7a5d9a91
      Igor Grinberg 提交于
      Both cm-x300 and pxa3xx-ulpi use the plain clk_{en,dis}able() API.
      With the new clocking framework this results in warnings of type:
      ------------[ cut here ]------------
      WARNING: CPU: 0 PID: 1 at drivers/clk/clk.c:714 clk_core_enable+0x90/0x9c
      Modules linked in:
      CPU: 0 PID: 1 Comm: swapper Not tainted 4.15.0-rc5-cm-x300+ #15
      Hardware name: CM-X300 module
      [<c001007c>] (unwind_backtrace) from [<c000df94>] (show_stack+0x10/0x14)
      [<c000df94>] (show_stack) from [<c00199a8>] (__warn+0xd8/0x100)
      [<c00199a8>] (__warn) from [<c0019a0c>] (warn_slowpath_null+0x3c/0x48)
      [<c0019a0c>] (warn_slowpath_null) from [<c024e8c0>] (clk_core_enable+0x90/0x9c)
      [<c024e8c0>] (clk_core_enable) from [<c024ea54>] (clk_core_enable_lock+0x18/0x2c)
      [<c024ea54>] (clk_core_enable_lock) from [<c0016994>] (cm_x300_u2d_init+0x4c/0xe8)
      [<c0016994>] (cm_x300_u2d_init) from [<c00163e0>] (pxa3xx_u2d_probe+0xe0/0x244)
      [<c00163e0>] (pxa3xx_u2d_probe) from [<c0283de0>] (platform_drv_probe+0x38/0x88)
      ...
      ------------[ cut here ]------------
      and alike...
      
      And finally, it results in:
      ------------[ cut here ]------------
      pxa310_ulpi_poll: ULPI access timed out!
      OTG transceiver init failed
      ------------[ cut here ]------------
      
      It might be that disabling the warning in kernel config would also do
      the job, but IMO a better solution would be to switch to
      clk_prepare_enable() and clk_disable_unprepare() APIs.
      Signed-off-by: NIgor Grinberg <grinberg@compulab.co.il>
      Signed-off-by: NRobert Jarzmik <robert.jarzmik@free.fr>
      7a5d9a91
    • I
      ARM: pxa: cm-x300: remove inline directive · 69a90f49
      Igor Grinberg 提交于
      cm_x300_u2d_init() function is only used through its function pointer
      that is passed through platform_data structure to the driver.
      Therefore it can never be inlined.
      Remove the inline directive.
      Signed-off-by: NIgor Grinberg <grinberg@compulab.co.il>
      Signed-off-by: NRobert Jarzmik <robert.jarzmik@free.fr>
      69a90f49
    • I
      ARM: pxa: fix static checker warning in pxa3xx-ulpi · 6d07f191
      Igor Grinberg 提交于
      Static checker reports the following warning:
      
      arch/arm/mach-pxa/pxa3xx-ulpi.c:336 pxa3xx_u2d_probe()
      warn: did you mean to pass the address of 'u2d'
      
      Fix it by passing the correct pointer.
      Reported-by: NDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: NIgor Grinberg <grinberg@compulab.co.il>
      Signed-off-by: NRobert Jarzmik <robert.jarzmik@free.fr>
      6d07f191
  2. 07 2月, 2018 5 次提交
    • C
      lib: optimize cpumask_next_and() · 0ade34c3
      Clement Courbet 提交于
      We've measured that we spend ~0.6% of sys cpu time in cpumask_next_and().
      It's essentially a joined iteration in search for a non-zero bit, which is
      currently implemented as a lookup join (find a nonzero bit on the lhs,
      lookup the rhs to see if it's set there).
      
      Implement a direct join (find a nonzero bit on the incrementally built
      join).  Also add generic bitmap benchmarks in the new `test_find_bit`
      module for new function (see `find_next_and_bit` in [2] and [3] below).
      
      For cpumask_next_and, direct benchmarking shows that it's 1.17x to 14x
      faster with a geometric mean of 2.1 on 32 CPUs [1].  No impact on memory
      usage.  Note that on Arm, the new pure-C implementation still outperforms
      the old one that uses a mix of C and asm (`find_next_bit`) [3].
      
      [1] Approximate benchmark code:
      
      ```
        unsigned long src1p[nr_cpumask_longs] = {pattern1};
        unsigned long src2p[nr_cpumask_longs] = {pattern2};
        for (/*a bunch of repetitions*/) {
          for (int n = -1; n <= nr_cpu_ids; ++n) {
            asm volatile("" : "+rm"(src1p)); // prevent any optimization
            asm volatile("" : "+rm"(src2p));
            unsigned long result = cpumask_next_and(n, src1p, src2p);
            asm volatile("" : "+rm"(result));
          }
        }
      ```
      
      Results:
      pattern1    pattern2     time_before/time_after
      0x0000ffff  0x0000ffff   1.65
      0x0000ffff  0x00005555   2.24
      0x0000ffff  0x00001111   2.94
      0x0000ffff  0x00000000   14.0
      0x00005555  0x0000ffff   1.67
      0x00005555  0x00005555   1.71
      0x00005555  0x00001111   1.90
      0x00005555  0x00000000   6.58
      0x00001111  0x0000ffff   1.46
      0x00001111  0x00005555   1.49
      0x00001111  0x00001111   1.45
      0x00001111  0x00000000   3.10
      0x00000000  0x0000ffff   1.18
      0x00000000  0x00005555   1.18
      0x00000000  0x00001111   1.17
      0x00000000  0x00000000   1.25
      -----------------------------
                     geo.mean  2.06
      
      [2] test_find_next_bit, X86 (skylake)
      
       [ 3913.477422] Start testing find_bit() with random-filled bitmap
       [ 3913.477847] find_next_bit: 160868 cycles, 16484 iterations
       [ 3913.477933] find_next_zero_bit: 169542 cycles, 16285 iterations
       [ 3913.478036] find_last_bit: 201638 cycles, 16483 iterations
       [ 3913.480214] find_first_bit: 4353244 cycles, 16484 iterations
       [ 3913.480216] Start testing find_next_and_bit() with random-filled
       bitmap
       [ 3913.481074] find_next_and_bit: 89604 cycles, 8216 iterations
       [ 3913.481075] Start testing find_bit() with sparse bitmap
       [ 3913.481078] find_next_bit: 2536 cycles, 66 iterations
       [ 3913.481252] find_next_zero_bit: 344404 cycles, 32703 iterations
       [ 3913.481255] find_last_bit: 2006 cycles, 66 iterations
       [ 3913.481265] find_first_bit: 17488 cycles, 66 iterations
       [ 3913.481266] Start testing find_next_and_bit() with sparse bitmap
       [ 3913.481272] find_next_and_bit: 764 cycles, 1 iterations
      
      [3] test_find_next_bit, arm (v7 odroid XU3).
      
      [  267.206928] Start testing find_bit() with random-filled bitmap
      [  267.214752] find_next_bit: 4474 cycles, 16419 iterations
      [  267.221850] find_next_zero_bit: 5976 cycles, 16350 iterations
      [  267.229294] find_last_bit: 4209 cycles, 16419 iterations
      [  267.279131] find_first_bit: 1032991 cycles, 16420 iterations
      [  267.286265] Start testing find_next_and_bit() with random-filled
      bitmap
      [  267.302386] find_next_and_bit: 2290 cycles, 8140 iterations
      [  267.309422] Start testing find_bit() with sparse bitmap
      [  267.316054] find_next_bit: 191 cycles, 66 iterations
      [  267.322726] find_next_zero_bit: 8758 cycles, 32703 iterations
      [  267.329803] find_last_bit: 84 cycles, 66 iterations
      [  267.336169] find_first_bit: 4118 cycles, 66 iterations
      [  267.342627] Start testing find_next_and_bit() with sparse bitmap
      [  267.356919] find_next_and_bit: 91 cycles, 1 iterations
      
      [courbet@google.com: v6]
        Link: http://lkml.kernel.org/r/20171129095715.23430-1-courbet@google.com
      [geert@linux-m68k.org: m68k/bitops: always include <asm-generic/bitops/find.h>]
        Link: http://lkml.kernel.org/r/1512556816-28627-1-git-send-email-geert@linux-m68k.org
      Link: http://lkml.kernel.org/r/20171128131334.23491-1-courbet@google.comSigned-off-by: NClement Courbet <courbet@google.com>
      Signed-off-by: NGeert Uytterhoeven <geert@linux-m68k.org>
      Cc: Yury Norov <ynorov@caviumnetworks.com>
      Cc: Geert Uytterhoeven <geert@linux-m68k.org>
      Cc: Alexey Dobriyan <adobriyan@gmail.com>
      Cc: Rasmus Villemoes <linux@rasmusvillemoes.dk>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      0ade34c3
    • M
      arm64: KVM: Report SMCCC_ARCH_WORKAROUND_1 BP hardening support · 6167ec5c
      Marc Zyngier 提交于
      A new feature of SMCCC 1.1 is that it offers firmware-based CPU
      workarounds. In particular, SMCCC_ARCH_WORKAROUND_1 provides
      BP hardening for CVE-2017-5715.
      
      If the host has some mitigation for this issue, report that
      we deal with it using SMCCC_ARCH_WORKAROUND_1, as we apply the
      host workaround on every guest exit.
      Tested-by: NArd Biesheuvel <ard.biesheuvel@linaro.org>
      Reviewed-by: NChristoffer Dall <christoffer.dall@linaro.org>
      Signed-off-by: NMarc Zyngier <marc.zyngier@arm.com>
      Signed-off-by: NCatalin Marinas <catalin.marinas@arm.com>
      6167ec5c
    • M
      arm/arm64: KVM: Advertise SMCCC v1.1 · 09e6be12
      Marc Zyngier 提交于
      The new SMC Calling Convention (v1.1) allows for a reduced overhead
      when calling into the firmware, and provides a new feature discovery
      mechanism.
      
      Make it visible to KVM guests.
      Tested-by: NArd Biesheuvel <ard.biesheuvel@linaro.org>
      Reviewed-by: NChristoffer Dall <christoffer.dall@linaro.org>
      Signed-off-by: NMarc Zyngier <marc.zyngier@arm.com>
      Signed-off-by: NCatalin Marinas <catalin.marinas@arm.com>
      09e6be12
    • M
      arm/arm64: KVM: Consolidate the PSCI include files · 1a2fb94e
      Marc Zyngier 提交于
      As we're about to update the PSCI support, and because I'm lazy,
      let's move the PSCI include file to include/kvm so that both
      ARM architectures can find it.
      Acked-by: NChristoffer Dall <christoffer.dall@linaro.org>
      Tested-by: NArd Biesheuvel <ard.biesheuvel@linaro.org>
      Signed-off-by: NMarc Zyngier <marc.zyngier@arm.com>
      Signed-off-by: NCatalin Marinas <catalin.marinas@arm.com>
      1a2fb94e
    • M
      arm: KVM: Fix SMCCC handling of unimplemented SMC/HVC calls · 20e8175d
      Marc Zyngier 提交于
      KVM doesn't follow the SMCCC when it comes to unimplemented calls,
      and inject an UNDEF instead of returning an error. Since firmware
      calls are now used for security mitigation, they are becoming more
      common, and the undef is counter productive.
      
      Instead, let's follow the SMCCC which states that -1 must be returned
      to the caller when getting an unknown function number.
      
      Cc: <stable@vger.kernel.org>
      Tested-by: NArd Biesheuvel <ard.biesheuvel@linaro.org>
      Signed-off-by: NMarc Zyngier <marc.zyngier@arm.com>
      Signed-off-by: NCatalin Marinas <catalin.marinas@arm.com>
      20e8175d
  3. 02 2月, 2018 1 次提交
  4. 01 2月, 2018 1 次提交
  5. 27 1月, 2018 1 次提交
  6. 25 1月, 2018 1 次提交
  7. 24 1月, 2018 5 次提交
  8. 23 1月, 2018 4 次提交
  9. 22 1月, 2018 2 次提交
  10. 21 1月, 2018 11 次提交
  11. 20 1月, 2018 1 次提交
  12. 19 1月, 2018 3 次提交
  13. 18 1月, 2018 2 次提交