1. 29 10月, 2009 4 次提交
    • T
      percpu: make percpu symbols in x86 unique · 0fe1e009
      Tejun Heo 提交于
      This patch updates percpu related symbols in x86 such that percpu
      symbols are unique and don't clash with local symbols.  This serves
      two purposes of decreasing the possibility of global percpu symbol
      collision and allowing dropping per_cpu__ prefix from percpu symbols.
      
      * arch/x86/kernel/cpu/common.c: rename local variable to avoid collision
      
      * arch/x86/kvm/svm.c: s/svm_data/sd/ for local variables to avoid collision
      
      * arch/x86/kernel/cpu/cpu_debug.c: s/cpu_arr/cpud_arr/
        				   s/priv_arr/cpud_priv_arr/
      				   s/cpu_priv_count/cpud_priv_count/
      
      * arch/x86/kernel/cpu/intel_cacheinfo.c: s/cpuid4_info/ici_cpuid4_info/
        					 s/cache_kobject/ici_cache_kobject/
      					 s/index_kobject/ici_index_kobject/
      
      * arch/x86/kernel/ds.c: s/cpu_context/cpu_ds_context/
      
      Partly based on Rusty Russell's "alloc_percpu: rename percpu vars
      which cause name clashes" patch.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Acked-by: N(kvm) Avi Kivity <avi@redhat.com>
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: H. Peter Anvin <hpa@zytor.com>
      Cc: Marcelo Tosatti <mtosatti@redhat.com>
      Cc: x86@kernel.org
      0fe1e009
    • T
      percpu: make percpu symbols in xen unique · c6e22f9e
      Tejun Heo 提交于
      This patch updates percpu related symbols in xen such that percpu
      symbols are unique and don't clash with local symbols.  This serves
      two purposes of decreasing the possibility of global percpu symbol
      collision and allowing dropping per_cpu__ prefix from percpu symbols.
      
      * arch/x86/xen/smp.c, arch/x86/xen/time.c, arch/ia64/xen/irq_xen.c:
        add xen_ prefix to percpu variables
      
      * arch/ia64/xen/time.c: add xen_ prefix to percpu variables, drop
        processed_ prefix and make them static
      
      Partly based on Rusty Russell's "alloc_percpu: rename percpu vars
      which cause name clashes" patch.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      Cc: Jeremy Fitzhardinge <jeremy@xensource.com>
      Cc: Chris Wright <chrisw@sous-sol.org>
      c6e22f9e
    • T
      percpu: make percpu symbols in cpufreq unique · f1625066
      Tejun Heo 提交于
      This patch updates percpu related symbols in cpufreq such that percpu
      symbols are unique and don't clash with local symbols.  This serves
      two purposes of decreasing the possibility of global percpu symbol
      collision and allowing dropping per_cpu__ prefix from percpu symbols.
      
      * drivers/cpufreq/cpufreq.c: s/policy_cpu/cpufreq_policy_cpu/
      * drivers/cpufreq/freq_table.c: s/show_table/cpufreq_show_table/
      * arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c: s/drv_data/acfreq_data/
        					      s/old_perf/acfreq_old_perf/
      
      Partly based on Rusty Russell's "alloc_percpu: rename percpu vars
      which cause name clashes" patch.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      f1625066
    • T
      percpu: remove some sparse warnings · 0f5e4816
      Tejun Heo 提交于
      Make the following changes to remove some sparse warnings.
      
      * Make DEFINE_PER_CPU_SECTION() declare __pcpu_unique_* before
        defining it.
      
      * Annotate pcpu_extend_area_map() that it is entered with pcpu_lock
        held, releases it and then reacquires it.
      
      * Make percpu related macros use unique nested variable names.
      
      * While at it, add pcpu prefix to __size_call[_return]() macros as
        to-be-implemented sparse annotations will add percpu specific stuff
        to these macros.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Reviewed-by: NChristoph Lameter <cl@linux-foundation.org>
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      0f5e4816
  2. 12 10月, 2009 1 次提交
  3. 03 10月, 2009 1 次提交
    • C
      this_cpu: Implement X86 optimized this_cpu operations · 30ed1a79
      Christoph Lameter 提交于
      Basically the existing percpu ops can be used for this_cpu variants that allow
      operations also on dynamically allocated percpu data. However, we do not pass a
      reference to a percpu variable in. Instead a dynamically or statically
      allocated percpu variable is provided.
      
      Preempt, the non preempt and the irqsafe operations generate the same code.
      It will always be possible to have the requires per cpu atomicness in a single
      RMW instruction with segment override on x86.
      
      64 bit this_cpu operations are not supported on 32 bit.
      Signed-off-by: NChristoph Lameter <cl@linux-foundation.org>
      Signed-off-by: NTejun Heo <tj@kernel.org>
      30ed1a79
  4. 02 10月, 2009 10 次提交
    • T
      ia64: convert to dynamic percpu allocator · 52594762
      Tejun Heo 提交于
      Unlike other archs, ia64 reserves space for percpu areas during early
      memory initialization.  These areas occupy a contiguous region indexed
      by cpu number on contiguous memory model or are grouped by node on
      discontiguous memory model.
      
      As allocation and initialization are done by the arch code, all that
      setup_per_cpu_areas() needs to do is communicating the determined
      layout to the percpu allocator.  This patch implements
      setup_per_cpu_areas() for both contig and discontig memory models and
      drops HAVE_LEGACY_PER_CPU_AREA.
      
      Please note that for contig model, the allocation itself is modified
      only to allocate for possible cpus instead of NR_CPUS.  As dynamic
      percpu allocator can handle non-direct mapping, there's no reason to
      allocate memory for cpus which aren't possible.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Acked-by: NTony Luck <tony.luck@intel.com>
      Cc: Fenghua Yu <fenghua.yu@intel.com>
      Cc: linux-ia64 <linux-ia64@vger.kernel.org>
      52594762
    • T
      ia64: allocate percpu area for cpu0 like percpu areas for other cpus · 36886478
      Tejun Heo 提交于
      cpu0 used special percpu area reserved by the linker, __cpu0_per_cpu,
      which is set up early in boot by head.S.  However, this doesn't
      guarantee that the area will be on the same node as cpu0 and the
      percpu area for cpu0 ends up very far away from percpu areas for other
      cpus which cause problems for congruent percpu allocator.
      
      This patch makes percpu area initialization allocate percpu area for
      cpu0 like any other cpus and copy it from __cpu0_per_cpu which now
      resides in the __init area.  This means that for cpu0, percpu area is
      first setup at __cpu0_per_cpu early by head.S and then moved to an
      area in the linear mapping during memory initialization and it's not
      allowed to take a pointer to percpu variables between head.S and
      memory initialization.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Acked-by: NTony Luck <tony.luck@intel.com>
      Cc: Fenghua Yu <fenghua.yu@intel.com>
      Cc: linux-ia64 <linux-ia64@vger.kernel.org>
      36886478
    • T
      ia64: initialize cpu maps early · 12cda817
      Tejun Heo 提交于
      All information necessary to initialize cpu possible and present maps
      are available once early_acpi_boot_init() is complete.  Reorganize
      setup_arch() and acpi init functions such that,
      
      * CPU information is printed after LAPIC entries are parsed in
        early_acpi_boot_init().
      
      * smp_build_cpu_map() is called by setup_arch() instead of acpi
        functions.
      
      * smp_build_cpu_map() is called once all CPU related information is
        available before memory is initialized.
      
      This is primarily to allow find_memory() to use cpu maps but is also a
      general cleanup.  Please note that with this change, the somewhat
      ad-hoc early_cpu_possible_map defined and used for NUMA configurations
      is probably unnecessary.  Something to clean up another day.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Acked-by: NTony Luck <tony.luck@intel.com>
      Cc: Fenghua Yu <fenghua.yu@intel.com>
      Cc: linux-ia64 <linux-ia64@vger.kernel.org>
      12cda817
    • T
      ia64: don't alias VMALLOC_END to vmalloc_end · 126b3fcd
      Tejun Heo 提交于
      If CONFIG_VIRTUAL_MEM_MAP is enabled, ia64 defines macro VMALLOC_END
      as unsigned long variable vmalloc_end which is adjusted to prepare
      room for vmemmap.  This becomes probnlematic if a local variables
      vmalloc_end is defined in some function (not very unlikely) and
      VMALLOC_END is used in the function - the function thinks its
      referencing the global VMALLOC_END value but would be referencing its
      own local vmalloc_end variable.
      
      There's no reason VMALLOC_END should be a macro.  Just define it as an
      unsigned long variable if CONFIG_VIRTUAL_MEM_MAP is set to avoid nasty
      surprises.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Acked-by: NTony Luck <tony.luck@intel.com>
      Cc: Fenghua Yu <fenghua.yu@intel.com>
      Cc: linux-ia64 <linux-ia64@vger.kernel.org>
      Cc: Christoph Lameter <cl@linux-foundation.org>
      126b3fcd
    • B
      s3cmci: add better support for no card detect or write protect available · 00acfaee
      Ben Dooks 提交于
      Add better support for omitting either the card detect or the write
      protect GPIOs if the board does not support it.  Add the fields
      no_wprotect and no_detect to the platform data which when set indicate the
      absence of the respective GPIOs.
      
      Note, this also fixes a minor bug where it tries to free IRQ0 if there is
      no detect gpio available.
      Signed-off-by: NBen Dooks <ben@simtec.co.uk>
      Cc: <linux-mmc@vger.kernel.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      00acfaee
    • B
      s3cmci: Kconfig selection for PIO/DMA/Both · 26f14947
      Ben Dooks 提交于
      Add a selection for the data transfer mode of the s3cmci driver, allowing
      for either a configuration or rumtime selection of the use of the DMA or
      PIO transfer code.
      
      The PIO only mode is 476 bytes smaller than the driver with both methods
      compiled in.
      Signed-off-by: NBen Dooks <ben@simtec.co.uk>
      Cc: <linux-mmc@vger.kernel.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      26f14947
    • S
      x86: fix csum_ipv6_magic asm memory clobber · 392d814d
      Samuel Thibault 提交于
      Just like ip_fast_csum, the assembly snippet in csum_ipv6_magic needs a
      memory clobber, as it is only passed the address of the buffer, not a
      memory reference to the buffer itself.
      
      This caused failures in Hurd's pfinetv4 when we tried to compile it with
      gcc-4.3 (bogus checksums).
      Signed-off-by: NSamuel Thibault <samuel.thibault@ens-lyon.org>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Acked-by: N"David S. Miller" <davem@davemloft.net>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: <stable@kernel.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      392d814d
    • M
      mn10300: fix kernel build failures when using gcc-4.x · d22a001b
      Mark Salter 提交于
      Fix some build failures when using gcc-4.x for MN10300.
      
      Firstly, __get_user() fails to build because the pointer points to a const and
      __gu_val ends up being read-only:
      
      In file included from include/linux/mempolicy.h:62,
                       from init/main.c:50:
      include/linux/pagemap.h: In function 'fault_in_pages_readable':
      include/linux/pagemap.h:394: error: read-only variable '__gu_val' used as 'asm' output
      include/linux/pagemap.h:394: error: read-only variable '__gu_val' used as 'asm' output
      include/linux/pagemap.h:394: error: read-only variable '__gu_val' used as 'asm' output
      include/linux/pagemap.h:400: error: read-only variable '__gu_val' used as 'asm' output
      include/linux/pagemap.h:400: error: read-only variable '__gu_val' used as 'asm' output
      include/linux/pagemap.h:400: error: read-only variable '__gu_val' used as 'asm' output
      make[1]: *** [init/main.o] Error 1
      
      Secondly, gcc-4 doesn't allow casts of lvalues:
      
        UPD     include/linux/compile.h
      arch/mn10300/kernel/rtc.c: In function 'calibrate_clock':
      arch/mn10300/kernel/rtc.c:170: error: lvalue required as left operand of assignment
      arch/mn10300/kernel/rtc.c:172: error: lvalue required as left operand of assignment
      make[1]: *** [arch/mn10300/kernel/rtc.o] Error 1
      
      These are seen with gcc 4.2.1.
      Signed-off-by: NMark Salter <msalter@redhat.com>
      Signed-off-by: NDavid Howells <dhowells@redhat.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      d22a001b
    • A
      revert "m68k: convert to asm-generic/hardirq.h" · a28b3dc9
      Andrew Morton 提交于
      Revert 45d80eea ("m68k: convert to
      asm-generic/hardirq.h") - it fails to compile due to an inclusion tangle:
      
      In file included from include/linux/irq.h:12,
                       from include/asm-generic/hardirq.h:6,
                       from /usr/src/devel/arch/m68k/include/asm/hardirq_mm.h:6,
                       from /usr/src/devel/arch/m68k/include/asm/hardirq.h:4,
                       from include/linux/hardirq.h:10,
                       from /usr/src/devel/arch/m68k/include/asm/system_mm.h:69,
                       from /usr/src/devel/arch/m68k/include/asm/system.h:4,
                       from include/linux/list.h:7,
                       from include/linux/preempt.h:11,
                       from include/linux/spinlock.h:50,
                       from include/linux/seqlock.h:29,
                       from include/linux/time.h:8,
                       from include/linux/timex.h:56,
                       from include/linux/sched.h:56,
                       from arch/m68k/kernel/asm-offsets.c:14:
      include/linux/smp.h:17: error: field 'list' has incomplete type
      
      Cc: Christoph Hellwig <hch@lst.de>
      Cc: Geert Uytterhoeven <geert@linux-m68k.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      a28b3dc9
    • A
      const: constify remaining file_operations · 828c0950
      Alexey Dobriyan 提交于
      [akpm@linux-foundation.org: fix KVM]
      Signed-off-by: NAlexey Dobriyan <adobriyan@gmail.com>
      Acked-by: NMike Frysinger <vapier@gentoo.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      828c0950
  5. 01 10月, 2009 19 次提交
  6. 30 9月, 2009 1 次提交
  7. 29 9月, 2009 2 次提交
  8. 28 9月, 2009 2 次提交