1. 12 3月, 2018 1 次提交
  2. 03 12月, 2017 1 次提交
  3. 14 11月, 2017 1 次提交
  4. 02 11月, 2017 1 次提交
  5. 01 11月, 2017 2 次提交
  6. 27 10月, 2017 2 次提交
  7. 24 10月, 2017 1 次提交
  8. 14 10月, 2017 1 次提交
    • A
      liquidio: fix timespec64_to_ns typo · e7ad9793
      Arnd Bergmann 提交于
      While experimenting with changes to the timekeeping code, I
      ran into a build error in the liquidio driver:
      
      drivers/net/ethernet/cavium/liquidio/lio_main.c: In function 'liquidio_ptp_settime':
      drivers/net/ethernet/cavium/liquidio/lio_main.c:1850:22: error: passing argument 1 of 'timespec_to_ns' from incompatible pointer type [-Werror=incompatible-pointer-types]
      
      The driver had a type mismatch since it was first merged, but
      this never caused problems because it is only built on 64-bit
      architectures that define timespec and timespec64 to the same
      type.
      
      If we ever want to compile-test the driver on 32-bit or change
      the way that 64-bit timespec64 is defined, we need to fix it,
      so let's just do it now.
      
      Fixes: f21fb3ed ("Add support of Cavium Liquidio ethernet adapters")
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Acked-by: NFelix Manlunas <felix.manlunas@cavium.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      e7ad9793
  9. 26 9月, 2017 3 次提交
  10. 29 8月, 2017 1 次提交
    • Y
      smp: Avoid using two cache lines for struct call_single_data · 966a9671
      Ying Huang 提交于
      struct call_single_data is used in IPIs to transfer information between
      CPUs.  Its size is bigger than sizeof(unsigned long) and less than
      cache line size.  Currently it is not allocated with any explicit alignment
      requirements.  This makes it possible for allocated call_single_data to
      cross two cache lines, which results in double the number of the cache lines
      that need to be transferred among CPUs.
      
      This can be fixed by requiring call_single_data to be aligned with the
      size of call_single_data. Currently the size of call_single_data is the
      power of 2.  If we add new fields to call_single_data, we may need to
      add padding to make sure the size of new definition is the power of 2
      as well.
      
      Fortunately, this is enforced by GCC, which will report bad sizes.
      
      To set alignment requirements of call_single_data to the size of
      call_single_data, a struct definition and a typedef is used.
      
      To test the effect of the patch, I used the vm-scalability multiple
      thread swap test case (swap-w-seq-mt).  The test will create multiple
      threads and each thread will eat memory until all RAM and part of swap
      is used, so that huge number of IPIs are triggered when unmapping
      memory.  In the test, the throughput of memory writing improves ~5%
      compared with misaligned call_single_data, because of faster IPIs.
      Suggested-by: NPeter Zijlstra <peterz@infradead.org>
      Signed-off-by: NHuang, Ying <ying.huang@intel.com>
      [ Add call_single_data_t and align with size of call_single_data. ]
      Signed-off-by: NPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Aaron Lu <aaron.lu@intel.com>
      Cc: Borislav Petkov <bp@suse.de>
      Cc: Eric Dumazet <eric.dumazet@gmail.com>
      Cc: Juergen Gross <jgross@suse.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Michael Ellerman <mpe@ellerman.id.au>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Link: http://lkml.kernel.org/r/87bmnqd6lz.fsf@yhuang-mobile.sh.intel.comSigned-off-by: NIngo Molnar <mingo@kernel.org>
      966a9671
  11. 24 8月, 2017 1 次提交
  12. 21 8月, 2017 1 次提交
  13. 19 8月, 2017 3 次提交
  14. 16 8月, 2017 4 次提交
  15. 15 8月, 2017 10 次提交
  16. 12 8月, 2017 1 次提交
  17. 10 8月, 2017 1 次提交
  18. 09 8月, 2017 1 次提交
  19. 07 8月, 2017 1 次提交
  20. 03 8月, 2017 1 次提交
  21. 20 7月, 2017 1 次提交
    • G
      liquidio: lio_main: remove unnecessary static in setup_io_queues() · eb2b9874
      Gustavo A. R. Silva 提交于
      Remove unnecessary static on local variables cpu_id_modulus and cpu_id.
      Such variables are initialized before being used, on every execution
      path throughout the function. The static has no benefit and, removing
      it reduces the object file size.
      
      This issue was detected using Coccinelle and the following semantic patch:
      
      @bad exists@
      position p;
      identifier x;
      type T;
      @@
      
      static T x@p;
      ...
      x = <+...x...+>
      
      @@
      identifier x;
      expression e;
      type T;
      position p != bad.p;
      @@
      
      -static
       T x@p;
       ... when != x
           when strict
      ?x = e;
      
      In the following log you can see a significant difference in the object
      file size. Also, there is a significant difference in the bss segment.
      This log is the output of the size command, before and after the code
      change:
      
      before:
         text    data     bss     dec     hex filename
        78689   15272   27808  121769   1dba9 drivers/net/ethernet/cavium/liquidio/lio_main.o
      
      after:
         text    data     bss     dec     hex filename
        78667   15128   27680  121475   1da83 drivers/net/ethernet/cavium/liquidio/lio_main.o
      Signed-off-by: NGustavo A. R. Silva <gustavo@embeddedor.com>
      Acked-by: NFelix Manlunas <felix.manlunas@cavium.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      eb2b9874
  22. 19 6月, 2017 1 次提交