1. 17 8月, 2012 3 次提交
  2. 01 11月, 2011 1 次提交
  3. 24 7月, 2011 1 次提交
  4. 19 1月, 2011 1 次提交
  5. 14 1月, 2011 1 次提交
    • D
      mm: unify module_alloc code for vmalloc · d0a21265
      David Rientjes 提交于
      Four architectures (arm, mips, sparc, x86) use __vmalloc_area() for
      module_init().  Much of the code is duplicated and can be generalized in a
      globally accessible function, __vmalloc_node_range().
      
      __vmalloc_node() now calls into __vmalloc_node_range() with a range of
      [VMALLOC_START, VMALLOC_END) for functionally equivalent behavior.
      
      Each architecture may then use __vmalloc_node_range() directly to remove
      the duplication of code.
      Signed-off-by: NDavid Rientjes <rientjes@google.com>
      Cc: Christoph Lameter <cl@linux.com>
      Cc: Russell King <linux@arm.linux.org.uk>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      d0a21265
  6. 04 8月, 2009 2 次提交
  7. 12 6月, 2009 1 次提交
  8. 25 7月, 2008 1 次提交
    • A
      PAGE_ALIGN(): correctly handle 64-bit values on 32-bit architectures · 27ac792c
      Andrea Righi 提交于
      On 32-bit architectures PAGE_ALIGN() truncates 64-bit values to the 32-bit
      boundary. For example:
      
      	u64 val = PAGE_ALIGN(size);
      
      always returns a value < 4GB even if size is greater than 4GB.
      
      The problem resides in PAGE_MASK definition (from include/asm-x86/page.h for
      example):
      
      #define PAGE_SHIFT      12
      #define PAGE_SIZE       (_AC(1,UL) << PAGE_SHIFT)
      #define PAGE_MASK       (~(PAGE_SIZE-1))
      ...
      #define PAGE_ALIGN(addr)       (((addr)+PAGE_SIZE-1)&PAGE_MASK)
      
      The "~" is performed on a 32-bit value, so everything in "and" with
      PAGE_MASK greater than 4GB will be truncated to the 32-bit boundary.
      Using the ALIGN() macro seems to be the right way, because it uses
      typeof(addr) for the mask.
      
      Also move the PAGE_ALIGN() definitions out of include/asm-*/page.h in
      include/linux/mm.h.
      
      See also lkml discussion: http://lkml.org/lkml/2008/6/11/237
      
      [akpm@linux-foundation.org: fix drivers/media/video/uvc/uvc_queue.c]
      [akpm@linux-foundation.org: fix v850]
      [akpm@linux-foundation.org: fix powerpc]
      [akpm@linux-foundation.org: fix arm]
      [akpm@linux-foundation.org: fix mips]
      [akpm@linux-foundation.org: fix drivers/media/video/pvrusb2/pvrusb2-dvb.c]
      [akpm@linux-foundation.org: fix drivers/mtd/maps/uclinux.c]
      [akpm@linux-foundation.org: fix powerpc]
      Signed-off-by: NAndrea Righi <righi.andrea@gmail.com>
      Cc: <linux-arch@vger.kernel.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      27ac792c
  9. 20 10月, 2007 1 次提交
  10. 30 11月, 2006 1 次提交
    • A
      [MIPS] Load modules to CKSEG0 if CONFIG_BUILD_ELF64=n · 656be92f
      Atsushi Nemoto 提交于
      This is a patch to load 64-bit modules to CKSEG0 so that can be
      compiled with -msym32 option.  This makes each module ~10% smaller.
      
      * introduce MODULE_START and MODULE_END
      * custom module_alloc()
      * PGD for modules
      * change XTLB refill handler synthesizer
      * enable -msym32 for modules again
        (revert ca78b1a5c6a6e70e052d3ea253828e49b5d07c8a)
      
      New XTLB refill handler looks like this:
      
      80000080 dmfc0   k0,C0_BADVADDR
      80000084 bltz    k0,800000e4			# goto l_module_alloc
      80000088 lui     k1,0x8046			# %high(pgd_current)
      8000008c ld      k1,24600(k1)			# %low(pgd_current)
      80000090 dsrl    k0,k0,0x1b			# l_vmalloc_done:
      80000094 andi    k0,k0,0x1ff8
      80000098 daddu   k1,k1,k0
      8000009c dmfc0   k0,C0_BADVADDR
      800000a0 ld      k1,0(k1)
      800000a4 dsrl    k0,k0,0x12
      800000a8 andi    k0,k0,0xff8
      800000ac daddu   k1,k1,k0
      800000b0 dmfc0   k0,C0_XCONTEXT
      800000b4 ld      k1,0(k1)
      800000b8 andi    k0,k0,0xff0
      800000bc daddu   k1,k1,k0
      800000c0 ld      k0,0(k1)
      800000c4 ld      k1,8(k1)
      800000c8 dsrl    k0,k0,0x6
      800000cc mtc0    k0,C0_ENTRYLO0
      800000d0 dsrl    k1,k1,0x6
      800000d4 mtc0    k1,C0_ENTRYL01
      800000d8 nop
      800000dc tlbwr
      800000e0 eret
      800000e4 dsll    k1,k0,0x2			# l_module_alloc:
      800000e8 bgez    k1,80000008			# goto l_vmalloc
      800000ec lui     k1,0xc000
      800000f0 dsubu   k0,k0,k1
      800000f4 lui     k1,0x8046			# %high(module_pg_dir)
      800000f8 beq     zero,zero,80000000
      800000fc nop
      80000000 beq     zero,zero,80000090		# goto l_vmalloc_done
      80000004 daddiu  k1,k1,0x4000
      80000008 dsll32  k1,k1,0x0			# l_vmalloc:
      8000000c dsubu   k0,k0,k1
      80000010 beq     zero,zero,80000090		# goto l_vmalloc_done
      80000014 lui     k1,0x8046			# %high(swapper_pg_dir)
      Signed-off-by: NAtsushi Nemoto <anemo@mba.ocn.ne.jp>
      Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      656be92f
  11. 06 6月, 2006 1 次提交
  12. 30 10月, 2005 1 次提交
  13. 17 4月, 2005 1 次提交
    • L
      Linux-2.6.12-rc2 · 1da177e4
      Linus Torvalds 提交于
      Initial git repository build. I'm not bothering with the full history,
      even though we have it. We can create a separate "historical" git
      archive of that later if we want to, and in the meantime it's about
      3.2GB when imported into git - space that would just make the early
      git days unnecessarily complicated, when we don't have a lot of good
      infrastructure for it.
      
      Let it rip!
      1da177e4