1. 20 6月, 2013 1 次提交
  2. 31 5月, 2013 1 次提交
  3. 15 5月, 2013 1 次提交
  4. 03 5月, 2013 2 次提交
  5. 02 5月, 2013 5 次提交
  6. 30 4月, 2013 3 次提交
    • J
      sparse-vmemmap: specify vmemmap population range in bytes · 0aad818b
      Johannes Weiner 提交于
      The sparse code, when asking the architecture to populate the vmemmap,
      specifies the section range as a starting page and a number of pages.
      
      This is an awkward interface, because none of the arch-specific code
      actually thinks of the range in terms of 'struct page' units and always
      translates it to bytes first.
      
      In addition, later patches mix huge page and regular page backing for
      the vmemmap.  For this, they need to call vmemmap_populate_basepages()
      on sub-section ranges with PAGE_SIZE and PMD_SIZE in mind.  But these
      are not necessarily multiples of the 'struct page' size and so this unit
      is too coarse.
      
      Just translate the section range into bytes once in the generic sparse
      code, then pass byte ranges down the stack.
      Signed-off-by: NJohannes Weiner <hannes@cmpxchg.org>
      Cc: Ben Hutchings <ben@decadent.org.uk>
      Cc: Bernhard Schmidt <Bernhard.Schmidt@lrz.de>
      Cc: Johannes Weiner <hannes@cmpxchg.org>
      Cc: Russell King <rmk@arm.linux.org.uk>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: "Luck, Tony" <tony.luck@intel.com>
      Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
      Acked-by: NDavid S. Miller <davem@davemloft.net>
      Tested-by: NDavid S. Miller <davem@davemloft.net>
      Cc: Wu Fengguang <fengguang.wu@intel.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      0aad818b
    • G
      mm/hugetlb: add more arch-defined huge_pte functions · 106c992a
      Gerald Schaefer 提交于
      Commit abf09bed ("s390/mm: implement software dirty bits")
      introduced another difference in the pte layout vs.  the pmd layout on
      s390, thoroughly breaking the s390 support for hugetlbfs.  This requires
      replacing some more pte_xxx functions in mm/hugetlbfs.c with a
      huge_pte_xxx version.
      
      This patch introduces those huge_pte_xxx functions and their generic
      implementation in asm-generic/hugetlb.h, which will now be included on
      all architectures supporting hugetlbfs apart from s390.  This change
      will be a no-op for those architectures.
      
      [akpm@linux-foundation.org: fix warning]
      Signed-off-by: NGerald Schaefer <gerald.schaefer@de.ibm.com>
      Cc: Mel Gorman <mgorman@suse.de>
      Cc: Hugh Dickins <hughd@google.com>
      Cc: Hillf Danton <dhillf@gmail.com>
      Acked-by: Michal Hocko <mhocko@suse.cz>	[for !s390 parts]
      Cc: Tony Luck <tony.luck@intel.com>
      Cc: Fenghua Yu <fenghua.yu@intel.com>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Paul Mundt <lethal@linux-sh.org>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: Chris Metcalf <cmetcalf@tilera.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      106c992a
    • J
      mm/s390: use common help functions to free reserved pages · 0999f119
      Jiang Liu 提交于
      Use common help functions to free reserved pages.
      Signed-off-by: NJiang Liu <jiang.liu@huawei.com>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      0999f119
  7. 23 4月, 2013 2 次提交
  8. 17 4月, 2013 4 次提交
  9. 08 3月, 2013 1 次提交
  10. 28 2月, 2013 2 次提交
  11. 24 2月, 2013 2 次提交
  12. 14 2月, 2013 2 次提交
    • M
      s390/mm: implement software dirty bits · abf09bed
      Martin Schwidefsky 提交于
      The s390 architecture is unique in respect to dirty page detection,
      it uses the change bit in the per-page storage key to track page
      modifications. All other architectures track dirty bits by means
      of page table entries. This property of s390 has caused numerous
      problems in the past, e.g. see git commit ef5d437f
      "mm: fix XFS oops due to dirty pages without buffers on s390".
      
      To avoid future issues in regard to per-page dirty bits convert
      s390 to a fault based software dirty bit detection mechanism. All
      user page table entries which are marked as clean will be hardware
      read-only, even if the pte is supposed to be writable. A write by
      the user process will trigger a protection fault which will cause
      the user pte to be marked as dirty and the hardware read-only bit
      is removed.
      
      With this change the dirty bit in the storage key is irrelevant
      for Linux as a host, but the storage key is still required for
      KVM guests. The effect is that page_test_and_clear_dirty and the
      related code can be removed. The referenced bit in the storage
      key is still used by the page_test_and_clear_young primitive to
      provide page age information.
      
      For page cache pages of mappings with mapping_cap_account_dirty
      there will not be any change in behavior as the dirty bit tracking
      already uses read-only ptes to control the amount of dirty pages.
      Only for swap cache pages and pages of mappings without
      mapping_cap_account_dirty there can be additional protection faults.
      To avoid an excessive number of additional faults the mk_pte
      primitive checks for PageDirty if the pgprot value allows for writes
      and pre-dirties the pte. That avoids all additional faults for
      tmpfs and shmem pages until these pages are added to the swap cache.
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      abf09bed
    • H
      s390/mm: Fix crst upgrade of mmap with MAP_FIXED · 486c0a0b
      Hendrik Brueckner 提交于
      Right now the page table upgrade does not happen if the end address
      of a fixed mapping is greater than TASK_SIZE.
      Enhance s390_mmap_check() to handle MAP_FIXED mappings correctly.
      Signed-off-by: NHendrik Brueckner <brueckner@linux.vnet.ibm.com>
      Reviewed-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      486c0a0b
  13. 08 1月, 2013 1 次提交
    • H
      s390/irq: remove split irq fields from /proc/stat · 420f42ec
      Heiko Carstens 提交于
      Now that irq sum accounting for /proc/stat's "intr" line works again we
      have the oddity that the sum field (first field) contains only the sum
      of the second (external irqs) and third field (I/O interrupts).
      The reason for that is that these two fields are already sums of all other
      fields. So if we would sum up everything we would count every interrupt
      twice.
      This is broken since the split interrupt accounting was merged two years
      ago: 052ff461 "[S390] irq: have detailed
      statistics for interrupt types".
      To fix this remove the split interrupt fields from /proc/stat's "intr"
      line again and only have them in /proc/interrupts.
      
      This restores the old behaviour, seems to be the only sane fix and mimics
      a behaviour from other architectures where /proc/interrupts also contains
      more than /proc/stat's "intr" line does.
      Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      420f42ec
  14. 23 11月, 2012 6 次提交
  15. 13 11月, 2012 2 次提交
  16. 26 10月, 2012 1 次提交
  17. 09 10月, 2012 4 次提交
    • H
      s390/mm,vmem: fix vmem_add_mem()/vmem_remove_range() · fc7e48aa
      Heiko Carstens 提交于
      vmem_add_mem() should only then insert a large page if pmd_none() is true
      for the specific entry. We might have a leftover from a previous mapping.
      In addition make vmem_remove_range()'s page table walk code more complete
      and fix a couple of potential endless loops (which can never happen :).
      Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      fc7e48aa
    • H
      s390/vmalloc: have separate modules area · c972cc60
      Heiko Carstens 提交于
      Add a special module area on top of the vmalloc area, which may be only
      used for modules and bpf jit generated code.
      This makes sure that inter module branches will always happen without a
      trampoline and in addition having all the code within a 2GB frame is
      branch prediction unit friendly.
      Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      c972cc60
    • H
      s390/mm: fix mapping of read-only kernel text section · 8fe234d3
      Heiko Carstens 提交于
      Within the identity mapping the kernel text section is mapped read-only.
      However when mapping the first and last page of the text section we must
      round upwards and downwards respectively, if only parts of a page belong
      to the section.
      Otherwise potential rw data can be mapped read-only. So the rounding must
      be done just the other way we have it right now.
      Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      8fe234d3
    • H
      s390/mm: add page table dumper · e76e82d7
      Heiko Carstens 提交于
      This is more or less the same as the x86 page table dumper which was
      merged four years ago: 926e5392 "x86: add code to dump the (kernel)
      page tables for visual inspection by kernel developers".
      
      We add a file at /sys/kernel/debug/kernel_page_tables for debugging
      purposes so it's quite easy to see the kernel page table layout and
      possible odd mappings:
      
      ---[ Identity Mapping ]---
      0x0000000000000000-0x0000000000100000        1M PTE RW
      ---[ Kernel Image Start ]---
      0x0000000000100000-0x0000000000800000        7M PMD RO
      0x0000000000800000-0x00000000008a9000      676K PTE RO
      0x00000000008a9000-0x0000000000900000      348K PTE RW
      0x0000000000900000-0x0000000001500000       12M PMD RW
      ---[ Kernel Image End ]---
      0x0000000001500000-0x0000000280000000    10219M PMD RW
      0x0000000280000000-0x000003d280000000     3904G PUD I
      ---[ vmemmap Area ]---
      0x000003d280000000-0x000003d288c00000      140M PTE RW
      0x000003d288c00000-0x000003d300000000     1908M PMD I
      0x000003d300000000-0x000003e000000000       52G PUD I
      ---[ vmalloc Area ]---
      0x000003e000000000-0x000003e000009000       36K PTE RW
      0x000003e000009000-0x000003e0000ee000      916K PTE I
      0x000003e0000ee000-0x000003e000146000      352K PTE RW
      0x000003e000146000-0x000003e000200000      744K PTE I
      0x000003e000200000-0x000003e080000000     2046M PMD I
      0x000003e080000000-0x0000040000000000      126G PUD I
      
      This usually makes only sense for kernel developers. The output
      with CONFIG_DEBUG_PAGEALLOC is not very helpful, because of the
      huge number of mapped out pages, however I decided for the time
      being to not add a !DEBUG_PAGEALLOC dependency.
      Maybe it's helpful for somebody even with that option.
      Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      e76e82d7