1. 17 4月, 2008 5 次提交
  2. 29 3月, 2008 1 次提交
  3. 28 3月, 2008 1 次提交
    • I
      x86: prefetch fix #2 · 3085354d
      Ingo Molnar 提交于
      Linus noticed a second bug and an uncleanliness:
      
       - we'd return on any instruction fetch fault
      
       - we'd use both the value of 16 and the PF_INSTR symbol which are
         the same and make no sense
      
      the cleanup nicely unifies this piece of logic.
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      3085354d
  4. 27 3月, 2008 4 次提交
  5. 25 3月, 2008 1 次提交
  6. 22 3月, 2008 1 次提交
  7. 12 3月, 2008 2 次提交
    • T
      x86: remove quicklists · 985a34bd
      Thomas Gleixner 提交于
      quicklists cause a serious memory leak on 32-bit x86,
      as documented at:
      
        http://bugzilla.kernel.org/show_bug.cgi?id=9991
      
      the reason is that the quicklist pool is a special-purpose
      cache that grows out of proportion. It is not accounted for
      anywhere and users have no way to even realize that it's
      the quicklists that are causing RAM usage spikes. It was
      supposed to be a relatively small pool, but as demonstrated
      by KOSAKI Motohiro, they can grow as large as:
      
        Quicklists:    1194304 kB
      
      given how much trouble this code has caused historically,
      and given that Andrew objected to its introduction on x86
      (years ago), the best option at this point is to remove them.
      
      [ any performance benefits of caching constructed pgds should
        be implemented in a more generic way (possibly within the page
        allocator), while still allowing constructed pages to be
        allocated by other workloads. ]
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      985a34bd
    • I
      x86: ioremap, remove WARN_ON() · 9a46d7e5
      Ingo Molnar 提交于
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      9a46d7e5
  8. 05 3月, 2008 1 次提交
  9. 03 3月, 2008 1 次提交
  10. 01 3月, 2008 2 次提交
  11. 26 2月, 2008 3 次提交
  12. 21 2月, 2008 1 次提交
  13. 19 2月, 2008 10 次提交
    • A
      x86: fix page_is_ram() thinko · 156fbc3f
      Arjan van de Ven 提交于
      page_is_ram() has a special case for the 640k-1M bios area, however
      due to a thinko the special case checks the e820 table entry and
      not the memory the user has asked for. This patch fixes the bug.
      
      [ mingo@elte.hu: this too is better solved in the e820 space, but those
        fixes are too intrusive for v2.6.25. ]
      Signed-off-by: NArjan van de Ven <arjan@linux.intel.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      156fbc3f
    • A
      x86: fix WARN_ON() message: teach page_is_ram() about the special 4Kb bios data page · d8a9e6a5
      Arjan van de Ven 提交于
      This patch teaches page_is_ram() about the fact that the first
      4Kb of memory are special on x86, even though the E820 table
      normally doesn't exclude it.
      
      This fixes the WARN_ON() reported by Laurent Riffard who was also
      very helpful in diagnosing the issue.
      
      [ mingo@elte.hu: we are working on doing this properly in the e820
        space, but for 2.6.25 this is the better fix. ]
      Signed-off-by: NArjan van de Ven <arjan@linux.intel.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      d8a9e6a5
    • S
      x86: fix section mismatch in srat_64.c:reserve_hotadd · d01b9ad5
      Sam Ravnborg 提交于
      reserve_hotadd() are only used by __init acpi_numa_memory_affinity_init().
      Annotate reserve_hotadd() with __init is the trivial fix.
      Signed-off-by: NSam Ravnborg <sam@ravnborg.org>
      Cc: Sam Ravnborg <sam@ravnborg.org>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: H. Peter Anvin <hpa@zytor.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      d01b9ad5
    • A
      x86: CPA: remove BUG_ON for LRU/Compound pages · 8e31c2ac
      Andi Kleen 提交于
      New implementation does not use lru for anything so there is no need
      to reject pages that are in the LRU. Similar for compound pages (which
      were checked because they also use page->lru)
      
      [ tglx@linutronix.de: removed unused variable ]
      Signed-off-by: NAndi Kleen <ak@suse.de>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      8e31c2ac
    • A
      fix historic ioremap() abuse in AGP · fcea424d
      Arjan van dev Ven 提交于
      Several AGP drivers right now use ioremap_nocache() on kernel ram in order
      to turn a page of regular memory uncached.
      
      There are two problems with this:
      
          1) This is a total nightmare for the ioremap() implementation to keep
             various mappings of the same page coherent.
      
          2) It's a total nightmare for the AGP code since it adds a ton of
             complexity in terms of keeping track of 2 different pointers to
             the same thing, in terms of error handling etc etc.
      
      This patch fixes this by making the AGP drivers use the new
      set_memory_XX APIs instead.
      
      Note: amd-k7-agp.c is built on Alpha too, and generic.c is built
      on ia64 as well, which do not yet have the set_memory_*() APIs,
      so for them some we have a few ugly #ifdefs - hopefully they'll
      be fixed soon.
      Signed-off-by: NArjan van de Ven <arjan@linux.intel.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NDave Airlie <airlied@linux.ie>
      fcea424d
    • Y
      x86: reenable support for system without on node0 · b7ad149d
      Yinghai Lu 提交于
      One system doesn't have RAM for node0 installed.
      
      SRAT: PXM 0 -> APIC 0 -> Node 0
      SRAT: PXM 0 -> APIC 1 -> Node 0
      SRAT: PXM 1 -> APIC 2 -> Node 1
      SRAT: PXM 1 -> APIC 3 -> Node 1
      SRAT: Node 1 PXM 1 0-a0000
      SRAT: Node 1 PXM 1 0-dd000000
      SRAT: Node 1 PXM 1 0-123000000
      ACPI: SLIT: nodes = 2
       10 13
       13 10
      mapped APIC to ffffffffff5fb000 (        fee00000)
      Bootmem setup node 1 0000000000000000-0000000123000000
        NODE_DATA [000000000000e000 - 0000000000014fff]
        bootmap [0000000000015000 -  00000000000395ff] pages 25
      Could not find start_pfn for node 0
      Pid: 0, comm: swapper Not tainted 2.6.24-smp-g5a514e21-dirty #14
      
      Call Trace:
       [<ffffffff80bab498>] free_area_init_node+0x22/0x381
       [<ffffffff8045ffc5>] generic_swap+0x0/0x17
       [<ffffffff80bab0cc>] find_zone_movable_pfns_for_nodes+0x54/0x271
       [<ffffffff80baba5f>] free_area_init_nodes+0x239/0x287
       [<ffffffff80ba6311>] paging_init+0x46/0x4c
       [<ffffffff80b9dda5>] setup_arch+0x3c3/0x44e
       [<ffffffff80b978be>] start_kernel+0x6f/0x2c7
       [<ffffffff80b971cc>] _sinittext+0x1cc/0x1d3
      
      This happens because node 0 is not online, but the node state in
      mm/page_alloc.c has node 0 set.
      
              nodemask_t node_states[NR_NODE_STATES] __read_mostly = {
                      [N_POSSIBLE] = NODE_MASK_ALL,
                      [N_ONLINE] = { { [0] = 1UL } },
      
      So we need to clear node_online_map before initializing the memory.
      Signed-off-by: NYinghai Lu <yinghai.lu@sun.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      b7ad149d
    • T
      x86: CPA: avoid double checking of alias ranges · f34b439f
      Thomas Gleixner 提交于
      When the CPA code is called with an virtual address in the range of
      the direct mapping or the high alias then we do not need to run
      through the alias check for this range.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      f34b439f
    • T
      x86: CPA no alias checking for _NX · af96e443
      Thomas Gleixner 提交于
      NX settings are not required to be consistent across alias mappings.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      af96e443
    • T
      x86: zap invalid and unused pmds in early boot · 31eedd82
      Thomas Gleixner 提交于
      The early boot code maps KERNEL_TEXT_SIZE (currently 40MB) starting
      from __START_KERNEL_map. The kernel itself only needs _text to _end
      mapped in the high alias. On relocatible kernels the ASM setup code
      adjusts the compile time created high mappings to the relocation. This
      creates invalid pmd entries for negative offsets:
      
      0xffffffff80000000 -> pmd entry: ffffffffff2001e3
      It points outside of the physical address space and is marked present.
      
      This starts at the virtual address __START_KERNEL_map and goes up to
      the point where the first valid physical address (0x0) is mapped.
      
      Zap the mappings before _text and after _end right away in early
      boot. This removes also the invalid entries.
      
      Furthermore it simplifies the range check for high aliases.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Acked-by: NH. Peter Anvin <hpa@zytor.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      31eedd82
    • T
      x86: CPA, fix alias checks · c31c7d48
      Thomas Gleixner 提交于
      c_p_a() did not discover all aliases correctly. (such as when called
      on vmalloc()-ed areas or ioremap()-ed areas)
      
      Push the alias checks to the lower, physical level and consistently
      discover all aliases that might exist: the low direct mappings and
      the high linear kernel-text mappings (on 64-bit).
      
      Thanks to Andi Kleen for pointing out that this was buggy.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      c31c7d48
  14. 15 2月, 2008 4 次提交
  15. 13 2月, 2008 2 次提交
  16. 12 2月, 2008 1 次提交