1. Jan 19, 2009
  2. Jan 16, 2009
    • Jan Beulich's avatar
      x86: fix assumed to be contiguous leaf page tables for kmap_atomic region (take 2) · a3c6018e
      Jan Beulich authored
      
      
      Debugging and original patch from Nick Piggin <npiggin@suse.de>
      
      The early fixmap pmd entry inserted at the very top of the KVA is causing the
      subsequent fixmap mapping code to not provide physically linear pte pages over
      the kmap atomic portion of the fixmap (which relies on said property to
      calculate pte addresses).
      
      This has caused weird boot failures in kmap_atomic much later in the boot
      process (initial userspace faults) on a 32-bit PAE system with a larger number
      of CPUs (smaller CPU counts tend not to run over into the next page so don't
      show up the problem).
      
      Solve this by attempting to clear out the page table, and copy any of its
      entries to the new one. Also, add a bug if a nonlinear condition is encountered
      and can't be resolved, which might save some hours of debugging if this fragile
      scheme ever breaks again...
      
      Once we have such logic, we can also use it to eliminate the early ioremap
      trickery around the page table setup for the fixmap area. This also fixes
      potential issues with FIX_* entries sharing the leaf page table with the early
      ioremap ones getting discarded by early_ioremap_clear() and not restored by
      early_ioremap_reset(). It at once eliminates the temporary (and configuration,
      namely NR_CPUS, dependent) unavailability of early fixed mappings during the
      time the fixmap area page tables get constructed.
      
      Finally, also replace the hard coded calculation of the initial table space
      needed for the fixmap area with a proper one, allowing kernels configured for
      large CPU counts to actually boot.
      
      Based-on: Nick Piggin <npiggin@suse.de>
      Signed-off-by: default avatarJan Beulich <jbeulich@novell.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      a3c6018e
    • Cliff Wickman's avatar
      x86, UV: cpu_relax in uv_wait_completion · 18c07cf5
      Cliff Wickman authored
      
      
      The function uv_wait_completion() spins on reads of a memory-mapped
      register, waiting for completion of BAU hardware replies.
      
      It should call "cpu_relax()" between those reads to improve performance
      on hyperthreaded configurations.
      
      Signed-off-by: default avatarCliff Wickman <cpw@sgi.com>
      Acked-by: default avatarJack Steiner <steiner@sgi.org>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      18c07cf5
    • Jan Beulich's avatar
      x86: avoid early crash in disable_local_APIC() · 4a13ad0b
      Jan Beulich authored
      
      
      E.g. when called due to an early panic.
      
      Signed-off-by: default avatarJan Beulich <jbeulich@novell.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      4a13ad0b
  3. Jan 15, 2009
  4. Jan 14, 2009
    • Andi Kleen's avatar
      x86, generic: mark complex bitops.h inlines as __always_inline · c8399943
      Andi Kleen authored
      Impact: reduce kernel image size
      
      Hugh Dickins noticed that older gcc versions when the kernel
      is built for code size didn't inline some of the bitops.
      
      Mark all complex x86 bitops that have more than a single
      asm statement or two as always inline to avoid this problem.
      
      Probably should be done for other architectures too.
      
      Ingo then found a better fix that only requires
      a single line change, but it unfortunately only
      works on gcc 4.3.
      
      On older gccs the original patch still makes a ~0.3% defconfig
      difference with CONFIG_OPTIMIZE_INLINING=y.
      
      With gcc 4.1 and a defconfig like build:
      
          61169987
      
       1138540  883788 8139326  7c323e vmlinux-oi-with-patch
          6137043 1138540  883788 8159371  7c808b vmlinux-optimize-inlining
      
      ~20k / 0.3% difference.
      
      Signed-off-by: default avatarAndi Kleen <ak@linux.intel.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      c8399943
  5. Jan 13, 2009
  6. Jan 11, 2009
  7. Jan 10, 2009