1. 19 1月, 2017 4 次提交
  2. 05 1月, 2017 1 次提交
  3. 20 12月, 2016 2 次提交
    • V
      ARC: mm: arc700: Don't assume 2 colours for aliasing VIPT dcache · 08fe0079
      Vineet Gupta 提交于
      An ARC700 customer reported linux boot crashes when upgrading to bigger
      L1 dcache (64K from 32K). Turns out they had an aliasing VIPT config and
      current code only assumed 2 colours, while theirs had 4. So default to 4
      colours and complain if there are fewer. Ideally this needs to be a
      Kconfig option, but heck that's too much of hassle for a single user.
      
      Cc: stable@vger.kernel.org
      Signed-off-by: NVineet Gupta <vgupta@synopsys.com>
      08fe0079
    • V
      ARC: mm: No need to save cache version in @cpuinfo · f64915be
      Vineet Gupta 提交于
      Historical MMU revisions have been paired with Cache revision updates
      which are captured in MMU and Cache Build Configuration Registers respectively.
      
      This was used in boot code to check for configurations mismatches,
      speically in simulations (such as running with non existent caches,
      non pairing MMU and Cache version etc). This can instead be inferred
      from other cache params such as line size. So remove @ver from post
      processed @cpuinfo which could be used later to save soem other
      interesting info.
      Signed-off-by: NVineet Gupta <vgupta@synopsys.com>
      f64915be
  4. 29 11月, 2016 1 次提交
  5. 29 10月, 2016 1 次提交
  6. 25 10月, 2016 1 次提交
    • V
      ARCv2: IOC: use @ioc_enable not @ioc_exist where intended · cf986d47
      Vineet Gupta 提交于
      if user disables IOC from debugger at startup (by clearing @ioc_enable),
      @ioc_exists is cleared too. This means boot prints don't capture the
      fact that IOC was present but disabled which could be misleading.
      
      So invert how we use @ioc_enable and @ioc_exists and make it more
      canonical. @ioc_exists represent whether hardware is present or not and
      stays same whether enabled or not. @ioc_enable is still user driven,
      but will be auto-disabled if IOC hardware is not present, i.e. if
      @ioc_exist=0. This is opposite to what we were doing before, but much
      clearer.
      
      This means @ioc_enable is now the "exported" toggle in rest of code such
      as dma mapping API.
      Signed-off-by: NVineet Gupta <vgupta@synopsys.com>
      cf986d47
  7. 01 10月, 2016 1 次提交
  8. 11 8月, 2016 1 次提交
  9. 30 5月, 2016 1 次提交
  10. 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
  11. 19 3月, 2016 2 次提交
  12. 11 3月, 2016 1 次提交
  13. 16 1月, 2016 1 次提交
  14. 29 10月, 2015 1 次提交
  15. 28 10月, 2015 2 次提交
  16. 17 10月, 2015 1 次提交
  17. 21 8月, 2015 1 次提交
  18. 20 8月, 2015 3 次提交
  19. 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
  20. 25 6月, 2015 1 次提交
  21. 22 6月, 2015 2 次提交
  22. 19 6月, 2015 4 次提交
  23. 19 5月, 2015 1 次提交
  24. 11 5月, 2015 1 次提交
  25. 13 10月, 2014 1 次提交
  26. 04 9月, 2014 1 次提交
  27. 30 8月, 2014 1 次提交
  28. 23 7月, 2014 1 次提交