diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-02-10 14:55:12 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-02-10 14:55:12 -0500 |
| commit | c36c63c511fa088fcc247a8e888b04f248be8435 (patch) | |
| tree | a60e5791550929164e86c27f7a06c5c37a05a9e4 | |
| parent | 226b79104f625f3f58a8388b8b32a4b90415bf02 (diff) | |
| parent | 0b2f82872ff855b92e9e8356b90ef429d96d6977 (diff) | |
Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc
* 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc:
powerpc: Add missing sparsemem.h include
powerpc/pci: mmap anonymous memory when legacy_mem doesn't exist
powerpc/cell: Add missing #include for oprofile
powerpc/ftrace: Fix math to calculate offset in TOC
powerpc: Don't emulate mr. instructions
powerpc/fsl-booke: Fix mapping functions to use phys_addr_t
arch/powerpc: Eliminate double sizeof
powerpc/cpm2: Fix set interrupt type
powerpc/83xx: Fix TSEC0 workability on MPC8313E-RDB boards
powerpc/83xx: Fix missing #{address,size}-cells in mpc8313erdb.dts
powerpc/83xx: Build breakage for CONFIG_PM but no CONFIG_SUSPEND
| -rw-r--r-- | arch/powerpc/boot/dts/mpc8313erdb.dts | 11 | ||||
| -rw-r--r-- | arch/powerpc/configs/83xx/mpc8313_rdb_defconfig | 2 | ||||
| -rw-r--r-- | arch/powerpc/kernel/ftrace.c | 5 | ||||
| -rw-r--r-- | arch/powerpc/kernel/pci-common.c | 17 | ||||
| -rw-r--r-- | arch/powerpc/lib/sstep.c | 2 | ||||
| -rw-r--r-- | arch/powerpc/mm/fsl_booke_mmu.c | 4 | ||||
| -rw-r--r-- | arch/powerpc/mm/pgtable_32.c | 4 | ||||
| -rw-r--r-- | arch/powerpc/oprofile/cell/spu_profiler.c | 1 | ||||
| -rw-r--r-- | arch/powerpc/platforms/82xx/pq2ads-pci-pic.c | 2 | ||||
| -rw-r--r-- | arch/powerpc/platforms/pseries/hotplug-memory.c | 1 | ||||
| -rw-r--r-- | arch/powerpc/sysdev/cpm2_pic.c | 2 | ||||
| -rw-r--r-- | arch/powerpc/sysdev/ipic.c | 2 |
12 files changed, 34 insertions, 19 deletions
diff --git a/arch/powerpc/boot/dts/mpc8313erdb.dts b/arch/powerpc/boot/dts/mpc8313erdb.dts index 909a89cab9ac..3ebf7ec0484c 100644 --- a/arch/powerpc/boot/dts/mpc8313erdb.dts +++ b/arch/powerpc/boot/dts/mpc8313erdb.dts | |||
| @@ -191,7 +191,8 @@ | |||
| 191 | interrupts = <37 0x8 36 0x8 35 0x8>; | 191 | interrupts = <37 0x8 36 0x8 35 0x8>; |
| 192 | interrupt-parent = <&ipic>; | 192 | interrupt-parent = <&ipic>; |
| 193 | tbi-handle = < &tbi0 >; | 193 | tbi-handle = < &tbi0 >; |
| 194 | phy-handle = < &phy1 >; | 194 | /* Vitesse 7385 isn't on the MDIO bus */ |
| 195 | fixed-link = <1 1 1000 0 0>; | ||
| 195 | fsl,magic-packet; | 196 | fsl,magic-packet; |
| 196 | 197 | ||
| 197 | mdio@24520 { | 198 | mdio@24520 { |
| @@ -199,12 +200,6 @@ | |||
| 199 | #size-cells = <0>; | 200 | #size-cells = <0>; |
| 200 | compatible = "fsl,gianfar-mdio"; | 201 | compatible = "fsl,gianfar-mdio"; |
| 201 | reg = <0x24520 0x20>; | 202 | reg = <0x24520 0x20>; |
| 202 | phy1: ethernet-phy@1 { | ||
| 203 | interrupt-parent = <&ipic>; | ||
| 204 | interrupts = <19 0x8>; | ||
| 205 | reg = <0x1>; | ||
| 206 | device_type = "ethernet-phy"; | ||
| 207 | }; | ||
| 208 | phy4: ethernet-phy@4 { | 203 | phy4: ethernet-phy@4 { |
| 209 | interrupt-parent = <&ipic>; | 204 | interrupt-parent = <&ipic>; |
| 210 | interrupts = <20 0x8>; | 205 | interrupts = <20 0x8>; |
| @@ -219,6 +214,8 @@ | |||
| 219 | }; | 214 | }; |
| 220 | 215 | ||
| 221 | enet1: ethernet@25000 { | 216 | enet1: ethernet@25000 { |
| 217 | #address-cells = <1>; | ||
| 218 | #size-cells = <1>; | ||
| 222 | cell-index = <1>; | 219 | cell-index = <1>; |
| 223 | device_type = "network"; | 220 | device_type = "network"; |
| 224 | model = "eTSEC"; | 221 | model = "eTSEC"; |
diff --git a/arch/powerpc/configs/83xx/mpc8313_rdb_defconfig b/arch/powerpc/configs/83xx/mpc8313_rdb_defconfig index 9e47ae957e2e..409d017621a8 100644 --- a/arch/powerpc/configs/83xx/mpc8313_rdb_defconfig +++ b/arch/powerpc/configs/83xx/mpc8313_rdb_defconfig | |||
| @@ -651,7 +651,7 @@ CONFIG_CICADA_PHY=y | |||
| 651 | # CONFIG_NATIONAL_PHY is not set | 651 | # CONFIG_NATIONAL_PHY is not set |
| 652 | # CONFIG_STE10XP is not set | 652 | # CONFIG_STE10XP is not set |
| 653 | # CONFIG_LSI_ET1011C_PHY is not set | 653 | # CONFIG_LSI_ET1011C_PHY is not set |
| 654 | # CONFIG_FIXED_PHY is not set | 654 | CONFIG_FIXED_PHY=y |
| 655 | # CONFIG_MDIO_BITBANG is not set | 655 | # CONFIG_MDIO_BITBANG is not set |
| 656 | CONFIG_NET_ETHERNET=y | 656 | CONFIG_NET_ETHERNET=y |
| 657 | CONFIG_MII=y | 657 | CONFIG_MII=y |
diff --git a/arch/powerpc/kernel/ftrace.c b/arch/powerpc/kernel/ftrace.c index 5355244c99ff..60c60ccf5e3c 100644 --- a/arch/powerpc/kernel/ftrace.c +++ b/arch/powerpc/kernel/ftrace.c | |||
| @@ -195,8 +195,9 @@ __ftrace_make_nop(struct module *mod, | |||
| 195 | return -EINVAL; | 195 | return -EINVAL; |
| 196 | } | 196 | } |
| 197 | 197 | ||
| 198 | offset = (unsigned)((unsigned short)jmp[0]) << 16 | | 198 | /* The bottom half is signed extended */ |
| 199 | (unsigned)((unsigned short)jmp[1]); | 199 | offset = ((unsigned)((unsigned short)jmp[0]) << 16) + |
| 200 | (int)((short)jmp[1]); | ||
| 200 | 201 | ||
| 201 | DEBUGP(" %x ", offset); | 202 | DEBUGP(" %x ", offset); |
| 202 | 203 | ||
diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c index 19b12d2cbb4b..0f4181272311 100644 --- a/arch/powerpc/kernel/pci-common.c +++ b/arch/powerpc/kernel/pci-common.c | |||
| @@ -561,8 +561,21 @@ int pci_mmap_legacy_page_range(struct pci_bus *bus, | |||
| 561 | (unsigned long long)(offset + size - 1)); | 561 | (unsigned long long)(offset + size - 1)); |
| 562 | 562 | ||
| 563 | if (mmap_state == pci_mmap_mem) { | 563 | if (mmap_state == pci_mmap_mem) { |
| 564 | if ((offset + size) > hose->isa_mem_size) | 564 | /* Hack alert ! |
| 565 | return -ENXIO; | 565 | * |
| 566 | * Because X is lame and can fail starting if it gets an error trying | ||
| 567 | * to mmap legacy_mem (instead of just moving on without legacy memory | ||
| 568 | * access) we fake it here by giving it anonymous memory, effectively | ||
| 569 | * behaving just like /dev/zero | ||
| 570 | */ | ||
| 571 | if ((offset + size) > hose->isa_mem_size) { | ||
| 572 | printk(KERN_DEBUG | ||
| 573 | "Process %s (pid:%d) mapped non-existing PCI legacy memory for 0%04x:%02x\n", | ||
| 574 | current->comm, current->pid, pci_domain_nr(bus), bus->number); | ||
| 575 | if (vma->vm_flags & VM_SHARED) | ||
| 576 | return shmem_zero_setup(vma); | ||
| 577 | return 0; | ||
| 578 | } | ||
| 566 | offset += hose->isa_mem_phys; | 579 | offset += hose->isa_mem_phys; |
| 567 | } else { | 580 | } else { |
| 568 | unsigned long io_offset = (unsigned long)hose->io_base_virt - _IO_BASE; | 581 | unsigned long io_offset = (unsigned long)hose->io_base_virt - _IO_BASE; |
diff --git a/arch/powerpc/lib/sstep.c b/arch/powerpc/lib/sstep.c index 4aae0c387645..13b7d54f185b 100644 --- a/arch/powerpc/lib/sstep.c +++ b/arch/powerpc/lib/sstep.c | |||
| @@ -172,6 +172,8 @@ int __kprobes emulate_step(struct pt_regs *regs, unsigned int instr) | |||
| 172 | } | 172 | } |
| 173 | break; | 173 | break; |
| 174 | case 0x378: /* orx */ | 174 | case 0x378: /* orx */ |
| 175 | if (instr & 1) | ||
| 176 | break; | ||
| 175 | rs = (instr >> 21) & 0x1f; | 177 | rs = (instr >> 21) & 0x1f; |
| 176 | rb = (instr >> 11) & 0x1f; | 178 | rb = (instr >> 11) & 0x1f; |
| 177 | if (rs == rb) { /* mr */ | 179 | if (rs == rb) { /* mr */ |
diff --git a/arch/powerpc/mm/fsl_booke_mmu.c b/arch/powerpc/mm/fsl_booke_mmu.c index 1971e4ee3d6e..ea6e41e39d9f 100644 --- a/arch/powerpc/mm/fsl_booke_mmu.c +++ b/arch/powerpc/mm/fsl_booke_mmu.c | |||
| @@ -73,7 +73,7 @@ extern unsigned int tlbcam_index; | |||
| 73 | /* | 73 | /* |
| 74 | * Return PA for this VA if it is mapped by a CAM, or 0 | 74 | * Return PA for this VA if it is mapped by a CAM, or 0 |
| 75 | */ | 75 | */ |
| 76 | unsigned long v_mapped_by_tlbcam(unsigned long va) | 76 | phys_addr_t v_mapped_by_tlbcam(unsigned long va) |
| 77 | { | 77 | { |
| 78 | int b; | 78 | int b; |
| 79 | for (b = 0; b < tlbcam_index; ++b) | 79 | for (b = 0; b < tlbcam_index; ++b) |
| @@ -85,7 +85,7 @@ unsigned long v_mapped_by_tlbcam(unsigned long va) | |||
| 85 | /* | 85 | /* |
| 86 | * Return VA for a given PA or 0 if not mapped | 86 | * Return VA for a given PA or 0 if not mapped |
| 87 | */ | 87 | */ |
| 88 | unsigned long p_mapped_by_tlbcam(unsigned long pa) | 88 | unsigned long p_mapped_by_tlbcam(phys_addr_t pa) |
| 89 | { | 89 | { |
| 90 | int b; | 90 | int b; |
| 91 | for (b = 0; b < tlbcam_index; ++b) | 91 | for (b = 0; b < tlbcam_index; ++b) |
diff --git a/arch/powerpc/mm/pgtable_32.c b/arch/powerpc/mm/pgtable_32.c index 22972cd83cc9..58bcaeba728d 100644 --- a/arch/powerpc/mm/pgtable_32.c +++ b/arch/powerpc/mm/pgtable_32.c | |||
| @@ -61,8 +61,8 @@ void setbat(int index, unsigned long virt, phys_addr_t phys, | |||
| 61 | 61 | ||
| 62 | #ifdef HAVE_TLBCAM | 62 | #ifdef HAVE_TLBCAM |
| 63 | extern unsigned int tlbcam_index; | 63 | extern unsigned int tlbcam_index; |
| 64 | extern unsigned long v_mapped_by_tlbcam(unsigned long va); | 64 | extern phys_addr_t v_mapped_by_tlbcam(unsigned long va); |
| 65 | extern unsigned long p_mapped_by_tlbcam(unsigned long pa); | 65 | extern unsigned long p_mapped_by_tlbcam(phys_addr_t pa); |
| 66 | #else /* !HAVE_TLBCAM */ | 66 | #else /* !HAVE_TLBCAM */ |
| 67 | #define v_mapped_by_tlbcam(x) (0UL) | 67 | #define v_mapped_by_tlbcam(x) (0UL) |
| 68 | #define p_mapped_by_tlbcam(x) (0UL) | 68 | #define p_mapped_by_tlbcam(x) (0UL) |
diff --git a/arch/powerpc/oprofile/cell/spu_profiler.c b/arch/powerpc/oprofile/cell/spu_profiler.c index 9305ddaac512..b129d007e7fe 100644 --- a/arch/powerpc/oprofile/cell/spu_profiler.c +++ b/arch/powerpc/oprofile/cell/spu_profiler.c | |||
| @@ -16,6 +16,7 @@ | |||
| 16 | #include <linux/smp.h> | 16 | #include <linux/smp.h> |
| 17 | #include <linux/slab.h> | 17 | #include <linux/slab.h> |
| 18 | #include <asm/cell-pmu.h> | 18 | #include <asm/cell-pmu.h> |
| 19 | #include <asm/time.h> | ||
| 19 | #include "pr_util.h" | 20 | #include "pr_util.h" |
| 20 | 21 | ||
| 21 | #define SCALE_SHIFT 14 | 22 | #define SCALE_SHIFT 14 |
diff --git a/arch/powerpc/platforms/82xx/pq2ads-pci-pic.c b/arch/powerpc/platforms/82xx/pq2ads-pci-pic.c index 9876d7e072f4..ddf0bdc0fc8b 100644 --- a/arch/powerpc/platforms/82xx/pq2ads-pci-pic.c +++ b/arch/powerpc/platforms/82xx/pq2ads-pci-pic.c | |||
| @@ -186,7 +186,7 @@ out_unmap_regs: | |||
| 186 | iounmap(priv->regs); | 186 | iounmap(priv->regs); |
| 187 | out_free_bootmem: | 187 | out_free_bootmem: |
| 188 | free_bootmem((unsigned long)priv, | 188 | free_bootmem((unsigned long)priv, |
| 189 | sizeof(sizeof(struct pq2ads_pci_pic))); | 189 | sizeof(struct pq2ads_pci_pic)); |
| 190 | of_node_put(np); | 190 | of_node_put(np); |
| 191 | out_unmap_irq: | 191 | out_unmap_irq: |
| 192 | irq_dispose_mapping(irq); | 192 | irq_dispose_mapping(irq); |
diff --git a/arch/powerpc/platforms/pseries/hotplug-memory.c b/arch/powerpc/platforms/pseries/hotplug-memory.c index a623ad256e9e..9b21ee68ea50 100644 --- a/arch/powerpc/platforms/pseries/hotplug-memory.c +++ b/arch/powerpc/platforms/pseries/hotplug-memory.c | |||
| @@ -14,6 +14,7 @@ | |||
| 14 | #include <asm/firmware.h> | 14 | #include <asm/firmware.h> |
| 15 | #include <asm/machdep.h> | 15 | #include <asm/machdep.h> |
| 16 | #include <asm/pSeries_reconfig.h> | 16 | #include <asm/pSeries_reconfig.h> |
| 17 | #include <asm/sparsemem.h> | ||
| 17 | 18 | ||
| 18 | static int pseries_remove_lmb(unsigned long base, unsigned int lmb_size) | 19 | static int pseries_remove_lmb(unsigned long base, unsigned int lmb_size) |
| 19 | { | 20 | { |
diff --git a/arch/powerpc/sysdev/cpm2_pic.c b/arch/powerpc/sysdev/cpm2_pic.c index b16ca3ed65d2..78f1f7cca0a0 100644 --- a/arch/powerpc/sysdev/cpm2_pic.c +++ b/arch/powerpc/sysdev/cpm2_pic.c | |||
| @@ -165,7 +165,7 @@ static int cpm2_set_irq_type(unsigned int virq, unsigned int flow_type) | |||
| 165 | edibit = (14 - (src - CPM2_IRQ_EXT1)); | 165 | edibit = (14 - (src - CPM2_IRQ_EXT1)); |
| 166 | else | 166 | else |
| 167 | if (src >= CPM2_IRQ_PORTC15 && src <= CPM2_IRQ_PORTC0) | 167 | if (src >= CPM2_IRQ_PORTC15 && src <= CPM2_IRQ_PORTC0) |
| 168 | edibit = (31 - (src - CPM2_IRQ_PORTC15)); | 168 | edibit = (31 - (CPM2_IRQ_PORTC0 - src)); |
| 169 | else | 169 | else |
| 170 | return (flow_type & IRQ_TYPE_LEVEL_LOW) ? 0 : -EINVAL; | 170 | return (flow_type & IRQ_TYPE_LEVEL_LOW) ? 0 : -EINVAL; |
| 171 | 171 | ||
diff --git a/arch/powerpc/sysdev/ipic.c b/arch/powerpc/sysdev/ipic.c index 88a983ece5c9..9a89cd3e80a2 100644 --- a/arch/powerpc/sysdev/ipic.c +++ b/arch/powerpc/sysdev/ipic.c | |||
| @@ -890,7 +890,7 @@ unsigned int ipic_get_irq(void) | |||
| 890 | return irq_linear_revmap(primary_ipic->irqhost, irq); | 890 | return irq_linear_revmap(primary_ipic->irqhost, irq); |
| 891 | } | 891 | } |
| 892 | 892 | ||
| 893 | #ifdef CONFIG_PM | 893 | #ifdef CONFIG_SUSPEND |
| 894 | static struct { | 894 | static struct { |
| 895 | u32 sicfr; | 895 | u32 sicfr; |
| 896 | u32 siprr[2]; | 896 | u32 siprr[2]; |
