diff options
Diffstat (limited to 'arch')
22 files changed, 112 insertions, 55 deletions
diff --git a/arch/arm/boot/dts/r8a7790.dtsi b/arch/arm/boot/dts/r8a7790.dtsi index 46e1d7ef163f..9987dd0e9c59 100644 --- a/arch/arm/boot/dts/r8a7790.dtsi +++ b/arch/arm/boot/dts/r8a7790.dtsi | |||
| @@ -241,7 +241,7 @@ | |||
| 241 | 241 | ||
| 242 | sdhi0: sdhi@ee100000 { | 242 | sdhi0: sdhi@ee100000 { |
| 243 | compatible = "renesas,sdhi-r8a7790"; | 243 | compatible = "renesas,sdhi-r8a7790"; |
| 244 | reg = <0 0xee100000 0 0x100>; | 244 | reg = <0 0xee100000 0 0x200>; |
| 245 | interrupt-parent = <&gic>; | 245 | interrupt-parent = <&gic>; |
| 246 | interrupts = <0 165 4>; | 246 | interrupts = <0 165 4>; |
| 247 | cap-sd-highspeed; | 247 | cap-sd-highspeed; |
| @@ -250,7 +250,7 @@ | |||
| 250 | 250 | ||
| 251 | sdhi1: sdhi@ee120000 { | 251 | sdhi1: sdhi@ee120000 { |
| 252 | compatible = "renesas,sdhi-r8a7790"; | 252 | compatible = "renesas,sdhi-r8a7790"; |
| 253 | reg = <0 0xee120000 0 0x100>; | 253 | reg = <0 0xee120000 0 0x200>; |
| 254 | interrupt-parent = <&gic>; | 254 | interrupt-parent = <&gic>; |
| 255 | interrupts = <0 166 4>; | 255 | interrupts = <0 166 4>; |
| 256 | cap-sd-highspeed; | 256 | cap-sd-highspeed; |
diff --git a/arch/arm/mach-omap2/board-ldp.c b/arch/arm/mach-omap2/board-ldp.c index 4ec8d82b0492..44a59c3abfb0 100644 --- a/arch/arm/mach-omap2/board-ldp.c +++ b/arch/arm/mach-omap2/board-ldp.c | |||
| @@ -242,12 +242,18 @@ static void __init ldp_display_init(void) | |||
| 242 | 242 | ||
| 243 | static int ldp_twl_gpio_setup(struct device *dev, unsigned gpio, unsigned ngpio) | 243 | static int ldp_twl_gpio_setup(struct device *dev, unsigned gpio, unsigned ngpio) |
| 244 | { | 244 | { |
| 245 | int res; | ||
| 246 | |||
| 245 | /* LCD enable GPIO */ | 247 | /* LCD enable GPIO */ |
| 246 | ldp_lcd_pdata.enable_gpio = gpio + 7; | 248 | ldp_lcd_pdata.enable_gpio = gpio + 7; |
| 247 | 249 | ||
| 248 | /* Backlight enable GPIO */ | 250 | /* Backlight enable GPIO */ |
| 249 | ldp_lcd_pdata.backlight_gpio = gpio + 15; | 251 | ldp_lcd_pdata.backlight_gpio = gpio + 15; |
| 250 | 252 | ||
| 253 | res = platform_device_register(&ldp_lcd_device); | ||
| 254 | if (res) | ||
| 255 | pr_err("Unable to register LCD: %d\n", res); | ||
| 256 | |||
| 251 | return 0; | 257 | return 0; |
| 252 | } | 258 | } |
| 253 | 259 | ||
| @@ -346,7 +352,6 @@ static struct omap2_hsmmc_info mmc[] __initdata = { | |||
| 346 | 352 | ||
| 347 | static struct platform_device *ldp_devices[] __initdata = { | 353 | static struct platform_device *ldp_devices[] __initdata = { |
| 348 | &ldp_gpio_keys_device, | 354 | &ldp_gpio_keys_device, |
| 349 | &ldp_lcd_device, | ||
| 350 | }; | 355 | }; |
| 351 | 356 | ||
| 352 | #ifdef CONFIG_OMAP_MUX | 357 | #ifdef CONFIG_OMAP_MUX |
diff --git a/arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c b/arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c index 56cebb05509e..d23c77fadb31 100644 --- a/arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c | |||
| @@ -796,7 +796,7 @@ struct omap_hwmod omap2xxx_counter_32k_hwmod = { | |||
| 796 | 796 | ||
| 797 | /* gpmc */ | 797 | /* gpmc */ |
| 798 | static struct omap_hwmod_irq_info omap2xxx_gpmc_irqs[] = { | 798 | static struct omap_hwmod_irq_info omap2xxx_gpmc_irqs[] = { |
| 799 | { .irq = 20 }, | 799 | { .irq = 20 + OMAP_INTC_START, }, |
| 800 | { .irq = -1 } | 800 | { .irq = -1 } |
| 801 | }; | 801 | }; |
| 802 | 802 | ||
| @@ -841,7 +841,7 @@ static struct omap_hwmod_class omap2_rng_hwmod_class = { | |||
| 841 | }; | 841 | }; |
| 842 | 842 | ||
| 843 | static struct omap_hwmod_irq_info omap2_rng_mpu_irqs[] = { | 843 | static struct omap_hwmod_irq_info omap2_rng_mpu_irqs[] = { |
| 844 | { .irq = 52 }, | 844 | { .irq = 52 + OMAP_INTC_START, }, |
| 845 | { .irq = -1 } | 845 | { .irq = -1 } |
| 846 | }; | 846 | }; |
| 847 | 847 | ||
diff --git a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c index d33742908f97..4c3b1e6df508 100644 --- a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | |||
| @@ -2165,7 +2165,7 @@ static struct omap_hwmod_class omap3xxx_gpmc_hwmod_class = { | |||
| 2165 | }; | 2165 | }; |
| 2166 | 2166 | ||
| 2167 | static struct omap_hwmod_irq_info omap3xxx_gpmc_irqs[] = { | 2167 | static struct omap_hwmod_irq_info omap3xxx_gpmc_irqs[] = { |
| 2168 | { .irq = 20 }, | 2168 | { .irq = 20 + OMAP_INTC_START, }, |
| 2169 | { .irq = -1 } | 2169 | { .irq = -1 } |
| 2170 | }; | 2170 | }; |
| 2171 | 2171 | ||
| @@ -2999,7 +2999,7 @@ static struct omap_mmu_dev_attr mmu_isp_dev_attr = { | |||
| 2999 | 2999 | ||
| 3000 | static struct omap_hwmod omap3xxx_mmu_isp_hwmod; | 3000 | static struct omap_hwmod omap3xxx_mmu_isp_hwmod; |
| 3001 | static struct omap_hwmod_irq_info omap3xxx_mmu_isp_irqs[] = { | 3001 | static struct omap_hwmod_irq_info omap3xxx_mmu_isp_irqs[] = { |
| 3002 | { .irq = 24 }, | 3002 | { .irq = 24 + OMAP_INTC_START, }, |
| 3003 | { .irq = -1 } | 3003 | { .irq = -1 } |
| 3004 | }; | 3004 | }; |
| 3005 | 3005 | ||
| @@ -3041,7 +3041,7 @@ static struct omap_mmu_dev_attr mmu_iva_dev_attr = { | |||
| 3041 | 3041 | ||
| 3042 | static struct omap_hwmod omap3xxx_mmu_iva_hwmod; | 3042 | static struct omap_hwmod omap3xxx_mmu_iva_hwmod; |
| 3043 | static struct omap_hwmod_irq_info omap3xxx_mmu_iva_irqs[] = { | 3043 | static struct omap_hwmod_irq_info omap3xxx_mmu_iva_irqs[] = { |
| 3044 | { .irq = 28 }, | 3044 | { .irq = 28 + OMAP_INTC_START, }, |
| 3045 | { .irq = -1 } | 3045 | { .irq = -1 } |
| 3046 | }; | 3046 | }; |
| 3047 | 3047 | ||
diff --git a/arch/arm/mach-omap2/omap_hwmod_7xx_data.c b/arch/arm/mach-omap2/omap_hwmod_7xx_data.c index db32d5380b11..18f333c440db 100644 --- a/arch/arm/mach-omap2/omap_hwmod_7xx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_7xx_data.c | |||
| @@ -1637,7 +1637,7 @@ static struct omap_hwmod dra7xx_uart1_hwmod = { | |||
| 1637 | .class = &dra7xx_uart_hwmod_class, | 1637 | .class = &dra7xx_uart_hwmod_class, |
| 1638 | .clkdm_name = "l4per_clkdm", | 1638 | .clkdm_name = "l4per_clkdm", |
| 1639 | .main_clk = "uart1_gfclk_mux", | 1639 | .main_clk = "uart1_gfclk_mux", |
| 1640 | .flags = HWMOD_SWSUP_SIDLE_ACT, | 1640 | .flags = HWMOD_SWSUP_SIDLE_ACT | DEBUG_OMAP2UART1_FLAGS, |
| 1641 | .prcm = { | 1641 | .prcm = { |
| 1642 | .omap4 = { | 1642 | .omap4 = { |
| 1643 | .clkctrl_offs = DRA7XX_CM_L4PER_UART1_CLKCTRL_OFFSET, | 1643 | .clkctrl_offs = DRA7XX_CM_L4PER_UART1_CLKCTRL_OFFSET, |
diff --git a/arch/arm/mach-pxa/include/mach/lubbock.h b/arch/arm/mach-pxa/include/mach/lubbock.h index 2a086e8373eb..958cd6af9384 100644 --- a/arch/arm/mach-pxa/include/mach/lubbock.h +++ b/arch/arm/mach-pxa/include/mach/lubbock.h | |||
| @@ -10,6 +10,8 @@ | |||
| 10 | * published by the Free Software Foundation. | 10 | * published by the Free Software Foundation. |
| 11 | */ | 11 | */ |
| 12 | 12 | ||
| 13 | #include <mach/irqs.h> | ||
| 14 | |||
| 13 | #define LUBBOCK_ETH_PHYS PXA_CS3_PHYS | 15 | #define LUBBOCK_ETH_PHYS PXA_CS3_PHYS |
| 14 | 16 | ||
| 15 | #define LUBBOCK_FPGA_PHYS PXA_CS2_PHYS | 17 | #define LUBBOCK_FPGA_PHYS PXA_CS2_PHYS |
diff --git a/arch/arm/mach-shmobile/board-armadillo800eva.c b/arch/arm/mach-shmobile/board-armadillo800eva.c index 958e3cbf0ac2..c18689123023 100644 --- a/arch/arm/mach-shmobile/board-armadillo800eva.c +++ b/arch/arm/mach-shmobile/board-armadillo800eva.c | |||
| @@ -614,6 +614,11 @@ static struct regulator_consumer_supply fixed3v3_power_consumers[] = { | |||
| 614 | REGULATOR_SUPPLY("vqmmc", "sh_mmcif"), | 614 | REGULATOR_SUPPLY("vqmmc", "sh_mmcif"), |
| 615 | }; | 615 | }; |
| 616 | 616 | ||
| 617 | /* Fixed 3.3V regulator used by LCD backlight */ | ||
| 618 | static struct regulator_consumer_supply fixed5v0_power_consumers[] = { | ||
| 619 | REGULATOR_SUPPLY("power", "pwm-backlight.0"), | ||
| 620 | }; | ||
| 621 | |||
| 617 | /* Fixed 3.3V regulator to be used by SDHI0 */ | 622 | /* Fixed 3.3V regulator to be used by SDHI0 */ |
| 618 | static struct regulator_consumer_supply vcc_sdhi0_consumers[] = { | 623 | static struct regulator_consumer_supply vcc_sdhi0_consumers[] = { |
| 619 | REGULATOR_SUPPLY("vmmc", "sh_mobile_sdhi.0"), | 624 | REGULATOR_SUPPLY("vmmc", "sh_mobile_sdhi.0"), |
| @@ -1196,6 +1201,8 @@ static void __init eva_init(void) | |||
| 1196 | 1201 | ||
| 1197 | regulator_register_always_on(0, "fixed-3.3V", fixed3v3_power_consumers, | 1202 | regulator_register_always_on(0, "fixed-3.3V", fixed3v3_power_consumers, |
| 1198 | ARRAY_SIZE(fixed3v3_power_consumers), 3300000); | 1203 | ARRAY_SIZE(fixed3v3_power_consumers), 3300000); |
| 1204 | regulator_register_always_on(3, "fixed-5.0V", fixed5v0_power_consumers, | ||
| 1205 | ARRAY_SIZE(fixed5v0_power_consumers), 5000000); | ||
| 1199 | 1206 | ||
| 1200 | pinctrl_register_mappings(eva_pinctrl_map, ARRAY_SIZE(eva_pinctrl_map)); | 1207 | pinctrl_register_mappings(eva_pinctrl_map, ARRAY_SIZE(eva_pinctrl_map)); |
| 1201 | pwm_add_table(pwm_lookup, ARRAY_SIZE(pwm_lookup)); | 1208 | pwm_add_table(pwm_lookup, ARRAY_SIZE(pwm_lookup)); |
diff --git a/arch/arm/mach-shmobile/board-bockw.c b/arch/arm/mach-shmobile/board-bockw.c index 38611526fe9a..3c4995aebd22 100644 --- a/arch/arm/mach-shmobile/board-bockw.c +++ b/arch/arm/mach-shmobile/board-bockw.c | |||
| @@ -679,7 +679,7 @@ static void __init bockw_init(void) | |||
| 679 | .id = i, | 679 | .id = i, |
| 680 | .data = &rsnd_card_info[i], | 680 | .data = &rsnd_card_info[i], |
| 681 | .size_data = sizeof(struct asoc_simple_card_info), | 681 | .size_data = sizeof(struct asoc_simple_card_info), |
| 682 | .dma_mask = ~0, | 682 | .dma_mask = DMA_BIT_MASK(32), |
| 683 | }; | 683 | }; |
| 684 | 684 | ||
| 685 | platform_device_register_full(&cardinfo); | 685 | platform_device_register_full(&cardinfo); |
diff --git a/arch/powerpc/boot/dts/mpc5125twr.dts b/arch/powerpc/boot/dts/mpc5125twr.dts index 4177b62240c2..a618dfc13e4c 100644 --- a/arch/powerpc/boot/dts/mpc5125twr.dts +++ b/arch/powerpc/boot/dts/mpc5125twr.dts | |||
| @@ -58,7 +58,6 @@ | |||
| 58 | compatible = "fsl,mpc5121-immr"; | 58 | compatible = "fsl,mpc5121-immr"; |
| 59 | #address-cells = <1>; | 59 | #address-cells = <1>; |
| 60 | #size-cells = <1>; | 60 | #size-cells = <1>; |
| 61 | #interrupt-cells = <2>; | ||
| 62 | ranges = <0x0 0x80000000 0x400000>; | 61 | ranges = <0x0 0x80000000 0x400000>; |
| 63 | reg = <0x80000000 0x400000>; | 62 | reg = <0x80000000 0x400000>; |
| 64 | bus-frequency = <66000000>; // 66 MHz ips bus | 63 | bus-frequency = <66000000>; // 66 MHz ips bus |
| @@ -189,6 +188,10 @@ | |||
| 189 | reg = <0xA000 0x1000>; | 188 | reg = <0xA000 0x1000>; |
| 190 | }; | 189 | }; |
| 191 | 190 | ||
| 191 | // disable USB1 port | ||
| 192 | // TODO: | ||
| 193 | // correct pinmux config and fix USB3320 ulpi dependency | ||
| 194 | // before re-enabling it | ||
| 192 | usb@3000 { | 195 | usb@3000 { |
| 193 | compatible = "fsl,mpc5121-usb2-dr"; | 196 | compatible = "fsl,mpc5121-usb2-dr"; |
| 194 | reg = <0x3000 0x400>; | 197 | reg = <0x3000 0x400>; |
| @@ -197,6 +200,7 @@ | |||
| 197 | interrupts = <43 0x8>; | 200 | interrupts = <43 0x8>; |
| 198 | dr_mode = "host"; | 201 | dr_mode = "host"; |
| 199 | phy_type = "ulpi"; | 202 | phy_type = "ulpi"; |
| 203 | status = "disabled"; | ||
| 200 | }; | 204 | }; |
| 201 | 205 | ||
| 202 | // 5125 PSCs are not 52xx or 5121 PSC compatible | 206 | // 5125 PSCs are not 52xx or 5121 PSC compatible |
diff --git a/arch/powerpc/include/asm/exception-64s.h b/arch/powerpc/include/asm/exception-64s.h index 894662a5d4d5..243ce69ad685 100644 --- a/arch/powerpc/include/asm/exception-64s.h +++ b/arch/powerpc/include/asm/exception-64s.h | |||
| @@ -284,7 +284,7 @@ do_kvm_##n: \ | |||
| 284 | subi r1,r1,INT_FRAME_SIZE; /* alloc frame on kernel stack */ \ | 284 | subi r1,r1,INT_FRAME_SIZE; /* alloc frame on kernel stack */ \ |
| 285 | beq- 1f; \ | 285 | beq- 1f; \ |
| 286 | ld r1,PACAKSAVE(r13); /* kernel stack to use */ \ | 286 | ld r1,PACAKSAVE(r13); /* kernel stack to use */ \ |
| 287 | 1: cmpdi cr1,r1,0; /* check if r1 is in userspace */ \ | 287 | 1: cmpdi cr1,r1,-INT_FRAME_SIZE; /* check if r1 is in userspace */ \ |
| 288 | blt+ cr1,3f; /* abort if it is */ \ | 288 | blt+ cr1,3f; /* abort if it is */ \ |
| 289 | li r1,(n); /* will be reloaded later */ \ | 289 | li r1,(n); /* will be reloaded later */ \ |
| 290 | sth r1,PACA_TRAP_SAVE(r13); \ | 290 | sth r1,PACA_TRAP_SAVE(r13); \ |
diff --git a/arch/powerpc/include/asm/unaligned.h b/arch/powerpc/include/asm/unaligned.h index 5f1b1e3c2137..8296381ae432 100644 --- a/arch/powerpc/include/asm/unaligned.h +++ b/arch/powerpc/include/asm/unaligned.h | |||
| @@ -4,13 +4,18 @@ | |||
| 4 | #ifdef __KERNEL__ | 4 | #ifdef __KERNEL__ |
| 5 | 5 | ||
| 6 | /* | 6 | /* |
| 7 | * The PowerPC can do unaligned accesses itself in big endian mode. | 7 | * The PowerPC can do unaligned accesses itself based on its endian mode. |
| 8 | */ | 8 | */ |
| 9 | #include <linux/unaligned/access_ok.h> | 9 | #include <linux/unaligned/access_ok.h> |
| 10 | #include <linux/unaligned/generic.h> | 10 | #include <linux/unaligned/generic.h> |
| 11 | 11 | ||
| 12 | #ifdef __LITTLE_ENDIAN__ | ||
| 13 | #define get_unaligned __get_unaligned_le | ||
| 14 | #define put_unaligned __put_unaligned_le | ||
| 15 | #else | ||
| 12 | #define get_unaligned __get_unaligned_be | 16 | #define get_unaligned __get_unaligned_be |
| 13 | #define put_unaligned __put_unaligned_be | 17 | #define put_unaligned __put_unaligned_be |
| 18 | #endif | ||
| 14 | 19 | ||
| 15 | #endif /* __KERNEL__ */ | 20 | #endif /* __KERNEL__ */ |
| 16 | #endif /* _ASM_POWERPC_UNALIGNED_H */ | 21 | #endif /* _ASM_POWERPC_UNALIGNED_H */ |
diff --git a/arch/powerpc/kernel/head_64.S b/arch/powerpc/kernel/head_64.S index 2ae41aba4053..4f0946de2d5c 100644 --- a/arch/powerpc/kernel/head_64.S +++ b/arch/powerpc/kernel/head_64.S | |||
| @@ -80,6 +80,7 @@ END_FTR_SECTION(0, 1) | |||
| 80 | * of the function that the cpu should jump to to continue | 80 | * of the function that the cpu should jump to to continue |
| 81 | * initialization. | 81 | * initialization. |
| 82 | */ | 82 | */ |
| 83 | .balign 8 | ||
| 83 | .globl __secondary_hold_spinloop | 84 | .globl __secondary_hold_spinloop |
| 84 | __secondary_hold_spinloop: | 85 | __secondary_hold_spinloop: |
| 85 | .llong 0x0 | 86 | .llong 0x0 |
| @@ -470,6 +471,7 @@ _STATIC(__after_prom_start) | |||
| 470 | mtctr r8 | 471 | mtctr r8 |
| 471 | bctr | 472 | bctr |
| 472 | 473 | ||
| 474 | .balign 8 | ||
| 473 | p_end: .llong _end - _stext | 475 | p_end: .llong _end - _stext |
| 474 | 476 | ||
| 475 | 4: /* Now copy the rest of the kernel up to _end */ | 477 | 4: /* Now copy the rest of the kernel up to _end */ |
diff --git a/arch/powerpc/lib/copyuser_64.S b/arch/powerpc/lib/copyuser_64.S index d73a59014900..596a285c0755 100644 --- a/arch/powerpc/lib/copyuser_64.S +++ b/arch/powerpc/lib/copyuser_64.S | |||
| @@ -9,6 +9,14 @@ | |||
| 9 | #include <asm/processor.h> | 9 | #include <asm/processor.h> |
| 10 | #include <asm/ppc_asm.h> | 10 | #include <asm/ppc_asm.h> |
| 11 | 11 | ||
| 12 | #ifdef __BIG_ENDIAN__ | ||
| 13 | #define sLd sld /* Shift towards low-numbered address. */ | ||
| 14 | #define sHd srd /* Shift towards high-numbered address. */ | ||
| 15 | #else | ||
| 16 | #define sLd srd /* Shift towards low-numbered address. */ | ||
| 17 | #define sHd sld /* Shift towards high-numbered address. */ | ||
| 18 | #endif | ||
| 19 | |||
| 12 | .align 7 | 20 | .align 7 |
| 13 | _GLOBAL(__copy_tofrom_user) | 21 | _GLOBAL(__copy_tofrom_user) |
| 14 | BEGIN_FTR_SECTION | 22 | BEGIN_FTR_SECTION |
| @@ -118,10 +126,10 @@ END_FTR_SECTION_IFCLR(CPU_FTR_UNALIGNED_LD_STD) | |||
| 118 | 126 | ||
| 119 | 24: ld r9,0(r4) /* 3+2n loads, 2+2n stores */ | 127 | 24: ld r9,0(r4) /* 3+2n loads, 2+2n stores */ |
| 120 | 25: ld r0,8(r4) | 128 | 25: ld r0,8(r4) |
| 121 | sld r6,r9,r10 | 129 | sLd r6,r9,r10 |
| 122 | 26: ldu r9,16(r4) | 130 | 26: ldu r9,16(r4) |
| 123 | srd r7,r0,r11 | 131 | sHd r7,r0,r11 |
| 124 | sld r8,r0,r10 | 132 | sLd r8,r0,r10 |
| 125 | or r7,r7,r6 | 133 | or r7,r7,r6 |
| 126 | blt cr6,79f | 134 | blt cr6,79f |
| 127 | 27: ld r0,8(r4) | 135 | 27: ld r0,8(r4) |
| @@ -129,35 +137,35 @@ END_FTR_SECTION_IFCLR(CPU_FTR_UNALIGNED_LD_STD) | |||
| 129 | 137 | ||
| 130 | 28: ld r0,0(r4) /* 4+2n loads, 3+2n stores */ | 138 | 28: ld r0,0(r4) /* 4+2n loads, 3+2n stores */ |
| 131 | 29: ldu r9,8(r4) | 139 | 29: ldu r9,8(r4) |
| 132 | sld r8,r0,r10 | 140 | sLd r8,r0,r10 |
| 133 | addi r3,r3,-8 | 141 | addi r3,r3,-8 |
| 134 | blt cr6,5f | 142 | blt cr6,5f |
| 135 | 30: ld r0,8(r4) | 143 | 30: ld r0,8(r4) |
| 136 | srd r12,r9,r11 | 144 | sHd r12,r9,r11 |
| 137 | sld r6,r9,r10 | 145 | sLd r6,r9,r10 |
| 138 | 31: ldu r9,16(r4) | 146 | 31: ldu r9,16(r4) |
| 139 | or r12,r8,r12 | 147 | or r12,r8,r12 |
| 140 | srd r7,r0,r11 | 148 | sHd r7,r0,r11 |
| 141 | sld r8,r0,r10 | 149 | sLd r8,r0,r10 |
| 142 | addi r3,r3,16 | 150 | addi r3,r3,16 |
| 143 | beq cr6,78f | 151 | beq cr6,78f |
| 144 | 152 | ||
| 145 | 1: or r7,r7,r6 | 153 | 1: or r7,r7,r6 |
| 146 | 32: ld r0,8(r4) | 154 | 32: ld r0,8(r4) |
| 147 | 76: std r12,8(r3) | 155 | 76: std r12,8(r3) |
| 148 | 2: srd r12,r9,r11 | 156 | 2: sHd r12,r9,r11 |
| 149 | sld r6,r9,r10 | 157 | sLd r6,r9,r10 |
| 150 | 33: ldu r9,16(r4) | 158 | 33: ldu r9,16(r4) |
| 151 | or r12,r8,r12 | 159 | or r12,r8,r12 |
| 152 | 77: stdu r7,16(r3) | 160 | 77: stdu r7,16(r3) |
| 153 | srd r7,r0,r11 | 161 | sHd r7,r0,r11 |
| 154 | sld r8,r0,r10 | 162 | sLd r8,r0,r10 |
| 155 | bdnz 1b | 163 | bdnz 1b |
| 156 | 164 | ||
| 157 | 78: std r12,8(r3) | 165 | 78: std r12,8(r3) |
| 158 | or r7,r7,r6 | 166 | or r7,r7,r6 |
| 159 | 79: std r7,16(r3) | 167 | 79: std r7,16(r3) |
| 160 | 5: srd r12,r9,r11 | 168 | 5: sHd r12,r9,r11 |
| 161 | or r12,r8,r12 | 169 | or r12,r8,r12 |
| 162 | 80: std r12,24(r3) | 170 | 80: std r12,24(r3) |
| 163 | bne 6f | 171 | bne 6f |
| @@ -165,23 +173,38 @@ END_FTR_SECTION_IFCLR(CPU_FTR_UNALIGNED_LD_STD) | |||
| 165 | blr | 173 | blr |
| 166 | 6: cmpwi cr1,r5,8 | 174 | 6: cmpwi cr1,r5,8 |
| 167 | addi r3,r3,32 | 175 | addi r3,r3,32 |
| 168 | sld r9,r9,r10 | 176 | sLd r9,r9,r10 |
| 169 | ble cr1,7f | 177 | ble cr1,7f |
| 170 | 34: ld r0,8(r4) | 178 | 34: ld r0,8(r4) |
| 171 | srd r7,r0,r11 | 179 | sHd r7,r0,r11 |
| 172 | or r9,r7,r9 | 180 | or r9,r7,r9 |
| 173 | 7: | 181 | 7: |
| 174 | bf cr7*4+1,1f | 182 | bf cr7*4+1,1f |
| 183 | #ifdef __BIG_ENDIAN__ | ||
| 175 | rotldi r9,r9,32 | 184 | rotldi r9,r9,32 |
| 185 | #endif | ||
| 176 | 94: stw r9,0(r3) | 186 | 94: stw r9,0(r3) |
| 187 | #ifdef __LITTLE_ENDIAN__ | ||
| 188 | rotrdi r9,r9,32 | ||
| 189 | #endif | ||
| 177 | addi r3,r3,4 | 190 | addi r3,r3,4 |
| 178 | 1: bf cr7*4+2,2f | 191 | 1: bf cr7*4+2,2f |
| 192 | #ifdef __BIG_ENDIAN__ | ||
| 179 | rotldi r9,r9,16 | 193 | rotldi r9,r9,16 |
| 194 | #endif | ||
| 180 | 95: sth r9,0(r3) | 195 | 95: sth r9,0(r3) |
| 196 | #ifdef __LITTLE_ENDIAN__ | ||
| 197 | rotrdi r9,r9,16 | ||
| 198 | #endif | ||
| 181 | addi r3,r3,2 | 199 | addi r3,r3,2 |
| 182 | 2: bf cr7*4+3,3f | 200 | 2: bf cr7*4+3,3f |
| 201 | #ifdef __BIG_ENDIAN__ | ||
| 183 | rotldi r9,r9,8 | 202 | rotldi r9,r9,8 |
| 203 | #endif | ||
| 184 | 96: stb r9,0(r3) | 204 | 96: stb r9,0(r3) |
| 205 | #ifdef __LITTLE_ENDIAN__ | ||
| 206 | rotrdi r9,r9,8 | ||
| 207 | #endif | ||
| 185 | 3: li r3,0 | 208 | 3: li r3,0 |
| 186 | blr | 209 | blr |
| 187 | 210 | ||
diff --git a/arch/powerpc/platforms/powernv/eeh-ioda.c b/arch/powerpc/platforms/powernv/eeh-ioda.c index 02245cee7818..d7ddcee7feb8 100644 --- a/arch/powerpc/platforms/powernv/eeh-ioda.c +++ b/arch/powerpc/platforms/powernv/eeh-ioda.c | |||
| @@ -36,7 +36,6 @@ | |||
| 36 | #include "powernv.h" | 36 | #include "powernv.h" |
| 37 | #include "pci.h" | 37 | #include "pci.h" |
| 38 | 38 | ||
| 39 | static char *hub_diag = NULL; | ||
| 40 | static int ioda_eeh_nb_init = 0; | 39 | static int ioda_eeh_nb_init = 0; |
| 41 | 40 | ||
| 42 | static int ioda_eeh_event(struct notifier_block *nb, | 41 | static int ioda_eeh_event(struct notifier_block *nb, |
| @@ -140,15 +139,6 @@ static int ioda_eeh_post_init(struct pci_controller *hose) | |||
| 140 | ioda_eeh_nb_init = 1; | 139 | ioda_eeh_nb_init = 1; |
| 141 | } | 140 | } |
| 142 | 141 | ||
| 143 | /* We needn't HUB diag-data on PHB3 */ | ||
| 144 | if (phb->type == PNV_PHB_IODA1 && !hub_diag) { | ||
| 145 | hub_diag = (char *)__get_free_page(GFP_KERNEL | __GFP_ZERO); | ||
| 146 | if (!hub_diag) { | ||
| 147 | pr_err("%s: Out of memory !\n", __func__); | ||
| 148 | return -ENOMEM; | ||
| 149 | } | ||
| 150 | } | ||
| 151 | |||
| 152 | #ifdef CONFIG_DEBUG_FS | 142 | #ifdef CONFIG_DEBUG_FS |
| 153 | if (phb->dbgfs) { | 143 | if (phb->dbgfs) { |
| 154 | debugfs_create_file("err_injct_outbound", 0600, | 144 | debugfs_create_file("err_injct_outbound", 0600, |
| @@ -633,11 +623,10 @@ static void ioda_eeh_hub_diag_common(struct OpalIoP7IOCErrorData *data) | |||
| 633 | static void ioda_eeh_hub_diag(struct pci_controller *hose) | 623 | static void ioda_eeh_hub_diag(struct pci_controller *hose) |
| 634 | { | 624 | { |
| 635 | struct pnv_phb *phb = hose->private_data; | 625 | struct pnv_phb *phb = hose->private_data; |
| 636 | struct OpalIoP7IOCErrorData *data; | 626 | struct OpalIoP7IOCErrorData *data = &phb->diag.hub_diag; |
| 637 | long rc; | 627 | long rc; |
| 638 | 628 | ||
| 639 | data = (struct OpalIoP7IOCErrorData *)ioda_eeh_hub_diag; | 629 | rc = opal_pci_get_hub_diag_data(phb->hub_id, data, sizeof(*data)); |
| 640 | rc = opal_pci_get_hub_diag_data(phb->hub_id, data, PAGE_SIZE); | ||
| 641 | if (rc != OPAL_SUCCESS) { | 630 | if (rc != OPAL_SUCCESS) { |
| 642 | pr_warning("%s: Failed to get HUB#%llx diag-data (%ld)\n", | 631 | pr_warning("%s: Failed to get HUB#%llx diag-data (%ld)\n", |
| 643 | __func__, phb->hub_id, rc); | 632 | __func__, phb->hub_id, rc); |
| @@ -820,14 +809,15 @@ static void ioda_eeh_phb_diag(struct pci_controller *hose) | |||
| 820 | struct OpalIoPhbErrorCommon *common; | 809 | struct OpalIoPhbErrorCommon *common; |
| 821 | long rc; | 810 | long rc; |
| 822 | 811 | ||
| 823 | common = (struct OpalIoPhbErrorCommon *)phb->diag.blob; | 812 | rc = opal_pci_get_phb_diag_data2(phb->opal_id, phb->diag.blob, |
| 824 | rc = opal_pci_get_phb_diag_data2(phb->opal_id, common, PAGE_SIZE); | 813 | PNV_PCI_DIAG_BUF_SIZE); |
| 825 | if (rc != OPAL_SUCCESS) { | 814 | if (rc != OPAL_SUCCESS) { |
| 826 | pr_warning("%s: Failed to get diag-data for PHB#%x (%ld)\n", | 815 | pr_warning("%s: Failed to get diag-data for PHB#%x (%ld)\n", |
| 827 | __func__, hose->global_number, rc); | 816 | __func__, hose->global_number, rc); |
| 828 | return; | 817 | return; |
| 829 | } | 818 | } |
| 830 | 819 | ||
| 820 | common = (struct OpalIoPhbErrorCommon *)phb->diag.blob; | ||
| 831 | switch (common->ioType) { | 821 | switch (common->ioType) { |
| 832 | case OPAL_PHB_ERROR_DATA_TYPE_P7IOC: | 822 | case OPAL_PHB_ERROR_DATA_TYPE_P7IOC: |
| 833 | ioda_eeh_p7ioc_phb_diag(hose, common); | 823 | ioda_eeh_p7ioc_phb_diag(hose, common); |
diff --git a/arch/powerpc/platforms/powernv/pci.h b/arch/powerpc/platforms/powernv/pci.h index 911c24ef033e..1ed8d5f40f5a 100644 --- a/arch/powerpc/platforms/powernv/pci.h +++ b/arch/powerpc/platforms/powernv/pci.h | |||
| @@ -172,11 +172,13 @@ struct pnv_phb { | |||
| 172 | } ioda; | 172 | } ioda; |
| 173 | }; | 173 | }; |
| 174 | 174 | ||
| 175 | /* PHB status structure */ | 175 | /* PHB and hub status structure */ |
| 176 | union { | 176 | union { |
| 177 | unsigned char blob[PNV_PCI_DIAG_BUF_SIZE]; | 177 | unsigned char blob[PNV_PCI_DIAG_BUF_SIZE]; |
| 178 | struct OpalIoP7IOCPhbErrorData p7ioc; | 178 | struct OpalIoP7IOCPhbErrorData p7ioc; |
| 179 | struct OpalIoP7IOCErrorData hub_diag; | ||
| 179 | } diag; | 180 | } diag; |
| 181 | |||
| 180 | }; | 182 | }; |
| 181 | 183 | ||
| 182 | extern struct pci_ops pnv_pci_ops; | 184 | extern struct pci_ops pnv_pci_ops; |
diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig index 1e1a03d2d19f..e9f312532526 100644 --- a/arch/s390/Kconfig +++ b/arch/s390/Kconfig | |||
| @@ -135,7 +135,6 @@ config S390 | |||
| 135 | select HAVE_SYSCALL_TRACEPOINTS | 135 | select HAVE_SYSCALL_TRACEPOINTS |
| 136 | select HAVE_UID16 if 32BIT | 136 | select HAVE_UID16 if 32BIT |
| 137 | select HAVE_VIRT_CPU_ACCOUNTING | 137 | select HAVE_VIRT_CPU_ACCOUNTING |
| 138 | select INIT_ALL_POSSIBLE | ||
| 139 | select KTIME_SCALAR if 32BIT | 138 | select KTIME_SCALAR if 32BIT |
| 140 | select MODULES_USE_ELF_RELA | 139 | select MODULES_USE_ELF_RELA |
| 141 | select OLD_SIGACTION | 140 | select OLD_SIGACTION |
diff --git a/arch/s390/include/asm/smp.h b/arch/s390/include/asm/smp.h index ac9bed8e103f..160779394096 100644 --- a/arch/s390/include/asm/smp.h +++ b/arch/s390/include/asm/smp.h | |||
| @@ -31,6 +31,7 @@ extern void smp_yield(void); | |||
| 31 | extern void smp_stop_cpu(void); | 31 | extern void smp_stop_cpu(void); |
| 32 | extern void smp_cpu_set_polarization(int cpu, int val); | 32 | extern void smp_cpu_set_polarization(int cpu, int val); |
| 33 | extern int smp_cpu_get_polarization(int cpu); | 33 | extern int smp_cpu_get_polarization(int cpu); |
| 34 | extern void smp_fill_possible_mask(void); | ||
| 34 | 35 | ||
| 35 | #else /* CONFIG_SMP */ | 36 | #else /* CONFIG_SMP */ |
| 36 | 37 | ||
| @@ -50,6 +51,7 @@ static inline int smp_vcpu_scheduled(int cpu) { return 1; } | |||
| 50 | static inline void smp_yield_cpu(int cpu) { } | 51 | static inline void smp_yield_cpu(int cpu) { } |
| 51 | static inline void smp_yield(void) { } | 52 | static inline void smp_yield(void) { } |
| 52 | static inline void smp_stop_cpu(void) { } | 53 | static inline void smp_stop_cpu(void) { } |
| 54 | static inline void smp_fill_possible_mask(void) { } | ||
| 53 | 55 | ||
| 54 | #endif /* CONFIG_SMP */ | 56 | #endif /* CONFIG_SMP */ |
| 55 | 57 | ||
diff --git a/arch/s390/kernel/setup.c b/arch/s390/kernel/setup.c index 4444875266ee..0f3d44ecbfc6 100644 --- a/arch/s390/kernel/setup.c +++ b/arch/s390/kernel/setup.c | |||
| @@ -1023,6 +1023,7 @@ void __init setup_arch(char **cmdline_p) | |||
| 1023 | setup_vmcoreinfo(); | 1023 | setup_vmcoreinfo(); |
| 1024 | setup_lowcore(); | 1024 | setup_lowcore(); |
| 1025 | 1025 | ||
| 1026 | smp_fill_possible_mask(); | ||
| 1026 | cpu_init(); | 1027 | cpu_init(); |
| 1027 | s390_init_cpu_topology(); | 1028 | s390_init_cpu_topology(); |
| 1028 | 1029 | ||
diff --git a/arch/s390/kernel/smp.c b/arch/s390/kernel/smp.c index dc4a53465060..958704798f4a 100644 --- a/arch/s390/kernel/smp.c +++ b/arch/s390/kernel/smp.c | |||
| @@ -721,18 +721,14 @@ int __cpu_up(unsigned int cpu, struct task_struct *tidle) | |||
| 721 | return 0; | 721 | return 0; |
| 722 | } | 722 | } |
| 723 | 723 | ||
| 724 | static int __init setup_possible_cpus(char *s) | 724 | static unsigned int setup_possible_cpus __initdata; |
| 725 | { | ||
| 726 | int max, cpu; | ||
| 727 | 725 | ||
| 728 | if (kstrtoint(s, 0, &max) < 0) | 726 | static int __init _setup_possible_cpus(char *s) |
| 729 | return 0; | 727 | { |
| 730 | init_cpu_possible(cpumask_of(0)); | 728 | get_option(&s, &setup_possible_cpus); |
| 731 | for (cpu = 1; cpu < max && cpu < nr_cpu_ids; cpu++) | ||
| 732 | set_cpu_possible(cpu, true); | ||
| 733 | return 0; | 729 | return 0; |
| 734 | } | 730 | } |
| 735 | early_param("possible_cpus", setup_possible_cpus); | 731 | early_param("possible_cpus", _setup_possible_cpus); |
| 736 | 732 | ||
| 737 | #ifdef CONFIG_HOTPLUG_CPU | 733 | #ifdef CONFIG_HOTPLUG_CPU |
| 738 | 734 | ||
| @@ -775,6 +771,17 @@ void __noreturn cpu_die(void) | |||
| 775 | 771 | ||
| 776 | #endif /* CONFIG_HOTPLUG_CPU */ | 772 | #endif /* CONFIG_HOTPLUG_CPU */ |
| 777 | 773 | ||
| 774 | void __init smp_fill_possible_mask(void) | ||
| 775 | { | ||
| 776 | unsigned int possible, cpu; | ||
| 777 | |||
| 778 | possible = setup_possible_cpus; | ||
| 779 | if (!possible) | ||
| 780 | possible = MACHINE_IS_VM ? 64 : nr_cpu_ids; | ||
| 781 | for (cpu = 0; cpu < possible && cpu < nr_cpu_ids; cpu++) | ||
| 782 | set_cpu_possible(cpu, true); | ||
| 783 | } | ||
| 784 | |||
| 778 | void __init smp_prepare_cpus(unsigned int max_cpus) | 785 | void __init smp_prepare_cpus(unsigned int max_cpus) |
| 779 | { | 786 | { |
| 780 | /* request the 0x1201 emergency signal external interrupt */ | 787 | /* request the 0x1201 emergency signal external interrupt */ |
diff --git a/arch/s390/pci/pci_event.c b/arch/s390/pci/pci_event.c index 800f064b0da7..069607209a30 100644 --- a/arch/s390/pci/pci_event.c +++ b/arch/s390/pci/pci_event.c | |||
| @@ -75,6 +75,7 @@ void zpci_event_availability(void *data) | |||
| 75 | if (!zdev || zdev->state == ZPCI_FN_STATE_CONFIGURED) | 75 | if (!zdev || zdev->state == ZPCI_FN_STATE_CONFIGURED) |
| 76 | break; | 76 | break; |
| 77 | zdev->state = ZPCI_FN_STATE_CONFIGURED; | 77 | zdev->state = ZPCI_FN_STATE_CONFIGURED; |
| 78 | zdev->fh = ccdf->fh; | ||
| 78 | ret = zpci_enable_device(zdev); | 79 | ret = zpci_enable_device(zdev); |
| 79 | if (ret) | 80 | if (ret) |
| 80 | break; | 81 | break; |
| @@ -101,6 +102,7 @@ void zpci_event_availability(void *data) | |||
| 101 | if (pdev) | 102 | if (pdev) |
| 102 | pci_stop_and_remove_bus_device(pdev); | 103 | pci_stop_and_remove_bus_device(pdev); |
| 103 | 104 | ||
| 105 | zdev->fh = ccdf->fh; | ||
| 104 | zpci_disable_device(zdev); | 106 | zpci_disable_device(zdev); |
| 105 | zdev->state = ZPCI_FN_STATE_STANDBY; | 107 | zdev->state = ZPCI_FN_STATE_STANDBY; |
| 106 | break; | 108 | break; |
diff --git a/arch/sh/kernel/sh_ksyms_32.c b/arch/sh/kernel/sh_ksyms_32.c index 2a0a596ebf67..d77f2f6c7ff0 100644 --- a/arch/sh/kernel/sh_ksyms_32.c +++ b/arch/sh/kernel/sh_ksyms_32.c | |||
| @@ -20,6 +20,11 @@ EXPORT_SYMBOL(csum_partial_copy_generic); | |||
| 20 | EXPORT_SYMBOL(copy_page); | 20 | EXPORT_SYMBOL(copy_page); |
| 21 | EXPORT_SYMBOL(__clear_user); | 21 | EXPORT_SYMBOL(__clear_user); |
| 22 | EXPORT_SYMBOL(empty_zero_page); | 22 | EXPORT_SYMBOL(empty_zero_page); |
| 23 | #ifdef CONFIG_FLATMEM | ||
| 24 | /* need in pfn_valid macro */ | ||
| 25 | EXPORT_SYMBOL(min_low_pfn); | ||
| 26 | EXPORT_SYMBOL(max_low_pfn); | ||
| 27 | #endif | ||
| 23 | 28 | ||
| 24 | #define DECLARE_EXPORT(name) \ | 29 | #define DECLARE_EXPORT(name) \ |
| 25 | extern void name(void);EXPORT_SYMBOL(name) | 30 | extern void name(void);EXPORT_SYMBOL(name) |
diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c index dc1ec0dff939..ea04b342c026 100644 --- a/arch/x86/kernel/cpu/intel.c +++ b/arch/x86/kernel/cpu/intel.c | |||
| @@ -387,7 +387,8 @@ static void init_intel(struct cpuinfo_x86 *c) | |||
| 387 | set_cpu_cap(c, X86_FEATURE_PEBS); | 387 | set_cpu_cap(c, X86_FEATURE_PEBS); |
| 388 | } | 388 | } |
| 389 | 389 | ||
| 390 | if (c->x86 == 6 && c->x86_model == 29 && cpu_has_clflush) | 390 | if (c->x86 == 6 && cpu_has_clflush && |
| 391 | (c->x86_model == 29 || c->x86_model == 46 || c->x86_model == 47)) | ||
| 391 | set_cpu_cap(c, X86_FEATURE_CLFLUSH_MONITOR); | 392 | set_cpu_cap(c, X86_FEATURE_CLFLUSH_MONITOR); |
| 392 | 393 | ||
| 393 | #ifdef CONFIG_X86_64 | 394 | #ifdef CONFIG_X86_64 |
