Patches contributed by Eötvös Lorand University


commit 34cb61359b503d7aff6447acb037a5efd6ce93b2
Author: Ingo Molnar <mingo@elte.hu>
Date:   Fri Jan 16 13:36:06 2009 +0100

    sched: fix !CONFIG_SCHEDSTATS build failure
    
    Stephen Rothwell reported this linux-next build failure with !CONFIG_SCHEDSTATS:
    
    | In file included from kernel/sched.c:1703:
    | kernel/sched_fair.c: In function 'adaptive_gran':
    | kernel/sched_fair.c:1324: error: 'struct sched_entity' has no member named 'avg_wakeup'
    
    The start_runtime and avg_wakeup metrics are now not just for statistics,
    but also for scheduling - so they always need to be available. (Also
    move out the nr_migrations fields - for future perfcounters usage.)
    
    Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
    Signed-off-by: Ingo Molnar <mingo@elte.hu>

diff --git a/include/linux/sched.h b/include/linux/sched.h
index daf4e07bc978..5d56b54350a5 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -1031,6 +1031,10 @@ struct sched_entity {
 	u64			last_wakeup;
 	u64			avg_overlap;
 
+	u64			start_runtime;
+	u64			avg_wakeup;
+	u64			nr_migrations;
+
 #ifdef CONFIG_SCHEDSTATS
 	u64			wait_start;
 	u64			wait_max;
@@ -1046,10 +1050,6 @@ struct sched_entity {
 	u64			exec_max;
 	u64			slice_max;
 
-	u64			start_runtime;
-	u64			avg_wakeup;
-
-	u64			nr_migrations;
 	u64			nr_migrations_cold;
 	u64			nr_failed_migrations_affine;
 	u64			nr_failed_migrations_running;

commit af2519fb2298cdf7540082c36f4d8c66bbff103f
Merge: 961d7d0ee515 7cb36b6ccdca
Author: Ingo Molnar <mingo@elte.hu>
Date:   Fri Jan 16 10:09:10 2009 +0100

    Merge branch 'linus' into core/iommu
    
    Conflicts:
            arch/ia64/include/asm/dma-mapping.h
            arch/ia64/include/asm/machvec.h
            arch/ia64/include/asm/machvec_sn2.h

diff --cc arch/ia64/include/asm/dma-mapping.h
index f4d4b1850a7e,1f912d927585..abe52575e905
--- a/arch/ia64/include/asm/dma-mapping.h
+++ b/arch/ia64/include/asm/dma-mapping.h
@@@ -9,7 -9,47 +9,9 @@@
  #include <linux/scatterlist.h>
  #include <asm/swiotlb.h>
  
+ #define ARCH_HAS_DMA_GET_REQUIRED_MASK
+ 
 -struct dma_mapping_ops {
 -	int             (*mapping_error)(struct device *dev,
 -					 dma_addr_t dma_addr);
 -	void*           (*alloc_coherent)(struct device *dev, size_t size,
 -				dma_addr_t *dma_handle, gfp_t gfp);
 -	void            (*free_coherent)(struct device *dev, size_t size,
 -				void *vaddr, dma_addr_t dma_handle);
 -	dma_addr_t      (*map_single)(struct device *hwdev, unsigned long ptr,
 -				size_t size, int direction);
 -	void            (*unmap_single)(struct device *dev, dma_addr_t addr,
 -				size_t size, int direction);
 -	void            (*sync_single_for_cpu)(struct device *hwdev,
 -				dma_addr_t dma_handle, size_t size,
 -				int direction);
 -	void            (*sync_single_for_device)(struct device *hwdev,
 -				dma_addr_t dma_handle, size_t size,
 -				int direction);
 -	void            (*sync_single_range_for_cpu)(struct device *hwdev,
 -				dma_addr_t dma_handle, unsigned long offset,
 -				size_t size, int direction);
 -	void            (*sync_single_range_for_device)(struct device *hwdev,
 -				dma_addr_t dma_handle, unsigned long offset,
 -				size_t size, int direction);
 -	void            (*sync_sg_for_cpu)(struct device *hwdev,
 -				struct scatterlist *sg, int nelems,
 -				int direction);
 -	void            (*sync_sg_for_device)(struct device *hwdev,
 -				struct scatterlist *sg, int nelems,
 -				int direction);
 -	int             (*map_sg)(struct device *hwdev, struct scatterlist *sg,
 -				int nents, int direction);
 -	void            (*unmap_sg)(struct device *hwdev,
 -				struct scatterlist *sg, int nents,
 -				int direction);
 -	int             (*dma_supported_op)(struct device *hwdev, u64 mask);
 -	int		is_phys;
 -};
 -
 -extern struct dma_mapping_ops *dma_ops;
 +extern struct dma_map_ops *dma_ops;
  extern struct ia64_machine_vector ia64_mv;
  extern void set_iommu_machvec(void);
  
diff --cc arch/ia64/include/asm/machvec.h
index 22a75fb55adb,fe87b2121707..367d299d9938
--- a/arch/ia64/include/asm/machvec.h
+++ b/arch/ia64/include/asm/machvec.h
@@@ -44,7 -45,24 +44,8 @@@ typedef void ia64_mv_kernel_launch_even
  
  /* DMA-mapping interface: */
  typedef void ia64_mv_dma_init (void);
 -typedef void *ia64_mv_dma_alloc_coherent (struct device *, size_t, dma_addr_t *, gfp_t);
 -typedef void ia64_mv_dma_free_coherent (struct device *, size_t, void *, dma_addr_t);
 -typedef dma_addr_t ia64_mv_dma_map_single (struct device *, void *, size_t, int);
 -typedef void ia64_mv_dma_unmap_single (struct device *, dma_addr_t, size_t, int);
 -typedef int ia64_mv_dma_map_sg (struct device *, struct scatterlist *, int, int);
 -typedef void ia64_mv_dma_unmap_sg (struct device *, struct scatterlist *, int, int);
 -typedef void ia64_mv_dma_sync_single_for_cpu (struct device *, dma_addr_t, size_t, int);
 -typedef void ia64_mv_dma_sync_sg_for_cpu (struct device *, struct scatterlist *, int, int);
 -typedef void ia64_mv_dma_sync_single_for_device (struct device *, dma_addr_t, size_t, int);
 -typedef void ia64_mv_dma_sync_sg_for_device (struct device *, struct scatterlist *, int, int);
 -typedef int ia64_mv_dma_mapping_error(struct device *, dma_addr_t dma_addr);
 -typedef int ia64_mv_dma_supported (struct device *, u64);
 -
 -typedef dma_addr_t ia64_mv_dma_map_single_attrs (struct device *, void *, size_t, int, struct dma_attrs *);
 -typedef void ia64_mv_dma_unmap_single_attrs (struct device *, dma_addr_t, size_t, int, struct dma_attrs *);
 -typedef int ia64_mv_dma_map_sg_attrs (struct device *, struct scatterlist *, int, int, struct dma_attrs *);
 -typedef void ia64_mv_dma_unmap_sg_attrs (struct device *, struct scatterlist *, int, int, struct dma_attrs *);
+ typedef u64 ia64_mv_dma_get_required_mask (struct device *);
 +typedef struct dma_map_ops *ia64_mv_dma_get_ops(struct device *);
  
  /*
   * WARNING: The legacy I/O space is _architected_.  Platforms are
@@@ -128,7 -148,19 +129,8 @@@ extern void machvec_tlb_migrate_finish 
  #  define platform_global_tlb_purge	ia64_mv.global_tlb_purge
  #  define platform_tlb_migrate_finish	ia64_mv.tlb_migrate_finish
  #  define platform_dma_init		ia64_mv.dma_init
 -#  define platform_dma_alloc_coherent	ia64_mv.dma_alloc_coherent
 -#  define platform_dma_free_coherent	ia64_mv.dma_free_coherent
 -#  define platform_dma_map_single_attrs	ia64_mv.dma_map_single_attrs
 -#  define platform_dma_unmap_single_attrs	ia64_mv.dma_unmap_single_attrs
 -#  define platform_dma_map_sg_attrs	ia64_mv.dma_map_sg_attrs
 -#  define platform_dma_unmap_sg_attrs	ia64_mv.dma_unmap_sg_attrs
 -#  define platform_dma_sync_single_for_cpu ia64_mv.dma_sync_single_for_cpu
 -#  define platform_dma_sync_sg_for_cpu	ia64_mv.dma_sync_sg_for_cpu
 -#  define platform_dma_sync_single_for_device ia64_mv.dma_sync_single_for_device
 -#  define platform_dma_sync_sg_for_device ia64_mv.dma_sync_sg_for_device
 -#  define platform_dma_mapping_error		ia64_mv.dma_mapping_error
 -#  define platform_dma_supported	ia64_mv.dma_supported
+ #  define platform_dma_get_required_mask ia64_mv.dma_get_required_mask
 +#  define platform_dma_get_ops		ia64_mv.dma_get_ops
  #  define platform_irq_to_vector	ia64_mv.irq_to_vector
  #  define platform_local_vector_to_irq	ia64_mv.local_vector_to_irq
  #  define platform_pci_get_legacy_mem	ia64_mv.pci_get_legacy_mem
@@@ -171,7 -203,19 +173,8 @@@ struct ia64_machine_vector 
  	ia64_mv_global_tlb_purge_t *global_tlb_purge;
  	ia64_mv_tlb_migrate_finish_t *tlb_migrate_finish;
  	ia64_mv_dma_init *dma_init;
 -	ia64_mv_dma_alloc_coherent *dma_alloc_coherent;
 -	ia64_mv_dma_free_coherent *dma_free_coherent;
 -	ia64_mv_dma_map_single_attrs *dma_map_single_attrs;
 -	ia64_mv_dma_unmap_single_attrs *dma_unmap_single_attrs;
 -	ia64_mv_dma_map_sg_attrs *dma_map_sg_attrs;
 -	ia64_mv_dma_unmap_sg_attrs *dma_unmap_sg_attrs;
 -	ia64_mv_dma_sync_single_for_cpu *dma_sync_single_for_cpu;
 -	ia64_mv_dma_sync_sg_for_cpu *dma_sync_sg_for_cpu;
 -	ia64_mv_dma_sync_single_for_device *dma_sync_single_for_device;
 -	ia64_mv_dma_sync_sg_for_device *dma_sync_sg_for_device;
 -	ia64_mv_dma_mapping_error *dma_mapping_error;
 -	ia64_mv_dma_supported *dma_supported;
+ 	ia64_mv_dma_get_required_mask *dma_get_required_mask;
 +	ia64_mv_dma_get_ops *dma_get_ops;
  	ia64_mv_irq_to_vector *irq_to_vector;
  	ia64_mv_local_vector_to_irq *local_vector_to_irq;
  	ia64_mv_pci_get_legacy_mem_t *pci_get_legacy_mem;
@@@ -210,7 -254,19 +213,8 @@@
  	platform_global_tlb_purge,		\
  	platform_tlb_migrate_finish,		\
  	platform_dma_init,			\
 -	platform_dma_alloc_coherent,		\
 -	platform_dma_free_coherent,		\
 -	platform_dma_map_single_attrs,		\
 -	platform_dma_unmap_single_attrs,	\
 -	platform_dma_map_sg_attrs,		\
 -	platform_dma_unmap_sg_attrs,		\
 -	platform_dma_sync_single_for_cpu,	\
 -	platform_dma_sync_sg_for_cpu,		\
 -	platform_dma_sync_single_for_device,	\
 -	platform_dma_sync_sg_for_device,	\
 -	platform_dma_mapping_error,			\
 -	platform_dma_supported,			\
+ 	platform_dma_get_required_mask,		\
 +	platform_dma_get_ops,			\
  	platform_irq_to_vector,			\
  	platform_local_vector_to_irq,		\
  	platform_pci_get_legacy_mem,		\
@@@ -279,11 -332,47 +283,14 @@@ extern struct dma_map_ops *dma_get_ops(
  # define platform_kernel_launch_event	machvec_noop
  #endif
  #ifndef platform_dma_init
 -# define platform_dma_init		swiotlb_init
 -#endif
 -#ifndef platform_dma_alloc_coherent
 -# define platform_dma_alloc_coherent	swiotlb_alloc_coherent
 -#endif
 -#ifndef platform_dma_free_coherent
 -# define platform_dma_free_coherent	swiotlb_free_coherent
 -#endif
 -#ifndef platform_dma_map_single_attrs
 -# define platform_dma_map_single_attrs	swiotlb_map_single_attrs
 -#endif
 -#ifndef platform_dma_unmap_single_attrs
 -# define platform_dma_unmap_single_attrs	swiotlb_unmap_single_attrs
 -#endif
 -#ifndef platform_dma_map_sg_attrs
 -# define platform_dma_map_sg_attrs	swiotlb_map_sg_attrs
 -#endif
 -#ifndef platform_dma_unmap_sg_attrs
 -# define platform_dma_unmap_sg_attrs	swiotlb_unmap_sg_attrs
 -#endif
 -#ifndef platform_dma_sync_single_for_cpu
 -# define platform_dma_sync_single_for_cpu	swiotlb_sync_single_for_cpu
 -#endif
 -#ifndef platform_dma_sync_sg_for_cpu
 -# define platform_dma_sync_sg_for_cpu		swiotlb_sync_sg_for_cpu
 -#endif
 -#ifndef platform_dma_sync_single_for_device
 -# define platform_dma_sync_single_for_device	swiotlb_sync_single_for_device
 -#endif
 -#ifndef platform_dma_sync_sg_for_device
 -# define platform_dma_sync_sg_for_device	swiotlb_sync_sg_for_device
 -#endif
 -#ifndef platform_dma_mapping_error
 -# define platform_dma_mapping_error		swiotlb_dma_mapping_error
 +# define platform_dma_init		swiotlb_dma_init
  #endif
 -#ifndef platform_dma_supported
 -# define  platform_dma_supported	swiotlb_dma_supported
 +#ifndef platform_dma_get_ops
 +# define platform_dma_get_ops		dma_get_ops
  #endif
+ #ifndef platform_dma_get_required_mask
+ # define  platform_dma_get_required_mask	ia64_dma_get_required_mask
+ #endif
  #ifndef platform_irq_to_vector
  # define platform_irq_to_vector		__ia64_irq_to_vector
  #endif
diff --cc arch/ia64/include/asm/machvec_sn2.h
index afd029b4797e,f1a6e0d6dfa5..f061a30aac42
--- a/arch/ia64/include/asm/machvec_sn2.h
+++ b/arch/ia64/include/asm/machvec_sn2.h
@@@ -55,7 -55,19 +55,8 @@@ extern ia64_mv_readb_t __sn_readb_relax
  extern ia64_mv_readw_t __sn_readw_relaxed;
  extern ia64_mv_readl_t __sn_readl_relaxed;
  extern ia64_mv_readq_t __sn_readq_relaxed;
 -extern ia64_mv_dma_alloc_coherent	sn_dma_alloc_coherent;
 -extern ia64_mv_dma_free_coherent	sn_dma_free_coherent;
 -extern ia64_mv_dma_map_single_attrs	sn_dma_map_single_attrs;
 -extern ia64_mv_dma_unmap_single_attrs	sn_dma_unmap_single_attrs;
 -extern ia64_mv_dma_map_sg_attrs		sn_dma_map_sg_attrs;
 -extern ia64_mv_dma_unmap_sg_attrs	sn_dma_unmap_sg_attrs;
 -extern ia64_mv_dma_sync_single_for_cpu	sn_dma_sync_single_for_cpu;
 -extern ia64_mv_dma_sync_sg_for_cpu	sn_dma_sync_sg_for_cpu;
 -extern ia64_mv_dma_sync_single_for_device sn_dma_sync_single_for_device;
 -extern ia64_mv_dma_sync_sg_for_device	sn_dma_sync_sg_for_device;
 -extern ia64_mv_dma_mapping_error	sn_dma_mapping_error;
 -extern ia64_mv_dma_supported		sn_dma_supported;
+ extern ia64_mv_dma_get_required_mask	sn_dma_get_required_mask;
 +extern ia64_mv_dma_init			sn_dma_init;
  extern ia64_mv_migrate_t		sn_migrate;
  extern ia64_mv_kernel_launch_event_t	sn_kernel_launch_event;
  extern ia64_mv_setup_msi_irq_t		sn_setup_msi_irq;
@@@ -99,7 -111,20 +100,8 @@@ extern ia64_mv_pci_fixup_bus_t		sn_pci_
  #define platform_pci_get_legacy_mem	sn_pci_get_legacy_mem
  #define platform_pci_legacy_read	sn_pci_legacy_read
  #define platform_pci_legacy_write	sn_pci_legacy_write
 -#define platform_dma_init		machvec_noop
 -#define platform_dma_alloc_coherent	sn_dma_alloc_coherent
 -#define platform_dma_free_coherent	sn_dma_free_coherent
 -#define platform_dma_map_single_attrs	sn_dma_map_single_attrs
 -#define platform_dma_unmap_single_attrs	sn_dma_unmap_single_attrs
 -#define platform_dma_map_sg_attrs	sn_dma_map_sg_attrs
 -#define platform_dma_unmap_sg_attrs	sn_dma_unmap_sg_attrs
 -#define platform_dma_sync_single_for_cpu sn_dma_sync_single_for_cpu
 -#define platform_dma_sync_sg_for_cpu	sn_dma_sync_sg_for_cpu
 -#define platform_dma_sync_single_for_device sn_dma_sync_single_for_device
 -#define platform_dma_sync_sg_for_device	sn_dma_sync_sg_for_device
 -#define platform_dma_mapping_error		sn_dma_mapping_error
 -#define platform_dma_supported		sn_dma_supported
+ #define platform_dma_get_required_mask	sn_dma_get_required_mask
 +#define platform_dma_init		sn_dma_init
  #define platform_migrate		sn_migrate
  #define platform_kernel_launch_event    sn_kernel_launch_event
  #ifdef CONFIG_PCI_MSI
diff --cc arch/ia64/sn/pci/pci_dma.c
index 9c788f9cedfd,863f5017baae..8c130e8f00e1
--- a/arch/ia64/sn/pci/pci_dma.c
+++ b/arch/ia64/sn/pci/pci_dma.c
@@@ -346,7 -354,14 +346,13 @@@ static int sn_dma_mapping_error(struct 
  {
  	return 0;
  }
 -EXPORT_SYMBOL(sn_dma_mapping_error);
  
+ u64 sn_dma_get_required_mask(struct device *dev)
+ {
+ 	return DMA_64BIT_MASK;
+ }
+ EXPORT_SYMBOL_GPL(sn_dma_get_required_mask);
+ 
  char *sn_pci_get_legacy_mem(struct pci_bus *bus)
  {
  	if (!SN_PCIBUS_BUSSOFT(bus))

commit c847a9c7139cd500eb1355367c43aba6aef62a71
Merge: 5cd7376200be f2a082711905
Author: Ingo Molnar <mingo@elte.hu>
Date:   Thu Jan 15 18:37:07 2009 +0100

    Merge branch 'master' of ssh://master.kernel.org/pub/scm/linux/kernel/git/travis/linux-2.6-cpus4096-for-ingo into cpus4096

commit 5cd7376200be7b8bab085557ff5876b04bd84191
Author: Ingo Molnar <mingo@elte.hu>
Date:   Thu Jan 15 15:46:08 2009 +0100

    fix: crash: IP: __bitmap_intersects+0x48/0x73
    
    -tip testing found this crash:
    
    > [   35.258515] calling  acpi_cpufreq_init+0x0/0x127 @ 1
    > [   35.264127] BUG: unable to handle kernel NULL pointer dereference at (null)
    > [   35.267554] IP: [<ffffffff80478092>] __bitmap_intersects+0x48/0x73
    > [   35.267554] PGD 0
    > [   35.267554] Oops: 0000 [#1] SMP DEBUG_PAGEALLOC
    
    arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c is still broken: there's no
    allocation of the variable mask, so we pass in an uninitialized cmd.mask
    field to drv_read(), which then passes it to the scheduler which then
    crashes ...
    
    Switch it over to the much simpler constant-cpumask-pointers approach.
    
    Signed-off-by: Ingo Molnar <mingo@elte.hu>

diff --git a/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c b/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c
index 6f11e029e8c5..019276717a7f 100644
--- a/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c
+++ b/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c
@@ -145,7 +145,7 @@ typedef union {
 
 struct drv_cmd {
 	unsigned int type;
-	cpumask_var_t mask;
+	const struct cpumask *mask;
 	drv_addr_union addr;
 	u32 val;
 };
@@ -235,8 +235,7 @@ static u32 get_cur_val(const struct cpumask *mask)
 		return 0;
 	}
 
-	cpumask_copy(cmd.mask, mask);
-
+	cmd.mask = mask;
 	drv_read(&cmd);
 
 	dprintk("get_cur_val = %u\n", cmd.val);
@@ -403,9 +402,6 @@ static int acpi_cpufreq_target(struct cpufreq_policy *policy,
 		return -ENODEV;
 	}
 
-	if (unlikely(!alloc_cpumask_var(&cmd.mask, GFP_KERNEL)))
-		return -ENOMEM;
-
 	perf = data->acpi_data;
 	result = cpufreq_frequency_table_target(policy,
 						data->freq_table,
@@ -450,9 +446,9 @@ static int acpi_cpufreq_target(struct cpufreq_policy *policy,
 
 	/* cpufreq holds the hotplug lock, so we are safe from here on */
 	if (policy->shared_type != CPUFREQ_SHARED_TYPE_ANY)
-		cpumask_and(cmd.mask, cpu_online_mask, policy->cpus);
+		cmd.mask = policy->cpus;
 	else
-		cpumask_copy(cmd.mask, cpumask_of(policy->cpu));
+		cmd.mask = cpumask_of(policy->cpu);
 
 	freqs.old = perf->states[perf->state].core_frequency * 1000;
 	freqs.new = data->freq_table[next_state].frequency;
@@ -479,7 +475,6 @@ static int acpi_cpufreq_target(struct cpufreq_policy *policy,
 	perf->state = next_perf_state;
 
 out:
-	free_cpumask_var(cmd.mask);
 	return result;
 }
 

commit 49a93bc978b4b3d564f6b330179b4cc2724a031d
Merge: 54da5b3d4423 a6525042bfdf
Author: Ingo Molnar <mingo@elte.hu>
Date:   Thu Jan 15 15:45:31 2009 +0100

    Merge branch 'linus' into cpus4096

commit 7f268f4352cd7d3d18a20268887600aaebd9d974
Merge: a6525042bfdf 54da5b3d4423 b665967979d0 a08c4743ed5b
Author: Ingo Molnar <mingo@elte.hu>
Date:   Thu Jan 15 13:18:57 2009 +0100

    Merge branches 'cpus4096', 'x86/cleanups' and 'x86/urgent' into x86/percpu

commit 54da5b3d44238eeb7417bacf792fb416d473bf4d
Author: Ingo Molnar <mingo@elte.hu>
Date:   Thu Jan 15 13:04:58 2009 +0100

    x86: fix broken flush_tlb_others_ipi(), fix
    
    Impact: cleanup
    
    Use the proper type.
    
    Signed-off-by: Ingo Molnar <mingo@elte.hu>

diff --git a/arch/x86/kernel/tlb_64.c b/arch/x86/kernel/tlb_64.c
index 54ee2ecb5e26..7f4141d3b661 100644
--- a/arch/x86/kernel/tlb_64.c
+++ b/arch/x86/kernel/tlb_64.c
@@ -188,7 +188,8 @@ static void flush_tlb_others_ipi(const struct cpumask *cpumask,
 	 * We have to send the IPI only to
 	 * CPUs affected.
 	 */
-	send_IPI_mask(f->flush_cpumask, INVALIDATE_TLB_VECTOR_START + sender);
+	send_IPI_mask(to_cpumask(f->flush_cpumask),
+		      INVALIDATE_TLB_VECTOR_START + sender);
 
 	while (!cpumask_empty(to_cpumask(f->flush_cpumask)))
 		cpu_relax();

commit 55922173f1f63903b6de03711ab8ff980cbe58d2
Author: Ingo Molnar <mingo@elte.hu>
Date:   Thu Jan 15 11:31:21 2009 +0100

    tracing: trace_stat.c cleanup
    
    Impact: cleanup
    
    - whitespace / code alignment cleanups
    - avoid unnecessary forward prototype by reordering functions
    
    Signed-off-by: Ingo Molnar <mingo@elte.hu>

diff --git a/kernel/trace/trace_stat.c b/kernel/trace/trace_stat.c
index 2110cea2ece3..eae9cef39291 100644
--- a/kernel/trace/trace_stat.c
+++ b/kernel/trace/trace_stat.c
@@ -17,16 +17,16 @@
 
 /* List of stat entries from a tracer */
 struct trace_stat_list {
-	struct list_head 	list;
-	void 			*stat;
+	struct list_head	list;
+	void			*stat;
 };
 
 /* A stat session is the stats output in one file */
 struct tracer_stat_session {
 	struct list_head	session_list;
-	struct tracer_stat 	*ts;
-	struct list_head 	stat_list;
-	struct mutex 		stat_mutex;
+	struct tracer_stat	*ts;
+	struct list_head	stat_list;
+	struct mutex		stat_mutex;
 	struct dentry		*file;
 };
 
@@ -35,7 +35,7 @@ static LIST_HEAD(all_stat_sessions);
 static DEFINE_MUTEX(all_stat_sessions_mutex);
 
 /* The root directory for all stat files */
-static struct dentry *stat_dir;
+static struct dentry		*stat_dir;
 
 
 static void reset_stat_session(struct tracer_stat_session *session)
@@ -56,71 +56,6 @@ static void destroy_session(struct tracer_stat_session *session)
 	kfree(session);
 }
 
-
-static int init_stat_file(struct tracer_stat_session *session);
-
-int register_stat_tracer(struct tracer_stat *trace)
-{
-	struct tracer_stat_session *session, *node, *tmp;
-	int ret;
-
-	if (!trace)
-		return -EINVAL;
-
-	if (!trace->stat_start || !trace->stat_next || !trace->stat_show)
-		return -EINVAL;
-
-	/* Already registered? */
-	mutex_lock(&all_stat_sessions_mutex);
-	list_for_each_entry_safe(node, tmp, &all_stat_sessions, session_list) {
-		if (node->ts == trace) {
-			mutex_unlock(&all_stat_sessions_mutex);
-			return -EINVAL;
-		}
-	}
-	mutex_unlock(&all_stat_sessions_mutex);
-
-	/* Init the session */
-	session = kmalloc(sizeof(struct tracer_stat_session), GFP_KERNEL);
-	if (!session)
-		return -ENOMEM;
-
-	session->ts = trace;
-	INIT_LIST_HEAD(&session->session_list);
-	INIT_LIST_HEAD(&session->stat_list);
-	mutex_init(&session->stat_mutex);
-	session->file = NULL;
-
-	ret = init_stat_file(session);
-	if (ret) {
-		destroy_session(session);
-		return ret;
-	}
-
-	/* Register */
-	mutex_lock(&all_stat_sessions_mutex);
-	list_add_tail(&session->session_list, &all_stat_sessions);
-	mutex_unlock(&all_stat_sessions_mutex);
-
-	return 0;
-}
-
-void unregister_stat_tracer(struct tracer_stat *trace)
-{
-	struct tracer_stat_session *node, *tmp;
-
-	mutex_lock(&all_stat_sessions_mutex);
-	list_for_each_entry_safe(node, tmp, &all_stat_sessions, session_list) {
-		if (node->ts == trace) {
-			list_del(&node->session_list);
-			destroy_session(node);
-			break;
-		}
-	}
-	mutex_unlock(&all_stat_sessions_mutex);
-}
-
-
 /*
  * For tracers that don't provide a stat_cmp callback.
  * This one will force an immediate insertion on tail of
@@ -252,10 +187,10 @@ static int stat_seq_show(struct seq_file *s, void *v)
 }
 
 static const struct seq_operations trace_stat_seq_ops = {
-	.start = stat_seq_start,
-	.next = stat_seq_next,
-	.stop = stat_seq_stop,
-	.show = stat_seq_show
+	.start		= stat_seq_start,
+	.next		= stat_seq_next,
+	.stop		= stat_seq_stop,
+	.show		= stat_seq_show
 };
 
 /* The session stat is refilled and resorted at each stat file opening */
@@ -275,7 +210,6 @@ static int tracing_stat_open(struct inode *inode, struct file *file)
 	return ret;
 }
 
-
 /*
  * Avoid consuming memory with our now useless list.
  */
@@ -322,3 +256,64 @@ static int init_stat_file(struct tracer_stat_session *session)
 		return -ENOMEM;
 	return 0;
 }
+
+int register_stat_tracer(struct tracer_stat *trace)
+{
+	struct tracer_stat_session *session, *node, *tmp;
+	int ret;
+
+	if (!trace)
+		return -EINVAL;
+
+	if (!trace->stat_start || !trace->stat_next || !trace->stat_show)
+		return -EINVAL;
+
+	/* Already registered? */
+	mutex_lock(&all_stat_sessions_mutex);
+	list_for_each_entry_safe(node, tmp, &all_stat_sessions, session_list) {
+		if (node->ts == trace) {
+			mutex_unlock(&all_stat_sessions_mutex);
+			return -EINVAL;
+		}
+	}
+	mutex_unlock(&all_stat_sessions_mutex);
+
+	/* Init the session */
+	session = kmalloc(sizeof(struct tracer_stat_session), GFP_KERNEL);
+	if (!session)
+		return -ENOMEM;
+
+	session->ts = trace;
+	INIT_LIST_HEAD(&session->session_list);
+	INIT_LIST_HEAD(&session->stat_list);
+	mutex_init(&session->stat_mutex);
+	session->file = NULL;
+
+	ret = init_stat_file(session);
+	if (ret) {
+		destroy_session(session);
+		return ret;
+	}
+
+	/* Register */
+	mutex_lock(&all_stat_sessions_mutex);
+	list_add_tail(&session->session_list, &all_stat_sessions);
+	mutex_unlock(&all_stat_sessions_mutex);
+
+	return 0;
+}
+
+void unregister_stat_tracer(struct tracer_stat *trace)
+{
+	struct tracer_stat_session *node, *tmp;
+
+	mutex_lock(&all_stat_sessions_mutex);
+	list_for_each_entry_safe(node, tmp, &all_stat_sessions, session_list) {
+		if (node->ts == trace) {
+			list_del(&node->session_list);
+			destroy_session(node);
+			break;
+		}
+	}
+	mutex_unlock(&all_stat_sessions_mutex);
+}

commit 14819ea1e0bcbdc9b084cd60a6a24d5d786324ef
Author: Ingo Molnar <mingo@elte.hu>
Date:   Wed Jan 14 12:34:21 2009 +0100

    irq: export __set_irq_handler() and handle_level_irq()
    
    Impact: build fix
    
    ARM updates broke x86 allmodconfig builds:
    
     ERROR: "__set_irq_handler" [drivers/mfd/pcf50633-core.ko] undefined!
     ERROR: "handle_level_irq" [drivers/mfd/pcf50633-core.ko] undefined!
    
    Signed-off-by: Ingo Molnar <mingo@elte.hu>

diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c
index f63c706d25e1..7de11bd64dfe 100644
--- a/kernel/irq/chip.c
+++ b/kernel/irq/chip.c
@@ -383,6 +383,7 @@ handle_level_irq(unsigned int irq, struct irq_desc *desc)
 out_unlock:
 	spin_unlock(&desc->lock);
 }
+EXPORT_SYMBOL_GPL(handle_level_irq);
 
 /**
  *	handle_fasteoi_irq - irq handler for transparent controllers
@@ -593,6 +594,7 @@ __set_irq_handler(unsigned int irq, irq_flow_handler_t handle, int is_chained,
 	}
 	spin_unlock_irqrestore(&desc->lock, flags);
 }
+EXPORT_SYMBOL_GPL(__set_irq_handler);
 
 void
 set_irq_chip_and_handler(unsigned int irq, struct irq_chip *chip,

commit e46d51787e23a607cac5f593ac9926743a636dff
Merge: a4a0acf8e17e 4a046d1754ee
Author: Ingo Molnar <mingo@elte.hu>
Date:   Wed Jan 14 12:13:45 2009 +0100

    Merge branch 'master' of ssh://master.kernel.org/pub/scm/linux/kernel/git/travis/linux-2.6-cpus4096-for-ingo into cpus4096