Patches contributed by Eötvös Lorand University


commit d1a76187a5be4f89c6cb19d800cb5fb7aac735c5
Merge: c7e78cff6b75 0173a3265b22
Author: Ingo Molnar <mingo@elte.hu>
Date:   Tue Oct 28 16:54:49 2008 +0100

    Merge commit 'v2.6.28-rc2' into core/locking
    
    Conflicts:
            arch/um/include/asm/system.h

commit 2011a067281565494494aee194ca5081e52d6c3f
Merge: 63fb70859f98 0173a3265b22
Author: Ingo Molnar <mingo@elte.hu>
Date:   Tue Oct 28 16:46:59 2008 +0100

    Merge commit 'v2.6.28-rc2' into x86/doc

commit 7a9787e1eba95a166265e6a260cf30af04ef0a99
Merge: 41b9eb264c84 0173a3265b22
Author: Ingo Molnar <mingo@elte.hu>
Date:   Tue Oct 28 16:26:12 2008 +0100

    Merge commit 'v2.6.28-rc2' into x86/pci-ioapic-boot-irq-quirks

diff --cc arch/x86/include/asm/pci.h
index 000000000000,875b38edf193..647781298e7e
mode 000000,100644..100644
--- a/arch/x86/include/asm/pci.h
+++ b/arch/x86/include/asm/pci.h
@@@ -1,0 -1,114 +1,116 @@@
+ #ifndef _ASM_X86_PCI_H
+ #define _ASM_X86_PCI_H
+ 
+ #include <linux/mm.h> /* for struct page */
+ #include <linux/types.h>
+ #include <linux/slab.h>
+ #include <linux/string.h>
+ #include <asm/scatterlist.h>
+ #include <asm/io.h>
+ 
+ #ifdef __KERNEL__
+ 
+ struct pci_sysdata {
+ 	int		domain;		/* PCI domain */
+ 	int		node;		/* NUMA node */
+ #ifdef CONFIG_X86_64
+ 	void		*iommu;		/* IOMMU private data */
+ #endif
+ };
+ 
+ extern int pci_routeirq;
++extern int noioapicquirk;
++extern int noioapicreroute;
+ 
+ /* scan a bus after allocating a pci_sysdata for it */
+ extern struct pci_bus *pci_scan_bus_on_node(int busno, struct pci_ops *ops,
+ 					    int node);
+ extern struct pci_bus *pci_scan_bus_with_sysdata(int busno);
+ 
+ static inline int pci_domain_nr(struct pci_bus *bus)
+ {
+ 	struct pci_sysdata *sd = bus->sysdata;
+ 	return sd->domain;
+ }
+ 
+ static inline int pci_proc_domain(struct pci_bus *bus)
+ {
+ 	return pci_domain_nr(bus);
+ }
+ 
+ 
+ /* Can be used to override the logic in pci_scan_bus for skipping
+    already-configured bus numbers - to be used for buggy BIOSes
+    or architectures with incomplete PCI setup by the loader */
+ 
+ #ifdef CONFIG_PCI
+ extern unsigned int pcibios_assign_all_busses(void);
+ #else
+ #define pcibios_assign_all_busses()	0
+ #endif
+ #define pcibios_scan_all_fns(a, b)	0
+ 
+ extern unsigned long pci_mem_start;
+ #define PCIBIOS_MIN_IO		0x1000
+ #define PCIBIOS_MIN_MEM		(pci_mem_start)
+ 
+ #define PCIBIOS_MIN_CARDBUS_IO	0x4000
+ 
+ void pcibios_config_init(void);
+ struct pci_bus *pcibios_scan_root(int bus);
+ 
+ void pcibios_set_master(struct pci_dev *dev);
+ void pcibios_penalize_isa_irq(int irq, int active);
+ struct irq_routing_table *pcibios_get_irq_routing_table(void);
+ int pcibios_set_irq_routing(struct pci_dev *dev, int pin, int irq);
+ 
+ 
+ #define HAVE_PCI_MMAP
+ extern int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma,
+ 			       enum pci_mmap_state mmap_state,
+ 			       int write_combine);
+ 
+ 
+ #ifdef CONFIG_PCI
+ extern void early_quirks(void);
+ static inline void pci_dma_burst_advice(struct pci_dev *pdev,
+ 					enum pci_dma_burst_strategy *strat,
+ 					unsigned long *strategy_parameter)
+ {
+ 	*strat = PCI_DMA_BURST_INFINITY;
+ 	*strategy_parameter = ~0UL;
+ }
+ #else
+ static inline void early_quirks(void) { }
+ #endif
+ 
+ #endif  /* __KERNEL__ */
+ 
+ #ifdef CONFIG_X86_32
+ # include "pci_32.h"
+ #else
+ # include "pci_64.h"
+ #endif
+ 
+ /* implement the pci_ DMA API in terms of the generic device dma_ one */
+ #include <asm-generic/pci-dma-compat.h>
+ 
+ /* generic pci stuff */
+ #include <asm-generic/pci.h>
+ 
+ #ifdef CONFIG_NUMA
+ /* Returns the node based on pci bus */
+ static inline int __pcibus_to_node(struct pci_bus *bus)
+ {
+ 	struct pci_sysdata *sd = bus->sysdata;
+ 
+ 	return sd->node;
+ }
+ 
+ static inline cpumask_t __pcibus_to_cpumask(struct pci_bus *bus)
+ {
+ 	return node_to_cpumask(__pcibus_to_node(bus));
+ }
+ #endif
+ 
+ #endif /* _ASM_X86_PCI_H */
diff --cc include/linux/pci.h
index cfc2297c3e28,c75b82bda327..9194adf82e20
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@@ -124,13 -130,10 +130,15 @@@ enum pci_dev_flags 
  	 * generation too.
  	 */
  	PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG = (__force pci_dev_flags_t) 1,
+ 	/* Device configuration is irrevocably lost if disabled into D3 */
+ 	PCI_DEV_FLAGS_NO_D3 = (__force pci_dev_flags_t) 2,
  };
  
 +enum pci_irq_reroute_variant {
 +	INTEL_IRQ_REROUTE_VARIANT = 1,
 +	MAX_IRQ_REROUTE_VARIANTS = 3
 +};
 +
  typedef unsigned short __bitwise pci_bus_flags_t;
  enum pci_bus_flags {
  	PCI_BUS_FLAGS_NO_MSI   = (__force pci_bus_flags_t) 1,
@@@ -215,9 -218,9 +223,10 @@@ struct pci_dev 
  	unsigned int	no_msi:1;	/* device may not use msi */
  	unsigned int	block_ucfg_access:1;	/* userspace config space access is blocked */
  	unsigned int	broken_parity_status:1;	/* Device generates false positive parity */
 +	unsigned int	irq_reroute_variant:2;	/* device needs IRQ rerouting variant */
  	unsigned int 	msi_enabled:1;
  	unsigned int	msix_enabled:1;
+ 	unsigned int	ari_enabled:1;	/* ARI forwarding */
  	unsigned int	is_managed:1;
  	unsigned int	is_pcie:1;
  	pci_dev_flags_t dev_flags;

commit 5292ae11babca23c3ff82593630d2d7eebc350a9
Merge: b0f209898f1a 0173a3265b22
Author: Ingo Molnar <mingo@elte.hu>
Date:   Mon Oct 27 12:38:02 2008 +0100

    Merge commit 'v2.6.28-rc2' into x86/uv

commit 4944dd62de21230af039eda7cd218e9a09021d11
Merge: f17845e5d97e 0173a3265b22
Author: Ingo Molnar <mingo@elte.hu>
Date:   Mon Oct 27 10:50:54 2008 +0100

    Merge commit 'v2.6.28-rc2' into tracing/urgent

diff --cc arch/x86/include/asm/ftrace.h
index 233bb9b869c0,47f7e65e6c1d..9e8bc29b8b17
--- a/arch/x86/include/asm/ftrace.h
+++ b/arch/x86/include/asm/ftrace.h
@@@ -1,7 -1,7 +1,7 @@@
- #ifndef ASM_X86__FTRACE_H
- #define ASM_X86__FTRACE_H
+ #ifndef _ASM_X86_FTRACE_H
+ #define _ASM_X86_FTRACE_H
  
 -#ifdef CONFIG_FTRACE
 +#ifdef CONFIG_FUNCTION_TRACER
  #define MCOUNT_ADDR		((long)(mcount))
  #define MCOUNT_INSN_SIZE	5 /* sizeof mcount call */
  
@@@ -19,6 -19,6 +19,6 @@@ static inline unsigned long ftrace_call
  }
  #endif
  
 -#endif /* CONFIG_FTRACE */
 +#endif /* CONFIG_FUNCTION_TRACER */
  
- #endif /* ASM_X86__FTRACE_H */
+ #endif /* _ASM_X86_FTRACE_H */

commit f17845e5d97ead8fbdadfd40039e058ec7cf4a42
Author: Ingo Molnar <mingo@elte.hu>
Date:   Fri Oct 24 12:47:10 2008 +0200

    ftrace: warning in kernel/trace/ftrace.c
    
    this warning:
    
      kernel/trace/ftrace.c:189: warning: ‘frozen_record_count’ defined but not used
    
    triggers because frozen_record_count is only used in the KCONFIG_MARKERS
    case. Move the variable it there.
    
    Alas, this frozen-record facility seems to have little use. The
    frozen_record_count variable is not used by anything, nor the flags.
    
    So this section might need a bit of dead-code-removal care as well.
    
    Signed-off-by: Ingo Molnar <mingo@elte.hu>

diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
index 27212321eb0d..7618c528756b 100644
--- a/kernel/trace/ftrace.c
+++ b/kernel/trace/ftrace.c
@@ -186,7 +186,6 @@ enum {
 
 static int ftrace_filtered;
 static int tracing_on;
-static int frozen_record_count;
 
 static LIST_HEAD(ftrace_new_addrs);
 
@@ -211,6 +210,9 @@ static struct dyn_ftrace *ftrace_free_records;
 
 
 #ifdef CONFIG_KPROBES
+
+static int frozen_record_count;
+
 static inline void freeze_record(struct dyn_ftrace *rec)
 {
 	if (!(rec->flags & FTRACE_FL_FROZEN)) {
@@ -1443,3 +1445,4 @@ ftrace_enable_sysctl(struct ctl_table *table, int write,
 	mutex_unlock(&ftrace_sysctl_lock);
 	return ret;
 }
+

commit 8c82a17e9c924c0e9f13e75e4c2f6bca19a4b516
Merge: 4ce72a2c063a 57f8f7b60db6
Author: Ingo Molnar <mingo@elte.hu>
Date:   Fri Oct 24 12:48:46 2008 +0200

    Merge commit 'v2.6.28-rc1' into sched/urgent

commit 66b0de3569b00f61978782b9f97aa4803dbec0fb
Author: Ingo Molnar <mingo@elte.hu>
Date:   Thu Oct 23 16:11:03 2008 +0200

    ftrace: fix build failure
    
    fix:
    
     kernel/trace/ftrace.c: In function 'ftrace_release':
     kernel/trace/ftrace.c:271: error: implicit declaration of function 'ftrace_release_hash'
    
    release_hash is not needed without dftraced.
    
    Signed-off-by: Ingo Molnar <mingo@elte.hu>

diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
index 07762c08a944..27212321eb0d 100644
--- a/kernel/trace/ftrace.c
+++ b/kernel/trace/ftrace.c
@@ -267,8 +267,6 @@ void ftrace_release(void *start, unsigned long size)
 		}
 	}
 	spin_unlock(&ftrace_lock);
-
-	ftrace_release_hash(s, e);
 }
 
 static struct dyn_ftrace *ftrace_alloc_dyn_node(unsigned long ip)

commit debfcaf93ed500a051489db6646d71f29fe86a68
Merge: 2515ddc6db8e 81520a1b0649
Author: Ingo Molnar <mingo@elte.hu>
Date:   Wed Oct 22 09:08:14 2008 +0200

    Merge branch 'tracing/ftrace' into tracing/urgent

commit e9f95e637320efe1936b647308ddf4ec5b8e0311
Author: Ingo Molnar <mingo@elte.hu>
Date:   Tue Oct 21 15:49:59 2008 +0200

    genirq: fix off by one and coding style
    
    Fix off-by-one in for_each_irq_desc_reverse().
    
    Impact is near zero in practice, because nothing substantial wants to
    iterate down to IRQ#0 - but fix it nevertheless.
    
    Signed-off-by: Ingo Molnar <mingo@elte.hu>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>

diff --git a/arch/x86/kernel/irq.c b/arch/x86/kernel/irq.c
index ccf6c503fc3b..d1d4dc52f649 100644
--- a/arch/x86/kernel/irq.c
+++ b/arch/x86/kernel/irq.c
@@ -36,7 +36,7 @@ void ack_bad_irq(unsigned int irq)
 }
 
 #ifdef CONFIG_X86_32
-# define irq_stats(x)		(&per_cpu(irq_stat,x))
+# define irq_stats(x)		(&per_cpu(irq_stat, x))
 #else
 # define irq_stats(x)		cpu_pda(x)
 #endif
@@ -113,7 +113,7 @@ int show_interrupts(struct seq_file *p, void *v)
 	if (i == 0) {
 		seq_printf(p, "           ");
 		for_each_online_cpu(j)
-			seq_printf(p, "CPU%-8d",j);
+			seq_printf(p, "CPU%-8d", j);
 		seq_putc(p, '\n');
 	}
 
diff --git a/include/linux/irqnr.h b/include/linux/irqnr.h
index 3171ddc3b39d..452c280c8115 100644
--- a/include/linux/irqnr.h
+++ b/include/linux/irqnr.h
@@ -13,9 +13,9 @@ extern int nr_irqs;
 # define for_each_irq_desc(irq, desc)		\
 	for (irq = 0, desc = irq_desc; irq < nr_irqs; irq++, desc++)
 
-# define for_each_irq_desc_reverse(irq, desc)			\
-	for (irq = nr_irqs -1, desc = irq_desc + (nr_irqs -1 );	\
-	     irq > 0; irq--, desc--)
+# define for_each_irq_desc_reverse(irq, desc)				\
+	for (irq = nr_irqs - 1, desc = irq_desc + (nr_irqs - 1);	\
+	     irq >= 0; irq--, desc--)
 #endif
 
 #define for_each_irq_nr(irq)			\