1. 30 5月, 2016 1 次提交
  2. 05 4月, 2016 1 次提交
    • K
      mm, fs: get rid of PAGE_CACHE_* and page_cache_{get,release} macros · 09cbfeaf
      Kirill A. Shutemov 提交于
      PAGE_CACHE_{SIZE,SHIFT,MASK,ALIGN} macros were introduced *long* time
      ago with promise that one day it will be possible to implement page
      cache with bigger chunks than PAGE_SIZE.
      
      This promise never materialized.  And unlikely will.
      
      We have many places where PAGE_CACHE_SIZE assumed to be equal to
      PAGE_SIZE.  And it's constant source of confusion on whether
      PAGE_CACHE_* or PAGE_* constant should be used in a particular case,
      especially on the border between fs and mm.
      
      Global switching to PAGE_CACHE_SIZE != PAGE_SIZE would cause to much
      breakage to be doable.
      
      Let's stop pretending that pages in page cache are special.  They are
      not.
      
      The changes are pretty straight-forward:
      
       - <foo> << (PAGE_CACHE_SHIFT - PAGE_SHIFT) -> <foo>;
      
       - <foo> >> (PAGE_CACHE_SHIFT - PAGE_SHIFT) -> <foo>;
      
       - PAGE_CACHE_{SIZE,SHIFT,MASK,ALIGN} -> PAGE_{SIZE,SHIFT,MASK,ALIGN};
      
       - page_cache_get() -> get_page();
      
       - page_cache_release() -> put_page();
      
      This patch contains automated changes generated with coccinelle using
      script below.  For some reason, coccinelle doesn't patch header files.
      I've called spatch for them manually.
      
      The only adjustment after coccinelle is revert of changes to
      PAGE_CAHCE_ALIGN definition: we are going to drop it later.
      
      There are few places in the code where coccinelle didn't reach.  I'll
      fix them manually in a separate patch.  Comments and documentation also
      will be addressed with the separate patch.
      
      virtual patch
      
      @@
      expression E;
      @@
      - E << (PAGE_CACHE_SHIFT - PAGE_SHIFT)
      + E
      
      @@
      expression E;
      @@
      - E >> (PAGE_CACHE_SHIFT - PAGE_SHIFT)
      + E
      
      @@
      @@
      - PAGE_CACHE_SHIFT
      + PAGE_SHIFT
      
      @@
      @@
      - PAGE_CACHE_SIZE
      + PAGE_SIZE
      
      @@
      @@
      - PAGE_CACHE_MASK
      + PAGE_MASK
      
      @@
      expression E;
      @@
      - PAGE_CACHE_ALIGN(E)
      + PAGE_ALIGN(E)
      
      @@
      expression E;
      @@
      - page_cache_get(E)
      + get_page(E)
      
      @@
      expression E;
      @@
      - page_cache_release(E)
      + put_page(E)
      Signed-off-by: NKirill A. Shutemov <kirill.shutemov@linux.intel.com>
      Acked-by: NMichal Hocko <mhocko@suse.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      09cbfeaf
  3. 19 3月, 2016 2 次提交
  4. 11 3月, 2016 1 次提交
  5. 16 1月, 2016 1 次提交
  6. 29 10月, 2015 1 次提交
  7. 28 10月, 2015 2 次提交
  8. 17 10月, 2015 1 次提交
  9. 21 8月, 2015 1 次提交
  10. 20 8月, 2015 3 次提交
  11. 06 7月, 2015 1 次提交
    • A
      ARCv2: guard SLC DMA ops with spinlock · b607eddd
      Alexey Brodkin 提交于
      SLC maintenance ops need to be serialized by software as there is no
      inherent buffering / quequing of aux commands. It can silently ignore a
      new aux operation if previous one is still ongoing (SLC_CTRL_BUSY)
      
      So gaurd the SLC op using a spin lock
      
      The spin lock doesn't seem to be contended even in heavy workloads such
      as iperf. On FPGA @ 75 MHz.
      
       [1] Before this change:
       ============================================================
        # iperf -c 10.42.0.1
       ------------------------------------------------------------
       Client connecting to 10.42.0.1, TCP port 5001
       TCP window size: 43.8 KByte (default)
       ------------------------------------------------------------
       [  3] local 10.42.0.110 port 38935 connected with 10.42.0.1 port 5001
       [ ID] Interval       Transfer     Bandwidth
       [  3]  0.0-10.0 sec  48.4 MBytes  40.6 Mbits/sec
       ============================================================
      
       [2] After this change:
       ============================================================
       # iperf -c 10.42.0.1
       ------------------------------------------------------------
       Client connecting to 10.42.0.1, TCP port 5001
       TCP window size: 43.8 KByte (default)
       ------------------------------------------------------------
       [  3] local 10.42.0.243 port 60248 connected with 10.42.0.1 port 5001
       [ ID] Interval       Transfer     Bandwidth
       [  3]  0.0-10.0 sec  47.5 MBytes  39.8 Mbits/sec
       # iperf -c 10.42.0.1
       ------------------------------------------------------------
       Client connecting to 10.42.0.1, TCP port 5001
       TCP window size: 43.8 KByte (default)
       ------------------------------------------------------------
       [  3] local 10.42.0.243 port 60249 connected with 10.42.0.1 port 5001
       [ ID] Interval       Transfer     Bandwidth
       [  3]  0.0-10.0 sec  54.9 MBytes  46.0 Mbits/sec
       ============================================================
      Signed-off-by: NAlexey Brodkin <abrodkin@synopsys.com>
      Cc: arc-linux-dev@synopsys.com
      Signed-off-by: NVineet Gupta <vgupta@synopsys.com>
      b607eddd
  12. 25 6月, 2015 1 次提交
  13. 22 6月, 2015 2 次提交
  14. 19 6月, 2015 4 次提交
  15. 19 5月, 2015 1 次提交
  16. 11 5月, 2015 1 次提交
  17. 13 10月, 2014 1 次提交
  18. 04 9月, 2014 1 次提交
  19. 30 8月, 2014 1 次提交
  20. 23 7月, 2014 3 次提交
  21. 26 6月, 2014 1 次提交
    • V
      ARC: [SMP] Enable icache coherency · 2328af0c
      Vineet Gupta 提交于
      icaches are not snooped hence not cohrent in SMP setups which means
      kernel has to do cross core calls to ensure the same.
      
      The leaf routine __ic_line_inv_vaddr() now does cross core calls.
      
      __sync_icache_dcache() is affected due to this:
      
      * local dcache line flushed ahead of remote icache inv requests
      * can't disable interrupts anymore, since
            __ic_line_inv_vaddr()->on_each_cpu() can deadlock.
      
      | WARNING: CPU: 0 PID: 1 at kernel/smp.c:374
      | smp_call_function_many+0x25a/0x2c4()
      |
      |  init_kprobes+0x90/0xc8
      |     register_kprobe+0x1d6/0x510
      |	__sync_icache_dcache+0x28/0x80
      |
      |	    DISABLE IRQ
      |
      |	    __ic_line_inv_vaddr
      |		on_each_cpu
      |		     smp_call_function_many+0x25a/0x2c4   --> WARN
      |			__ic_line_inv_vaddr_local
      |	    __dc_line_op
      
      * TODO: Needs to use mask of relevant CPUs to avoid broadcasting
      Signed-off-by: NNoam Camus <noamc@ezchip.com>
      Signed-off-by: NVineet Gupta <vgupta@synopsys.com>
      2328af0c
  22. 03 6月, 2014 1 次提交
  23. 05 5月, 2014 1 次提交
  24. 05 4月, 2014 1 次提交
    • V
      ARC: [SMP] General Fixes · c3441edd
      Vineet Gupta 提交于
      -Pass the expected arg to non-boot park'ing routine
       (It worked so far because existing SMP backends don't use the arg)
      
      -CONFIG_DEBUG_PREEMPT warning
      c3441edd
  25. 08 3月, 2014 1 次提交
  26. 06 11月, 2013 4 次提交
  27. 29 8月, 2013 1 次提交