1. 17 10月, 2015 2 次提交
    • V
    • V
      ARCv2: mm: THP support · fe6c1b86
      Vineet Gupta 提交于
      MMUv4 in HS38x cores supports Super Pages which are basis for Linux THP
      support.
      
      Normal and Super pages can co-exist (ofcourse not overlap) in TLB with a
      new bit "SZ" in TLB page desciptor to distinguish between them.
      Super Page size is configurable in hardware (4K to 16M), but fixed once
      RTL builds.
      
      The exact THP size a Linx configuration will support is a function of:
       - MMU page size (typical 8K, RTL fixed)
       - software page walker address split between PGD:PTE:PFN (typical
         11:8:13, but can be changed with 1 line)
      
      So for above default, THP size supported is 8K * 256 = 2M
      
      Default Page Walker is 2 levels, PGD:PTE:PFN, which in THP regime
      reduces to 1 level (as PTE is folded into PGD and canonically referred
      to as PMD).
      
      Thus thp PMD accessors are implemented in terms of PTE (just like sparc)
      Signed-off-by: NVineet Gupta <vgupta@synopsys.com>
      fe6c1b86
  2. 20 8月, 2015 1 次提交
  3. 11 8月, 2015 1 次提交
  4. 04 8月, 2015 1 次提交
  5. 23 7月, 2015 1 次提交
  6. 20 7月, 2015 1 次提交
  7. 06 7月, 2015 1 次提交
  8. 25 6月, 2015 1 次提交
  9. 22 6月, 2015 7 次提交
  10. 19 6月, 2015 6 次提交
  11. 03 11月, 2014 1 次提交
  12. 13 10月, 2014 3 次提交
  13. 08 4月, 2014 1 次提交
  14. 20 2月, 2014 1 次提交
  15. 24 1月, 2014 1 次提交
  16. 16 1月, 2014 1 次提交
  17. 25 11月, 2013 1 次提交
  18. 15 11月, 2013 1 次提交
  19. 07 11月, 2013 1 次提交
  20. 06 11月, 2013 2 次提交
  21. 13 9月, 2013 1 次提交
  22. 05 7月, 2013 1 次提交
  23. 22 6月, 2013 2 次提交
  24. 10 5月, 2013 1 次提交
    • V
      ARC: [mm] Aliasing VIPT dcache support 2/4 · 4102b533
      Vineet Gupta 提交于
      This is the meat of the series which prevents any dcache alias creation
      by always keeping the U and K mapping of a page congruent.
      If a mapping already exists, and other tries to access the page, prev
      one is flushed to physical page (wback+inv)
      
      Essentially flush_dcache_page()/copy_user_highpage() create K-mapping
      of a page, but try to defer flushing, unless U-mapping exist.
      When page is actually mapped to userspace, update_mmu_cache() flushes
      the K-mapping (in certain cases this can be optimised out)
      
      Additonally flush_cache_mm(), flush_cache_range(), flush_cache_page()
      handle the puring of stale userspace mappings on exit/munmap...
      
      flush_anon_page() handles the existing U-mapping for anon page before
      kernel reads it via the GUP path.
      
      Note that while not complete, this is enough to boot a simple
      dynamically linked Busybox based rootfs
      Signed-off-by: NVineet Gupta <vgupta@synopsys.com>
      4102b533