Merge commit 'origin/master' into next
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>
Mon, 30 Mar 2009 03:04:53 +0000 (14:04 +1100)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Mon, 30 Mar 2009 03:04:53 +0000 (14:04 +1100)
Manual merge of:
arch/powerpc/include/asm/elf.h
drivers/i2c/busses/i2c-mpc.c

1  2 
arch/powerpc/boot/dts/canyonlands.dts
arch/powerpc/include/asm/mmu-book3e.h
arch/powerpc/include/asm/ps3fb.h
arch/powerpc/kernel/asm-offsets.c
arch/powerpc/kernel/irq.c
arch/powerpc/kernel/vmlinux.lds.S
arch/x86/kernel/dumpstack.c
drivers/i2c/busses/i2c-mpc.c
drivers/watchdog/Kconfig
include/linux/pci_ids.h

index 540ec3241f722a9f755bfacfc5a92d71b867befc,4447def69dc5175f78afb33a7546e901cb9d99b4..5fd1ad09bdf2c1661b0293fd19fcff9f58f71767
                        dcr-reg = <0x010 0x002>;
                };
  
+               CRYPTO: crypto@180000 {
+                       compatible = "amcc,ppc460ex-crypto", "amcc,ppc4xx-crypto";
+                       reg = <4 0x00180000 0x80400>;
+                       interrupt-parent = <&UIC0>;
+                       interrupts = <0x1d 0x4>;
+               };
                MAL0: mcmal {
                        compatible = "ibm,mcmal-460ex", "ibm,mcmal2";
                        dcr-reg = <0x180 0x062>;
                                        /*RXDE*/  0x5 0x4>;
                };
  
 +                USB0: ehci@bffd0400 {
 +                        compatible = "ibm,usb-ehci-460ex", "usb-ehci";
 +                        interrupt-parent = <&UIC2>;
 +                        interrupts = <0x1d 4>;
 +                        reg = <4 0xbffd0400 0x90 4 0xbffd0490 0x70>;
 +                };
 +
 +                USB1: usb@bffd0000 {
 +                        compatible = "ohci-le";
 +                        reg = <4 0xbffd0000 0x60>;
 +                        interrupt-parent = <&UIC2>;
 +                        interrupts = <0x1e 4>;
 +                };
 +
                POB0: opb {
                        compatible = "ibm,opb-460ex", "ibm,opb";
                        #address-cells = <1>;
                                reg = <0xef600700 0x00000014>;
                                interrupt-parent = <&UIC0>;
                                interrupts = <0x2 0x4>;
 +                              #address-cells = <1>;
 +                              #size-cells = <0>;
 +                                rtc@68 {
 +                                        compatible = "stm,m41t80";
 +                                        reg = <0x68>;
 +                                      interrupt-parent = <&UIC2>;
 +                                      interrupts = <0x19 0x8>;
 +                                };
 +                                sttm@48 {
 +                                        compatible = "ad,ad7414";
 +                                        reg = <0x48>;
 +                                      interrupt-parent = <&UIC1>;
 +                                      interrupts = <0x14 0x8>;
 +                                };
                        };
  
                        IIC1: i2c@ef600800 {
index c5363c3a720733ac3da0b4836f038dcaaba1af0c,4285b64a65e0a3a10245b68d57809332d7dc8bc8..7e74cff81d864556b12030da29805d590334fe9a
@@@ -1,42 -1,26 +1,42 @@@
 -#ifndef _ASM_POWERPC_MMU_FSL_BOOKE_H_
 -#define _ASM_POWERPC_MMU_FSL_BOOKE_H_
 +#ifndef _ASM_POWERPC_MMU_BOOK3E_H_
 +#define _ASM_POWERPC_MMU_BOOK3E_H_
  /*
 - * Freescale Book-E MMU support
 + * Freescale Book-E/Book-3e (ISA 2.06+) MMU support
   */
  
 -/* Book-E defined page sizes */
 -#define BOOKE_PAGESZ_1K               0
 -#define BOOKE_PAGESZ_4K               1
 -#define BOOKE_PAGESZ_16K      2
 -#define BOOKE_PAGESZ_64K      3
 -#define BOOKE_PAGESZ_256K     4
 -#define BOOKE_PAGESZ_1M               5
 -#define BOOKE_PAGESZ_4M               6
 -#define BOOKE_PAGESZ_16M      7
 -#define BOOKE_PAGESZ_64M      8
 -#define BOOKE_PAGESZ_256M     9
 -#define BOOKE_PAGESZ_1GB      10
 -#define BOOKE_PAGESZ_4GB      11
 -#define BOOKE_PAGESZ_16GB     12
 -#define BOOKE_PAGESZ_64GB     13
 -#define BOOKE_PAGESZ_256GB    14
 -#define BOOKE_PAGESZ_1TB      15
 +/* Book-3e defined page sizes */
 +#define BOOK3E_PAGESZ_1K      0
 +#define BOOK3E_PAGESZ_2K      1
 +#define BOOK3E_PAGESZ_4K      2
 +#define BOOK3E_PAGESZ_8K      3
 +#define BOOK3E_PAGESZ_16K     4
 +#define BOOK3E_PAGESZ_32K     5
 +#define BOOK3E_PAGESZ_64K     6
 +#define BOOK3E_PAGESZ_128K    7
 +#define BOOK3E_PAGESZ_256K    8
 +#define BOOK3E_PAGESZ_512K    9
 +#define BOOK3E_PAGESZ_1M      10
 +#define BOOK3E_PAGESZ_2M      11
 +#define BOOK3E_PAGESZ_4M      12
 +#define BOOK3E_PAGESZ_8M      13
 +#define BOOK3E_PAGESZ_16M     14
 +#define BOOK3E_PAGESZ_32M     15
 +#define BOOK3E_PAGESZ_64M     16
 +#define BOOK3E_PAGESZ_128M    17
 +#define BOOK3E_PAGESZ_256M    18
 +#define BOOK3E_PAGESZ_512M    19
 +#define BOOK3E_PAGESZ_1GB     20
 +#define BOOK3E_PAGESZ_2GB     21
 +#define BOOK3E_PAGESZ_4GB     22
 +#define BOOK3E_PAGESZ_8GB     23
 +#define BOOK3E_PAGESZ_16GB    24
 +#define BOOK3E_PAGESZ_32GB    25
 +#define BOOK3E_PAGESZ_64GB    26
 +#define BOOK3E_PAGESZ_128GB   27
 +#define BOOK3E_PAGESZ_256GB   28
 +#define BOOK3E_PAGESZ_512GB   29
 +#define BOOK3E_PAGESZ_1TB     30
 +#define BOOK3E_PAGESZ_2TB     31
  
  #define MAS0_TLBSEL(x)        ((x << 28) & 0x30000000)
  #define MAS0_ESEL(x)  ((x << 16) & 0x0FFF0000)
@@@ -45,9 -29,8 +45,9 @@@
  #define MAS1_VALID    0x80000000
  #define MAS1_IPROT    0x40000000
  #define MAS1_TID(x)   ((x << 16) & 0x3FFF0000)
 +#define MAS1_IND      0x00002000
  #define MAS1_TS               0x00001000
 -#define MAS1_TSIZE(x) ((x << 8) & 0x00000F00)
 +#define MAS1_TSIZE(x) ((x << 7) & 0x00000F80)
  
  #define MAS2_EPN      0xFFFFF000
  #define MAS2_X0               0x00000040
@@@ -57,7 -40,7 +57,7 @@@
  #define MAS2_M                0x00000004
  #define MAS2_G                0x00000002
  #define MAS2_E                0x00000001
 -#define MAS2_EPN_MASK(size)           (~0 << (2*(size) + 10))
 +#define MAS2_EPN_MASK(size)           (~0 << (size + 10))
  #define MAS2_VAL(addr, size, flags)   ((addr) & MAS2_EPN_MASK(size) | (flags))
  
  #define MAS3_RPN      0xFFFFF000
@@@ -73,7 -56,7 +73,7 @@@
  #define MAS3_SR               0x00000001
  
  #define MAS4_TLBSELD(x) MAS0_TLBSEL(x)
 -#define MAS4_TIDDSEL  0x000F0000
 +#define MAS4_INDD     0x00008000
  #define MAS4_TSIZED(x)        MAS1_TSIZE(x)
  #define MAS4_X0D      0x00000040
  #define MAS4_X1D      0x00000020
@@@ -85,7 -68,6 +85,7 @@@
  
  #define MAS6_SPID0    0x3FFF0000
  #define MAS6_SPID1    0x00007FFE
 +#define MAS6_ISIZE(x) MAS1_TSIZE(x)
  #define MAS6_SAS      0x00000001
  #define MAS6_SPID     MAS6_SPID0
  
@@@ -93,6 -75,8 +93,8 @@@
  
  #ifndef __ASSEMBLY__
  
+ extern unsigned int tlbcam_index;
  typedef struct {
        unsigned int    id;
        unsigned int    active;
  } mm_context_t;
  #endif /* !__ASSEMBLY__ */
  
 -#endif /* _ASM_POWERPC_MMU_FSL_BOOKE_H_ */
 +#endif /* _ASM_POWERPC_MMU_BOOK3E_H_ */
index 1a91daf362c8f75ccccff8e6ae279d697e1c3506,e7233a849680ce4595f8b9afc345593b9431d6ce..90dbefb8cfc4a01528c1700f123e870c160decab
@@@ -19,8 -19,8 +19,9 @@@
  #ifndef _ASM_POWERPC_PS3FB_H_
  #define _ASM_POWERPC_PS3FB_H_
  
+ #include <linux/types.h>
  #include <linux/ioctl.h>
 +#include <linux/types.h>
  
  /* ioctl */
  #define PS3FB_IOCTL_SETMODE       _IOW('r',  1, int) /* set video mode */
index 10377df38f363e13f47c02d31643eca05d5d54ff,42fe4da4e8ae8e555572a40535d1adb5cb4cb0b6..1e40bc0539464602451071c88109f5c9be2282fd
@@@ -49,7 -49,7 +49,7 @@@
  #include <asm/iseries/alpaca.h>
  #endif
  #ifdef CONFIG_KVM
- #include <asm/kvm_44x.h>
+ #include <linux/kvm_host.h>
  #endif
  
  #if defined(CONFIG_BOOKE) || defined(CONFIG_40x)
@@@ -284,6 -284,9 +284,6 @@@ int main(void
  #endif /* ! CONFIG_PPC64 */
  
        /* About the CPU features table */
 -      DEFINE(CPU_SPEC_ENTRY_SIZE, sizeof(struct cpu_spec));
 -      DEFINE(CPU_SPEC_PVR_MASK, offsetof(struct cpu_spec, pvr_mask));
 -      DEFINE(CPU_SPEC_PVR_VALUE, offsetof(struct cpu_spec, pvr_value));
        DEFINE(CPU_SPEC_FEATURES, offsetof(struct cpu_spec, cpu_features));
        DEFINE(CPU_SPEC_SETUP, offsetof(struct cpu_spec, cpu_setup));
        DEFINE(CPU_SPEC_RESTORE, offsetof(struct cpu_spec, cpu_restore));
        DEFINE(PTE_SIZE, sizeof(pte_t));
  
  #ifdef CONFIG_KVM
-       DEFINE(TLBE_BYTES, sizeof(struct kvmppc_44x_tlbe));
        DEFINE(VCPU_HOST_STACK, offsetof(struct kvm_vcpu, arch.host_stack));
        DEFINE(VCPU_HOST_PID, offsetof(struct kvm_vcpu, arch.host_pid));
        DEFINE(VCPU_GPRS, offsetof(struct kvm_vcpu, arch.gpr));
index 48ea2008b20d7d5797b58296488f6e9c1799a139,1b55ffdf002652d09376ce7e1a22d32c1101610f..5576147e57b63d5e7c54c359e31fbdf71b2ca5dd
@@@ -171,7 -171,7 +171,7 @@@ int show_interrupts(struct seq_file *p
  {
        int i = *(loff_t *)v, j;
        struct irqaction *action;
 -      irq_desc_t *desc;
 +      struct irq_desc *desc;
        unsigned long flags;
  
        if (i == 0) {
                seq_printf(p, "%3d: ", i);
  #ifdef CONFIG_SMP
                for_each_online_cpu(j)
-                       seq_printf(p, "%10u ", kstat_cpu(j).irqs[i]);
+                       seq_printf(p, "%10u ", kstat_irqs_cpu(i, j));
  #else
                seq_printf(p, "%10u ", kstat_irqs(i));
  #endif /* CONFIG_SMP */
@@@ -231,7 -231,7 +231,7 @@@ void fixup_irqs(cpumask_t map
                if (irq_desc[irq].status & IRQ_PER_CPU)
                        continue;
  
-               cpus_and(mask, irq_desc[irq].affinity, map);
+               cpumask_and(&mask, irq_desc[irq].affinity, &map);
                if (any_online_cpu(mask) == NR_CPUS) {
                        printk("Breaking affinity for irq %i\n", irq);
                        mask = map;
@@@ -1038,7 -1038,7 +1038,7 @@@ arch_initcall(irq_late_init)
  static int virq_debug_show(struct seq_file *m, void *private)
  {
        unsigned long flags;
 -      irq_desc_t *desc;
 +      struct irq_desc *desc;
        const char *p;
        char none[] = "none";
        int i;
index 895af44bf1f413b3facc399c81c6b79245fcd467,67f07f453385f5ef99357052c6780537a945b495..b9ef1644a7228d1113494fb270dc369d20299600
@@@ -58,7 -58,6 +58,7 @@@ SECTION
                SCHED_TEXT
                LOCK_TEXT
                KPROBES_TEXT
 +              IRQENTRY_TEXT
  
  #ifdef CONFIG_PPC32
                *(.got1)
                __initramfs_end = .;
        }
  #endif
-       . = ALIGN(PAGE_SIZE);
-       .data.percpu  : AT(ADDR(.data.percpu) - LOAD_OFFSET) {
-               __per_cpu_start = .;
-               *(.data.percpu)
-               *(.data.percpu.shared_aligned)
-               __per_cpu_end = .;
-       }
+       PERCPU(PAGE_SIZE)
  
        . = ALIGN(8);
        .machine.desc : AT(ADDR(.machine.desc) - LOAD_OFFSET) {
index c0852291b6231520c0b8583b3dca1a34c332d453,87d103ded1c325a71d0ba65126bfd81996f78915..dd2130b0fb3e4ac183e1d62a979242db6b78f22e
@@@ -10,7 -10,6 +10,7 @@@
  #include <linux/kdebug.h>
  #include <linux/module.h>
  #include <linux/ptrace.h>
 +#include <linux/ftrace.h>
  #include <linux/kexec.h>
  #include <linux/bug.h>
  #include <linux/nmi.h>
@@@ -100,7 -99,7 +100,7 @@@ print_context_stack(struct thread_info 
                                frame = frame->next_frame;
                                bp = (unsigned long) frame;
                        } else {
-                               ops->address(data, addr, bp == 0);
+                               ops->address(data, addr, 0);
                        }
                        print_ftrace_graph_addr(addr, data, ops, tinfo, graph);
                }
index 3163eab3f608160586b796725970ffb0c6d7e102,2b847d8759469976513b919e48134e64024e3a44..26bf3701058648ad338847631122101eb37c691f
@@@ -70,7 -70,7 +70,7 @@@ static irqreturn_t mpc_i2c_isr(int irq
                /* Read again to allow register to stabilise */
                i2c->interrupt = readb(i2c->base + MPC_I2C_SR);
                writeb(0, i2c->base + MPC_I2C_SR);
 -              wake_up_interruptible(&i2c->queue);
 +              wake_up(&i2c->queue);
        }
        return IRQ_HANDLED;
  }
@@@ -115,10 -115,13 +115,10 @@@ static int i2c_wait(struct mpc_i2c *i2c
                writeb(0, i2c->base + MPC_I2C_SR);
        } else {
                /* Interrupt mode */
 -              result = wait_event_interruptible_timeout(i2c->queue,
 +              result = wait_event_timeout(i2c->queue,
-                       (i2c->interrupt & CSR_MIF), timeout * HZ);
+                       (i2c->interrupt & CSR_MIF), timeout);
  
 -              if (unlikely(result < 0)) {
 -                      pr_debug("I2C: wait interrupted\n");
 -                      writeccr(i2c, 0);
 -              } else if (unlikely(!(i2c->interrupt & CSR_MIF))) {
 +              if (unlikely(!(i2c->interrupt & CSR_MIF))) {
                        pr_debug("I2C: wait timeout\n");
                        writeccr(i2c, 0);
                        result = -ETIMEDOUT;
@@@ -308,7 -311,7 +308,7 @@@ static struct i2c_adapter mpc_ops = 
        .owner = THIS_MODULE,
        .name = "MPC adapter",
        .algo = &mpc_algo,
-       .timeout = 1,
+       .timeout = HZ,
  };
  
  static int __devinit fsl_i2c_probe(struct of_device *op, const struct of_device_id *match)
diff --combined drivers/watchdog/Kconfig
index ecf52e4b80f82e6ccc2c320d46162e001cd813f9,55f64af072a430d4ce9337baa6b8dc6807ec3c4f..63024145215d729703961ee4c27fad4ab1d6226f
@@@ -772,7 -772,7 +772,7 @@@ config TXX9_WD
  
  config GEF_WDT
        tristate "GE Fanuc Watchdog Timer"
 -      depends on GEF_SBC610
 +      depends on GEF_SBC610 || GEF_SBC310 || GEF_PPC9A
        ---help---
          Watchdog timer found in a number of GE Fanuc single board computers.
  
@@@ -940,21 -940,6 +940,6 @@@ config WD
          To compile this driver as a module, choose M here: the
          module will be called wdt.
  
- config WDT_501
-       bool "WDT501 features"
-       depends on WDT
-       help
-         Saying Y here and creating a character special file /dev/temperature
-         with major number 10 and minor number 131 ("man mknod") will give
-         you a thermometer inside your computer: reading from
-         /dev/temperature yields one byte, the temperature in degrees
-         Fahrenheit. This works only if you have a WDT501P watchdog board
-         installed.
-         If you want to enable the Fan Tachometer on the WDT501P, then you
-         can do this via the tachometer parameter. Only do this if you have a
-         fan tachometer actually set up.
  #
  # PCI-based Watchdog Cards
  #
diff --combined include/linux/pci_ids.h
index f37fe506105e55091bbcfd9684d54812b125edbb,2c9e8080da5e620873656fae4ac57c5c31a7030a..e5816dd333713b2e4d8e6cc4fac8013b16cd055d
  #define PCI_DEVICE_ID_PROMISE_20276   0x5275
  #define PCI_DEVICE_ID_PROMISE_20277   0x7275
  
+ #define PCI_VENDOR_ID_FOXCONN         0x105b
  #define PCI_VENDOR_ID_UMC             0x1060
  #define PCI_DEVICE_ID_UMC_UM8673F     0x0101
  #define PCI_DEVICE_ID_UMC_UM8886BF    0x673a
  #define PCI_DEVICE_ID_NVIDIA_NVENET_21              0x0451
  #define PCI_DEVICE_ID_NVIDIA_NVENET_22              0x0452
  #define PCI_DEVICE_ID_NVIDIA_NVENET_23              0x0453
+ #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP67_SMBUS     0x0542
  #define PCI_DEVICE_ID_NVIDIA_NVENET_24              0x054C
  #define PCI_DEVICE_ID_NVIDIA_NVENET_25              0x054D
  #define PCI_DEVICE_ID_NVIDIA_NVENET_26              0x054E
  #define PCI_DEVICE_ID_NVIDIA_NVENET_31              0x07DF
  #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP67_IDE       0x0560
  #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP73_IDE       0x056C
+ #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP78S_SMBUS    0x0752
  #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP77_IDE       0x0759
  #define PCI_DEVICE_ID_NVIDIA_NVENET_32              0x0760
  #define PCI_DEVICE_ID_NVIDIA_NVENET_33              0x0761
  #define PCI_DEVICE_ID_NVIDIA_NVENET_34              0x0762
  #define PCI_DEVICE_ID_NVIDIA_NVENET_35              0x0763
+ #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP73_SMBUS     0x07D8
+ #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP79_SMBUS     0x0AA2
  #define PCI_DEVICE_ID_NVIDIA_NVENET_36              0x0AB0
  #define PCI_DEVICE_ID_NVIDIA_NVENET_37              0x0AB1
  #define PCI_DEVICE_ID_NVIDIA_NVENET_38              0x0AB2
  #define PCI_DEVICE_ID_SERVERWORKS_HT1000IDE 0x0214
  #define PCI_DEVICE_ID_SERVERWORKS_CSB6IDE2 0x0217
  #define PCI_DEVICE_ID_SERVERWORKS_CSB6LPC 0x0227
+ #define PCI_DEVICE_ID_SERVERWORKS_HT1100LD 0x0408
  
  #define PCI_VENDOR_ID_SBE             0x1176
  #define PCI_DEVICE_ID_SBE_WANXL100    0x0301
  
  #define PCI_VENDOR_ID_SAMSUNG         0x144d
  
+ #define PCI_VENDOR_ID_AMBIT           0x1468
  #define PCI_VENDOR_ID_MYRICOM         0x14c1
  
  #define PCI_VENDOR_ID_TITAN           0x14D2
  #define PCI_DEVICE_ID_MELLANOX_SINAI_OLD 0x5e8c
  #define PCI_DEVICE_ID_MELLANOX_SINAI  0x6274
  
+ #define PCI_VENDOR_ID_DFI             0x15bd
  #define PCI_VENDOR_ID_QUICKNET                0x15e2
  #define PCI_DEVICE_ID_QUICKNET_XJ     0x0500
  
  
  #define PCI_VENDOR_ID_TOPSPIN         0x1867
  
+ #define PCI_VENDOR_ID_SILAN           0x1904
  #define PCI_VENDOR_ID_TDI               0x192E
  #define PCI_DEVICE_ID_TDI_EHCI          0x0101
  
  #define PCI_VENDOR_ID_FREESCALE               0x1957
 +#define PCI_DEVICE_ID_MPC8315E                0x00b4
 +#define PCI_DEVICE_ID_MPC8315         0x00b5
 +#define PCI_DEVICE_ID_MPC8314E                0x00b6
 +#define PCI_DEVICE_ID_MPC8314         0x00b7
 +#define PCI_DEVICE_ID_MPC8378E                0x00c4
 +#define PCI_DEVICE_ID_MPC8378         0x00c5
 +#define PCI_DEVICE_ID_MPC8377E                0x00c6
 +#define PCI_DEVICE_ID_MPC8377         0x00c7
  #define PCI_DEVICE_ID_MPC8548E                0x0012
  #define PCI_DEVICE_ID_MPC8548         0x0013
  #define PCI_DEVICE_ID_MPC8543E                0x0014
  #define PCI_DEVICE_ID_KORENIX_JETCARDF0       0x1600
  #define PCI_DEVICE_ID_KORENIX_JETCARDF1       0x16ff
  
+ #define PCI_VENDOR_ID_QMI             0x1a32
  #define PCI_VENDOR_ID_TEKRAM          0x1de1
  #define PCI_DEVICE_ID_TEKRAM_DC290    0xdc29