1. 18 10月, 2008 1 次提交
  2. 30 9月, 2008 1 次提交
  3. 07 9月, 2008 1 次提交
  4. 13 8月, 2008 1 次提交
    • T
      [IA64] Ensure cpu0 can access per-cpu variables in early boot code · 10617bbe
      Tony Luck 提交于
      ia64 handles per-cpu variables a litle differently from other architectures
      in that it maps the physical memory allocated for each cpu at a constant
      virtual address (0xffffffffffff0000). This mapping is not enabled until
      the architecture specific cpu_init() function is run, which causes problems
      since some generic code is run before this point. In particular when
      CONFIG_PRINTK_TIME is enabled, the boot cpu will trap on the access to
      per-cpu memory at the first printk() call so the boot will fail without
      the kernel printing anything to the console.
      
      Fix this by allocating percpu memory for cpu0 in the kernel data section
      and doing all initialization to enable percpu access in head.S before
      calling any generic code.
      
      Other cpus must take care not to access per-cpu variables too early, but
      their code path from start_secondary() to cpu_init() is all in arch/ia64
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      10617bbe
  5. 31 7月, 2008 1 次提交
    • J
      GRU Driver: hardware data structures · 34d8a380
      Jack Steiner 提交于
      This series of patches adds a driver for the SGI UV GRU.  The driver is
      still in development but it currently compiles for both x86_64 & IA64.
      All simple regression tests pass on IA64.  Although features remain to be
      added, I'd like to start the process of getting the driver into the
      kernel.  Additional kernel drivers will depend on services provide by the
      GRU driver.
      
      The GRU is a hardware resource located in the system chipset.  The GRU
      contains memory that is mmaped into the user address space.  This memory
      is used to communicate with the GRU to perform functions such as
      load/store, scatter/gather, bcopy, AMOs, etc.  The GRU is directly
      accessed by user instructions using user virtual addresses.  GRU
      instructions (ex., bcopy) use user virtual addresses for operands.
      
      The GRU contains a large TLB that is functionally very similar to
      processor TLBs.  Because the external contains a TLB with user virtual
      address, it requires callouts from the core VM system when certain types
      of changes are made to the process page tables.  There are several MMUOPS
      patches currently being discussed but none has been accepted into the
      kernel.  The GRU driver is built using version V18 from Andrea Arcangeli.
      
      This patch:
      
      Contains the definitions of the hardware GRU data structures that are used
      by the driver to manage the GRU.
      
      [akpm@linux-foundation;org: export hpage_shift]
      Signed-off-by: NJack Steiner <steiner@sgi.com>
      Cc: "Luck, Tony" <tony.luck@intel.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      34d8a380
  6. 25 7月, 2008 5 次提交
  7. 16 5月, 2008 1 次提交
    • H
      [IA64] fix personality(PER_LINUX32) performance issue · 839052d2
      Huang, Xiaolan 提交于
      The patch aims to fix a performance issue for the syscall
      personality(PER_LINUX32).
      
      On IA-64 box, the syscall personality (PER_LINUX32) has poor performance
      because it failed to find the Linux/x86 execution domain. Then it tried
      to load the kernel module however it failed always and it used the default
      execution domain PER_LINUX instead. Requesting kernel modules is very
      expensive. It caused the performance issue. (see the function
      lookup_exec_domain in kernel/exec_domain.c).
      
      To resolve the issue, execution domain Linux/x86 is always registered in
      initialization time for IA-64 architecture.
      Signed-off-by: NXiaolan Huang <xiaolan.huang@intel.com>
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      839052d2
  8. 30 4月, 2008 1 次提交
  9. 28 4月, 2008 1 次提交
  10. 12 4月, 2008 1 次提交
    • Z
      [IA64] Fix NUMA configuration issue · 98075d24
      Zoltan Menyhart 提交于
      There is a NUMA memory configuration issue in 2.6.24:
      
      A 2-node machine of ours has got the following memory layout:
      
      Node 0:	0 - 2 Gbytes
      Node 0:	4 - 8 Gbytes
      Node 1:	8 - 16 Gbytes
      Node 0:	16 - 18 Gbytes
      
      "efi_memmap_init()" merges the three last ranges into one.
      
      "register_active_ranges()" is called as follows:
      
      efi_memmap_walk(register_active_ranges, NULL);
      
      i.e. once for the 4 - 18 Gbytes range. It picks up the node
      number from the start address, and registers all the memory for
      the node #0.
      
      "register_active_ranges()" should be called as follows to
      make sure there is no merged address range at its entry:
      
      efi_memmap_walk(filter_memory, register_active_ranges);
      
      "filter_memory()" is similar to "filter_rsvd_memory()",
      but the reserved memory ranges are not filtered out.
      Signed-off-by: NZoltan Menyhart <Zoltan.Menyhart@bull.net>
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      98075d24
  11. 10 4月, 2008 2 次提交
  12. 09 4月, 2008 2 次提交
    • H
      [IA64] Minimize per_cpu reservations. · 2c6e6db4
      holt@sgi.com 提交于
      This attached patch significantly shrinks boot memory allocation on ia64.
      It does this by not allocating per_cpu areas for cpus that can never
      exist.
      
      In the case where acpi does not have any numa node description of the
      cpus, I defaulted to assigning the first 32 round-robin on the known
      nodes..  For the !CONFIG_ACPI  I used for_each_possible_cpu().
      Signed-off-by: NRobin Holt <holt@sgi.com>
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      2c6e6db4
    • H
      [IA64] Correct pernodesize calculation. · 41bd26d6
      holt@sgi.com 提交于
      A simple fix.  The existing pernodesize reservation is not taking into
      account a second array of pg_data_t structures.  This is normally not
      important because the PAGE_ALIGN macro reserves adequate space.
      
      I made the compute_pernodesize steps in the same order as the fill_pernode
      steps to make the correlation more clear.
      Signed-off-by: NRobin Holt <holt@sgi.com>
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      41bd26d6
  13. 05 4月, 2008 2 次提交
  14. 04 4月, 2008 1 次提交
  15. 07 3月, 2008 2 次提交
  16. 08 2月, 2008 1 次提交
    • B
      Introduce flags for reserve_bootmem() · 72a7fe39
      Bernhard Walle 提交于
      This patchset adds a flags variable to reserve_bootmem() and uses the
      BOOTMEM_EXCLUSIVE flag in crashkernel reservation code to detect collisions
      between crashkernel area and already used memory.
      
      This patch:
      
      Change the reserve_bootmem() function to accept a new flag BOOTMEM_EXCLUSIVE.
      If that flag is set, the function returns with -EBUSY if the memory already
      has been reserved in the past.  This is to avoid conflicts.
      
      Because that code runs before SMP initialisation, there's no race condition
      inside reserve_bootmem_core().
      
      [akpm@linux-foundation.org: coding-style fixes]
      [akpm@linux-foundation.org: fix powerpc build]
      Signed-off-by: NBernhard Walle <bwalle@suse.de>
      Cc: <linux-arch@vger.kernel.org>
      Cc: "Eric W. Biederman" <ebiederm@xmission.com>
      Cc: Vivek Goyal <vgoyal@in.ibm.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      72a7fe39
  17. 06 2月, 2008 1 次提交
  18. 19 12月, 2007 1 次提交
    • D
      [IA64] Avoid unnecessary TLB flushes when allocating memory · aec103bf
      de Dinechin, Christophe (Integrity VM) 提交于
      Improve performance of memory allocations on ia64 by avoiding a global TLB
      purge to purge a single page from the file cache. This happens whenever we
      evict a page from the buffer cache to make room for some other allocation.
      
      Test case: Run 'find /usr -type f | xargs cat > /dev/null' in the
      background to fill the buffer cache, then run something that uses memory,
      e.g. 'gmake -j50 install'. Instrumentation showed that the number of
      global TLB purges went from a few millions down to about 170 over a 12
      hours run of the above.
      
      The performance impact is particularly noticeable under virtualization,
      because a virtual TLB is generally both larger and slower to purge than
      a physical one.
      Signed-off-by: NChristophe de Dinechin <ddd@hp.com>
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      aec103bf
  19. 08 12月, 2007 1 次提交
  20. 07 11月, 2007 1 次提交
    • T
      [IA64] Fix section mismatch in contig.c version of per_cpu_init() · 4b9ddc7c
      Tony Luck 提交于
      There is a section mismatch when building CONFIG_FLATMEM=y kernels
      that also have CONFIG_HOTPLUG_CPU=y
      
      WARNING: vmlinux.o(.text+0x5a902): Section mismatch: reference to \
      .init.text:__alloc_bootmem (between 'per_cpu_init' and 'count_pages')
      
      The issue occurs because per_cpu_init() in mm/contig.c is
      marked __cpuinit (which is #define'd to nothing on a hot
      plug cpu configuration) call __alloc_bootmem() (which is
      an __init function).  The usage is actually safe because
      the __alloc_bootmem() is inside an "if (first_time)" test
      so that the call is only made while it is still legal to
      do so.
      
      But the warning is irritating.  Move the allocation to
      find_memory().
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      4b9ddc7c
  21. 30 10月, 2007 1 次提交
    • A
      [IA64] ia64/mm/init.c: fix section mismatches · 18b8befd
      Adrian Bunk 提交于
      This patch fixes the following section mismatches:
      
      <--  snip  -->
      
      ...
      WARNING: vmlinux.o(.text+0x5b5c2): Section mismatch: reference to .init.text:memmap_init_zone (between 'memmap_init' and 'virtual_memmap_init')
      WARNING: vmlinux.o(.text+0x5b842): Section mismatch: reference to .init.text:memmap_init_zone (between 'virtual_memmap_init' and 'ia64_mmu_init')
      ...
      
      <--  snip  -->
      Signed-off-by: NAdrian Bunk <bunk@kernel.org>
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      18b8befd
  22. 20 10月, 2007 2 次提交
    • S
      pid namespaces: define is_global_init() and is_container_init() · b460cbc5
      Serge E. Hallyn 提交于
      is_init() is an ambiguous name for the pid==1 check.  Split it into
      is_global_init() and is_container_init().
      
      A cgroup init has it's tsk->pid == 1.
      
      A global init also has it's tsk->pid == 1 and it's active pid namespace
      is the init_pid_ns.  But rather than check the active pid namespace,
      compare the task structure with 'init_pid_ns.child_reaper', which is
      initialized during boot to the /sbin/init process and never changes.
      
      Changelog:
      
      	2.6.22-rc4-mm2-pidns1:
      	- Use 'init_pid_ns.child_reaper' to determine if a given task is the
      	  global init (/sbin/init) process. This would improve performance
      	  and remove dependence on the task_pid().
      
      	2.6.21-mm2-pidns2:
      
      	- [Sukadev Bhattiprolu] Changed is_container_init() calls in {powerpc,
      	  ppc,avr32}/traps.c for the _exception() call to is_global_init().
      	  This way, we kill only the cgroup if the cgroup's init has a
      	  bug rather than force a kernel panic.
      
      [akpm@linux-foundation.org: fix comment]
      [sukadev@us.ibm.com: Use is_global_init() in arch/m32r/mm/fault.c]
      [bunk@stusta.de: kernel/pid.c: remove unused exports]
      [sukadev@us.ibm.com: Fix capability.c to work with threaded init]
      Signed-off-by: NSerge E. Hallyn <serue@us.ibm.com>
      Signed-off-by: NSukadev Bhattiprolu <sukadev@us.ibm.com>
      Acked-by: NPavel Emelianov <xemul@openvz.org>
      Cc: Eric W. Biederman <ebiederm@xmission.com>
      Cc: Cedric Le Goater <clg@fr.ibm.com>
      Cc: Dave Hansen <haveblue@us.ibm.com>
      Cc: Herbert Poetzel <herbert@13thfloor.at>
      Cc: Kirill Korotaev <dev@sw.ru>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      b460cbc5
    • C
      setup vma->vm_page_prot by vm_get_page_prot() · 3ed75eb8
      Coly Li 提交于
      This patch uses vm_get_page_prot() to setup vma->vm_page_prot.
      
      Though inside vm_get_page_prot() the protection flags is AND with
      (VM_READ|VM_WRITE|VM_EXEC|VM_SHARED), it does not hurt correct code.
      Signed-off-by: NColy Li <coyli@suse.de>
      Cc: Hugh Dickins <hugh@veritas.com>
      Cc: Tony Luck <tony.luck@intel.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      3ed75eb8
  23. 17 10月, 2007 7 次提交
  24. 01 9月, 2007 1 次提交
  25. 31 8月, 2007 1 次提交
    • D
      hugepage: fix broken check for offset alignment in hugepage mappings · dec4ad86
      David Gibson 提交于
      For hugepage mappings, the file offset, like the address and size, needs to
      be aligned to the size of a hugepage.
      
      In commit 68589bc3, the check for this was
      moved into prepare_hugepage_range() along with the address and size checks.
       But since BenH's rework of the get_unmapped_area() paths leading up to
      commit 4b1d8929, prepare_hugepage_range()
      is only called for MAP_FIXED mappings, not for other mappings.  This means
      we're no longer ever checking for an aligned offset - I've confirmed that
      mmap() will (apparently) succeed with a misaligned offset on both powerpc
      and i386 at least.
      
      This patch restores the check, removing it from prepare_hugepage_range()
      and putting it back into hugetlbfs_file_mmap().  I'm putting it there,
      rather than in the get_unmapped_area() path so it only needs to go in one
      place, than separately in the half-dozen or so arch-specific
      implementations of hugetlb_get_unmapped_area().
      Signed-off-by: NDavid Gibson <david@gibson.dropbear.id.au>
      Cc: Adam Litke <agl@us.ibm.com>
      Cc: Andi Kleen <ak@suse.de>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      dec4ad86