diff options
Diffstat (limited to 'arch')
465 files changed, 2330 insertions, 1698 deletions
diff --git a/arch/alpha/include/asm/parport.h b/arch/alpha/include/asm/parport.h index c5ee7cbb2fcd..6abd0af11f13 100644 --- a/arch/alpha/include/asm/parport.h +++ b/arch/alpha/include/asm/parport.h | |||
| @@ -9,8 +9,8 @@ | |||
| 9 | #ifndef _ASM_AXP_PARPORT_H | 9 | #ifndef _ASM_AXP_PARPORT_H |
| 10 | #define _ASM_AXP_PARPORT_H 1 | 10 | #define _ASM_AXP_PARPORT_H 1 |
| 11 | 11 | ||
| 12 | static int __devinit parport_pc_find_isa_ports (int autoirq, int autodma); | 12 | static int parport_pc_find_isa_ports (int autoirq, int autodma); |
| 13 | static int __devinit parport_pc_find_nonpci_ports (int autoirq, int autodma) | 13 | static int parport_pc_find_nonpci_ports (int autoirq, int autodma) |
| 14 | { | 14 | { |
| 15 | return parport_pc_find_isa_ports (autoirq, autodma); | 15 | return parport_pc_find_isa_ports (autoirq, autodma); |
| 16 | } | 16 | } |
diff --git a/arch/alpha/kernel/pci.c b/arch/alpha/kernel/pci.c index ef757147cbf9..edb4e0097b75 100644 --- a/arch/alpha/kernel/pci.c +++ b/arch/alpha/kernel/pci.c | |||
| @@ -59,13 +59,13 @@ struct pci_controller *pci_isa_hose; | |||
| 59 | * Quirks. | 59 | * Quirks. |
| 60 | */ | 60 | */ |
| 61 | 61 | ||
| 62 | static void __devinit quirk_isa_bridge(struct pci_dev *dev) | 62 | static void quirk_isa_bridge(struct pci_dev *dev) |
| 63 | { | 63 | { |
| 64 | dev->class = PCI_CLASS_BRIDGE_ISA << 8; | 64 | dev->class = PCI_CLASS_BRIDGE_ISA << 8; |
| 65 | } | 65 | } |
| 66 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82378, quirk_isa_bridge); | 66 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82378, quirk_isa_bridge); |
| 67 | 67 | ||
| 68 | static void __devinit quirk_cypress(struct pci_dev *dev) | 68 | static void quirk_cypress(struct pci_dev *dev) |
| 69 | { | 69 | { |
| 70 | /* The Notorious Cy82C693 chip. */ | 70 | /* The Notorious Cy82C693 chip. */ |
| 71 | 71 | ||
| @@ -104,7 +104,7 @@ static void __devinit quirk_cypress(struct pci_dev *dev) | |||
| 104 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_CONTAQ, PCI_DEVICE_ID_CONTAQ_82C693, quirk_cypress); | 104 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_CONTAQ, PCI_DEVICE_ID_CONTAQ_82C693, quirk_cypress); |
| 105 | 105 | ||
| 106 | /* Called for each device after PCI setup is done. */ | 106 | /* Called for each device after PCI setup is done. */ |
| 107 | static void __devinit pcibios_fixup_final(struct pci_dev *dev) | 107 | static void pcibios_fixup_final(struct pci_dev *dev) |
| 108 | { | 108 | { |
| 109 | unsigned int class = dev->class >> 8; | 109 | unsigned int class = dev->class >> 8; |
| 110 | 110 | ||
| @@ -198,8 +198,7 @@ subsys_initcall(pcibios_init); | |||
| 198 | #ifdef ALPHA_RESTORE_SRM_SETUP | 198 | #ifdef ALPHA_RESTORE_SRM_SETUP |
| 199 | static struct pdev_srm_saved_conf *srm_saved_configs; | 199 | static struct pdev_srm_saved_conf *srm_saved_configs; |
| 200 | 200 | ||
| 201 | void __devinit | 201 | void pdev_save_srm_config(struct pci_dev *dev) |
| 202 | pdev_save_srm_config(struct pci_dev *dev) | ||
| 203 | { | 202 | { |
| 204 | struct pdev_srm_saved_conf *tmp; | 203 | struct pdev_srm_saved_conf *tmp; |
| 205 | static int printed = 0; | 204 | static int printed = 0; |
| @@ -241,8 +240,7 @@ pci_restore_srm_config(void) | |||
| 241 | } | 240 | } |
| 242 | #endif | 241 | #endif |
| 243 | 242 | ||
| 244 | void __devinit | 243 | void pcibios_fixup_bus(struct pci_bus *bus) |
| 245 | pcibios_fixup_bus(struct pci_bus *bus) | ||
| 246 | { | 244 | { |
| 247 | struct pci_dev *dev = bus->self; | 245 | struct pci_dev *dev = bus->self; |
| 248 | 246 | ||
diff --git a/arch/alpha/kernel/smp.c b/arch/alpha/kernel/smp.c index a41ad90a97a6..9603bc234b47 100644 --- a/arch/alpha/kernel/smp.c +++ b/arch/alpha/kernel/smp.c | |||
| @@ -68,7 +68,7 @@ enum ipi_message_type { | |||
| 68 | }; | 68 | }; |
| 69 | 69 | ||
| 70 | /* Set to a secondary's cpuid when it comes online. */ | 70 | /* Set to a secondary's cpuid when it comes online. */ |
| 71 | static int smp_secondary_alive __devinitdata = 0; | 71 | static int smp_secondary_alive = 0; |
| 72 | 72 | ||
| 73 | int smp_num_probed; /* Internal processor count */ | 73 | int smp_num_probed; /* Internal processor count */ |
| 74 | int smp_num_cpus = 1; /* Number that came online. */ | 74 | int smp_num_cpus = 1; /* Number that came online. */ |
| @@ -172,7 +172,7 @@ smp_callin(void) | |||
| 172 | } | 172 | } |
| 173 | 173 | ||
| 174 | /* Wait until hwrpb->txrdy is clear for cpu. Return -1 on timeout. */ | 174 | /* Wait until hwrpb->txrdy is clear for cpu. Return -1 on timeout. */ |
| 175 | static int __devinit | 175 | static int |
| 176 | wait_for_txrdy (unsigned long cpumask) | 176 | wait_for_txrdy (unsigned long cpumask) |
| 177 | { | 177 | { |
| 178 | unsigned long timeout; | 178 | unsigned long timeout; |
| @@ -468,7 +468,7 @@ smp_prepare_cpus(unsigned int max_cpus) | |||
| 468 | smp_num_cpus = smp_num_probed; | 468 | smp_num_cpus = smp_num_probed; |
| 469 | } | 469 | } |
| 470 | 470 | ||
| 471 | void __devinit | 471 | void |
| 472 | smp_prepare_boot_cpu(void) | 472 | smp_prepare_boot_cpu(void) |
| 473 | { | 473 | { |
| 474 | } | 474 | } |
diff --git a/arch/alpha/kernel/sys_titan.c b/arch/alpha/kernel/sys_titan.c index 2533db280d9b..5cf4a481b8c5 100644 --- a/arch/alpha/kernel/sys_titan.c +++ b/arch/alpha/kernel/sys_titan.c | |||
| @@ -303,7 +303,7 @@ titan_late_init(void) | |||
| 303 | 303 | ||
| 304 | } | 304 | } |
| 305 | 305 | ||
| 306 | static int __devinit | 306 | static int |
| 307 | titan_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) | 307 | titan_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) |
| 308 | { | 308 | { |
| 309 | u8 intline; | 309 | u8 intline; |
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index f95ba14ae3d0..67874b82a4ed 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
| @@ -371,7 +371,6 @@ config ARCH_CNS3XXX | |||
| 371 | config ARCH_CLPS711X | 371 | config ARCH_CLPS711X |
| 372 | bool "Cirrus Logic CLPS711x/EP721x/EP731x-based" | 372 | bool "Cirrus Logic CLPS711x/EP721x/EP731x-based" |
| 373 | select ARCH_REQUIRE_GPIOLIB | 373 | select ARCH_REQUIRE_GPIOLIB |
| 374 | select ARCH_USES_GETTIMEOFFSET | ||
| 375 | select AUTO_ZRELADDR | 374 | select AUTO_ZRELADDR |
| 376 | select CLKDEV_LOOKUP | 375 | select CLKDEV_LOOKUP |
| 377 | select COMMON_CLK | 376 | select COMMON_CLK |
| @@ -1230,6 +1229,7 @@ config ARM_ERRATA_430973 | |||
| 1230 | config ARM_ERRATA_458693 | 1229 | config ARM_ERRATA_458693 |
| 1231 | bool "ARM errata: Processor deadlock when a false hazard is created" | 1230 | bool "ARM errata: Processor deadlock when a false hazard is created" |
| 1232 | depends on CPU_V7 | 1231 | depends on CPU_V7 |
| 1232 | depends on !ARCH_MULTIPLATFORM | ||
| 1233 | help | 1233 | help |
| 1234 | This option enables the workaround for the 458693 Cortex-A8 (r2p0) | 1234 | This option enables the workaround for the 458693 Cortex-A8 (r2p0) |
| 1235 | erratum. For very specific sequences of memory operations, it is | 1235 | erratum. For very specific sequences of memory operations, it is |
| @@ -1243,6 +1243,7 @@ config ARM_ERRATA_458693 | |||
| 1243 | config ARM_ERRATA_460075 | 1243 | config ARM_ERRATA_460075 |
| 1244 | bool "ARM errata: Data written to the L2 cache can be overwritten with stale data" | 1244 | bool "ARM errata: Data written to the L2 cache can be overwritten with stale data" |
| 1245 | depends on CPU_V7 | 1245 | depends on CPU_V7 |
| 1246 | depends on !ARCH_MULTIPLATFORM | ||
| 1246 | help | 1247 | help |
| 1247 | This option enables the workaround for the 460075 Cortex-A8 (r2p0) | 1248 | This option enables the workaround for the 460075 Cortex-A8 (r2p0) |
| 1248 | erratum. Any asynchronous access to the L2 cache may encounter a | 1249 | erratum. Any asynchronous access to the L2 cache may encounter a |
| @@ -1255,6 +1256,7 @@ config ARM_ERRATA_460075 | |||
| 1255 | config ARM_ERRATA_742230 | 1256 | config ARM_ERRATA_742230 |
| 1256 | bool "ARM errata: DMB operation may be faulty" | 1257 | bool "ARM errata: DMB operation may be faulty" |
| 1257 | depends on CPU_V7 && SMP | 1258 | depends on CPU_V7 && SMP |
| 1259 | depends on !ARCH_MULTIPLATFORM | ||
| 1258 | help | 1260 | help |
| 1259 | This option enables the workaround for the 742230 Cortex-A9 | 1261 | This option enables the workaround for the 742230 Cortex-A9 |
| 1260 | (r1p0..r2p2) erratum. Under rare circumstances, a DMB instruction | 1262 | (r1p0..r2p2) erratum. Under rare circumstances, a DMB instruction |
| @@ -1267,6 +1269,7 @@ config ARM_ERRATA_742230 | |||
| 1267 | config ARM_ERRATA_742231 | 1269 | config ARM_ERRATA_742231 |
| 1268 | bool "ARM errata: Incorrect hazard handling in the SCU may lead to data corruption" | 1270 | bool "ARM errata: Incorrect hazard handling in the SCU may lead to data corruption" |
| 1269 | depends on CPU_V7 && SMP | 1271 | depends on CPU_V7 && SMP |
| 1272 | depends on !ARCH_MULTIPLATFORM | ||
| 1270 | help | 1273 | help |
| 1271 | This option enables the workaround for the 742231 Cortex-A9 | 1274 | This option enables the workaround for the 742231 Cortex-A9 |
| 1272 | (r2p0..r2p2) erratum. Under certain conditions, specific to the | 1275 | (r2p0..r2p2) erratum. Under certain conditions, specific to the |
| @@ -1317,6 +1320,7 @@ config PL310_ERRATA_727915 | |||
| 1317 | config ARM_ERRATA_743622 | 1320 | config ARM_ERRATA_743622 |
| 1318 | bool "ARM errata: Faulty hazard checking in the Store Buffer may lead to data corruption" | 1321 | bool "ARM errata: Faulty hazard checking in the Store Buffer may lead to data corruption" |
| 1319 | depends on CPU_V7 | 1322 | depends on CPU_V7 |
| 1323 | depends on !ARCH_MULTIPLATFORM | ||
| 1320 | help | 1324 | help |
| 1321 | This option enables the workaround for the 743622 Cortex-A9 | 1325 | This option enables the workaround for the 743622 Cortex-A9 |
| 1322 | (r2p*) erratum. Under very rare conditions, a faulty | 1326 | (r2p*) erratum. Under very rare conditions, a faulty |
| @@ -1330,6 +1334,7 @@ config ARM_ERRATA_743622 | |||
| 1330 | config ARM_ERRATA_751472 | 1334 | config ARM_ERRATA_751472 |
| 1331 | bool "ARM errata: Interrupted ICIALLUIS may prevent completion of broadcasted operation" | 1335 | bool "ARM errata: Interrupted ICIALLUIS may prevent completion of broadcasted operation" |
| 1332 | depends on CPU_V7 | 1336 | depends on CPU_V7 |
| 1337 | depends on !ARCH_MULTIPLATFORM | ||
| 1333 | help | 1338 | help |
| 1334 | This option enables the workaround for the 751472 Cortex-A9 (prior | 1339 | This option enables the workaround for the 751472 Cortex-A9 (prior |
| 1335 | to r3p0) erratum. An interrupted ICIALLUIS operation may prevent the | 1340 | to r3p0) erratum. An interrupted ICIALLUIS operation may prevent the |
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile index e44da40d984f..5ebb44fe826a 100644 --- a/arch/arm/boot/dts/Makefile +++ b/arch/arm/boot/dts/Makefile | |||
| @@ -155,6 +155,7 @@ dtb-$(CONFIG_ARCH_VT8500) += vt8500-bv07.dtb \ | |||
| 155 | dtb-$(CONFIG_ARCH_ZYNQ) += zynq-zc702.dtb | 155 | dtb-$(CONFIG_ARCH_ZYNQ) += zynq-zc702.dtb |
| 156 | 156 | ||
| 157 | targets += dtbs | 157 | targets += dtbs |
| 158 | targets += $(dtb-y) | ||
| 158 | endif | 159 | endif |
| 159 | 160 | ||
| 160 | # *.dtb used to be generated in the directory above. Clean out the | 161 | # *.dtb used to be generated in the directory above. Clean out the |
diff --git a/arch/arm/boot/dts/armada-370-db.dts b/arch/arm/boot/dts/armada-370-db.dts index 00044026ef1f..9b82facb2561 100644 --- a/arch/arm/boot/dts/armada-370-db.dts +++ b/arch/arm/boot/dts/armada-370-db.dts | |||
| @@ -26,7 +26,7 @@ | |||
| 26 | 26 | ||
| 27 | memory { | 27 | memory { |
| 28 | device_type = "memory"; | 28 | device_type = "memory"; |
| 29 | reg = <0x00000000 0x20000000>; /* 512 MB */ | 29 | reg = <0x00000000 0x40000000>; /* 1 GB */ |
| 30 | }; | 30 | }; |
| 31 | 31 | ||
| 32 | soc { | 32 | soc { |
diff --git a/arch/arm/boot/dts/armada-370-xp.dtsi b/arch/arm/boot/dts/armada-370-xp.dtsi index cf6c48a09eac..4c0abe85405f 100644 --- a/arch/arm/boot/dts/armada-370-xp.dtsi +++ b/arch/arm/boot/dts/armada-370-xp.dtsi | |||
| @@ -50,17 +50,19 @@ | |||
| 50 | ranges; | 50 | ranges; |
| 51 | 51 | ||
| 52 | serial@d0012000 { | 52 | serial@d0012000 { |
| 53 | compatible = "ns16550"; | 53 | compatible = "snps,dw-apb-uart"; |
| 54 | reg = <0xd0012000 0x100>; | 54 | reg = <0xd0012000 0x100>; |
| 55 | reg-shift = <2>; | 55 | reg-shift = <2>; |
| 56 | interrupts = <41>; | 56 | interrupts = <41>; |
| 57 | reg-io-width = <4>; | ||
| 57 | status = "disabled"; | 58 | status = "disabled"; |
| 58 | }; | 59 | }; |
| 59 | serial@d0012100 { | 60 | serial@d0012100 { |
| 60 | compatible = "ns16550"; | 61 | compatible = "snps,dw-apb-uart"; |
| 61 | reg = <0xd0012100 0x100>; | 62 | reg = <0xd0012100 0x100>; |
| 62 | reg-shift = <2>; | 63 | reg-shift = <2>; |
| 63 | interrupts = <42>; | 64 | interrupts = <42>; |
| 65 | reg-io-width = <4>; | ||
| 64 | status = "disabled"; | 66 | status = "disabled"; |
| 65 | }; | 67 | }; |
| 66 | 68 | ||
diff --git a/arch/arm/boot/dts/armada-xp-mv78230.dtsi b/arch/arm/boot/dts/armada-xp-mv78230.dtsi index c45c7b4dc352..e041f42ed711 100644 --- a/arch/arm/boot/dts/armada-xp-mv78230.dtsi +++ b/arch/arm/boot/dts/armada-xp-mv78230.dtsi | |||
| @@ -34,7 +34,14 @@ | |||
| 34 | reg = <0>; | 34 | reg = <0>; |
| 35 | clocks = <&cpuclk 0>; | 35 | clocks = <&cpuclk 0>; |
| 36 | }; | 36 | }; |
| 37 | } | 37 | |
| 38 | cpu@1 { | ||
| 39 | device_type = "cpu"; | ||
| 40 | compatible = "marvell,sheeva-v7"; | ||
| 41 | reg = <1>; | ||
| 42 | clocks = <&cpuclk 1>; | ||
| 43 | }; | ||
| 44 | }; | ||
| 38 | 45 | ||
| 39 | soc { | 46 | soc { |
| 40 | pinctrl { | 47 | pinctrl { |
| @@ -43,27 +50,25 @@ | |||
| 43 | }; | 50 | }; |
| 44 | 51 | ||
| 45 | gpio0: gpio@d0018100 { | 52 | gpio0: gpio@d0018100 { |
| 46 | compatible = "marvell,armadaxp-gpio"; | 53 | compatible = "marvell,orion-gpio"; |
| 47 | reg = <0xd0018100 0x40>, | 54 | reg = <0xd0018100 0x40>; |
| 48 | <0xd0018800 0x30>; | ||
| 49 | ngpios = <32>; | 55 | ngpios = <32>; |
| 50 | gpio-controller; | 56 | gpio-controller; |
| 51 | #gpio-cells = <2>; | 57 | #gpio-cells = <2>; |
| 52 | interrupt-controller; | 58 | interrupt-controller; |
| 53 | #interrupts-cells = <2>; | 59 | #interrupts-cells = <2>; |
| 54 | interrupts = <16>, <17>, <18>, <19>; | 60 | interrupts = <82>, <83>, <84>, <85>; |
| 55 | }; | 61 | }; |
| 56 | 62 | ||
| 57 | gpio1: gpio@d0018140 { | 63 | gpio1: gpio@d0018140 { |
| 58 | compatible = "marvell,armadaxp-gpio"; | 64 | compatible = "marvell,orion-gpio"; |
| 59 | reg = <0xd0018140 0x40>, | 65 | reg = <0xd0018140 0x40>; |
| 60 | <0xd0018840 0x30>; | ||
| 61 | ngpios = <17>; | 66 | ngpios = <17>; |
| 62 | gpio-controller; | 67 | gpio-controller; |
| 63 | #gpio-cells = <2>; | 68 | #gpio-cells = <2>; |
| 64 | interrupt-controller; | 69 | interrupt-controller; |
| 65 | #interrupts-cells = <2>; | 70 | #interrupts-cells = <2>; |
| 66 | interrupts = <20>, <21>, <22>; | 71 | interrupts = <87>, <88>, <89>; |
| 67 | }; | 72 | }; |
| 68 | }; | 73 | }; |
| 69 | }; | 74 | }; |
diff --git a/arch/arm/boot/dts/armada-xp-mv78260.dtsi b/arch/arm/boot/dts/armada-xp-mv78260.dtsi index a2aee5707377..9e23bd8c9536 100644 --- a/arch/arm/boot/dts/armada-xp-mv78260.dtsi +++ b/arch/arm/boot/dts/armada-xp-mv78260.dtsi | |||
| @@ -51,39 +51,44 @@ | |||
| 51 | }; | 51 | }; |
| 52 | 52 | ||
| 53 | gpio0: gpio@d0018100 { | 53 | gpio0: gpio@d0018100 { |
| 54 | compatible = "marvell,armadaxp-gpio"; | 54 | compatible = "marvell,orion-gpio"; |
| 55 | reg = <0xd0018100 0x40>, | 55 | reg = <0xd0018100 0x40>; |
| 56 | <0xd0018800 0x30>; | ||
| 57 | ngpios = <32>; | 56 | ngpios = <32>; |
| 58 | gpio-controller; | 57 | gpio-controller; |
| 59 | #gpio-cells = <2>; | 58 | #gpio-cells = <2>; |
| 60 | interrupt-controller; | 59 | interrupt-controller; |
| 61 | #interrupts-cells = <2>; | 60 | #interrupts-cells = <2>; |
| 62 | interrupts = <16>, <17>, <18>, <19>; | 61 | interrupts = <82>, <83>, <84>, <85>; |
| 63 | }; | 62 | }; |
| 64 | 63 | ||
| 65 | gpio1: gpio@d0018140 { | 64 | gpio1: gpio@d0018140 { |
| 66 | compatible = "marvell,armadaxp-gpio"; | 65 | compatible = "marvell,orion-gpio"; |
| 67 | reg = <0xd0018140 0x40>, | 66 | reg = <0xd0018140 0x40>; |
| 68 | <0xd0018840 0x30>; | ||
| 69 | ngpios = <32>; | 67 | ngpios = <32>; |
| 70 | gpio-controller; | 68 | gpio-controller; |
| 71 | #gpio-cells = <2>; | 69 | #gpio-cells = <2>; |
| 72 | interrupt-controller; | 70 | interrupt-controller; |
| 73 | #interrupts-cells = <2>; | 71 | #interrupts-cells = <2>; |
| 74 | interrupts = <20>, <21>, <22>, <23>; | 72 | interrupts = <87>, <88>, <89>, <90>; |
| 75 | }; | 73 | }; |
| 76 | 74 | ||
| 77 | gpio2: gpio@d0018180 { | 75 | gpio2: gpio@d0018180 { |
| 78 | compatible = "marvell,armadaxp-gpio"; | 76 | compatible = "marvell,orion-gpio"; |
| 79 | reg = <0xd0018180 0x40>, | 77 | reg = <0xd0018180 0x40>; |
| 80 | <0xd0018870 0x30>; | ||
| 81 | ngpios = <3>; | 78 | ngpios = <3>; |
| 82 | gpio-controller; | 79 | gpio-controller; |
| 83 | #gpio-cells = <2>; | 80 | #gpio-cells = <2>; |
| 84 | interrupt-controller; | 81 | interrupt-controller; |
| 85 | #interrupts-cells = <2>; | 82 | #interrupts-cells = <2>; |
| 86 | interrupts = <24>; | 83 | interrupts = <91>; |
| 84 | }; | ||
| 85 | |||
| 86 | ethernet@d0034000 { | ||
| 87 | compatible = "marvell,armada-370-neta"; | ||
| 88 | reg = <0xd0034000 0x2500>; | ||
| 89 | interrupts = <14>; | ||
| 90 | clocks = <&gateclk 1>; | ||
| 91 | status = "disabled"; | ||
| 87 | }; | 92 | }; |
| 88 | }; | 93 | }; |
| 89 | }; | 94 | }; |
diff --git a/arch/arm/boot/dts/armada-xp-mv78460.dtsi b/arch/arm/boot/dts/armada-xp-mv78460.dtsi index da03a129243a..965966110e38 100644 --- a/arch/arm/boot/dts/armada-xp-mv78460.dtsi +++ b/arch/arm/boot/dts/armada-xp-mv78460.dtsi | |||
| @@ -66,39 +66,44 @@ | |||
| 66 | }; | 66 | }; |
| 67 | 67 | ||
| 68 | gpio0: gpio@d0018100 { | 68 | gpio0: gpio@d0018100 { |
| 69 | compatible = "marvell,armadaxp-gpio"; | 69 | compatible = "marvell,orion-gpio"; |
| 70 | reg = <0xd0018100 0x40>, | 70 | reg = <0xd0018100 0x40>; |
| 71 | <0xd0018800 0x30>; | ||
| 72 | ngpios = <32>; | 71 | ngpios = <32>; |
| 73 | gpio-controller; | 72 | gpio-controller; |
| 74 | #gpio-cells = <2>; | 73 | #gpio-cells = <2>; |
| 75 | interrupt-controller; | 74 | interrupt-controller; |
| 76 | #interrupts-cells = <2>; | 75 | #interrupts-cells = <2>; |
| 77 | interrupts = <16>, <17>, <18>, <19>; | 76 | interrupts = <82>, <83>, <84>, <85>; |
| 78 | }; | 77 | }; |
| 79 | 78 | ||
| 80 | gpio1: gpio@d0018140 { | 79 | gpio1: gpio@d0018140 { |
| 81 | compatible = "marvell,armadaxp-gpio"; | 80 | compatible = "marvell,orion-gpio"; |
| 82 | reg = <0xd0018140 0x40>, | 81 | reg = <0xd0018140 0x40>; |
| 83 | <0xd0018840 0x30>; | ||
| 84 | ngpios = <32>; | 82 | ngpios = <32>; |
| 85 | gpio-controller; | 83 | gpio-controller; |
| 86 | #gpio-cells = <2>; | 84 | #gpio-cells = <2>; |
| 87 | interrupt-controller; | 85 | interrupt-controller; |
| 88 | #interrupts-cells = <2>; | 86 | #interrupts-cells = <2>; |
| 89 | interrupts = <20>, <21>, <22>, <23>; | 87 | interrupts = <87>, <88>, <89>, <90>; |
| 90 | }; | 88 | }; |
| 91 | 89 | ||
| 92 | gpio2: gpio@d0018180 { | 90 | gpio2: gpio@d0018180 { |
| 93 | compatible = "marvell,armadaxp-gpio"; | 91 | compatible = "marvell,orion-gpio"; |
| 94 | reg = <0xd0018180 0x40>, | 92 | reg = <0xd0018180 0x40>; |
| 95 | <0xd0018870 0x30>; | ||
| 96 | ngpios = <3>; | 93 | ngpios = <3>; |
| 97 | gpio-controller; | 94 | gpio-controller; |
| 98 | #gpio-cells = <2>; | 95 | #gpio-cells = <2>; |
| 99 | interrupt-controller; | 96 | interrupt-controller; |
| 100 | #interrupts-cells = <2>; | 97 | #interrupts-cells = <2>; |
| 101 | interrupts = <24>; | 98 | interrupts = <91>; |
| 99 | }; | ||
| 100 | |||
| 101 | ethernet@d0034000 { | ||
| 102 | compatible = "marvell,armada-370-neta"; | ||
| 103 | reg = <0xd0034000 0x2500>; | ||
| 104 | interrupts = <14>; | ||
| 105 | clocks = <&gateclk 1>; | ||
| 106 | status = "disabled"; | ||
| 102 | }; | 107 | }; |
| 103 | }; | 108 | }; |
| 104 | }; | 109 | }; |
diff --git a/arch/arm/boot/dts/armada-xp.dtsi b/arch/arm/boot/dts/armada-xp.dtsi index 367aa3f94912..2e37ef101c90 100644 --- a/arch/arm/boot/dts/armada-xp.dtsi +++ b/arch/arm/boot/dts/armada-xp.dtsi | |||
| @@ -42,17 +42,19 @@ | |||
| 42 | 42 | ||
| 43 | soc { | 43 | soc { |
| 44 | serial@d0012200 { | 44 | serial@d0012200 { |
| 45 | compatible = "ns16550"; | 45 | compatible = "snps,dw-apb-uart"; |
| 46 | reg = <0xd0012200 0x100>; | 46 | reg = <0xd0012200 0x100>; |
| 47 | reg-shift = <2>; | 47 | reg-shift = <2>; |
| 48 | interrupts = <43>; | 48 | interrupts = <43>; |
| 49 | reg-io-width = <4>; | ||
| 49 | status = "disabled"; | 50 | status = "disabled"; |
| 50 | }; | 51 | }; |
| 51 | serial@d0012300 { | 52 | serial@d0012300 { |
| 52 | compatible = "ns16550"; | 53 | compatible = "snps,dw-apb-uart"; |
| 53 | reg = <0xd0012300 0x100>; | 54 | reg = <0xd0012300 0x100>; |
| 54 | reg-shift = <2>; | 55 | reg-shift = <2>; |
| 55 | interrupts = <44>; | 56 | interrupts = <44>; |
| 57 | reg-io-width = <4>; | ||
| 56 | status = "disabled"; | 58 | status = "disabled"; |
| 57 | }; | 59 | }; |
| 58 | 60 | ||
| @@ -93,14 +95,6 @@ | |||
| 93 | status = "disabled"; | 95 | status = "disabled"; |
| 94 | }; | 96 | }; |
| 95 | 97 | ||
| 96 | ethernet@d0034000 { | ||
| 97 | compatible = "marvell,armada-370-neta"; | ||
| 98 | reg = <0xd0034000 0x2500>; | ||
| 99 | interrupts = <14>; | ||
| 100 | clocks = <&gateclk 1>; | ||
| 101 | status = "disabled"; | ||
| 102 | }; | ||
| 103 | |||
| 104 | xor@d0060900 { | 98 | xor@d0060900 { |
| 105 | compatible = "marvell,orion-xor"; | 99 | compatible = "marvell,orion-xor"; |
| 106 | reg = <0xd0060900 0x100 | 100 | reg = <0xd0060900 0x100 |
diff --git a/arch/arm/boot/dts/at91rm9200.dtsi b/arch/arm/boot/dts/at91rm9200.dtsi index e154f242c680..222047f1ece9 100644 --- a/arch/arm/boot/dts/at91rm9200.dtsi +++ b/arch/arm/boot/dts/at91rm9200.dtsi | |||
| @@ -336,8 +336,8 @@ | |||
| 336 | 336 | ||
| 337 | i2c@0 { | 337 | i2c@0 { |
| 338 | compatible = "i2c-gpio"; | 338 | compatible = "i2c-gpio"; |
| 339 | gpios = <&pioA 23 0 /* sda */ | 339 | gpios = <&pioA 25 0 /* sda */ |
| 340 | &pioA 24 0 /* scl */ | 340 | &pioA 26 0 /* scl */ |
| 341 | >; | 341 | >; |
| 342 | i2c-gpio,sda-open-drain; | 342 | i2c-gpio,sda-open-drain; |
| 343 | i2c-gpio,scl-open-drain; | 343 | i2c-gpio,scl-open-drain; |
diff --git a/arch/arm/boot/dts/at91sam9260.dtsi b/arch/arm/boot/dts/at91sam9260.dtsi index 68bccf41a2c6..cb7bcc51608d 100644 --- a/arch/arm/boot/dts/at91sam9260.dtsi +++ b/arch/arm/boot/dts/at91sam9260.dtsi | |||
| @@ -306,6 +306,22 @@ | |||
| 306 | }; | 306 | }; |
| 307 | }; | 307 | }; |
| 308 | 308 | ||
| 309 | ssc0 { | ||
| 310 | pinctrl_ssc0_tx: ssc0_tx-0 { | ||
| 311 | atmel,pins = | ||
| 312 | <1 16 0x1 0x0 /* PB16 periph A */ | ||
| 313 | 1 17 0x1 0x0 /* PB17 periph A */ | ||
| 314 | 1 18 0x1 0x0>; /* PB18 periph A */ | ||
| 315 | }; | ||
| 316 | |||
| 317 | pinctrl_ssc0_rx: ssc0_rx-0 { | ||
| 318 | atmel,pins = | ||
| 319 | <1 19 0x1 0x0 /* PB19 periph A */ | ||
| 320 | 1 20 0x1 0x0 /* PB20 periph A */ | ||
| 321 | 1 21 0x1 0x0>; /* PB21 periph A */ | ||
| 322 | }; | ||
| 323 | }; | ||
| 324 | |||
| 309 | pioA: gpio@fffff400 { | 325 | pioA: gpio@fffff400 { |
| 310 | compatible = "atmel,at91rm9200-gpio"; | 326 | compatible = "atmel,at91rm9200-gpio"; |
| 311 | reg = <0xfffff400 0x200>; | 327 | reg = <0xfffff400 0x200>; |
| @@ -450,6 +466,8 @@ | |||
| 450 | compatible = "atmel,at91rm9200-ssc"; | 466 | compatible = "atmel,at91rm9200-ssc"; |
| 451 | reg = <0xfffbc000 0x4000>; | 467 | reg = <0xfffbc000 0x4000>; |
| 452 | interrupts = <14 4 5>; | 468 | interrupts = <14 4 5>; |
| 469 | pinctrl-names = "default"; | ||
| 470 | pinctrl-0 = <&pinctrl_ssc0_tx &pinctrl_ssc0_rx>; | ||
| 453 | status = "disabled"; | 471 | status = "disabled"; |
| 454 | }; | 472 | }; |
| 455 | 473 | ||
diff --git a/arch/arm/boot/dts/at91sam9263.dtsi b/arch/arm/boot/dts/at91sam9263.dtsi index 32ec62cf5385..271d4de026e9 100644 --- a/arch/arm/boot/dts/at91sam9263.dtsi +++ b/arch/arm/boot/dts/at91sam9263.dtsi | |||
| @@ -271,6 +271,38 @@ | |||
| 271 | }; | 271 | }; |
| 272 | }; | 272 | }; |
| 273 | 273 | ||
| 274 | ssc0 { | ||
| 275 | pinctrl_ssc0_tx: ssc0_tx-0 { | ||
| 276 | atmel,pins = | ||
| 277 | <1 0 0x2 0x0 /* PB0 periph B */ | ||
| 278 | 1 1 0x2 0x0 /* PB1 periph B */ | ||
| 279 | 1 2 0x2 0x0>; /* PB2 periph B */ | ||
| 280 | }; | ||
| 281 | |||
| 282 | pinctrl_ssc0_rx: ssc0_rx-0 { | ||
| 283 | atmel,pins = | ||
| 284 | <1 3 0x2 0x0 /* PB3 periph B */ | ||
| 285 | 1 4 0x2 0x0 /* PB4 periph B */ | ||
| 286 | 1 5 0x2 0x0>; /* PB5 periph B */ | ||
| 287 | }; | ||
| 288 | }; | ||
| 289 | |||
| 290 | ssc1 { | ||
| 291 | pinctrl_ssc1_tx: ssc1_tx-0 { | ||
| 292 | atmel,pins = | ||
| 293 | <1 6 0x1 0x0 /* PB6 periph A */ | ||
| 294 | 1 7 0x1 0x0 /* PB7 periph A */ | ||
| 295 | 1 8 0x1 0x0>; /* PB8 periph A */ | ||
| 296 | }; | ||
| 297 | |||
| 298 | pinctrl_ssc1_rx: ssc1_rx-0 { | ||
| 299 | atmel,pins = | ||
| 300 | <1 9 0x1 0x0 /* PB9 periph A */ | ||
| 301 | 1 10 0x1 0x0 /* PB10 periph A */ | ||
| 302 | 1 11 0x1 0x0>; /* PB11 periph A */ | ||
| 303 | }; | ||
| 304 | }; | ||
| 305 | |||
| 274 | pioA: gpio@fffff200 { | 306 | pioA: gpio@fffff200 { |
| 275 | compatible = "atmel,at91rm9200-gpio"; | 307 | compatible = "atmel,at91rm9200-gpio"; |
| 276 | reg = <0xfffff200 0x200>; | 308 | reg = <0xfffff200 0x200>; |
| @@ -368,6 +400,8 @@ | |||
| 368 | compatible = "atmel,at91rm9200-ssc"; | 400 | compatible = "atmel,at91rm9200-ssc"; |
| 369 | reg = <0xfff98000 0x4000>; | 401 | reg = <0xfff98000 0x4000>; |
| 370 | interrupts = <16 4 5>; | 402 | interrupts = <16 4 5>; |
| 403 | pinctrl-names = "default"; | ||
| 404 | pinctrl-0 = <&pinctrl_ssc0_tx &pinctrl_ssc0_rx>; | ||
| 371 | status = "disabled"; | 405 | status = "disabled"; |
| 372 | }; | 406 | }; |
| 373 | 407 | ||
| @@ -375,6 +409,8 @@ | |||
| 375 | compatible = "atmel,at91rm9200-ssc"; | 409 | compatible = "atmel,at91rm9200-ssc"; |
| 376 | reg = <0xfff9c000 0x4000>; | 410 | reg = <0xfff9c000 0x4000>; |
| 377 | interrupts = <17 4 5>; | 411 | interrupts = <17 4 5>; |
| 412 | pinctrl-names = "default"; | ||
| 413 | pinctrl-0 = <&pinctrl_ssc1_tx &pinctrl_ssc1_rx>; | ||
| 378 | status = "disabled"; | 414 | status = "disabled"; |
| 379 | }; | 415 | }; |
| 380 | 416 | ||
diff --git a/arch/arm/boot/dts/at91sam9g45.dtsi b/arch/arm/boot/dts/at91sam9g45.dtsi index 231858ffd850..6b1d4cab24c2 100644 --- a/arch/arm/boot/dts/at91sam9g45.dtsi +++ b/arch/arm/boot/dts/at91sam9g45.dtsi | |||
| @@ -290,6 +290,38 @@ | |||
| 290 | }; | 290 | }; |
| 291 | }; | 291 | }; |
| 292 | 292 | ||
| 293 | ssc0 { | ||
| 294 | pinctrl_ssc0_tx: ssc0_tx-0 { | ||
| 295 | atmel,pins = | ||
| 296 | <3 0 0x1 0x0 /* PD0 periph A */ | ||
| 297 | 3 1 0x1 0x0 /* PD1 periph A */ | ||
| 298 | 3 2 0x1 0x0>; /* PD2 periph A */ | ||
| 299 | }; | ||
| 300 | |||
| 301 | pinctrl_ssc0_rx: ssc0_rx-0 { | ||
| 302 | atmel,pins = | ||
| 303 | <3 3 0x1 0x0 /* PD3 periph A */ | ||
| 304 | 3 4 0x1 0x0 /* PD4 periph A */ | ||
| 305 | 3 5 0x1 0x0>; /* PD5 periph A */ | ||
| 306 | }; | ||
| 307 | }; | ||
| 308 | |||
| 309 | ssc1 { | ||
| 310 | pinctrl_ssc1_tx: ssc1_tx-0 { | ||
| 311 | atmel,pins = | ||
| 312 | <3 10 0x1 0x0 /* PD10 periph A */ | ||
| 313 | 3 11 0x1 0x0 /* PD11 periph A */ | ||
| 314 | 3 12 0x1 0x0>; /* PD12 periph A */ | ||
| 315 | }; | ||
| 316 | |||
| 317 | pinctrl_ssc1_rx: ssc1_rx-0 { | ||
| 318 | atmel,pins = | ||
| 319 | <3 13 0x1 0x0 /* PD13 periph A */ | ||
| 320 | 3 14 0x1 0x0 /* PD14 periph A */ | ||
| 321 | 3 15 0x1 0x0>; /* PD15 periph A */ | ||
| 322 | }; | ||
| 323 | }; | ||
| 324 | |||
| 293 | pioA: gpio@fffff200 { | 325 | pioA: gpio@fffff200 { |
| 294 | compatible = "atmel,at91rm9200-gpio"; | 326 | compatible = "atmel,at91rm9200-gpio"; |
| 295 | reg = <0xfffff200 0x200>; | 327 | reg = <0xfffff200 0x200>; |
| @@ -425,6 +457,8 @@ | |||
| 425 | compatible = "atmel,at91sam9g45-ssc"; | 457 | compatible = "atmel,at91sam9g45-ssc"; |
| 426 | reg = <0xfff9c000 0x4000>; | 458 | reg = <0xfff9c000 0x4000>; |
| 427 | interrupts = <16 4 5>; | 459 | interrupts = <16 4 5>; |
| 460 | pinctrl-names = "default"; | ||
| 461 | pinctrl-0 = <&pinctrl_ssc0_tx &pinctrl_ssc0_rx>; | ||
| 428 | status = "disabled"; | 462 | status = "disabled"; |
| 429 | }; | 463 | }; |
| 430 | 464 | ||
| @@ -432,6 +466,8 @@ | |||
| 432 | compatible = "atmel,at91sam9g45-ssc"; | 466 | compatible = "atmel,at91sam9g45-ssc"; |
| 433 | reg = <0xfffa0000 0x4000>; | 467 | reg = <0xfffa0000 0x4000>; |
| 434 | interrupts = <17 4 5>; | 468 | interrupts = <17 4 5>; |
| 469 | pinctrl-names = "default"; | ||
| 470 | pinctrl-0 = <&pinctrl_ssc1_tx &pinctrl_ssc1_rx>; | ||
| 435 | status = "disabled"; | 471 | status = "disabled"; |
| 436 | }; | 472 | }; |
| 437 | 473 | ||
diff --git a/arch/arm/boot/dts/at91sam9n12.dtsi b/arch/arm/boot/dts/at91sam9n12.dtsi index e9efb34f4379..80e29c605d4e 100644 --- a/arch/arm/boot/dts/at91sam9n12.dtsi +++ b/arch/arm/boot/dts/at91sam9n12.dtsi | |||
| @@ -28,6 +28,7 @@ | |||
| 28 | tcb1 = &tcb1; | 28 | tcb1 = &tcb1; |
| 29 | i2c0 = &i2c0; | 29 | i2c0 = &i2c0; |
| 30 | i2c1 = &i2c1; | 30 | i2c1 = &i2c1; |
| 31 | ssc0 = &ssc0; | ||
| 31 | }; | 32 | }; |
| 32 | cpus { | 33 | cpus { |
| 33 | cpu@0 { | 34 | cpu@0 { |
| @@ -244,6 +245,22 @@ | |||
| 244 | }; | 245 | }; |
| 245 | }; | 246 | }; |
| 246 | 247 | ||
| 248 | ssc0 { | ||
| 249 | pinctrl_ssc0_tx: ssc0_tx-0 { | ||
| 250 | atmel,pins = | ||
| 251 | <0 24 0x2 0x0 /* PA24 periph B */ | ||
| 252 | 0 25 0x2 0x0 /* PA25 periph B */ | ||
| 253 | 0 26 0x2 0x0>; /* PA26 periph B */ | ||
| 254 | }; | ||
| 255 | |||
| 256 | pinctrl_ssc0_rx: ssc0_rx-0 { | ||
| 257 | atmel,pins = | ||
| 258 | <0 27 0x2 0x0 /* PA27 periph B */ | ||
| 259 | 0 28 0x2 0x0 /* PA28 periph B */ | ||
| 260 | 0 29 0x2 0x0>; /* PA29 periph B */ | ||
| 261 | }; | ||
| 262 | }; | ||
| 263 | |||
| 247 | pioA: gpio@fffff400 { | 264 | pioA: gpio@fffff400 { |
| 248 | compatible = "atmel,at91sam9x5-gpio", "atmel,at91rm9200-gpio"; | 265 | compatible = "atmel,at91sam9x5-gpio", "atmel,at91rm9200-gpio"; |
| 249 | reg = <0xfffff400 0x200>; | 266 | reg = <0xfffff400 0x200>; |
| @@ -294,6 +311,15 @@ | |||
| 294 | status = "disabled"; | 311 | status = "disabled"; |
| 295 | }; | 312 | }; |
| 296 | 313 | ||
| 314 | ssc0: ssc@f0010000 { | ||
| 315 | compatible = "atmel,at91sam9g45-ssc"; | ||
| 316 | reg = <0xf0010000 0x4000>; | ||
| 317 | interrupts = <28 4 5>; | ||
| 318 | pinctrl-names = "default"; | ||
| 319 | pinctrl-0 = <&pinctrl_ssc0_tx &pinctrl_ssc0_rx>; | ||
| 320 | status = "disabled"; | ||
| 321 | }; | ||
| 322 | |||
| 297 | usart0: serial@f801c000 { | 323 | usart0: serial@f801c000 { |
| 298 | compatible = "atmel,at91sam9260-usart"; | 324 | compatible = "atmel,at91sam9260-usart"; |
| 299 | reg = <0xf801c000 0x4000>; | 325 | reg = <0xf801c000 0x4000>; |
diff --git a/arch/arm/boot/dts/at91sam9x5.dtsi b/arch/arm/boot/dts/at91sam9x5.dtsi index 40ac3a4eb1ab..8ecca6948d81 100644 --- a/arch/arm/boot/dts/at91sam9x5.dtsi +++ b/arch/arm/boot/dts/at91sam9x5.dtsi | |||
| @@ -88,13 +88,6 @@ | |||
| 88 | interrupts = <1 4 7>; | 88 | interrupts = <1 4 7>; |
| 89 | }; | 89 | }; |
| 90 | 90 | ||
| 91 | ssc0: ssc@f0010000 { | ||
| 92 | compatible = "atmel,at91sam9g45-ssc"; | ||
| 93 | reg = <0xf0010000 0x4000>; | ||
| 94 | interrupts = <28 4 5>; | ||
| 95 | status = "disabled"; | ||
| 96 | }; | ||
| 97 | |||
| 98 | tcb0: timer@f8008000 { | 91 | tcb0: timer@f8008000 { |
| 99 | compatible = "atmel,at91sam9x5-tcb"; | 92 | compatible = "atmel,at91sam9x5-tcb"; |
| 100 | reg = <0xf8008000 0x100>; | 93 | reg = <0xf8008000 0x100>; |
| @@ -150,6 +143,11 @@ | |||
| 150 | atmel,pins = | 143 | atmel,pins = |
| 151 | <0 3 0x1 0x0>; /* PA3 periph A */ | 144 | <0 3 0x1 0x0>; /* PA3 periph A */ |
| 152 | }; | 145 | }; |
| 146 | |||
| 147 | pinctrl_usart0_sck: usart0_sck-0 { | ||
| 148 | atmel,pins = | ||
| 149 | <0 4 0x1 0x0>; /* PA4 periph A */ | ||
| 150 | }; | ||
| 153 | }; | 151 | }; |
| 154 | 152 | ||
| 155 | usart1 { | 153 | usart1 { |
| @@ -161,12 +159,17 @@ | |||
| 161 | 159 | ||
| 162 | pinctrl_usart1_rts: usart1_rts-0 { | 160 | pinctrl_usart1_rts: usart1_rts-0 { |
| 163 | atmel,pins = | 161 | atmel,pins = |
| 164 | <3 27 0x3 0x0>; /* PC27 periph C */ | 162 | <2 27 0x3 0x0>; /* PC27 periph C */ |
| 165 | }; | 163 | }; |
| 166 | 164 | ||
| 167 | pinctrl_usart1_cts: usart1_cts-0 { | 165 | pinctrl_usart1_cts: usart1_cts-0 { |
| 168 | atmel,pins = | 166 | atmel,pins = |
| 169 | <3 28 0x3 0x0>; /* PC28 periph C */ | 167 | <2 28 0x3 0x0>; /* PC28 periph C */ |
| 168 | }; | ||
| 169 | |||
| 170 | pinctrl_usart1_sck: usart1_sck-0 { | ||
| 171 | atmel,pins = | ||
| 172 | <2 28 0x3 0x0>; /* PC29 periph C */ | ||
| 170 | }; | 173 | }; |
| 171 | }; | 174 | }; |
| 172 | 175 | ||
| @@ -179,46 +182,56 @@ | |||
| 179 | 182 | ||
| 180 | pinctrl_uart2_rts: uart2_rts-0 { | 183 | pinctrl_uart2_rts: uart2_rts-0 { |
| 181 | atmel,pins = | 184 | atmel,pins = |
| 182 | <0 0 0x2 0x0>; /* PB0 periph B */ | 185 | <1 0 0x2 0x0>; /* PB0 periph B */ |
| 183 | }; | 186 | }; |
| 184 | 187 | ||
| 185 | pinctrl_uart2_cts: uart2_cts-0 { | 188 | pinctrl_uart2_cts: uart2_cts-0 { |
| 186 | atmel,pins = | 189 | atmel,pins = |
| 187 | <0 1 0x2 0x0>; /* PB1 periph B */ | 190 | <1 1 0x2 0x0>; /* PB1 periph B */ |
| 191 | }; | ||
| 192 | |||
| 193 | pinctrl_usart2_sck: usart2_sck-0 { | ||
| 194 | atmel,pins = | ||
| 195 | <1 2 0x2 0x0>; /* PB2 periph B */ | ||
| 188 | }; | 196 | }; |
| 189 | }; | 197 | }; |
| 190 | 198 | ||
| 191 | usart3 { | 199 | usart3 { |
| 192 | pinctrl_uart3: usart3-0 { | 200 | pinctrl_uart3: usart3-0 { |
| 193 | atmel,pins = | 201 | atmel,pins = |
| 194 | <3 23 0x2 0x1 /* PC22 periph B with pullup */ | 202 | <2 23 0x2 0x1 /* PC22 periph B with pullup */ |
| 195 | 3 23 0x2 0x0>; /* PC23 periph B */ | 203 | 2 23 0x2 0x0>; /* PC23 periph B */ |
| 196 | }; | 204 | }; |
| 197 | 205 | ||
| 198 | pinctrl_usart3_rts: usart3_rts-0 { | 206 | pinctrl_usart3_rts: usart3_rts-0 { |
| 199 | atmel,pins = | 207 | atmel,pins = |
| 200 | <3 24 0x2 0x0>; /* PC24 periph B */ | 208 | <2 24 0x2 0x0>; /* PC24 periph B */ |
| 201 | }; | 209 | }; |
| 202 | 210 | ||
| 203 | pinctrl_usart3_cts: usart3_cts-0 { | 211 | pinctrl_usart3_cts: usart3_cts-0 { |
| 204 | atmel,pins = | 212 | atmel,pins = |
| 205 | <3 25 0x2 0x0>; /* PC25 periph B */ | 213 | <2 25 0x2 0x0>; /* PC25 periph B */ |
| 214 | }; | ||
| 215 | |||
| 216 | pinctrl_usart3_sck: usart3_sck-0 { | ||
| 217 | atmel,pins = | ||
| 218 | <2 26 0x2 0x0>; /* PC26 periph B */ | ||
| 206 | }; | 219 | }; |
| 207 | }; | 220 | }; |
| 208 | 221 | ||
| 209 | uart0 { | 222 | uart0 { |
| 210 | pinctrl_uart0: uart0-0 { | 223 | pinctrl_uart0: uart0-0 { |
| 211 | atmel,pins = | 224 | atmel,pins = |
| 212 | <3 8 0x3 0x0 /* PC8 periph C */ | 225 | <2 8 0x3 0x0 /* PC8 periph C */ |
| 213 | 3 9 0x3 0x1>; /* PC9 periph C with pullup */ | 226 | 2 9 0x3 0x1>; /* PC9 periph C with pullup */ |
| 214 | }; | 227 | }; |
| 215 | }; | 228 | }; |
| 216 | 229 | ||
| 217 | uart1 { | 230 | uart1 { |
| 218 | pinctrl_uart1: uart1-0 { | 231 | pinctrl_uart1: uart1-0 { |
| 219 | atmel,pins = | 232 | atmel,pins = |
| 220 | <3 16 0x3 0x0 /* PC16 periph C */ | 233 | <2 16 0x3 0x0 /* PC16 periph C */ |
| 221 | 3 17 0x3 0x1>; /* PC17 periph C with pullup */ | 234 | 2 17 0x3 0x1>; /* PC17 periph C with pullup */ |
| 222 | }; | 235 | }; |
| 223 | }; | 236 | }; |
| 224 | 237 | ||
| @@ -247,14 +260,14 @@ | |||
| 247 | 260 | ||
| 248 | pinctrl_macb0_rmii_mii: macb0_rmii_mii-0 { | 261 | pinctrl_macb0_rmii_mii: macb0_rmii_mii-0 { |
| 249 | atmel,pins = | 262 | atmel,pins = |
| 250 | <1 8 0x1 0x0 /* PA8 periph A */ | 263 | <1 8 0x1 0x0 /* PB8 periph A */ |
| 251 | 1 11 0x1 0x0 /* PA11 periph A */ | 264 | 1 11 0x1 0x0 /* PB11 periph A */ |
| 252 | 1 12 0x1 0x0 /* PA12 periph A */ | 265 | 1 12 0x1 0x0 /* PB12 periph A */ |
| 253 | 1 13 0x1 0x0 /* PA13 periph A */ | 266 | 1 13 0x1 0x0 /* PB13 periph A */ |
| 254 | 1 14 0x1 0x0 /* PA14 periph A */ | 267 | 1 14 0x1 0x0 /* PB14 periph A */ |
| 255 | 1 15 0x1 0x0 /* PA15 periph A */ | 268 | 1 15 0x1 0x0 /* PB15 periph A */ |
| 256 | 1 16 0x1 0x0 /* PA16 periph A */ | 269 | 1 16 0x1 0x0 /* PB16 periph A */ |
| 257 | 1 17 0x1 0x0>; /* PA17 periph A */ | 270 | 1 17 0x1 0x0>; /* PB17 periph A */ |
| 258 | }; | 271 | }; |
| 259 | }; | 272 | }; |
| 260 | 273 | ||
| @@ -290,6 +303,22 @@ | |||
| 290 | }; | 303 | }; |
| 291 | }; | 304 | }; |
| 292 | 305 | ||
| 306 | ssc0 { | ||
| 307 | pinctrl_ssc0_tx: ssc0_tx-0 { | ||
| 308 | atmel,pins = | ||
| 309 | <0 24 0x2 0x0 /* PA24 periph B */ | ||
| 310 | 0 25 0x2 0x0 /* PA25 periph B */ | ||
| 311 | 0 26 0x2 0x0>; /* PA26 periph B */ | ||
| 312 | }; | ||
| 313 | |||
| 314 | pinctrl_ssc0_rx: ssc0_rx-0 { | ||
| 315 | atmel,pins = | ||
| 316 | <0 27 0x2 0x0 /* PA27 periph B */ | ||
| 317 | 0 28 0x2 0x0 /* PA28 periph B */ | ||
| 318 | 0 29 0x2 0x0>; /* PA29 periph B */ | ||
| 319 | }; | ||
| 320 | }; | ||
| 321 | |||
| 293 | pioA: gpio@fffff400 { | 322 | pioA: gpio@fffff400 { |
| 294 | compatible = "atmel,at91sam9x5-gpio", "atmel,at91rm9200-gpio"; | 323 | compatible = "atmel,at91sam9x5-gpio", "atmel,at91rm9200-gpio"; |
| 295 | reg = <0xfffff400 0x200>; | 324 | reg = <0xfffff400 0x200>; |
| @@ -333,6 +362,15 @@ | |||
| 333 | }; | 362 | }; |
| 334 | }; | 363 | }; |
| 335 | 364 | ||
| 365 | ssc0: ssc@f0010000 { | ||
| 366 | compatible = "atmel,at91sam9g45-ssc"; | ||
| 367 | reg = <0xf0010000 0x4000>; | ||
| 368 | interrupts = <28 4 5>; | ||
| 369 | pinctrl-names = "default"; | ||
| 370 | pinctrl-0 = <&pinctrl_ssc0_tx &pinctrl_ssc0_rx>; | ||
| 371 | status = "disabled"; | ||
| 372 | }; | ||
| 373 | |||
| 336 | mmc0: mmc@f0008000 { | 374 | mmc0: mmc@f0008000 { |
| 337 | compatible = "atmel,hsmci"; | 375 | compatible = "atmel,hsmci"; |
| 338 | reg = <0xf0008000 0x600>; | 376 | reg = <0xf0008000 0x600>; |
diff --git a/arch/arm/boot/dts/cros5250-common.dtsi b/arch/arm/boot/dts/cros5250-common.dtsi index fddd17417433..46c098017036 100644 --- a/arch/arm/boot/dts/cros5250-common.dtsi +++ b/arch/arm/boot/dts/cros5250-common.dtsi | |||
| @@ -96,8 +96,8 @@ | |||
| 96 | fifo-depth = <0x80>; | 96 | fifo-depth = <0x80>; |
| 97 | card-detect-delay = <200>; | 97 | card-detect-delay = <200>; |
| 98 | samsung,dw-mshc-ciu-div = <3>; | 98 | samsung,dw-mshc-ciu-div = <3>; |
| 99 | samsung,dw-mshc-sdr-timing = <2 3 3>; | 99 | samsung,dw-mshc-sdr-timing = <2 3>; |
| 100 | samsung,dw-mshc-ddr-timing = <1 2 3>; | 100 | samsung,dw-mshc-ddr-timing = <1 2>; |
| 101 | 101 | ||
| 102 | slot@0 { | 102 | slot@0 { |
| 103 | reg = <0>; | 103 | reg = <0>; |
| @@ -120,8 +120,8 @@ | |||
| 120 | fifo-depth = <0x80>; | 120 | fifo-depth = <0x80>; |
| 121 | card-detect-delay = <200>; | 121 | card-detect-delay = <200>; |
| 122 | samsung,dw-mshc-ciu-div = <3>; | 122 | samsung,dw-mshc-ciu-div = <3>; |
| 123 | samsung,dw-mshc-sdr-timing = <2 3 3>; | 123 | samsung,dw-mshc-sdr-timing = <2 3>; |
| 124 | samsung,dw-mshc-ddr-timing = <1 2 3>; | 124 | samsung,dw-mshc-ddr-timing = <1 2>; |
| 125 | 125 | ||
| 126 | slot@0 { | 126 | slot@0 { |
| 127 | reg = <0>; | 127 | reg = <0>; |
| @@ -141,8 +141,8 @@ | |||
| 141 | fifo-depth = <0x80>; | 141 | fifo-depth = <0x80>; |
| 142 | card-detect-delay = <200>; | 142 | card-detect-delay = <200>; |
| 143 | samsung,dw-mshc-ciu-div = <3>; | 143 | samsung,dw-mshc-ciu-div = <3>; |
| 144 | samsung,dw-mshc-sdr-timing = <2 3 3>; | 144 | samsung,dw-mshc-sdr-timing = <2 3>; |
| 145 | samsung,dw-mshc-ddr-timing = <1 2 3>; | 145 | samsung,dw-mshc-ddr-timing = <1 2>; |
| 146 | 146 | ||
| 147 | slot@0 { | 147 | slot@0 { |
| 148 | reg = <0>; | 148 | reg = <0>; |
diff --git a/arch/arm/boot/dts/dbx5x0.dtsi b/arch/arm/boot/dts/dbx5x0.dtsi index 2efd9c891bc9..63f2fbcfe819 100644 --- a/arch/arm/boot/dts/dbx5x0.dtsi +++ b/arch/arm/boot/dts/dbx5x0.dtsi | |||
| @@ -170,7 +170,9 @@ | |||
| 170 | gpio-bank = <8>; | 170 | gpio-bank = <8>; |
| 171 | }; | 171 | }; |
| 172 | 172 | ||
| 173 | pinctrl { | 173 | pinctrl@80157000 { |
| 174 | // This is actually the PRCMU base address | ||
| 175 | reg = <0x80157000 0x2000>; | ||
| 174 | compatible = "stericsson,nmk_pinctrl"; | 176 | compatible = "stericsson,nmk_pinctrl"; |
| 175 | }; | 177 | }; |
| 176 | 178 | ||
diff --git a/arch/arm/boot/dts/dove-cubox.dts b/arch/arm/boot/dts/dove-cubox.dts index fed7d3f9f431..cdee96fca6e2 100644 --- a/arch/arm/boot/dts/dove-cubox.dts +++ b/arch/arm/boot/dts/dove-cubox.dts | |||
| @@ -26,10 +26,15 @@ | |||
| 26 | }; | 26 | }; |
| 27 | 27 | ||
| 28 | &uart0 { status = "okay"; }; | 28 | &uart0 { status = "okay"; }; |
| 29 | &sdio0 { status = "okay"; }; | ||
| 30 | &sata0 { status = "okay"; }; | 29 | &sata0 { status = "okay"; }; |
| 31 | &i2c0 { status = "okay"; }; | 30 | &i2c0 { status = "okay"; }; |
| 32 | 31 | ||
| 32 | &sdio0 { | ||
| 33 | status = "okay"; | ||
| 34 | /* sdio0 card detect is connected to wrong pin on CuBox */ | ||
| 35 | cd-gpios = <&gpio0 12 1>; | ||
| 36 | }; | ||
| 37 | |||
| 33 | &spi0 { | 38 | &spi0 { |
| 34 | status = "okay"; | 39 | status = "okay"; |
| 35 | 40 | ||
| @@ -42,9 +47,14 @@ | |||
| 42 | }; | 47 | }; |
| 43 | 48 | ||
| 44 | &pinctrl { | 49 | &pinctrl { |
| 45 | pinctrl-0 = <&pmx_gpio_18>; | 50 | pinctrl-0 = <&pmx_gpio_12 &pmx_gpio_18>; |
| 46 | pinctrl-names = "default"; | 51 | pinctrl-names = "default"; |
| 47 | 52 | ||
| 53 | pmx_gpio_12: pmx-gpio-12 { | ||
| 54 | marvell,pins = "mpp12"; | ||
| 55 | marvell,function = "gpio"; | ||
| 56 | }; | ||
| 57 | |||
| 48 | pmx_gpio_18: pmx-gpio-18 { | 58 | pmx_gpio_18: pmx-gpio-18 { |
| 49 | marvell,pins = "mpp18"; | 59 | marvell,pins = "mpp18"; |
| 50 | marvell,function = "gpio"; | 60 | marvell,function = "gpio"; |
diff --git a/arch/arm/boot/dts/dove.dtsi b/arch/arm/boot/dts/dove.dtsi index f3f7e9d8adca..42eac1ff3cc8 100644 --- a/arch/arm/boot/dts/dove.dtsi +++ b/arch/arm/boot/dts/dove.dtsi | |||
| @@ -117,6 +117,7 @@ | |||
| 117 | pinctrl: pinctrl@d0200 { | 117 | pinctrl: pinctrl@d0200 { |
| 118 | compatible = "marvell,dove-pinctrl"; | 118 | compatible = "marvell,dove-pinctrl"; |
| 119 | reg = <0xd0200 0x10>; | 119 | reg = <0xd0200 0x10>; |
| 120 | clocks = <&gate_clk 22>; | ||
| 120 | }; | 121 | }; |
| 121 | 122 | ||
| 122 | spi0: spi@10600 { | 123 | spi0: spi@10600 { |
diff --git a/arch/arm/boot/dts/ecx-2000.dts b/arch/arm/boot/dts/ecx-2000.dts index 46477ac1de99..139b40cc3a23 100644 --- a/arch/arm/boot/dts/ecx-2000.dts +++ b/arch/arm/boot/dts/ecx-2000.dts | |||
| @@ -32,6 +32,7 @@ | |||
| 32 | 32 | ||
| 33 | cpu@0 { | 33 | cpu@0 { |
| 34 | compatible = "arm,cortex-a15"; | 34 | compatible = "arm,cortex-a15"; |
| 35 | device_type = "cpu"; | ||
| 35 | reg = <0>; | 36 | reg = <0>; |
| 36 | clocks = <&a9pll>; | 37 | clocks = <&a9pll>; |
| 37 | clock-names = "cpu"; | 38 | clock-names = "cpu"; |
| @@ -39,6 +40,7 @@ | |||
| 39 | 40 | ||
| 40 | cpu@1 { | 41 | cpu@1 { |
| 41 | compatible = "arm,cortex-a15"; | 42 | compatible = "arm,cortex-a15"; |
| 43 | device_type = "cpu"; | ||
| 42 | reg = <1>; | 44 | reg = <1>; |
| 43 | clocks = <&a9pll>; | 45 | clocks = <&a9pll>; |
| 44 | clock-names = "cpu"; | 46 | clock-names = "cpu"; |
| @@ -46,6 +48,7 @@ | |||
| 46 | 48 | ||
| 47 | cpu@2 { | 49 | cpu@2 { |
| 48 | compatible = "arm,cortex-a15"; | 50 | compatible = "arm,cortex-a15"; |
| 51 | device_type = "cpu"; | ||
| 49 | reg = <2>; | 52 | reg = <2>; |
| 50 | clocks = <&a9pll>; | 53 | clocks = <&a9pll>; |
| 51 | clock-names = "cpu"; | 54 | clock-names = "cpu"; |
| @@ -53,6 +56,7 @@ | |||
| 53 | 56 | ||
| 54 | cpu@3 { | 57 | cpu@3 { |
| 55 | compatible = "arm,cortex-a15"; | 58 | compatible = "arm,cortex-a15"; |
| 59 | device_type = "cpu"; | ||
| 56 | reg = <3>; | 60 | reg = <3>; |
| 57 | clocks = <&a9pll>; | 61 | clocks = <&a9pll>; |
| 58 | clock-names = "cpu"; | 62 | clock-names = "cpu"; |
diff --git a/arch/arm/boot/dts/exynos4210-smdkv310.dts b/arch/arm/boot/dts/exynos4210-smdkv310.dts index 9b23a8255e39..f63490707f3a 100644 --- a/arch/arm/boot/dts/exynos4210-smdkv310.dts +++ b/arch/arm/boot/dts/exynos4210-smdkv310.dts | |||
| @@ -26,7 +26,7 @@ | |||
| 26 | }; | 26 | }; |
| 27 | 27 | ||
| 28 | chosen { | 28 | chosen { |
| 29 | bootargs = "root=/dev/ram0 rw ramdisk=8192 initrd=0x41000000,8M console=ttySAC2,115200 init=/linuxrc"; | 29 | bootargs = "root=/dev/ram0 rw ramdisk=8192 initrd=0x41000000,8M console=ttySAC1,115200 init=/linuxrc"; |
| 30 | }; | 30 | }; |
| 31 | 31 | ||
| 32 | sdhci@12530000 { | 32 | sdhci@12530000 { |
diff --git a/arch/arm/boot/dts/exynos5250-smdk5250.dts b/arch/arm/boot/dts/exynos5250-smdk5250.dts index 942d5761ca97..e05b18f3c33d 100644 --- a/arch/arm/boot/dts/exynos5250-smdk5250.dts +++ b/arch/arm/boot/dts/exynos5250-smdk5250.dts | |||
| @@ -115,8 +115,8 @@ | |||
| 115 | fifo-depth = <0x80>; | 115 | fifo-depth = <0x80>; |
| 116 | card-detect-delay = <200>; | 116 | card-detect-delay = <200>; |
| 117 | samsung,dw-mshc-ciu-div = <3>; | 117 | samsung,dw-mshc-ciu-div = <3>; |
| 118 | samsung,dw-mshc-sdr-timing = <2 3 3>; | 118 | samsung,dw-mshc-sdr-timing = <2 3>; |
| 119 | samsung,dw-mshc-ddr-timing = <1 2 3>; | 119 | samsung,dw-mshc-ddr-timing = <1 2>; |
| 120 | 120 | ||
| 121 | slot@0 { | 121 | slot@0 { |
| 122 | reg = <0>; | 122 | reg = <0>; |
| @@ -139,8 +139,8 @@ | |||
| 139 | fifo-depth = <0x80>; | 139 | fifo-depth = <0x80>; |
| 140 | card-detect-delay = <200>; | 140 | card-detect-delay = <200>; |
| 141 | samsung,dw-mshc-ciu-div = <3>; | 141 | samsung,dw-mshc-ciu-div = <3>; |
| 142 | samsung,dw-mshc-sdr-timing = <2 3 3>; | 142 | samsung,dw-mshc-sdr-timing = <2 3>; |
| 143 | samsung,dw-mshc-ddr-timing = <1 2 3>; | 143 | samsung,dw-mshc-ddr-timing = <1 2>; |
| 144 | 144 | ||
| 145 | slot@0 { | 145 | slot@0 { |
| 146 | reg = <0>; | 146 | reg = <0>; |
diff --git a/arch/arm/boot/dts/exynos5250.dtsi b/arch/arm/boot/dts/exynos5250.dtsi index 2e3b6efaf1a2..3acf594ea60b 100644 --- a/arch/arm/boot/dts/exynos5250.dtsi +++ b/arch/arm/boot/dts/exynos5250.dtsi | |||
| @@ -574,7 +574,7 @@ | |||
| 574 | 574 | ||
| 575 | hdmi { | 575 | hdmi { |
| 576 | compatible = "samsung,exynos5-hdmi"; | 576 | compatible = "samsung,exynos5-hdmi"; |
| 577 | reg = <0x14530000 0x100000>; | 577 | reg = <0x14530000 0x70000>; |
| 578 | interrupts = <0 95 0>; | 578 | interrupts = <0 95 0>; |
| 579 | }; | 579 | }; |
| 580 | 580 | ||
diff --git a/arch/arm/boot/dts/exynos5440-ssdk5440.dts b/arch/arm/boot/dts/exynos5440-ssdk5440.dts index 921c83cf694f..81e2c964a900 100644 --- a/arch/arm/boot/dts/exynos5440-ssdk5440.dts +++ b/arch/arm/boot/dts/exynos5440-ssdk5440.dts | |||
| @@ -21,7 +21,7 @@ | |||
| 21 | }; | 21 | }; |
| 22 | 22 | ||
| 23 | chosen { | 23 | chosen { |
| 24 | bootargs = "root=/dev/ram0 rw ramdisk=8192 initrd=0x81000000,8M console=ttySAC2,115200 init=/linuxrc"; | 24 | bootargs = "root=/dev/ram0 rw ramdisk=8192 initrd=0x81000000,8M console=ttySAC0,115200 init=/linuxrc"; |
| 25 | }; | 25 | }; |
| 26 | 26 | ||
| 27 | spi { | 27 | spi { |
diff --git a/arch/arm/boot/dts/highbank.dts b/arch/arm/boot/dts/highbank.dts index a9ae5d32e80d..5927a8df5625 100644 --- a/arch/arm/boot/dts/highbank.dts +++ b/arch/arm/boot/dts/highbank.dts | |||
| @@ -30,33 +30,37 @@ | |||
| 30 | #address-cells = <1>; | 30 | #address-cells = <1>; |
| 31 | #size-cells = <0>; | 31 | #size-cells = <0>; |
| 32 | 32 | ||
| 33 | cpu@0 { | 33 | cpu@900 { |
| 34 | compatible = "arm,cortex-a9"; | 34 | compatible = "arm,cortex-a9"; |
| 35 | reg = <0>; | 35 | device_type = "cpu"; |
| 36 | reg = <0x900>; | ||
| 36 | next-level-cache = <&L2>; | 37 | next-level-cache = <&L2>; |
| 37 | clocks = <&a9pll>; | 38 | clocks = <&a9pll>; |
| 38 | clock-names = "cpu"; | 39 | clock-names = "cpu"; |
| 39 | }; | 40 | }; |
| 40 | 41 | ||
| 41 | cpu@1 { | 42 | cpu@901 { |
| 42 | compatible = "arm,cortex-a9"; | 43 | compatible = "arm,cortex-a9"; |
| 43 | reg = <1>; | 44 | device_type = "cpu"; |
| 45 | reg = <0x901>; | ||
| 44 | next-level-cache = <&L2>; | 46 | next-level-cache = <&L2>; |
| 45 | clocks = <&a9pll>; | 47 | clocks = <&a9pll>; |
| 46 | clock-names = "cpu"; | 48 | clock-names = "cpu"; |
| 47 | }; | 49 | }; |
| 48 | 50 | ||
| 49 | cpu@2 { | 51 | cpu@902 { |
| 50 | compatible = "arm,cortex-a9"; | 52 | compatible = "arm,cortex-a9"; |
| 51 | reg = <2>; | 53 | device_type = "cpu"; |
| 54 | reg = <0x902>; | ||
| 52 | next-level-cache = <&L2>; | 55 | next-level-cache = <&L2>; |
| 53 | clocks = <&a9pll>; | 56 | clocks = <&a9pll>; |
| 54 | clock-names = "cpu"; | 57 | clock-names = "cpu"; |
| 55 | }; | 58 | }; |
| 56 | 59 | ||
| 57 | cpu@3 { | 60 | cpu@903 { |
| 58 | compatible = "arm,cortex-a9"; | 61 | compatible = "arm,cortex-a9"; |
| 59 | reg = <3>; | 62 | device_type = "cpu"; |
| 63 | reg = <0x903>; | ||
| 60 | next-level-cache = <&L2>; | 64 | next-level-cache = <&L2>; |
| 61 | clocks = <&a9pll>; | 65 | clocks = <&a9pll>; |
| 62 | clock-names = "cpu"; | 66 | clock-names = "cpu"; |
diff --git a/arch/arm/boot/dts/imx23-olinuxino.dts b/arch/arm/boot/dts/imx23-olinuxino.dts index 7c43b8e70b9f..e7484e4ea659 100644 --- a/arch/arm/boot/dts/imx23-olinuxino.dts +++ b/arch/arm/boot/dts/imx23-olinuxino.dts | |||
| @@ -39,17 +39,17 @@ | |||
| 39 | hog_pins_a: hog@0 { | 39 | hog_pins_a: hog@0 { |
| 40 | reg = <0>; | 40 | reg = <0>; |
| 41 | fsl,pinmux-ids = < | 41 | fsl,pinmux-ids = < |
| 42 | 0x2013 /* MX23_PAD_SSP1_DETECT__GPIO_2_1 */ | 42 | 0x0113 /* MX23_PAD_GPMI_ALE__GPIO_0_17 */ |
| 43 | >; | 43 | >; |
| 44 | fsl,drive-strength = <0>; | 44 | fsl,drive-strength = <0>; |
| 45 | fsl,voltage = <1>; | 45 | fsl,voltage = <1>; |
| 46 | fsl,pull-up = <0>; | 46 | fsl,pull-up = <0>; |
| 47 | }; | 47 | }; |
| 48 | 48 | ||
| 49 | led_pin_gpio0_17: led_gpio0_17@0 { | 49 | led_pin_gpio2_1: led_gpio2_1@0 { |
| 50 | reg = <0>; | 50 | reg = <0>; |
| 51 | fsl,pinmux-ids = < | 51 | fsl,pinmux-ids = < |
| 52 | 0x0113 /* MX23_PAD_GPMI_ALE__GPIO_0_17 */ | 52 | 0x2013 /* MX23_PAD_SSP1_DETECT__GPIO_2_1 */ |
| 53 | >; | 53 | >; |
| 54 | fsl,drive-strength = <0>; | 54 | fsl,drive-strength = <0>; |
| 55 | fsl,voltage = <1>; | 55 | fsl,voltage = <1>; |
| @@ -110,7 +110,7 @@ | |||
| 110 | leds { | 110 | leds { |
| 111 | compatible = "gpio-leds"; | 111 | compatible = "gpio-leds"; |
| 112 | pinctrl-names = "default"; | 112 | pinctrl-names = "default"; |
| 113 | pinctrl-0 = <&led_pin_gpio0_17>; | 113 | pinctrl-0 = <&led_pin_gpio2_1>; |
| 114 | 114 | ||
| 115 | user { | 115 | user { |
| 116 | label = "green"; | 116 | label = "green"; |
diff --git a/arch/arm/boot/dts/imx31-bug.dts b/arch/arm/boot/dts/imx31-bug.dts index 24731cb78e8e..7f67402328d3 100644 --- a/arch/arm/boot/dts/imx31-bug.dts +++ b/arch/arm/boot/dts/imx31-bug.dts | |||
| @@ -14,7 +14,7 @@ | |||
| 14 | 14 | ||
| 15 | / { | 15 | / { |
| 16 | model = "Buglabs i.MX31 Bug 1.x"; | 16 | model = "Buglabs i.MX31 Bug 1.x"; |
| 17 | compatible = "fsl,imx31-bug", "fsl,imx31"; | 17 | compatible = "buglabs,imx31-bug", "fsl,imx31"; |
| 18 | 18 | ||
| 19 | memory { | 19 | memory { |
| 20 | reg = <0x80000000 0x8000000>; /* 128M */ | 20 | reg = <0x80000000 0x8000000>; /* 128M */ |
diff --git a/arch/arm/boot/dts/imx53.dtsi b/arch/arm/boot/dts/imx53.dtsi index 552aed4ff982..edc3f1eb6699 100644 --- a/arch/arm/boot/dts/imx53.dtsi +++ b/arch/arm/boot/dts/imx53.dtsi | |||
| @@ -492,7 +492,7 @@ | |||
| 492 | compatible = "fsl,imx53-flexcan", "fsl,p1010-flexcan"; | 492 | compatible = "fsl,imx53-flexcan", "fsl,p1010-flexcan"; |
| 493 | reg = <0x53fcc000 0x4000>; | 493 | reg = <0x53fcc000 0x4000>; |
| 494 | interrupts = <83>; | 494 | interrupts = <83>; |
| 495 | clocks = <&clks 158>, <&clks 157>; | 495 | clocks = <&clks 87>, <&clks 86>; |
| 496 | clock-names = "ipg", "per"; | 496 | clock-names = "ipg", "per"; |
| 497 | status = "disabled"; | 497 | status = "disabled"; |
| 498 | }; | 498 | }; |
diff --git a/arch/arm/boot/dts/kirkwood-6282.dtsi b/arch/arm/boot/dts/kirkwood-6282.dtsi index 9ae2004d5675..4ccea2130a6c 100644 --- a/arch/arm/boot/dts/kirkwood-6282.dtsi +++ b/arch/arm/boot/dts/kirkwood-6282.dtsi | |||
| @@ -39,6 +39,7 @@ | |||
| 39 | #size-cells = <0>; | 39 | #size-cells = <0>; |
| 40 | interrupts = <32>; | 40 | interrupts = <32>; |
| 41 | clock-frequency = <100000>; | 41 | clock-frequency = <100000>; |
| 42 | clocks = <&gate_clk 7>; | ||
| 42 | status = "disabled"; | 43 | status = "disabled"; |
| 43 | }; | 44 | }; |
| 44 | }; | 45 | }; |
diff --git a/arch/arm/boot/dts/kirkwood-ns2-common.dtsi b/arch/arm/boot/dts/kirkwood-ns2-common.dtsi index 9bc6785ad228..77d21abfcdf7 100644 --- a/arch/arm/boot/dts/kirkwood-ns2-common.dtsi +++ b/arch/arm/boot/dts/kirkwood-ns2-common.dtsi | |||
| @@ -1,4 +1,5 @@ | |||
| 1 | /include/ "kirkwood.dtsi" | 1 | /include/ "kirkwood.dtsi" |
| 2 | /include/ "kirkwood-6281.dtsi" | ||
| 2 | 3 | ||
| 3 | / { | 4 | / { |
| 4 | chosen { | 5 | chosen { |
| @@ -6,6 +7,21 @@ | |||
| 6 | }; | 7 | }; |
| 7 | 8 | ||
| 8 | ocp@f1000000 { | 9 | ocp@f1000000 { |
| 10 | pinctrl: pinctrl@10000 { | ||
| 11 | pinctrl-0 = < &pmx_spi &pmx_twsi0 &pmx_uart0 | ||
| 12 | &pmx_ns2_sata0 &pmx_ns2_sata1>; | ||
| 13 | pinctrl-names = "default"; | ||
| 14 | |||
| 15 | pmx_ns2_sata0: pmx-ns2-sata0 { | ||
| 16 | marvell,pins = "mpp21"; | ||
| 17 | marvell,function = "sata0"; | ||
| 18 | }; | ||
| 19 | pmx_ns2_sata1: pmx-ns2-sata1 { | ||
| 20 | marvell,pins = "mpp20"; | ||
| 21 | marvell,function = "sata1"; | ||
| 22 | }; | ||
| 23 | }; | ||
| 24 | |||
| 9 | serial@12000 { | 25 | serial@12000 { |
| 10 | clock-frequency = <166666667>; | 26 | clock-frequency = <166666667>; |
| 11 | status = "okay"; | 27 | status = "okay"; |
diff --git a/arch/arm/boot/dts/kirkwood-topkick.dts b/arch/arm/boot/dts/kirkwood-topkick.dts index c0de5a7f660d..cd15452a52a6 100644 --- a/arch/arm/boot/dts/kirkwood-topkick.dts +++ b/arch/arm/boot/dts/kirkwood-topkick.dts | |||
| @@ -82,4 +82,21 @@ | |||
| 82 | gpios = <&gpio1 16 1>; | 82 | gpios = <&gpio1 16 1>; |
| 83 | }; | 83 | }; |
| 84 | }; | 84 | }; |
| 85 | regulators { | ||
| 86 | compatible = "simple-bus"; | ||
| 87 | #address-cells = <1>; | ||
| 88 | #size-cells = <0>; | ||
| 89 | |||
| 90 | sata0_power: regulator@1 { | ||
| 91 | compatible = "regulator-fixed"; | ||
| 92 | reg = <1>; | ||
| 93 | regulator-name = "SATA0 Power"; | ||
| 94 | regulator-min-microvolt = <5000000>; | ||
| 95 | regulator-max-microvolt = <5000000>; | ||
| 96 | enable-active-high; | ||
| 97 | regulator-always-on; | ||
| 98 | regulator-boot-on; | ||
| 99 | gpio = <&gpio1 4 0>; | ||
| 100 | }; | ||
| 101 | }; | ||
| 85 | }; | 102 | }; |
diff --git a/arch/arm/boot/dts/kirkwood.dtsi b/arch/arm/boot/dts/kirkwood.dtsi index 7735cee4a9c6..d6ab442b7011 100644 --- a/arch/arm/boot/dts/kirkwood.dtsi +++ b/arch/arm/boot/dts/kirkwood.dtsi | |||
| @@ -36,6 +36,7 @@ | |||
| 36 | reg = <0x10100 0x40>; | 36 | reg = <0x10100 0x40>; |
| 37 | ngpios = <32>; | 37 | ngpios = <32>; |
| 38 | interrupt-controller; | 38 | interrupt-controller; |
| 39 | #interrupt-cells = <2>; | ||
| 39 | interrupts = <35>, <36>, <37>, <38>; | 40 | interrupts = <35>, <36>, <37>, <38>; |
| 40 | }; | 41 | }; |
| 41 | 42 | ||
| @@ -46,6 +47,7 @@ | |||
| 46 | reg = <0x10140 0x40>; | 47 | reg = <0x10140 0x40>; |
| 47 | ngpios = <18>; | 48 | ngpios = <18>; |
| 48 | interrupt-controller; | 49 | interrupt-controller; |
| 50 | #interrupt-cells = <2>; | ||
| 49 | interrupts = <39>, <40>, <41>; | 51 | interrupts = <39>, <40>, <41>; |
| 50 | }; | 52 | }; |
| 51 | 53 | ||
| @@ -144,6 +146,7 @@ | |||
| 144 | compatible = "marvell,orion-ehci"; | 146 | compatible = "marvell,orion-ehci"; |
| 145 | reg = <0x50000 0x1000>; | 147 | reg = <0x50000 0x1000>; |
| 146 | interrupts = <19>; | 148 | interrupts = <19>; |
| 149 | clocks = <&gate_clk 3>; | ||
| 147 | status = "okay"; | 150 | status = "okay"; |
| 148 | }; | 151 | }; |
| 149 | 152 | ||
diff --git a/arch/arm/boot/dts/kizbox.dts b/arch/arm/boot/dts/kizbox.dts index e8814fe0e277..b4dc3ed9a3ec 100644 --- a/arch/arm/boot/dts/kizbox.dts +++ b/arch/arm/boot/dts/kizbox.dts | |||
| @@ -48,6 +48,8 @@ | |||
| 48 | 48 | ||
| 49 | macb0: ethernet@fffc4000 { | 49 | macb0: ethernet@fffc4000 { |
| 50 | phy-mode = "mii"; | 50 | phy-mode = "mii"; |
| 51 | pinctrl-0 = <&pinctrl_macb_rmii | ||
| 52 | &pinctrl_macb_rmii_mii_alt>; | ||
| 51 | status = "okay"; | 53 | status = "okay"; |
| 52 | }; | 54 | }; |
| 53 | 55 | ||
diff --git a/arch/arm/boot/dts/sunxi.dtsi b/arch/arm/boot/dts/sunxi.dtsi index 8bbc2bfef221..8b36abea9f2e 100644 --- a/arch/arm/boot/dts/sunxi.dtsi +++ b/arch/arm/boot/dts/sunxi.dtsi | |||
| @@ -60,19 +60,21 @@ | |||
| 60 | }; | 60 | }; |
| 61 | 61 | ||
| 62 | uart0: uart@01c28000 { | 62 | uart0: uart@01c28000 { |
| 63 | compatible = "ns8250"; | 63 | compatible = "snps,dw-apb-uart"; |
| 64 | reg = <0x01c28000 0x400>; | 64 | reg = <0x01c28000 0x400>; |
| 65 | interrupts = <1>; | 65 | interrupts = <1>; |
| 66 | reg-shift = <2>; | 66 | reg-shift = <2>; |
| 67 | reg-io-width = <4>; | ||
| 67 | clock-frequency = <24000000>; | 68 | clock-frequency = <24000000>; |
| 68 | status = "disabled"; | 69 | status = "disabled"; |
| 69 | }; | 70 | }; |
| 70 | 71 | ||
| 71 | uart1: uart@01c28400 { | 72 | uart1: uart@01c28400 { |
| 72 | compatible = "ns8250"; | 73 | compatible = "snps,dw-apb-uart"; |
| 73 | reg = <0x01c28400 0x400>; | 74 | reg = <0x01c28400 0x400>; |
| 74 | interrupts = <2>; | 75 | interrupts = <2>; |
| 75 | reg-shift = <2>; | 76 | reg-shift = <2>; |
| 77 | reg-io-width = <4>; | ||
| 76 | clock-frequency = <24000000>; | 78 | clock-frequency = <24000000>; |
| 77 | status = "disabled"; | 79 | status = "disabled"; |
| 78 | }; | 80 | }; |
diff --git a/arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts b/arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts index 1fc405a9ecfb..cf8071ad22d5 100644 --- a/arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts +++ b/arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts | |||
| @@ -45,7 +45,6 @@ | |||
| 45 | reg = <1>; | 45 | reg = <1>; |
| 46 | }; | 46 | }; |
| 47 | 47 | ||
| 48 | /* A7s disabled till big.LITTLE patches are available... | ||
| 49 | cpu2: cpu@2 { | 48 | cpu2: cpu@2 { |
| 50 | device_type = "cpu"; | 49 | device_type = "cpu"; |
| 51 | compatible = "arm,cortex-a7"; | 50 | compatible = "arm,cortex-a7"; |
| @@ -63,7 +62,6 @@ | |||
| 63 | compatible = "arm,cortex-a7"; | 62 | compatible = "arm,cortex-a7"; |
| 64 | reg = <0x102>; | 63 | reg = <0x102>; |
| 65 | }; | 64 | }; |
| 66 | */ | ||
| 67 | }; | 65 | }; |
| 68 | 66 | ||
| 69 | memory@80000000 { | 67 | memory@80000000 { |
diff --git a/arch/arm/common/sa1111.c b/arch/arm/common/sa1111.c index 9173d112ea01..e57d7e5bf96a 100644 --- a/arch/arm/common/sa1111.c +++ b/arch/arm/common/sa1111.c | |||
| @@ -686,8 +686,7 @@ sa1111_init_one_child(struct sa1111 *sachip, struct resource *parent, | |||
| 686 | * %-EINVAL no platform data passed | 686 | * %-EINVAL no platform data passed |
| 687 | * %0 successful. | 687 | * %0 successful. |
| 688 | */ | 688 | */ |
| 689 | static int __devinit | 689 | static int __sa1111_probe(struct device *me, struct resource *mem, int irq) |
| 690 | __sa1111_probe(struct device *me, struct resource *mem, int irq) | ||
| 691 | { | 690 | { |
| 692 | struct sa1111_platform_data *pd = me->platform_data; | 691 | struct sa1111_platform_data *pd = me->platform_data; |
| 693 | struct sa1111 *sachip; | 692 | struct sa1111 *sachip; |
| @@ -1011,7 +1010,7 @@ static int sa1111_resume(struct platform_device *dev) | |||
| 1011 | #define sa1111_resume NULL | 1010 | #define sa1111_resume NULL |
| 1012 | #endif | 1011 | #endif |
| 1013 | 1012 | ||
| 1014 | static int __devinit sa1111_probe(struct platform_device *pdev) | 1013 | static int sa1111_probe(struct platform_device *pdev) |
| 1015 | { | 1014 | { |
| 1016 | struct resource *mem; | 1015 | struct resource *mem; |
| 1017 | int irq; | 1016 | int irq; |
diff --git a/arch/arm/common/scoop.c b/arch/arm/common/scoop.c index 0c616d5fcb0f..a5c3dc38aa18 100644 --- a/arch/arm/common/scoop.c +++ b/arch/arm/common/scoop.c | |||
| @@ -176,7 +176,7 @@ static int scoop_resume(struct platform_device *dev) | |||
| 176 | #define scoop_resume NULL | 176 | #define scoop_resume NULL |
| 177 | #endif | 177 | #endif |
| 178 | 178 | ||
| 179 | static int __devinit scoop_probe(struct platform_device *pdev) | 179 | static int scoop_probe(struct platform_device *pdev) |
| 180 | { | 180 | { |
| 181 | struct scoop_dev *devptr; | 181 | struct scoop_dev *devptr; |
| 182 | struct scoop_config *inf; | 182 | struct scoop_config *inf; |
| @@ -243,7 +243,7 @@ err_ioremap: | |||
| 243 | return ret; | 243 | return ret; |
| 244 | } | 244 | } |
| 245 | 245 | ||
| 246 | static int __devexit scoop_remove(struct platform_device *pdev) | 246 | static int scoop_remove(struct platform_device *pdev) |
| 247 | { | 247 | { |
| 248 | struct scoop_dev *sdev = platform_get_drvdata(pdev); | 248 | struct scoop_dev *sdev = platform_get_drvdata(pdev); |
| 249 | int ret; | 249 | int ret; |
| @@ -268,7 +268,7 @@ static int __devexit scoop_remove(struct platform_device *pdev) | |||
| 268 | 268 | ||
| 269 | static struct platform_driver scoop_driver = { | 269 | static struct platform_driver scoop_driver = { |
| 270 | .probe = scoop_probe, | 270 | .probe = scoop_probe, |
| 271 | .remove = __devexit_p(scoop_remove), | 271 | .remove = scoop_remove, |
| 272 | .suspend = scoop_suspend, | 272 | .suspend = scoop_suspend, |
| 273 | .resume = scoop_resume, | 273 | .resume = scoop_resume, |
| 274 | .driver = { | 274 | .driver = { |
diff --git a/arch/arm/common/vic.c b/arch/arm/common/vic.c index e4df17ca90c7..8f324b99416e 100644 --- a/arch/arm/common/vic.c +++ b/arch/arm/common/vic.c | |||
| @@ -206,6 +206,7 @@ static void __init vic_register(void __iomem *base, unsigned int irq, | |||
| 206 | struct device_node *node) | 206 | struct device_node *node) |
| 207 | { | 207 | { |
| 208 | struct vic_device *v; | 208 | struct vic_device *v; |
| 209 | int i; | ||
| 209 | 210 | ||
| 210 | if (vic_id >= ARRAY_SIZE(vic_devices)) { | 211 | if (vic_id >= ARRAY_SIZE(vic_devices)) { |
| 211 | printk(KERN_ERR "%s: too few VICs, increase CONFIG_ARM_VIC_NR\n", __func__); | 212 | printk(KERN_ERR "%s: too few VICs, increase CONFIG_ARM_VIC_NR\n", __func__); |
| @@ -220,6 +221,10 @@ static void __init vic_register(void __iomem *base, unsigned int irq, | |||
| 220 | vic_id++; | 221 | vic_id++; |
| 221 | v->domain = irq_domain_add_simple(node, fls(valid_sources), irq, | 222 | v->domain = irq_domain_add_simple(node, fls(valid_sources), irq, |
| 222 | &vic_irqdomain_ops, v); | 223 | &vic_irqdomain_ops, v); |
| 224 | /* create an IRQ mapping for each valid IRQ */ | ||
| 225 | for (i = 0; i < fls(valid_sources); i++) | ||
| 226 | if (valid_sources & (1 << i)) | ||
| 227 | irq_create_mapping(v->domain, i); | ||
| 223 | } | 228 | } |
| 224 | 229 | ||
| 225 | static void vic_ack_irq(struct irq_data *d) | 230 | static void vic_ack_irq(struct irq_data *d) |
| @@ -416,9 +421,9 @@ int __init vic_of_init(struct device_node *node, struct device_node *parent) | |||
| 416 | return -EIO; | 421 | return -EIO; |
| 417 | 422 | ||
| 418 | /* | 423 | /* |
| 419 | * Passing -1 as first IRQ makes the simple domain allocate descriptors | 424 | * Passing 0 as first IRQ makes the simple domain allocate descriptors |
| 420 | */ | 425 | */ |
| 421 | __vic_init(regs, -1, ~0, ~0, node); | 426 | __vic_init(regs, 0, ~0, ~0, node); |
| 422 | 427 | ||
| 423 | return 0; | 428 | return 0; |
| 424 | } | 429 | } |
diff --git a/arch/arm/configs/at91_dt_defconfig b/arch/arm/configs/at91_dt_defconfig index b175577d7abb..1ea959019fcd 100644 --- a/arch/arm/configs/at91_dt_defconfig +++ b/arch/arm/configs/at91_dt_defconfig | |||
| @@ -19,6 +19,7 @@ CONFIG_SOC_AT91SAM9260=y | |||
| 19 | CONFIG_SOC_AT91SAM9263=y | 19 | CONFIG_SOC_AT91SAM9263=y |
| 20 | CONFIG_SOC_AT91SAM9G45=y | 20 | CONFIG_SOC_AT91SAM9G45=y |
| 21 | CONFIG_SOC_AT91SAM9X5=y | 21 | CONFIG_SOC_AT91SAM9X5=y |
| 22 | CONFIG_SOC_AT91SAM9N12=y | ||
| 22 | CONFIG_MACH_AT91SAM_DT=y | 23 | CONFIG_MACH_AT91SAM_DT=y |
| 23 | CONFIG_AT91_PROGRAMMABLE_CLOCKS=y | 24 | CONFIG_AT91_PROGRAMMABLE_CLOCKS=y |
| 24 | CONFIG_AT91_TIMER_HZ=128 | 25 | CONFIG_AT91_TIMER_HZ=128 |
| @@ -31,7 +32,7 @@ CONFIG_ZBOOT_ROM_TEXT=0x0 | |||
| 31 | CONFIG_ZBOOT_ROM_BSS=0x0 | 32 | CONFIG_ZBOOT_ROM_BSS=0x0 |
| 32 | CONFIG_ARM_APPENDED_DTB=y | 33 | CONFIG_ARM_APPENDED_DTB=y |
| 33 | CONFIG_ARM_ATAG_DTB_COMPAT=y | 34 | CONFIG_ARM_ATAG_DTB_COMPAT=y |
| 34 | CONFIG_CMDLINE="mem=128M console=ttyS0,115200 initrd=0x21100000,25165824 root=/dev/ram0 rw" | 35 | CONFIG_CMDLINE="console=ttyS0,115200 initrd=0x21100000,25165824 root=/dev/ram0 rw" |
| 35 | CONFIG_KEXEC=y | 36 | CONFIG_KEXEC=y |
| 36 | CONFIG_AUTO_ZRELADDR=y | 37 | CONFIG_AUTO_ZRELADDR=y |
| 37 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | 38 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set |
diff --git a/arch/arm/configs/mvebu_defconfig b/arch/arm/configs/mvebu_defconfig index a702fb345c01..b5bc96cb65a7 100644 --- a/arch/arm/configs/mvebu_defconfig +++ b/arch/arm/configs/mvebu_defconfig | |||
| @@ -33,9 +33,7 @@ CONFIG_MVNETA=y | |||
| 33 | CONFIG_MARVELL_PHY=y | 33 | CONFIG_MARVELL_PHY=y |
| 34 | CONFIG_SERIAL_8250=y | 34 | CONFIG_SERIAL_8250=y |
| 35 | CONFIG_SERIAL_8250_CONSOLE=y | 35 | CONFIG_SERIAL_8250_CONSOLE=y |
| 36 | CONFIG_SERIAL_OF_PLATFORM=y | 36 | CONFIG_SERIAL_8250_DW=y |
| 37 | CONFIG_I2C=y | ||
| 38 | CONFIG_I2C_MV64XXX=y | ||
| 39 | CONFIG_GPIOLIB=y | 37 | CONFIG_GPIOLIB=y |
| 40 | CONFIG_GPIO_SYSFS=y | 38 | CONFIG_GPIO_SYSFS=y |
| 41 | # CONFIG_USB_SUPPORT is not set | 39 | # CONFIG_USB_SUPPORT is not set |
diff --git a/arch/arm/kernel/bios32.c b/arch/arm/kernel/bios32.c index 9b722612553d..379cf3292390 100644 --- a/arch/arm/kernel/bios32.c +++ b/arch/arm/kernel/bios32.c | |||
| @@ -78,7 +78,7 @@ void pcibios_report_status(u_int status_mask, int warn) | |||
| 78 | * Bug 3 is responsible for the sound DMA grinding to a halt. We now | 78 | * Bug 3 is responsible for the sound DMA grinding to a halt. We now |
| 79 | * live with bug 2. | 79 | * live with bug 2. |
| 80 | */ | 80 | */ |
| 81 | static void __devinit pci_fixup_83c553(struct pci_dev *dev) | 81 | static void pci_fixup_83c553(struct pci_dev *dev) |
| 82 | { | 82 | { |
| 83 | /* | 83 | /* |
| 84 | * Set memory region to start at address 0, and enable IO | 84 | * Set memory region to start at address 0, and enable IO |
| @@ -130,7 +130,7 @@ static void __devinit pci_fixup_83c553(struct pci_dev *dev) | |||
| 130 | } | 130 | } |
| 131 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_WINBOND, PCI_DEVICE_ID_WINBOND_83C553, pci_fixup_83c553); | 131 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_WINBOND, PCI_DEVICE_ID_WINBOND_83C553, pci_fixup_83c553); |
| 132 | 132 | ||
| 133 | static void __devinit pci_fixup_unassign(struct pci_dev *dev) | 133 | static void pci_fixup_unassign(struct pci_dev *dev) |
| 134 | { | 134 | { |
| 135 | dev->resource[0].end -= dev->resource[0].start; | 135 | dev->resource[0].end -= dev->resource[0].start; |
| 136 | dev->resource[0].start = 0; | 136 | dev->resource[0].start = 0; |
| @@ -142,7 +142,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_WINBOND2, PCI_DEVICE_ID_WINBOND2_89C940F, | |||
| 142 | * if it is the host bridge by marking it as such. These resources are of | 142 | * if it is the host bridge by marking it as such. These resources are of |
| 143 | * no consequence to the PCI layer (they are handled elsewhere). | 143 | * no consequence to the PCI layer (they are handled elsewhere). |
| 144 | */ | 144 | */ |
| 145 | static void __devinit pci_fixup_dec21285(struct pci_dev *dev) | 145 | static void pci_fixup_dec21285(struct pci_dev *dev) |
| 146 | { | 146 | { |
| 147 | int i; | 147 | int i; |
| 148 | 148 | ||
| @@ -161,7 +161,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_DEC, PCI_DEVICE_ID_DEC_21285, pci_fixup_d | |||
| 161 | /* | 161 | /* |
| 162 | * PCI IDE controllers use non-standard I/O port decoding, respect it. | 162 | * PCI IDE controllers use non-standard I/O port decoding, respect it. |
| 163 | */ | 163 | */ |
| 164 | static void __devinit pci_fixup_ide_bases(struct pci_dev *dev) | 164 | static void pci_fixup_ide_bases(struct pci_dev *dev) |
| 165 | { | 165 | { |
| 166 | struct resource *r; | 166 | struct resource *r; |
| 167 | int i; | 167 | int i; |
| @@ -182,7 +182,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, pci_fixup_ide_bases); | |||
| 182 | /* | 182 | /* |
| 183 | * Put the DEC21142 to sleep | 183 | * Put the DEC21142 to sleep |
| 184 | */ | 184 | */ |
| 185 | static void __devinit pci_fixup_dec21142(struct pci_dev *dev) | 185 | static void pci_fixup_dec21142(struct pci_dev *dev) |
| 186 | { | 186 | { |
| 187 | pci_write_config_dword(dev, 0x40, 0x80000000); | 187 | pci_write_config_dword(dev, 0x40, 0x80000000); |
| 188 | } | 188 | } |
| @@ -204,7 +204,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_DEC, PCI_DEVICE_ID_DEC_21142, pci_fixup_d | |||
| 204 | * functional. However, The CY82C693U _does not work_ in bus | 204 | * functional. However, The CY82C693U _does not work_ in bus |
| 205 | * master mode without locking the PCI bus solid. | 205 | * master mode without locking the PCI bus solid. |
| 206 | */ | 206 | */ |
| 207 | static void __devinit pci_fixup_cy82c693(struct pci_dev *dev) | 207 | static void pci_fixup_cy82c693(struct pci_dev *dev) |
| 208 | { | 208 | { |
| 209 | if ((dev->class >> 8) == PCI_CLASS_STORAGE_IDE) { | 209 | if ((dev->class >> 8) == PCI_CLASS_STORAGE_IDE) { |
| 210 | u32 base0, base1; | 210 | u32 base0, base1; |
| @@ -254,7 +254,7 @@ static void __devinit pci_fixup_cy82c693(struct pci_dev *dev) | |||
| 254 | } | 254 | } |
| 255 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_CONTAQ, PCI_DEVICE_ID_CONTAQ_82C693, pci_fixup_cy82c693); | 255 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_CONTAQ, PCI_DEVICE_ID_CONTAQ_82C693, pci_fixup_cy82c693); |
| 256 | 256 | ||
| 257 | static void __devinit pci_fixup_it8152(struct pci_dev *dev) | 257 | static void pci_fixup_it8152(struct pci_dev *dev) |
| 258 | { | 258 | { |
| 259 | int i; | 259 | int i; |
| 260 | /* fixup for ITE 8152 devices */ | 260 | /* fixup for ITE 8152 devices */ |
| @@ -361,9 +361,7 @@ void pcibios_fixup_bus(struct pci_bus *bus) | |||
| 361 | printk(KERN_INFO "PCI: bus%d: Fast back to back transfers %sabled\n", | 361 | printk(KERN_INFO "PCI: bus%d: Fast back to back transfers %sabled\n", |
| 362 | bus->number, (features & PCI_COMMAND_FAST_BACK) ? "en" : "dis"); | 362 | bus->number, (features & PCI_COMMAND_FAST_BACK) ? "en" : "dis"); |
| 363 | } | 363 | } |
| 364 | #ifdef CONFIG_HOTPLUG | ||
| 365 | EXPORT_SYMBOL(pcibios_fixup_bus); | 364 | EXPORT_SYMBOL(pcibios_fixup_bus); |
| 366 | #endif | ||
| 367 | 365 | ||
| 368 | /* | 366 | /* |
| 369 | * Swizzle the device pin each time we cross a bridge. If a platform does | 367 | * Swizzle the device pin each time we cross a bridge. If a platform does |
| @@ -380,7 +378,7 @@ EXPORT_SYMBOL(pcibios_fixup_bus); | |||
| 380 | * PCI standard swizzle is implemented on plug-in cards and Cardbus based | 378 | * PCI standard swizzle is implemented on plug-in cards and Cardbus based |
| 381 | * PCI extenders, so it can not be ignored. | 379 | * PCI extenders, so it can not be ignored. |
| 382 | */ | 380 | */ |
| 383 | static u8 __devinit pcibios_swizzle(struct pci_dev *dev, u8 *pin) | 381 | static u8 pcibios_swizzle(struct pci_dev *dev, u8 *pin) |
| 384 | { | 382 | { |
| 385 | struct pci_sys_data *sys = dev->sysdata; | 383 | struct pci_sys_data *sys = dev->sysdata; |
| 386 | int slot, oldpin = *pin; | 384 | int slot, oldpin = *pin; |
diff --git a/arch/arm/kernel/debug.S b/arch/arm/kernel/debug.S index 6809200c31fb..14f7c3b14632 100644 --- a/arch/arm/kernel/debug.S +++ b/arch/arm/kernel/debug.S | |||
| @@ -100,12 +100,14 @@ ENTRY(printch) | |||
| 100 | b 1b | 100 | b 1b |
| 101 | ENDPROC(printch) | 101 | ENDPROC(printch) |
| 102 | 102 | ||
| 103 | #ifdef CONFIG_MMU | ||
| 103 | ENTRY(debug_ll_addr) | 104 | ENTRY(debug_ll_addr) |
| 104 | addruart r2, r3, ip | 105 | addruart r2, r3, ip |
| 105 | str r2, [r0] | 106 | str r2, [r0] |
| 106 | str r3, [r1] | 107 | str r3, [r1] |
| 107 | mov pc, lr | 108 | mov pc, lr |
| 108 | ENDPROC(debug_ll_addr) | 109 | ENDPROC(debug_ll_addr) |
| 110 | #endif | ||
| 109 | 111 | ||
| 110 | #else | 112 | #else |
| 111 | 113 | ||
diff --git a/arch/arm/kernel/etm.c b/arch/arm/kernel/etm.c index 36d20bd50120..9b6de8c988f3 100644 --- a/arch/arm/kernel/etm.c +++ b/arch/arm/kernel/etm.c | |||
| @@ -339,7 +339,7 @@ static struct miscdevice etb_miscdev = { | |||
| 339 | .fops = &etb_fops, | 339 | .fops = &etb_fops, |
| 340 | }; | 340 | }; |
| 341 | 341 | ||
| 342 | static int __devinit etb_probe(struct amba_device *dev, const struct amba_id *id) | 342 | static int etb_probe(struct amba_device *dev, const struct amba_id *id) |
| 343 | { | 343 | { |
| 344 | struct tracectx *t = &tracer; | 344 | struct tracectx *t = &tracer; |
| 345 | int ret = 0; | 345 | int ret = 0; |
| @@ -531,7 +531,7 @@ static ssize_t trace_mode_store(struct kobject *kobj, | |||
| 531 | static struct kobj_attribute trace_mode_attr = | 531 | static struct kobj_attribute trace_mode_attr = |
| 532 | __ATTR(trace_mode, 0644, trace_mode_show, trace_mode_store); | 532 | __ATTR(trace_mode, 0644, trace_mode_show, trace_mode_store); |
| 533 | 533 | ||
| 534 | static int __devinit etm_probe(struct amba_device *dev, const struct amba_id *id) | 534 | static int etm_probe(struct amba_device *dev, const struct amba_id *id) |
| 535 | { | 535 | { |
| 536 | struct tracectx *t = &tracer; | 536 | struct tracectx *t = &tracer; |
| 537 | int ret = 0; | 537 | int ret = 0; |
diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S index 4eee351f4668..486a15ae9011 100644 --- a/arch/arm/kernel/head.S +++ b/arch/arm/kernel/head.S | |||
| @@ -246,6 +246,7 @@ __create_page_tables: | |||
| 246 | 246 | ||
| 247 | /* | 247 | /* |
| 248 | * Then map boot params address in r2 if specified. | 248 | * Then map boot params address in r2 if specified. |
| 249 | * We map 2 sections in case the ATAGs/DTB crosses a section boundary. | ||
| 249 | */ | 250 | */ |
| 250 | mov r0, r2, lsr #SECTION_SHIFT | 251 | mov r0, r2, lsr #SECTION_SHIFT |
| 251 | movs r0, r0, lsl #SECTION_SHIFT | 252 | movs r0, r0, lsl #SECTION_SHIFT |
| @@ -253,6 +254,8 @@ __create_page_tables: | |||
| 253 | addne r3, r3, #PAGE_OFFSET | 254 | addne r3, r3, #PAGE_OFFSET |
| 254 | addne r3, r4, r3, lsr #(SECTION_SHIFT - PMD_ORDER) | 255 | addne r3, r4, r3, lsr #(SECTION_SHIFT - PMD_ORDER) |
| 255 | orrne r6, r7, r0 | 256 | orrne r6, r7, r0 |
| 257 | strne r6, [r3], #1 << PMD_ORDER | ||
| 258 | addne r6, r6, #1 << SECTION_SHIFT | ||
| 256 | strne r6, [r3] | 259 | strne r6, [r3] |
| 257 | 260 | ||
| 258 | #ifdef CONFIG_DEBUG_LL | 261 | #ifdef CONFIG_DEBUG_LL |
| @@ -331,7 +334,7 @@ ENTRY(secondary_startup) | |||
| 331 | * as it has already been validated by the primary processor. | 334 | * as it has already been validated by the primary processor. |
| 332 | */ | 335 | */ |
| 333 | #ifdef CONFIG_ARM_VIRT_EXT | 336 | #ifdef CONFIG_ARM_VIRT_EXT |
| 334 | bl __hyp_stub_install | 337 | bl __hyp_stub_install_secondary |
| 335 | #endif | 338 | #endif |
| 336 | safe_svcmode_maskall r9 | 339 | safe_svcmode_maskall r9 |
| 337 | 340 | ||
diff --git a/arch/arm/kernel/hyp-stub.S b/arch/arm/kernel/hyp-stub.S index 65b2417aebce..1315c4ccfa56 100644 --- a/arch/arm/kernel/hyp-stub.S +++ b/arch/arm/kernel/hyp-stub.S | |||
| @@ -99,7 +99,7 @@ ENTRY(__hyp_stub_install_secondary) | |||
| 99 | * immediately. | 99 | * immediately. |
| 100 | */ | 100 | */ |
| 101 | compare_cpu_mode_with_primary r4, r5, r6, r7 | 101 | compare_cpu_mode_with_primary r4, r5, r6, r7 |
| 102 | bxne lr | 102 | movne pc, lr |
| 103 | 103 | ||
| 104 | /* | 104 | /* |
| 105 | * Once we have given up on one CPU, we do not try to install the | 105 | * Once we have given up on one CPU, we do not try to install the |
| @@ -111,7 +111,7 @@ ENTRY(__hyp_stub_install_secondary) | |||
| 111 | */ | 111 | */ |
| 112 | 112 | ||
| 113 | cmp r4, #HYP_MODE | 113 | cmp r4, #HYP_MODE |
| 114 | bxne lr @ give up if the CPU is not in HYP mode | 114 | movne pc, lr @ give up if the CPU is not in HYP mode |
| 115 | 115 | ||
| 116 | /* | 116 | /* |
| 117 | * Configure HSCTLR to set correct exception endianness/instruction set | 117 | * Configure HSCTLR to set correct exception endianness/instruction set |
| @@ -120,7 +120,8 @@ ENTRY(__hyp_stub_install_secondary) | |||
| 120 | * Eventually, CPU-specific code might be needed -- assume not for now | 120 | * Eventually, CPU-specific code might be needed -- assume not for now |
| 121 | * | 121 | * |
| 122 | * This code relies on the "eret" instruction to synchronize the | 122 | * This code relies on the "eret" instruction to synchronize the |
| 123 | * various coprocessor accesses. | 123 | * various coprocessor accesses. This is done when we switch to SVC |
| 124 | * (see safe_svcmode_maskall). | ||
| 124 | */ | 125 | */ |
| 125 | @ Now install the hypervisor stub: | 126 | @ Now install the hypervisor stub: |
| 126 | adr r7, __hyp_stub_vectors | 127 | adr r7, __hyp_stub_vectors |
| @@ -155,14 +156,7 @@ THUMB( orr r7, #(1 << 30) ) @ HSCTLR.TE | |||
| 155 | 1: | 156 | 1: |
| 156 | #endif | 157 | #endif |
| 157 | 158 | ||
| 158 | bic r7, r4, #MODE_MASK | 159 | bx lr @ The boot CPU mode is left in r4. |
| 159 | orr r7, r7, #SVC_MODE | ||
| 160 | THUMB( orr r7, r7, #PSR_T_BIT ) | ||
| 161 | msr spsr_cxsf, r7 @ This is SPSR_hyp. | ||
| 162 | |||
| 163 | __MSR_ELR_HYP(14) @ msr elr_hyp, lr | ||
| 164 | __ERET @ return, switching to SVC mode | ||
| 165 | @ The boot CPU mode is left in r4. | ||
| 166 | ENDPROC(__hyp_stub_install_secondary) | 160 | ENDPROC(__hyp_stub_install_secondary) |
| 167 | 161 | ||
| 168 | __hyp_stub_do_trap: | 162 | __hyp_stub_do_trap: |
| @@ -200,7 +194,7 @@ ENDPROC(__hyp_get_vectors) | |||
| 200 | @ fall through | 194 | @ fall through |
| 201 | ENTRY(__hyp_set_vectors) | 195 | ENTRY(__hyp_set_vectors) |
| 202 | __HVC(0) | 196 | __HVC(0) |
| 203 | bx lr | 197 | mov pc, lr |
| 204 | ENDPROC(__hyp_set_vectors) | 198 | ENDPROC(__hyp_set_vectors) |
| 205 | 199 | ||
| 206 | #ifndef ZIMAGE | 200 | #ifndef ZIMAGE |
diff --git a/arch/arm/kernel/perf_event_cpu.c b/arch/arm/kernel/perf_event_cpu.c index 9a4f6307a016..5f6620684e25 100644 --- a/arch/arm/kernel/perf_event_cpu.c +++ b/arch/arm/kernel/perf_event_cpu.c | |||
| @@ -132,7 +132,7 @@ static int cpu_pmu_request_irq(struct arm_pmu *cpu_pmu, irq_handler_t handler) | |||
| 132 | return 0; | 132 | return 0; |
| 133 | } | 133 | } |
| 134 | 134 | ||
| 135 | static void __devinit cpu_pmu_init(struct arm_pmu *cpu_pmu) | 135 | static void cpu_pmu_init(struct arm_pmu *cpu_pmu) |
| 136 | { | 136 | { |
| 137 | int cpu; | 137 | int cpu; |
| 138 | for_each_possible_cpu(cpu) { | 138 | for_each_possible_cpu(cpu) { |
| @@ -178,7 +178,7 @@ static struct notifier_block __cpuinitdata cpu_pmu_hotplug_notifier = { | |||
| 178 | /* | 178 | /* |
| 179 | * PMU platform driver and devicetree bindings. | 179 | * PMU platform driver and devicetree bindings. |
| 180 | */ | 180 | */ |
| 181 | static struct of_device_id __devinitdata cpu_pmu_of_device_ids[] = { | 181 | static struct of_device_id cpu_pmu_of_device_ids[] = { |
| 182 | {.compatible = "arm,cortex-a15-pmu", .data = armv7_a15_pmu_init}, | 182 | {.compatible = "arm,cortex-a15-pmu", .data = armv7_a15_pmu_init}, |
| 183 | {.compatible = "arm,cortex-a9-pmu", .data = armv7_a9_pmu_init}, | 183 | {.compatible = "arm,cortex-a9-pmu", .data = armv7_a9_pmu_init}, |
| 184 | {.compatible = "arm,cortex-a8-pmu", .data = armv7_a8_pmu_init}, | 184 | {.compatible = "arm,cortex-a8-pmu", .data = armv7_a8_pmu_init}, |
| @@ -190,7 +190,7 @@ static struct of_device_id __devinitdata cpu_pmu_of_device_ids[] = { | |||
| 190 | {}, | 190 | {}, |
| 191 | }; | 191 | }; |
| 192 | 192 | ||
| 193 | static struct platform_device_id __devinitdata cpu_pmu_plat_device_ids[] = { | 193 | static struct platform_device_id cpu_pmu_plat_device_ids[] = { |
| 194 | {.name = "arm-pmu"}, | 194 | {.name = "arm-pmu"}, |
| 195 | {}, | 195 | {}, |
| 196 | }; | 196 | }; |
| @@ -198,7 +198,7 @@ static struct platform_device_id __devinitdata cpu_pmu_plat_device_ids[] = { | |||
| 198 | /* | 198 | /* |
| 199 | * CPU PMU identification and probing. | 199 | * CPU PMU identification and probing. |
| 200 | */ | 200 | */ |
| 201 | static int __devinit probe_current_pmu(struct arm_pmu *pmu) | 201 | static int probe_current_pmu(struct arm_pmu *pmu) |
| 202 | { | 202 | { |
| 203 | int cpu = get_cpu(); | 203 | int cpu = get_cpu(); |
| 204 | unsigned long cpuid = read_cpuid_id(); | 204 | unsigned long cpuid = read_cpuid_id(); |
| @@ -252,7 +252,7 @@ static int __devinit probe_current_pmu(struct arm_pmu *pmu) | |||
| 252 | return ret; | 252 | return ret; |
| 253 | } | 253 | } |
| 254 | 254 | ||
| 255 | static int __devinit cpu_pmu_device_probe(struct platform_device *pdev) | 255 | static int cpu_pmu_device_probe(struct platform_device *pdev) |
| 256 | { | 256 | { |
| 257 | const struct of_device_id *of_id; | 257 | const struct of_device_id *of_id; |
| 258 | int (*init_fn)(struct arm_pmu *); | 258 | int (*init_fn)(struct arm_pmu *); |
diff --git a/arch/arm/kernel/perf_event_v6.c b/arch/arm/kernel/perf_event_v6.c index f3e22ff8b6a2..041d0526a288 100644 --- a/arch/arm/kernel/perf_event_v6.c +++ b/arch/arm/kernel/perf_event_v6.c | |||
| @@ -653,7 +653,7 @@ static int armv6_map_event(struct perf_event *event) | |||
| 653 | &armv6_perf_cache_map, 0xFF); | 653 | &armv6_perf_cache_map, 0xFF); |
| 654 | } | 654 | } |
| 655 | 655 | ||
| 656 | static int __devinit armv6pmu_init(struct arm_pmu *cpu_pmu) | 656 | static int armv6pmu_init(struct arm_pmu *cpu_pmu) |
| 657 | { | 657 | { |
| 658 | cpu_pmu->name = "v6"; | 658 | cpu_pmu->name = "v6"; |
| 659 | cpu_pmu->handle_irq = armv6pmu_handle_irq; | 659 | cpu_pmu->handle_irq = armv6pmu_handle_irq; |
| @@ -685,7 +685,7 @@ static int armv6mpcore_map_event(struct perf_event *event) | |||
| 685 | &armv6mpcore_perf_cache_map, 0xFF); | 685 | &armv6mpcore_perf_cache_map, 0xFF); |
| 686 | } | 686 | } |
| 687 | 687 | ||
| 688 | static int __devinit armv6mpcore_pmu_init(struct arm_pmu *cpu_pmu) | 688 | static int armv6mpcore_pmu_init(struct arm_pmu *cpu_pmu) |
| 689 | { | 689 | { |
| 690 | cpu_pmu->name = "v6mpcore"; | 690 | cpu_pmu->name = "v6mpcore"; |
| 691 | cpu_pmu->handle_irq = armv6pmu_handle_irq; | 691 | cpu_pmu->handle_irq = armv6pmu_handle_irq; |
diff --git a/arch/arm/kernel/perf_event_v7.c b/arch/arm/kernel/perf_event_v7.c index 7d0cce85d17e..4fbc757d9cff 100644 --- a/arch/arm/kernel/perf_event_v7.c +++ b/arch/arm/kernel/perf_event_v7.c | |||
| @@ -1226,7 +1226,7 @@ static void armv7pmu_init(struct arm_pmu *cpu_pmu) | |||
| 1226 | cpu_pmu->max_period = (1LLU << 32) - 1; | 1226 | cpu_pmu->max_period = (1LLU << 32) - 1; |
| 1227 | }; | 1227 | }; |
| 1228 | 1228 | ||
| 1229 | static u32 __devinit armv7_read_num_pmnc_events(void) | 1229 | static u32 armv7_read_num_pmnc_events(void) |
| 1230 | { | 1230 | { |
| 1231 | u32 nb_cnt; | 1231 | u32 nb_cnt; |
| 1232 | 1232 | ||
| @@ -1237,7 +1237,7 @@ static u32 __devinit armv7_read_num_pmnc_events(void) | |||
| 1237 | return nb_cnt + 1; | 1237 | return nb_cnt + 1; |
| 1238 | } | 1238 | } |
| 1239 | 1239 | ||
| 1240 | static int __devinit armv7_a8_pmu_init(struct arm_pmu *cpu_pmu) | 1240 | static int armv7_a8_pmu_init(struct arm_pmu *cpu_pmu) |
| 1241 | { | 1241 | { |
| 1242 | armv7pmu_init(cpu_pmu); | 1242 | armv7pmu_init(cpu_pmu); |
| 1243 | cpu_pmu->name = "ARMv7 Cortex-A8"; | 1243 | cpu_pmu->name = "ARMv7 Cortex-A8"; |
| @@ -1246,7 +1246,7 @@ static int __devinit armv7_a8_pmu_init(struct arm_pmu *cpu_pmu) | |||
| 1246 | return 0; | 1246 | return 0; |
| 1247 | } | 1247 | } |
| 1248 | 1248 | ||
| 1249 | static int __devinit armv7_a9_pmu_init(struct arm_pmu *cpu_pmu) | 1249 | static int armv7_a9_pmu_init(struct arm_pmu *cpu_pmu) |
| 1250 | { | 1250 | { |
| 1251 | armv7pmu_init(cpu_pmu); | 1251 | armv7pmu_init(cpu_pmu); |
| 1252 | cpu_pmu->name = "ARMv7 Cortex-A9"; | 1252 | cpu_pmu->name = "ARMv7 Cortex-A9"; |
| @@ -1255,7 +1255,7 @@ static int __devinit armv7_a9_pmu_init(struct arm_pmu *cpu_pmu) | |||
| 1255 | return 0; | 1255 | return 0; |
| 1256 | } | 1256 | } |
| 1257 | 1257 | ||
| 1258 | static int __devinit armv7_a5_pmu_init(struct arm_pmu *cpu_pmu) | 1258 | static int armv7_a5_pmu_init(struct arm_pmu *cpu_pmu) |
| 1259 | { | 1259 | { |
| 1260 | armv7pmu_init(cpu_pmu); | 1260 | armv7pmu_init(cpu_pmu); |
| 1261 | cpu_pmu->name = "ARMv7 Cortex-A5"; | 1261 | cpu_pmu->name = "ARMv7 Cortex-A5"; |
| @@ -1264,7 +1264,7 @@ static int __devinit armv7_a5_pmu_init(struct arm_pmu *cpu_pmu) | |||
| 1264 | return 0; | 1264 | return 0; |
| 1265 | } | 1265 | } |
| 1266 | 1266 | ||
| 1267 | static int __devinit armv7_a15_pmu_init(struct arm_pmu *cpu_pmu) | 1267 | static int armv7_a15_pmu_init(struct arm_pmu *cpu_pmu) |
| 1268 | { | 1268 | { |
| 1269 | armv7pmu_init(cpu_pmu); | 1269 | armv7pmu_init(cpu_pmu); |
| 1270 | cpu_pmu->name = "ARMv7 Cortex-A15"; | 1270 | cpu_pmu->name = "ARMv7 Cortex-A15"; |
| @@ -1274,7 +1274,7 @@ static int __devinit armv7_a15_pmu_init(struct arm_pmu *cpu_pmu) | |||
| 1274 | return 0; | 1274 | return 0; |
| 1275 | } | 1275 | } |
| 1276 | 1276 | ||
| 1277 | static int __devinit armv7_a7_pmu_init(struct arm_pmu *cpu_pmu) | 1277 | static int armv7_a7_pmu_init(struct arm_pmu *cpu_pmu) |
| 1278 | { | 1278 | { |
| 1279 | armv7pmu_init(cpu_pmu); | 1279 | armv7pmu_init(cpu_pmu); |
| 1280 | cpu_pmu->name = "ARMv7 Cortex-A7"; | 1280 | cpu_pmu->name = "ARMv7 Cortex-A7"; |
diff --git a/arch/arm/kernel/perf_event_xscale.c b/arch/arm/kernel/perf_event_xscale.c index 0c8265e53d5f..2b0fe30ec12e 100644 --- a/arch/arm/kernel/perf_event_xscale.c +++ b/arch/arm/kernel/perf_event_xscale.c | |||
| @@ -440,7 +440,7 @@ static int xscale_map_event(struct perf_event *event) | |||
| 440 | &xscale_perf_cache_map, 0xFF); | 440 | &xscale_perf_cache_map, 0xFF); |
| 441 | } | 441 | } |
| 442 | 442 | ||
| 443 | static int __devinit xscale1pmu_init(struct arm_pmu *cpu_pmu) | 443 | static int xscale1pmu_init(struct arm_pmu *cpu_pmu) |
| 444 | { | 444 | { |
| 445 | cpu_pmu->name = "xscale1"; | 445 | cpu_pmu->name = "xscale1"; |
| 446 | cpu_pmu->handle_irq = xscale1pmu_handle_irq; | 446 | cpu_pmu->handle_irq = xscale1pmu_handle_irq; |
| @@ -810,7 +810,7 @@ static inline void xscale2pmu_write_counter(struct perf_event *event, u32 val) | |||
| 810 | } | 810 | } |
| 811 | } | 811 | } |
| 812 | 812 | ||
| 813 | static int __devinit xscale2pmu_init(struct arm_pmu *cpu_pmu) | 813 | static int xscale2pmu_init(struct arm_pmu *cpu_pmu) |
| 814 | { | 814 | { |
| 815 | cpu_pmu->name = "xscale2"; | 815 | cpu_pmu->name = "xscale2"; |
| 816 | cpu_pmu->handle_irq = xscale2pmu_handle_irq; | 816 | cpu_pmu->handle_irq = xscale2pmu_handle_irq; |
diff --git a/arch/arm/mach-at91/setup.c b/arch/arm/mach-at91/setup.c index 9ee866ce0478..4b678478cf95 100644 --- a/arch/arm/mach-at91/setup.c +++ b/arch/arm/mach-at91/setup.c | |||
| @@ -105,6 +105,8 @@ static void __init soc_detect(u32 dbgu_base) | |||
| 105 | switch (socid) { | 105 | switch (socid) { |
| 106 | case ARCH_ID_AT91RM9200: | 106 | case ARCH_ID_AT91RM9200: |
| 107 | at91_soc_initdata.type = AT91_SOC_RM9200; | 107 | at91_soc_initdata.type = AT91_SOC_RM9200; |
| 108 | if (at91_soc_initdata.subtype == AT91_SOC_SUBTYPE_NONE) | ||
| 109 | at91_soc_initdata.subtype = AT91_SOC_RM9200_BGA; | ||
| 108 | at91_boot_soc = at91rm9200_soc; | 110 | at91_boot_soc = at91rm9200_soc; |
| 109 | break; | 111 | break; |
| 110 | 112 | ||
diff --git a/arch/arm/mach-davinci/board-dm646x-evm.c b/arch/arm/mach-davinci/board-dm646x-evm.c index 9211e8800c79..6e2f1631df5b 100644 --- a/arch/arm/mach-davinci/board-dm646x-evm.c +++ b/arch/arm/mach-davinci/board-dm646x-evm.c | |||
| @@ -358,7 +358,7 @@ static int cpld_video_probe(struct i2c_client *client, | |||
| 358 | return 0; | 358 | return 0; |
| 359 | } | 359 | } |
| 360 | 360 | ||
| 361 | static int __devexit cpld_video_remove(struct i2c_client *client) | 361 | static int cpld_video_remove(struct i2c_client *client) |
| 362 | { | 362 | { |
| 363 | cpld_client = NULL; | 363 | cpld_client = NULL; |
| 364 | return 0; | 364 | return 0; |
diff --git a/arch/arm/mach-davinci/cdce949.c b/arch/arm/mach-davinci/cdce949.c index f2232ca6d070..abafb92031c0 100644 --- a/arch/arm/mach-davinci/cdce949.c +++ b/arch/arm/mach-davinci/cdce949.c | |||
| @@ -256,7 +256,7 @@ static int cdce_probe(struct i2c_client *client, | |||
| 256 | return 0; | 256 | return 0; |
| 257 | } | 257 | } |
| 258 | 258 | ||
| 259 | static int __devexit cdce_remove(struct i2c_client *client) | 259 | static int cdce_remove(struct i2c_client *client) |
| 260 | { | 260 | { |
| 261 | cdce_i2c_client = NULL; | 261 | cdce_i2c_client = NULL; |
| 262 | return 0; | 262 | return 0; |
| @@ -274,7 +274,7 @@ static struct i2c_driver cdce_driver = { | |||
| 274 | .name = "cdce949", | 274 | .name = "cdce949", |
| 275 | }, | 275 | }, |
| 276 | .probe = cdce_probe, | 276 | .probe = cdce_probe, |
| 277 | .remove = __devexit_p(cdce_remove), | 277 | .remove = cdce_remove, |
| 278 | .id_table = cdce_id, | 278 | .id_table = cdce_id, |
| 279 | }; | 279 | }; |
| 280 | 280 | ||
diff --git a/arch/arm/mach-dove/pcie.c b/arch/arm/mach-dove/pcie.c index 0ef4435b1657..8a275f297522 100644 --- a/arch/arm/mach-dove/pcie.c +++ b/arch/arm/mach-dove/pcie.c | |||
| @@ -135,7 +135,7 @@ static struct pci_ops pcie_ops = { | |||
| 135 | .write = pcie_wr_conf, | 135 | .write = pcie_wr_conf, |
| 136 | }; | 136 | }; |
| 137 | 137 | ||
| 138 | static void __devinit rc_pci_fixup(struct pci_dev *dev) | 138 | static void rc_pci_fixup(struct pci_dev *dev) |
| 139 | { | 139 | { |
| 140 | /* | 140 | /* |
| 141 | * Prevent enumeration of root complex. | 141 | * Prevent enumeration of root complex. |
diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig index 91d5b6f1d5af..e103c290bc9e 100644 --- a/arch/arm/mach-exynos/Kconfig +++ b/arch/arm/mach-exynos/Kconfig | |||
| @@ -74,6 +74,8 @@ config SOC_EXYNOS5440 | |||
| 74 | depends on ARCH_EXYNOS5 | 74 | depends on ARCH_EXYNOS5 |
| 75 | select ARM_ARCH_TIMER | 75 | select ARM_ARCH_TIMER |
| 76 | select AUTO_ZRELADDR | 76 | select AUTO_ZRELADDR |
| 77 | select PINCTRL | ||
| 78 | select PINCTRL_EXYNOS5440 | ||
| 77 | help | 79 | help |
| 78 | Enable EXYNOS5440 SoC support | 80 | Enable EXYNOS5440 SoC support |
| 79 | 81 | ||
diff --git a/arch/arm/mach-exynos/common.c b/arch/arm/mach-exynos/common.c index d6d0dc651089..1a89824a5f78 100644 --- a/arch/arm/mach-exynos/common.c +++ b/arch/arm/mach-exynos/common.c | |||
| @@ -424,11 +424,18 @@ static void __init exynos5_init_clocks(int xtal) | |||
| 424 | { | 424 | { |
| 425 | printk(KERN_DEBUG "%s: initializing clocks\n", __func__); | 425 | printk(KERN_DEBUG "%s: initializing clocks\n", __func__); |
| 426 | 426 | ||
| 427 | /* EXYNOS5440 can support only common clock framework */ | ||
| 428 | |||
| 429 | if (soc_is_exynos5440()) | ||
| 430 | return; | ||
| 431 | |||
| 432 | #ifdef CONFIG_SOC_EXYNOS5250 | ||
| 427 | s3c24xx_register_baseclocks(xtal); | 433 | s3c24xx_register_baseclocks(xtal); |
| 428 | s5p_register_clocks(xtal); | 434 | s5p_register_clocks(xtal); |
| 429 | 435 | ||
| 430 | exynos5_register_clocks(); | 436 | exynos5_register_clocks(); |
| 431 | exynos5_setup_clocks(); | 437 | exynos5_setup_clocks(); |
| 438 | #endif | ||
| 432 | } | 439 | } |
| 433 | 440 | ||
| 434 | #define COMBINER_ENABLE_SET 0x0 | 441 | #define COMBINER_ENABLE_SET 0x0 |
diff --git a/arch/arm/mach-highbank/highbank.c b/arch/arm/mach-highbank/highbank.c index dc248167d206..981dc1e1da51 100644 --- a/arch/arm/mach-highbank/highbank.c +++ b/arch/arm/mach-highbank/highbank.c | |||
| @@ -135,7 +135,7 @@ static struct sys_timer highbank_timer = { | |||
| 135 | 135 | ||
| 136 | static void highbank_power_off(void) | 136 | static void highbank_power_off(void) |
| 137 | { | 137 | { |
| 138 | hignbank_set_pwr_shutdown(); | 138 | highbank_set_pwr_shutdown(); |
| 139 | 139 | ||
| 140 | while (1) | 140 | while (1) |
| 141 | cpu_do_idle(); | 141 | cpu_do_idle(); |
diff --git a/arch/arm/mach-highbank/hotplug.c b/arch/arm/mach-highbank/hotplug.c index 7b60faccd551..f30c52843396 100644 --- a/arch/arm/mach-highbank/hotplug.c +++ b/arch/arm/mach-highbank/hotplug.c | |||
| @@ -30,7 +30,7 @@ void __ref highbank_cpu_die(unsigned int cpu) | |||
| 30 | { | 30 | { |
| 31 | flush_cache_all(); | 31 | flush_cache_all(); |
| 32 | 32 | ||
| 33 | highbank_set_cpu_jump(cpu, secondary_startup); | 33 | highbank_set_cpu_jump(cpu, phys_to_virt(0)); |
| 34 | highbank_set_core_pwr(); | 34 | highbank_set_core_pwr(); |
| 35 | 35 | ||
| 36 | cpu_do_idle(); | 36 | cpu_do_idle(); |
diff --git a/arch/arm/mach-highbank/platsmp.c b/arch/arm/mach-highbank/platsmp.c index 1129957f6c1d..4ecc864ac8b9 100644 --- a/arch/arm/mach-highbank/platsmp.c +++ b/arch/arm/mach-highbank/platsmp.c | |||
| @@ -32,6 +32,7 @@ static void __cpuinit highbank_secondary_init(unsigned int cpu) | |||
| 32 | 32 | ||
| 33 | static int __cpuinit highbank_boot_secondary(unsigned int cpu, struct task_struct *idle) | 33 | static int __cpuinit highbank_boot_secondary(unsigned int cpu, struct task_struct *idle) |
| 34 | { | 34 | { |
| 35 | highbank_set_cpu_jump(cpu, secondary_startup); | ||
| 35 | gic_raise_softirq(cpumask_of(cpu), 0); | 36 | gic_raise_softirq(cpumask_of(cpu), 0); |
| 36 | return 0; | 37 | return 0; |
| 37 | } | 38 | } |
| @@ -61,19 +62,8 @@ static void __init highbank_smp_init_cpus(void) | |||
| 61 | 62 | ||
| 62 | static void __init highbank_smp_prepare_cpus(unsigned int max_cpus) | 63 | static void __init highbank_smp_prepare_cpus(unsigned int max_cpus) |
| 63 | { | 64 | { |
| 64 | int i; | ||
| 65 | |||
| 66 | if (scu_base_addr) | 65 | if (scu_base_addr) |
| 67 | scu_enable(scu_base_addr); | 66 | scu_enable(scu_base_addr); |
| 68 | |||
| 69 | /* | ||
| 70 | * Write the address of secondary startup into the jump table | ||
| 71 | * The cores are in wfi and wait until they receive a soft interrupt | ||
| 72 | * and a non-zero value to jump to. Then the secondary CPU branches | ||
| 73 | * to this address. | ||
| 74 | */ | ||
| 75 | for (i = 1; i < max_cpus; i++) | ||
| 76 | highbank_set_cpu_jump(i, secondary_startup); | ||
| 77 | } | 67 | } |
| 78 | 68 | ||
| 79 | struct smp_operations highbank_smp_ops __initdata = { | 69 | struct smp_operations highbank_smp_ops __initdata = { |
diff --git a/arch/arm/mach-highbank/pm.c b/arch/arm/mach-highbank/pm.c index 74aa135966f0..04eddb4f4380 100644 --- a/arch/arm/mach-highbank/pm.c +++ b/arch/arm/mach-highbank/pm.c | |||
| @@ -14,10 +14,12 @@ | |||
| 14 | * this program. If not, see <http://www.gnu.org/licenses/>. | 14 | * this program. If not, see <http://www.gnu.org/licenses/>. |
| 15 | */ | 15 | */ |
| 16 | 16 | ||
| 17 | #include <linux/cpu_pm.h> | ||
| 17 | #include <linux/init.h> | 18 | #include <linux/init.h> |
| 18 | #include <linux/io.h> | 19 | #include <linux/io.h> |
| 19 | #include <linux/suspend.h> | 20 | #include <linux/suspend.h> |
| 20 | 21 | ||
| 22 | #include <asm/cacheflush.h> | ||
| 21 | #include <asm/proc-fns.h> | 23 | #include <asm/proc-fns.h> |
| 22 | #include <asm/suspend.h> | 24 | #include <asm/suspend.h> |
| 23 | 25 | ||
| @@ -26,16 +28,31 @@ | |||
| 26 | 28 | ||
| 27 | static int highbank_suspend_finish(unsigned long val) | 29 | static int highbank_suspend_finish(unsigned long val) |
| 28 | { | 30 | { |
| 31 | outer_flush_all(); | ||
| 32 | outer_disable(); | ||
| 33 | |||
| 34 | highbank_set_pwr_suspend(); | ||
| 35 | |||
| 29 | cpu_do_idle(); | 36 | cpu_do_idle(); |
| 37 | |||
| 38 | highbank_clear_pwr_request(); | ||
| 30 | return 0; | 39 | return 0; |
| 31 | } | 40 | } |
| 32 | 41 | ||
| 33 | static int highbank_pm_enter(suspend_state_t state) | 42 | static int highbank_pm_enter(suspend_state_t state) |
| 34 | { | 43 | { |
| 35 | hignbank_set_pwr_suspend(); | 44 | cpu_pm_enter(); |
| 45 | cpu_cluster_pm_enter(); | ||
| 46 | |||
| 36 | highbank_set_cpu_jump(0, cpu_resume); | 47 | highbank_set_cpu_jump(0, cpu_resume); |
| 37 | cpu_suspend(0, highbank_suspend_finish); | 48 | cpu_suspend(0, highbank_suspend_finish); |
| 38 | 49 | ||
| 50 | cpu_cluster_pm_exit(); | ||
| 51 | cpu_pm_exit(); | ||
| 52 | |||
| 53 | highbank_smc1(0x102, 0x1); | ||
| 54 | if (scu_base_addr) | ||
| 55 | scu_enable(scu_base_addr); | ||
| 39 | return 0; | 56 | return 0; |
| 40 | } | 57 | } |
| 41 | 58 | ||
diff --git a/arch/arm/mach-highbank/sysregs.h b/arch/arm/mach-highbank/sysregs.h index e13e8ea7c6cb..70af9d13fcef 100644 --- a/arch/arm/mach-highbank/sysregs.h +++ b/arch/arm/mach-highbank/sysregs.h | |||
| @@ -44,28 +44,43 @@ static inline void highbank_set_core_pwr(void) | |||
| 44 | writel_relaxed(1, sregs_base + SREG_CPU_PWR_CTRL(cpu)); | 44 | writel_relaxed(1, sregs_base + SREG_CPU_PWR_CTRL(cpu)); |
| 45 | } | 45 | } |
| 46 | 46 | ||
| 47 | static inline void hignbank_set_pwr_suspend(void) | 47 | static inline void highbank_clear_core_pwr(void) |
| 48 | { | ||
| 49 | int cpu = cpu_logical_map(smp_processor_id()); | ||
| 50 | if (scu_base_addr) | ||
| 51 | scu_power_mode(scu_base_addr, SCU_PM_NORMAL); | ||
| 52 | else | ||
| 53 | writel_relaxed(0, sregs_base + SREG_CPU_PWR_CTRL(cpu)); | ||
| 54 | } | ||
| 55 | |||
| 56 | static inline void highbank_set_pwr_suspend(void) | ||
| 48 | { | 57 | { |
| 49 | writel(HB_PWR_SUSPEND, sregs_base + HB_SREG_A9_PWR_REQ); | 58 | writel(HB_PWR_SUSPEND, sregs_base + HB_SREG_A9_PWR_REQ); |
| 50 | highbank_set_core_pwr(); | 59 | highbank_set_core_pwr(); |
| 51 | } | 60 | } |
| 52 | 61 | ||
| 53 | static inline void hignbank_set_pwr_shutdown(void) | 62 | static inline void highbank_set_pwr_shutdown(void) |
| 54 | { | 63 | { |
| 55 | writel(HB_PWR_SHUTDOWN, sregs_base + HB_SREG_A9_PWR_REQ); | 64 | writel(HB_PWR_SHUTDOWN, sregs_base + HB_SREG_A9_PWR_REQ); |
| 56 | highbank_set_core_pwr(); | 65 | highbank_set_core_pwr(); |
| 57 | } | 66 | } |
| 58 | 67 | ||
| 59 | static inline void hignbank_set_pwr_soft_reset(void) | 68 | static inline void highbank_set_pwr_soft_reset(void) |
| 60 | { | 69 | { |
| 61 | writel(HB_PWR_SOFT_RESET, sregs_base + HB_SREG_A9_PWR_REQ); | 70 | writel(HB_PWR_SOFT_RESET, sregs_base + HB_SREG_A9_PWR_REQ); |
| 62 | highbank_set_core_pwr(); | 71 | highbank_set_core_pwr(); |
| 63 | } | 72 | } |
| 64 | 73 | ||
| 65 | static inline void hignbank_set_pwr_hard_reset(void) | 74 | static inline void highbank_set_pwr_hard_reset(void) |
| 66 | { | 75 | { |
| 67 | writel(HB_PWR_HARD_RESET, sregs_base + HB_SREG_A9_PWR_REQ); | 76 | writel(HB_PWR_HARD_RESET, sregs_base + HB_SREG_A9_PWR_REQ); |
| 68 | highbank_set_core_pwr(); | 77 | highbank_set_core_pwr(); |
| 69 | } | 78 | } |
| 70 | 79 | ||
| 80 | static inline void highbank_clear_pwr_request(void) | ||
| 81 | { | ||
| 82 | writel(~0UL, sregs_base + HB_SREG_A9_PWR_REQ); | ||
| 83 | highbank_clear_core_pwr(); | ||
| 84 | } | ||
| 85 | |||
| 71 | #endif | 86 | #endif |
diff --git a/arch/arm/mach-highbank/system.c b/arch/arm/mach-highbank/system.c index aed96ad9bd4a..37d8384dcf19 100644 --- a/arch/arm/mach-highbank/system.c +++ b/arch/arm/mach-highbank/system.c | |||
| @@ -22,9 +22,9 @@ | |||
| 22 | void highbank_restart(char mode, const char *cmd) | 22 | void highbank_restart(char mode, const char *cmd) |
| 23 | { | 23 | { |
| 24 | if (mode == 'h') | 24 | if (mode == 'h') |
| 25 | hignbank_set_pwr_hard_reset(); | 25 | highbank_set_pwr_hard_reset(); |
| 26 | else | 26 | else |
| 27 | hignbank_set_pwr_soft_reset(); | 27 | highbank_set_pwr_soft_reset(); |
| 28 | 28 | ||
| 29 | while (1) | 29 | while (1) |
| 30 | cpu_do_idle(); | 30 | cpu_do_idle(); |
diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig index 1ad0d76de8c7..0a2349dc7018 100644 --- a/arch/arm/mach-imx/Kconfig +++ b/arch/arm/mach-imx/Kconfig | |||
| @@ -841,8 +841,6 @@ config SOC_IMX6Q | |||
| 841 | select ARCH_HAS_CPUFREQ | 841 | select ARCH_HAS_CPUFREQ |
| 842 | select ARCH_HAS_OPP | 842 | select ARCH_HAS_OPP |
| 843 | select ARM_CPU_SUSPEND if PM | 843 | select ARM_CPU_SUSPEND if PM |
| 844 | select ARM_ERRATA_743622 | ||
| 845 | select ARM_ERRATA_751472 | ||
| 846 | select ARM_ERRATA_754322 | 844 | select ARM_ERRATA_754322 |
| 847 | select ARM_ERRATA_764369 if SMP | 845 | select ARM_ERRATA_764369 if SMP |
| 848 | select ARM_ERRATA_775420 | 846 | select ARM_ERRATA_775420 |
| @@ -853,6 +851,7 @@ config SOC_IMX6Q | |||
| 853 | select HAVE_CAN_FLEXCAN if CAN | 851 | select HAVE_CAN_FLEXCAN if CAN |
| 854 | select HAVE_IMX_GPC | 852 | select HAVE_IMX_GPC |
| 855 | select HAVE_IMX_MMDC | 853 | select HAVE_IMX_MMDC |
| 854 | select HAVE_IMX_SRC | ||
| 856 | select HAVE_SMP | 855 | select HAVE_SMP |
| 857 | select MFD_SYSCON | 856 | select MFD_SYSCON |
| 858 | select PINCTRL | 857 | select PINCTRL |
diff --git a/arch/arm/mach-imx/clk-imx25.c b/arch/arm/mach-imx/clk-imx25.c index b197aa73dc4b..2c570cdaae7b 100644 --- a/arch/arm/mach-imx/clk-imx25.c +++ b/arch/arm/mach-imx/clk-imx25.c | |||
| @@ -254,9 +254,9 @@ int __init mx25_clocks_init(void) | |||
| 254 | clk_register_clkdev(clk[ipg], "ipg", "mxc-ehci.2"); | 254 | clk_register_clkdev(clk[ipg], "ipg", "mxc-ehci.2"); |
| 255 | clk_register_clkdev(clk[usbotg_ahb], "ahb", "mxc-ehci.2"); | 255 | clk_register_clkdev(clk[usbotg_ahb], "ahb", "mxc-ehci.2"); |
| 256 | clk_register_clkdev(clk[usb_div], "per", "mxc-ehci.2"); | 256 | clk_register_clkdev(clk[usb_div], "per", "mxc-ehci.2"); |
| 257 | clk_register_clkdev(clk[ipg], "ipg", "fsl-usb2-udc"); | 257 | clk_register_clkdev(clk[ipg], "ipg", "imx-udc-mx27"); |
| 258 | clk_register_clkdev(clk[usbotg_ahb], "ahb", "fsl-usb2-udc"); | 258 | clk_register_clkdev(clk[usbotg_ahb], "ahb", "imx-udc-mx27"); |
| 259 | clk_register_clkdev(clk[usb_div], "per", "fsl-usb2-udc"); | 259 | clk_register_clkdev(clk[usb_div], "per", "imx-udc-mx27"); |
| 260 | clk_register_clkdev(clk[nfc_ipg_per], NULL, "imx25-nand.0"); | 260 | clk_register_clkdev(clk[nfc_ipg_per], NULL, "imx25-nand.0"); |
| 261 | /* i.mx25 has the i.mx35 type cspi */ | 261 | /* i.mx25 has the i.mx35 type cspi */ |
| 262 | clk_register_clkdev(clk[cspi1_ipg], NULL, "imx35-cspi.0"); | 262 | clk_register_clkdev(clk[cspi1_ipg], NULL, "imx35-cspi.0"); |
diff --git a/arch/arm/mach-imx/clk-imx27.c b/arch/arm/mach-imx/clk-imx27.c index 4c1d1e4efc74..1ffe3b534e51 100644 --- a/arch/arm/mach-imx/clk-imx27.c +++ b/arch/arm/mach-imx/clk-imx27.c | |||
| @@ -236,9 +236,9 @@ int __init mx27_clocks_init(unsigned long fref) | |||
| 236 | clk_register_clkdev(clk[lcdc_ahb_gate], "ahb", "imx21-fb.0"); | 236 | clk_register_clkdev(clk[lcdc_ahb_gate], "ahb", "imx21-fb.0"); |
| 237 | clk_register_clkdev(clk[csi_ahb_gate], "ahb", "imx27-camera.0"); | 237 | clk_register_clkdev(clk[csi_ahb_gate], "ahb", "imx27-camera.0"); |
| 238 | clk_register_clkdev(clk[per4_gate], "per", "imx27-camera.0"); | 238 | clk_register_clkdev(clk[per4_gate], "per", "imx27-camera.0"); |
| 239 | clk_register_clkdev(clk[usb_div], "per", "fsl-usb2-udc"); | 239 | clk_register_clkdev(clk[usb_div], "per", "imx-udc-mx27"); |
| 240 | clk_register_clkdev(clk[usb_ipg_gate], "ipg", "fsl-usb2-udc"); | 240 | clk_register_clkdev(clk[usb_ipg_gate], "ipg", "imx-udc-mx27"); |
| 241 | clk_register_clkdev(clk[usb_ahb_gate], "ahb", "fsl-usb2-udc"); | 241 | clk_register_clkdev(clk[usb_ahb_gate], "ahb", "imx-udc-mx27"); |
| 242 | clk_register_clkdev(clk[usb_div], "per", "mxc-ehci.0"); | 242 | clk_register_clkdev(clk[usb_div], "per", "mxc-ehci.0"); |
| 243 | clk_register_clkdev(clk[usb_ipg_gate], "ipg", "mxc-ehci.0"); | 243 | clk_register_clkdev(clk[usb_ipg_gate], "ipg", "mxc-ehci.0"); |
| 244 | clk_register_clkdev(clk[usb_ahb_gate], "ahb", "mxc-ehci.0"); | 244 | clk_register_clkdev(clk[usb_ahb_gate], "ahb", "mxc-ehci.0"); |
diff --git a/arch/arm/mach-imx/clk-imx31.c b/arch/arm/mach-imx/clk-imx31.c index 8be64e0a4ace..16ccbd41dea9 100644 --- a/arch/arm/mach-imx/clk-imx31.c +++ b/arch/arm/mach-imx/clk-imx31.c | |||
| @@ -139,9 +139,9 @@ int __init mx31_clocks_init(unsigned long fref) | |||
| 139 | clk_register_clkdev(clk[usb_div_post], "per", "mxc-ehci.2"); | 139 | clk_register_clkdev(clk[usb_div_post], "per", "mxc-ehci.2"); |
| 140 | clk_register_clkdev(clk[usb_gate], "ahb", "mxc-ehci.2"); | 140 | clk_register_clkdev(clk[usb_gate], "ahb", "mxc-ehci.2"); |
| 141 | clk_register_clkdev(clk[ipg], "ipg", "mxc-ehci.2"); | 141 | clk_register_clkdev(clk[ipg], "ipg", "mxc-ehci.2"); |
| 142 | clk_register_clkdev(clk[usb_div_post], "per", "fsl-usb2-udc"); | 142 | clk_register_clkdev(clk[usb_div_post], "per", "imx-udc-mx27"); |
| 143 | clk_register_clkdev(clk[usb_gate], "ahb", "fsl-usb2-udc"); | 143 | clk_register_clkdev(clk[usb_gate], "ahb", "imx-udc-mx27"); |
| 144 | clk_register_clkdev(clk[ipg], "ipg", "fsl-usb2-udc"); | 144 | clk_register_clkdev(clk[ipg], "ipg", "imx-udc-mx27"); |
| 145 | clk_register_clkdev(clk[csi_gate], NULL, "mx3-camera.0"); | 145 | clk_register_clkdev(clk[csi_gate], NULL, "mx3-camera.0"); |
| 146 | /* i.mx31 has the i.mx21 type uart */ | 146 | /* i.mx31 has the i.mx21 type uart */ |
| 147 | clk_register_clkdev(clk[uart1_gate], "per", "imx21-uart.0"); | 147 | clk_register_clkdev(clk[uart1_gate], "per", "imx21-uart.0"); |
diff --git a/arch/arm/mach-imx/clk-imx35.c b/arch/arm/mach-imx/clk-imx35.c index 66f3d65ea275..f0727e80815d 100644 --- a/arch/arm/mach-imx/clk-imx35.c +++ b/arch/arm/mach-imx/clk-imx35.c | |||
| @@ -251,9 +251,9 @@ int __init mx35_clocks_init() | |||
| 251 | clk_register_clkdev(clk[usb_div], "per", "mxc-ehci.2"); | 251 | clk_register_clkdev(clk[usb_div], "per", "mxc-ehci.2"); |
| 252 | clk_register_clkdev(clk[ipg], "ipg", "mxc-ehci.2"); | 252 | clk_register_clkdev(clk[ipg], "ipg", "mxc-ehci.2"); |
| 253 | clk_register_clkdev(clk[usbotg_gate], "ahb", "mxc-ehci.2"); | 253 | clk_register_clkdev(clk[usbotg_gate], "ahb", "mxc-ehci.2"); |
| 254 | clk_register_clkdev(clk[usb_div], "per", "fsl-usb2-udc"); | 254 | clk_register_clkdev(clk[usb_div], "per", "imx-udc-mx27"); |
| 255 | clk_register_clkdev(clk[ipg], "ipg", "fsl-usb2-udc"); | 255 | clk_register_clkdev(clk[ipg], "ipg", "imx-udc-mx27"); |
| 256 | clk_register_clkdev(clk[usbotg_gate], "ahb", "fsl-usb2-udc"); | 256 | clk_register_clkdev(clk[usbotg_gate], "ahb", "imx-udc-mx27"); |
| 257 | clk_register_clkdev(clk[wdog_gate], NULL, "imx2-wdt.0"); | 257 | clk_register_clkdev(clk[wdog_gate], NULL, "imx2-wdt.0"); |
| 258 | clk_register_clkdev(clk[nfc_div], NULL, "imx25-nand.0"); | 258 | clk_register_clkdev(clk[nfc_div], NULL, "imx25-nand.0"); |
| 259 | clk_register_clkdev(clk[csi_gate], NULL, "mx3-camera.0"); | 259 | clk_register_clkdev(clk[csi_gate], NULL, "mx3-camera.0"); |
diff --git a/arch/arm/mach-imx/clk-imx51-imx53.c b/arch/arm/mach-imx/clk-imx51-imx53.c index 579023f59dc1..fb7cb841b64c 100644 --- a/arch/arm/mach-imx/clk-imx51-imx53.c +++ b/arch/arm/mach-imx/clk-imx51-imx53.c | |||
| @@ -269,9 +269,9 @@ static void __init mx5_clocks_common_init(unsigned long rate_ckil, | |||
| 269 | clk_register_clkdev(clk[usboh3_per_gate], "per", "mxc-ehci.2"); | 269 | clk_register_clkdev(clk[usboh3_per_gate], "per", "mxc-ehci.2"); |
| 270 | clk_register_clkdev(clk[usboh3_gate], "ipg", "mxc-ehci.2"); | 270 | clk_register_clkdev(clk[usboh3_gate], "ipg", "mxc-ehci.2"); |
| 271 | clk_register_clkdev(clk[usboh3_gate], "ahb", "mxc-ehci.2"); | 271 | clk_register_clkdev(clk[usboh3_gate], "ahb", "mxc-ehci.2"); |
| 272 | clk_register_clkdev(clk[usboh3_per_gate], "per", "fsl-usb2-udc"); | 272 | clk_register_clkdev(clk[usboh3_per_gate], "per", "imx-udc-mx51"); |
| 273 | clk_register_clkdev(clk[usboh3_gate], "ipg", "fsl-usb2-udc"); | 273 | clk_register_clkdev(clk[usboh3_gate], "ipg", "imx-udc-mx51"); |
| 274 | clk_register_clkdev(clk[usboh3_gate], "ahb", "fsl-usb2-udc"); | 274 | clk_register_clkdev(clk[usboh3_gate], "ahb", "imx-udc-mx51"); |
| 275 | clk_register_clkdev(clk[nfc_gate], NULL, "imx51-nand"); | 275 | clk_register_clkdev(clk[nfc_gate], NULL, "imx51-nand"); |
| 276 | clk_register_clkdev(clk[ssi1_ipg_gate], NULL, "imx-ssi.0"); | 276 | clk_register_clkdev(clk[ssi1_ipg_gate], NULL, "imx-ssi.0"); |
| 277 | clk_register_clkdev(clk[ssi2_ipg_gate], NULL, "imx-ssi.1"); | 277 | clk_register_clkdev(clk[ssi2_ipg_gate], NULL, "imx-ssi.1"); |
diff --git a/arch/arm/mach-imx/clk-imx6q.c b/arch/arm/mach-imx/clk-imx6q.c index 7f2c10c7413a..c0c4e723b7f5 100644 --- a/arch/arm/mach-imx/clk-imx6q.c +++ b/arch/arm/mach-imx/clk-imx6q.c | |||
| @@ -436,6 +436,9 @@ int __init mx6q_clocks_init(void) | |||
| 436 | for (i = 0; i < ARRAY_SIZE(clks_init_on); i++) | 436 | for (i = 0; i < ARRAY_SIZE(clks_init_on); i++) |
| 437 | clk_prepare_enable(clk[clks_init_on[i]]); | 437 | clk_prepare_enable(clk[clks_init_on[i]]); |
| 438 | 438 | ||
| 439 | /* Set initial power mode */ | ||
| 440 | imx6q_set_lpm(WAIT_CLOCKED); | ||
| 441 | |||
| 439 | np = of_find_compatible_node(NULL, NULL, "fsl,imx6q-gpt"); | 442 | np = of_find_compatible_node(NULL, NULL, "fsl,imx6q-gpt"); |
| 440 | base = of_iomap(np, 0); | 443 | base = of_iomap(np, 0); |
| 441 | WARN_ON(!base); | 444 | WARN_ON(!base); |
diff --git a/arch/arm/mach-imx/common.h b/arch/arm/mach-imx/common.h index 7191ab4434e5..fa36fb84ab19 100644 --- a/arch/arm/mach-imx/common.h +++ b/arch/arm/mach-imx/common.h | |||
| @@ -142,6 +142,7 @@ extern int imx6q_set_lpm(enum mxc_cpu_pwr_mode mode); | |||
| 142 | extern void imx6q_clock_map_io(void); | 142 | extern void imx6q_clock_map_io(void); |
| 143 | 143 | ||
| 144 | extern void imx_cpu_die(unsigned int cpu); | 144 | extern void imx_cpu_die(unsigned int cpu); |
| 145 | extern int imx_cpu_kill(unsigned int cpu); | ||
| 145 | 146 | ||
| 146 | #ifdef CONFIG_PM | 147 | #ifdef CONFIG_PM |
| 147 | extern void imx6q_pm_init(void); | 148 | extern void imx6q_pm_init(void); |
diff --git a/arch/arm/mach-imx/cpufreq.c b/arch/arm/mach-imx/cpufreq.c index 36e8b3994470..d8c75c3c925d 100644 --- a/arch/arm/mach-imx/cpufreq.c +++ b/arch/arm/mach-imx/cpufreq.c | |||
| @@ -188,7 +188,7 @@ static struct cpufreq_driver mxc_driver = { | |||
| 188 | .name = "imx", | 188 | .name = "imx", |
| 189 | }; | 189 | }; |
| 190 | 190 | ||
| 191 | static int __devinit mxc_cpufreq_driver_init(void) | 191 | static int mxc_cpufreq_driver_init(void) |
| 192 | { | 192 | { |
| 193 | return cpufreq_register_driver(&mxc_driver); | 193 | return cpufreq_register_driver(&mxc_driver); |
| 194 | } | 194 | } |
diff --git a/arch/arm/mach-imx/devices/devices-common.h b/arch/arm/mach-imx/devices/devices-common.h index 6277baf1b7be..9bd5777ff0e7 100644 --- a/arch/arm/mach-imx/devices/devices-common.h +++ b/arch/arm/mach-imx/devices/devices-common.h | |||
| @@ -63,6 +63,7 @@ struct platform_device *__init imx_add_flexcan( | |||
| 63 | 63 | ||
| 64 | #include <linux/fsl_devices.h> | 64 | #include <linux/fsl_devices.h> |
| 65 | struct imx_fsl_usb2_udc_data { | 65 | struct imx_fsl_usb2_udc_data { |
| 66 | const char *devid; | ||
| 66 | resource_size_t iobase; | 67 | resource_size_t iobase; |
| 67 | resource_size_t irq; | 68 | resource_size_t irq; |
| 68 | }; | 69 | }; |
diff --git a/arch/arm/mach-imx/devices/platform-fsl-usb2-udc.c b/arch/arm/mach-imx/devices/platform-fsl-usb2-udc.c index 37e44398197b..3c06bd96e9cc 100644 --- a/arch/arm/mach-imx/devices/platform-fsl-usb2-udc.c +++ b/arch/arm/mach-imx/devices/platform-fsl-usb2-udc.c | |||
| @@ -11,35 +11,36 @@ | |||
| 11 | #include "../hardware.h" | 11 | #include "../hardware.h" |
| 12 | #include "devices-common.h" | 12 | #include "devices-common.h" |
| 13 | 13 | ||
| 14 | #define imx_fsl_usb2_udc_data_entry_single(soc) \ | 14 | #define imx_fsl_usb2_udc_data_entry_single(soc, _devid) \ |
| 15 | { \ | 15 | { \ |
| 16 | .devid = _devid, \ | ||
| 16 | .iobase = soc ## _USB_OTG_BASE_ADDR, \ | 17 | .iobase = soc ## _USB_OTG_BASE_ADDR, \ |
| 17 | .irq = soc ## _INT_USB_OTG, \ | 18 | .irq = soc ## _INT_USB_OTG, \ |
| 18 | } | 19 | } |
| 19 | 20 | ||
| 20 | #ifdef CONFIG_SOC_IMX25 | 21 | #ifdef CONFIG_SOC_IMX25 |
| 21 | const struct imx_fsl_usb2_udc_data imx25_fsl_usb2_udc_data __initconst = | 22 | const struct imx_fsl_usb2_udc_data imx25_fsl_usb2_udc_data __initconst = |
| 22 | imx_fsl_usb2_udc_data_entry_single(MX25); | 23 | imx_fsl_usb2_udc_data_entry_single(MX25, "imx-udc-mx27"); |
| 23 | #endif /* ifdef CONFIG_SOC_IMX25 */ | 24 | #endif /* ifdef CONFIG_SOC_IMX25 */ |
| 24 | 25 | ||
| 25 | #ifdef CONFIG_SOC_IMX27 | 26 | #ifdef CONFIG_SOC_IMX27 |
| 26 | const struct imx_fsl_usb2_udc_data imx27_fsl_usb2_udc_data __initconst = | 27 | const struct imx_fsl_usb2_udc_data imx27_fsl_usb2_udc_data __initconst = |
| 27 | imx_fsl_usb2_udc_data_entry_single(MX27); | 28 | imx_fsl_usb2_udc_data_entry_single(MX27, "imx-udc-mx27"); |
| 28 | #endif /* ifdef CONFIG_SOC_IMX27 */ | 29 | #endif /* ifdef CONFIG_SOC_IMX27 */ |
| 29 | 30 | ||
| 30 | #ifdef CONFIG_SOC_IMX31 | 31 | #ifdef CONFIG_SOC_IMX31 |
| 31 | const struct imx_fsl_usb2_udc_data imx31_fsl_usb2_udc_data __initconst = | 32 | const struct imx_fsl_usb2_udc_data imx31_fsl_usb2_udc_data __initconst = |
| 32 | imx_fsl_usb2_udc_data_entry_single(MX31); | 33 | imx_fsl_usb2_udc_data_entry_single(MX31, "imx-udc-mx27"); |
| 33 | #endif /* ifdef CONFIG_SOC_IMX31 */ | 34 | #endif /* ifdef CONFIG_SOC_IMX31 */ |
| 34 | 35 | ||
| 35 | #ifdef CONFIG_SOC_IMX35 | 36 | #ifdef CONFIG_SOC_IMX35 |
| 36 | const struct imx_fsl_usb2_udc_data imx35_fsl_usb2_udc_data __initconst = | 37 | const struct imx_fsl_usb2_udc_data imx35_fsl_usb2_udc_data __initconst = |
| 37 | imx_fsl_usb2_udc_data_entry_single(MX35); | 38 | imx_fsl_usb2_udc_data_entry_single(MX35, "imx-udc-mx27"); |
| 38 | #endif /* ifdef CONFIG_SOC_IMX35 */ | 39 | #endif /* ifdef CONFIG_SOC_IMX35 */ |
| 39 | 40 | ||
| 40 | #ifdef CONFIG_SOC_IMX51 | 41 | #ifdef CONFIG_SOC_IMX51 |
| 41 | const struct imx_fsl_usb2_udc_data imx51_fsl_usb2_udc_data __initconst = | 42 | const struct imx_fsl_usb2_udc_data imx51_fsl_usb2_udc_data __initconst = |
| 42 | imx_fsl_usb2_udc_data_entry_single(MX51); | 43 | imx_fsl_usb2_udc_data_entry_single(MX51, "imx-udc-mx51"); |
| 43 | #endif | 44 | #endif |
| 44 | 45 | ||
| 45 | struct platform_device *__init imx_add_fsl_usb2_udc( | 46 | struct platform_device *__init imx_add_fsl_usb2_udc( |
| @@ -57,7 +58,7 @@ struct platform_device *__init imx_add_fsl_usb2_udc( | |||
| 57 | .flags = IORESOURCE_IRQ, | 58 | .flags = IORESOURCE_IRQ, |
| 58 | }, | 59 | }, |
| 59 | }; | 60 | }; |
| 60 | return imx_add_platform_device_dmamask("fsl-usb2-udc", -1, | 61 | return imx_add_platform_device_dmamask(data->devid, -1, |
| 61 | res, ARRAY_SIZE(res), | 62 | res, ARRAY_SIZE(res), |
| 62 | pdata, sizeof(*pdata), DMA_BIT_MASK(32)); | 63 | pdata, sizeof(*pdata), DMA_BIT_MASK(32)); |
| 63 | } | 64 | } |
diff --git a/arch/arm/mach-imx/devices/platform-imx-fb.c b/arch/arm/mach-imx/devices/platform-imx-fb.c index 10b0ed39f07f..25a47c616b2d 100644 --- a/arch/arm/mach-imx/devices/platform-imx-fb.c +++ b/arch/arm/mach-imx/devices/platform-imx-fb.c | |||
| @@ -54,7 +54,7 @@ struct platform_device *__init imx_add_imx_fb( | |||
| 54 | .flags = IORESOURCE_IRQ, | 54 | .flags = IORESOURCE_IRQ, |
| 55 | }, | 55 | }, |
| 56 | }; | 56 | }; |
| 57 | return imx_add_platform_device_dmamask("imx-fb", 0, | 57 | return imx_add_platform_device_dmamask(data->devid, 0, |
| 58 | res, ARRAY_SIZE(res), | 58 | res, ARRAY_SIZE(res), |
| 59 | pdata, sizeof(*pdata), DMA_BIT_MASK(32)); | 59 | pdata, sizeof(*pdata), DMA_BIT_MASK(32)); |
| 60 | } | 60 | } |
diff --git a/arch/arm/mach-imx/hotplug.c b/arch/arm/mach-imx/hotplug.c index 3dec962b0770..7bc5fe15dda2 100644 --- a/arch/arm/mach-imx/hotplug.c +++ b/arch/arm/mach-imx/hotplug.c | |||
| @@ -46,9 +46,11 @@ static inline void cpu_enter_lowpower(void) | |||
| 46 | void imx_cpu_die(unsigned int cpu) | 46 | void imx_cpu_die(unsigned int cpu) |
| 47 | { | 47 | { |
| 48 | cpu_enter_lowpower(); | 48 | cpu_enter_lowpower(); |
| 49 | imx_enable_cpu(cpu, false); | 49 | cpu_do_idle(); |
| 50 | } | ||
| 50 | 51 | ||
| 51 | /* spin here until hardware takes it down */ | 52 | int imx_cpu_kill(unsigned int cpu) |
| 52 | while (1) | 53 | { |
| 53 | ; | 54 | imx_enable_cpu(cpu, false); |
| 55 | return 1; | ||
| 54 | } | 56 | } |
diff --git a/arch/arm/mach-imx/iram.h b/arch/arm/mach-imx/iram.h deleted file mode 100644 index 022690c33702..000000000000 --- a/arch/arm/mach-imx/iram.h +++ /dev/null | |||
| @@ -1,41 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * Copyright (C) 2010 Freescale Semiconductor, Inc. All Rights Reserved. | ||
| 3 | * | ||
| 4 | * This program is free software; you can redistribute it and/or | ||
| 5 | * modify it under the terms of the GNU General Public License | ||
| 6 | * as published by the Free Software Foundation; either version 2 | ||
| 7 | * of the License, or (at your option) any later version. | ||
| 8 | * | ||
| 9 | * This program is distributed in the hope that it will be useful, | ||
| 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 12 | * GNU General Public License for more details. | ||
| 13 | * | ||
| 14 | * You should have received a copy of the GNU General Public License | ||
| 15 | * along with this program; if not, write to the Free Software | ||
| 16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, | ||
| 17 | * MA 02110-1301, USA. | ||
| 18 | */ | ||
| 19 | #include <linux/errno.h> | ||
| 20 | |||
| 21 | #ifdef CONFIG_IRAM_ALLOC | ||
| 22 | |||
| 23 | int __init iram_init(unsigned long base, unsigned long size); | ||
| 24 | void __iomem *iram_alloc(unsigned int size, unsigned long *dma_addr); | ||
| 25 | void iram_free(unsigned long dma_addr, unsigned int size); | ||
| 26 | |||
| 27 | #else | ||
| 28 | |||
| 29 | static inline int __init iram_init(unsigned long base, unsigned long size) | ||
| 30 | { | ||
| 31 | return -ENOMEM; | ||
| 32 | } | ||
| 33 | |||
| 34 | static inline void __iomem *iram_alloc(unsigned int size, unsigned long *dma_addr) | ||
| 35 | { | ||
| 36 | return NULL; | ||
| 37 | } | ||
| 38 | |||
| 39 | static inline void iram_free(unsigned long base, unsigned long size) {} | ||
| 40 | |||
| 41 | #endif | ||
diff --git a/arch/arm/mach-imx/iram_alloc.c b/arch/arm/mach-imx/iram_alloc.c index 6c80424f678e..e05cf407db65 100644 --- a/arch/arm/mach-imx/iram_alloc.c +++ b/arch/arm/mach-imx/iram_alloc.c | |||
| @@ -22,8 +22,7 @@ | |||
| 22 | #include <linux/module.h> | 22 | #include <linux/module.h> |
| 23 | #include <linux/spinlock.h> | 23 | #include <linux/spinlock.h> |
| 24 | #include <linux/genalloc.h> | 24 | #include <linux/genalloc.h> |
| 25 | 25 | #include "linux/platform_data/imx-iram.h" | |
| 26 | #include "iram.h" | ||
| 27 | 26 | ||
| 28 | static unsigned long iram_phys_base; | 27 | static unsigned long iram_phys_base; |
| 29 | static void __iomem *iram_virt_base; | 28 | static void __iomem *iram_virt_base; |
diff --git a/arch/arm/mach-imx/mmdc.c b/arch/arm/mach-imx/mmdc.c index c461e98496c3..7a9686ad994c 100644 --- a/arch/arm/mach-imx/mmdc.c +++ b/arch/arm/mach-imx/mmdc.c | |||
| @@ -21,7 +21,7 @@ | |||
| 21 | #define BP_MMDC_MAPSR_PSD 0 | 21 | #define BP_MMDC_MAPSR_PSD 0 |
| 22 | #define BP_MMDC_MAPSR_PSS 4 | 22 | #define BP_MMDC_MAPSR_PSS 4 |
| 23 | 23 | ||
| 24 | static int __devinit imx_mmdc_probe(struct platform_device *pdev) | 24 | static int imx_mmdc_probe(struct platform_device *pdev) |
| 25 | { | 25 | { |
| 26 | struct device_node *np = pdev->dev.of_node; | 26 | struct device_node *np = pdev->dev.of_node; |
| 27 | void __iomem *mmdc_base, *reg; | 27 | void __iomem *mmdc_base, *reg; |
diff --git a/arch/arm/mach-imx/platsmp.c b/arch/arm/mach-imx/platsmp.c index 3777b805b76b..66fae885c842 100644 --- a/arch/arm/mach-imx/platsmp.c +++ b/arch/arm/mach-imx/platsmp.c | |||
| @@ -92,5 +92,6 @@ struct smp_operations imx_smp_ops __initdata = { | |||
| 92 | .smp_boot_secondary = imx_boot_secondary, | 92 | .smp_boot_secondary = imx_boot_secondary, |
| 93 | #ifdef CONFIG_HOTPLUG_CPU | 93 | #ifdef CONFIG_HOTPLUG_CPU |
| 94 | .cpu_die = imx_cpu_die, | 94 | .cpu_die = imx_cpu_die, |
| 95 | .cpu_kill = imx_cpu_kill, | ||
| 95 | #endif | 96 | #endif |
| 96 | }; | 97 | }; |
diff --git a/arch/arm/mach-imx/pm-imx6q.c b/arch/arm/mach-imx/pm-imx6q.c index a17543da602d..ee42d20cba19 100644 --- a/arch/arm/mach-imx/pm-imx6q.c +++ b/arch/arm/mach-imx/pm-imx6q.c | |||
| @@ -41,6 +41,7 @@ static int imx6q_pm_enter(suspend_state_t state) | |||
| 41 | cpu_suspend(0, imx6q_suspend_finish); | 41 | cpu_suspend(0, imx6q_suspend_finish); |
| 42 | imx_smp_prepare(); | 42 | imx_smp_prepare(); |
| 43 | imx_gpc_post_resume(); | 43 | imx_gpc_post_resume(); |
| 44 | imx6q_set_lpm(WAIT_CLOCKED); | ||
| 44 | break; | 45 | break; |
| 45 | default: | 46 | default: |
| 46 | return -EINVAL; | 47 | return -EINVAL; |
diff --git a/arch/arm/mach-integrator/pci_v3.c b/arch/arm/mach-integrator/pci_v3.c index be50e795536d..e7fcea7f3300 100644 --- a/arch/arm/mach-integrator/pci_v3.c +++ b/arch/arm/mach-integrator/pci_v3.c | |||
| @@ -475,13 +475,12 @@ int __init pci_v3_setup(int nr, struct pci_sys_data *sys) | |||
| 475 | { | 475 | { |
| 476 | int ret = 0; | 476 | int ret = 0; |
| 477 | 477 | ||
| 478 | if (!ap_syscon_base) | ||
| 479 | return -EINVAL; | ||
| 480 | |||
| 478 | if (nr == 0) { | 481 | if (nr == 0) { |
| 479 | sys->mem_offset = PHYS_PCI_MEM_BASE; | 482 | sys->mem_offset = PHYS_PCI_MEM_BASE; |
| 480 | ret = pci_v3_setup_resources(sys); | 483 | ret = pci_v3_setup_resources(sys); |
| 481 | /* Remap the Integrator system controller */ | ||
| 482 | ap_syscon_base = ioremap(INTEGRATOR_SC_BASE, 0x100); | ||
| 483 | if (!ap_syscon_base) | ||
| 484 | return -EINVAL; | ||
| 485 | } | 484 | } |
| 486 | 485 | ||
| 487 | return ret; | 486 | return ret; |
| @@ -497,6 +496,13 @@ void __init pci_v3_preinit(void) | |||
| 497 | unsigned int temp; | 496 | unsigned int temp; |
| 498 | int ret; | 497 | int ret; |
| 499 | 498 | ||
| 499 | /* Remap the Integrator system controller */ | ||
| 500 | ap_syscon_base = ioremap(INTEGRATOR_SC_BASE, 0x100); | ||
| 501 | if (!ap_syscon_base) { | ||
| 502 | pr_err("unable to remap the AP syscon for PCIv3\n"); | ||
| 503 | return; | ||
| 504 | } | ||
| 505 | |||
| 500 | pcibios_min_mem = 0x00100000; | 506 | pcibios_min_mem = 0x00100000; |
| 501 | 507 | ||
| 502 | /* | 508 | /* |
diff --git a/arch/arm/mach-iop13xx/pci.c b/arch/arm/mach-iop13xx/pci.c index 2f28018c4447..9082b84aeebb 100644 --- a/arch/arm/mach-iop13xx/pci.c +++ b/arch/arm/mach-iop13xx/pci.c | |||
| @@ -504,7 +504,7 @@ iop13xx_pci_abort(unsigned long addr, unsigned int fsr, struct pt_regs *regs) | |||
| 504 | 504 | ||
| 505 | /* Scan an IOP13XX PCI bus. nr selects which ATU we use. | 505 | /* Scan an IOP13XX PCI bus. nr selects which ATU we use. |
| 506 | */ | 506 | */ |
| 507 | struct pci_bus * __devinit iop13xx_scan_bus(int nr, struct pci_sys_data *sys) | 507 | struct pci_bus *iop13xx_scan_bus(int nr, struct pci_sys_data *sys) |
| 508 | { | 508 | { |
| 509 | int which_atu; | 509 | int which_atu; |
| 510 | struct pci_bus *bus = NULL; | 510 | struct pci_bus *bus = NULL; |
diff --git a/arch/arm/mach-kirkwood/board-dt.c b/arch/arm/mach-kirkwood/board-dt.c index ff4150a2ad05..de4fd2bb1e27 100644 --- a/arch/arm/mach-kirkwood/board-dt.c +++ b/arch/arm/mach-kirkwood/board-dt.c | |||
| @@ -67,6 +67,10 @@ static void __init kirkwood_legacy_clk_init(void) | |||
| 67 | orion_clkdev_add(NULL, "mv643xx_eth_port.1", | 67 | orion_clkdev_add(NULL, "mv643xx_eth_port.1", |
| 68 | of_clk_get_from_provider(&clkspec)); | 68 | of_clk_get_from_provider(&clkspec)); |
| 69 | 69 | ||
| 70 | clkspec.args[0] = CGC_BIT_SDIO; | ||
| 71 | orion_clkdev_add(NULL, "mvsdio", | ||
| 72 | of_clk_get_from_provider(&clkspec)); | ||
| 73 | |||
| 70 | } | 74 | } |
| 71 | 75 | ||
| 72 | static void __init kirkwood_of_clk_init(void) | 76 | static void __init kirkwood_of_clk_init(void) |
diff --git a/arch/arm/mach-kirkwood/board-ns2.c b/arch/arm/mach-kirkwood/board-ns2.c index 8821720ab5a4..f4632a809f68 100644 --- a/arch/arm/mach-kirkwood/board-ns2.c +++ b/arch/arm/mach-kirkwood/board-ns2.c | |||
| @@ -18,47 +18,11 @@ | |||
| 18 | #include <linux/gpio.h> | 18 | #include <linux/gpio.h> |
| 19 | #include <linux/of.h> | 19 | #include <linux/of.h> |
| 20 | #include "common.h" | 20 | #include "common.h" |
| 21 | #include "mpp.h" | ||
| 22 | 21 | ||
| 23 | static struct mv643xx_eth_platform_data ns2_ge00_data = { | 22 | static struct mv643xx_eth_platform_data ns2_ge00_data = { |
| 24 | .phy_addr = MV643XX_ETH_PHY_ADDR(8), | 23 | .phy_addr = MV643XX_ETH_PHY_ADDR(8), |
| 25 | }; | 24 | }; |
| 26 | 25 | ||
| 27 | static unsigned int ns2_mpp_config[] __initdata = { | ||
| 28 | MPP0_SPI_SCn, | ||
| 29 | MPP1_SPI_MOSI, | ||
| 30 | MPP2_SPI_SCK, | ||
| 31 | MPP3_SPI_MISO, | ||
| 32 | MPP4_NF_IO6, | ||
| 33 | MPP5_NF_IO7, | ||
| 34 | MPP6_SYSRST_OUTn, | ||
| 35 | MPP7_GPO, /* Fan speed (bit 1) */ | ||
| 36 | MPP8_TW0_SDA, | ||
| 37 | MPP9_TW0_SCK, | ||
| 38 | MPP10_UART0_TXD, | ||
| 39 | MPP11_UART0_RXD, | ||
| 40 | MPP12_GPO, /* Red led */ | ||
| 41 | MPP14_GPIO, /* USB fuse */ | ||
| 42 | MPP16_GPIO, /* SATA 0 power */ | ||
| 43 | MPP17_GPIO, /* SATA 1 power */ | ||
| 44 | MPP18_NF_IO0, | ||
| 45 | MPP19_NF_IO1, | ||
| 46 | MPP20_SATA1_ACTn, | ||
| 47 | MPP21_SATA0_ACTn, | ||
| 48 | MPP22_GPIO, /* Fan speed (bit 0) */ | ||
| 49 | MPP23_GPIO, /* Fan power */ | ||
| 50 | MPP24_GPIO, /* USB mode select */ | ||
| 51 | MPP25_GPIO, /* Fan rotation fail */ | ||
| 52 | MPP26_GPIO, /* USB device vbus */ | ||
| 53 | MPP28_GPIO, /* USB enable host vbus */ | ||
| 54 | MPP29_GPIO, /* Blue led (slow register) */ | ||
| 55 | MPP30_GPIO, /* Blue led (command register) */ | ||
| 56 | MPP31_GPIO, /* Board power off */ | ||
| 57 | MPP32_GPIO, /* Power button (0 = Released, 1 = Pushed) */ | ||
| 58 | MPP33_GPO, /* Fan speed (bit 2) */ | ||
| 59 | 0 | ||
| 60 | }; | ||
| 61 | |||
| 62 | #define NS2_GPIO_POWER_OFF 31 | 26 | #define NS2_GPIO_POWER_OFF 31 |
| 63 | 27 | ||
| 64 | static void ns2_power_off(void) | 28 | static void ns2_power_off(void) |
| @@ -71,8 +35,6 @@ void __init ns2_init(void) | |||
| 71 | /* | 35 | /* |
| 72 | * Basic setup. Needs to be called early. | 36 | * Basic setup. Needs to be called early. |
| 73 | */ | 37 | */ |
| 74 | kirkwood_mpp_conf(ns2_mpp_config); | ||
| 75 | |||
| 76 | if (of_machine_is_compatible("lacie,netspace_lite_v2") || | 38 | if (of_machine_is_compatible("lacie,netspace_lite_v2") || |
| 77 | of_machine_is_compatible("lacie,netspace_mini_v2")) | 39 | of_machine_is_compatible("lacie,netspace_mini_v2")) |
| 78 | ns2_ge00_data.phy_addr = MV643XX_ETH_PHY_ADDR(0); | 40 | ns2_ge00_data.phy_addr = MV643XX_ETH_PHY_ADDR(0); |
diff --git a/arch/arm/mach-kirkwood/board-usi_topkick.c b/arch/arm/mach-kirkwood/board-usi_topkick.c index 15e69fcde9f4..23d2dd1b1b1e 100644 --- a/arch/arm/mach-kirkwood/board-usi_topkick.c +++ b/arch/arm/mach-kirkwood/board-usi_topkick.c | |||
| @@ -64,8 +64,6 @@ static unsigned int topkick_mpp_config[] __initdata = { | |||
| 64 | 0 | 64 | 0 |
| 65 | }; | 65 | }; |
| 66 | 66 | ||
| 67 | #define TOPKICK_SATA0_PWR_ENABLE 36 | ||
| 68 | |||
| 69 | void __init usi_topkick_init(void) | 67 | void __init usi_topkick_init(void) |
| 70 | { | 68 | { |
| 71 | /* | 69 | /* |
| @@ -73,8 +71,6 @@ void __init usi_topkick_init(void) | |||
| 73 | */ | 71 | */ |
| 74 | kirkwood_mpp_conf(topkick_mpp_config); | 72 | kirkwood_mpp_conf(topkick_mpp_config); |
| 75 | 73 | ||
| 76 | /* SATA0 power enable */ | ||
| 77 | gpio_set_value(TOPKICK_SATA0_PWR_ENABLE, 1); | ||
| 78 | 74 | ||
| 79 | kirkwood_ge00_init(&topkick_ge00_data); | 75 | kirkwood_ge00_init(&topkick_ge00_data); |
| 80 | kirkwood_sdio_init(&topkick_mvsdio_data); | 76 | kirkwood_sdio_init(&topkick_mvsdio_data); |
diff --git a/arch/arm/mach-kirkwood/pcie.c b/arch/arm/mach-kirkwood/pcie.c index ef102646ba9a..a1c3ab6fc809 100644 --- a/arch/arm/mach-kirkwood/pcie.c +++ b/arch/arm/mach-kirkwood/pcie.c | |||
| @@ -214,7 +214,7 @@ static int __init kirkwood_pcie_setup(int nr, struct pci_sys_data *sys) | |||
| 214 | * PCI_CLASS_BRIDGE_HOST or Linux will errantly try to process the BAR's on | 214 | * PCI_CLASS_BRIDGE_HOST or Linux will errantly try to process the BAR's on |
| 215 | * the device. Decoding setup is handled by the orion code. | 215 | * the device. Decoding setup is handled by the orion code. |
| 216 | */ | 216 | */ |
| 217 | static void __devinit rc_pci_fixup(struct pci_dev *dev) | 217 | static void rc_pci_fixup(struct pci_dev *dev) |
| 218 | { | 218 | { |
| 219 | if (dev->bus->parent == NULL && dev->devfn == 0) { | 219 | if (dev->bus->parent == NULL && dev->devfn == 0) { |
| 220 | int i; | 220 | int i; |
diff --git a/arch/arm/mach-ks8695/board-acs5k.c b/arch/arm/mach-ks8695/board-acs5k.c index 255502ddd879..b0c306ccbc6e 100644 --- a/arch/arm/mach-ks8695/board-acs5k.c +++ b/arch/arm/mach-ks8695/board-acs5k.c | |||
| @@ -92,7 +92,7 @@ static struct i2c_board_info acs5k_i2c_devs[] __initdata = { | |||
| 92 | }, | 92 | }, |
| 93 | }; | 93 | }; |
| 94 | 94 | ||
| 95 | static void __devinit acs5k_i2c_init(void) | 95 | static void acs5k_i2c_init(void) |
| 96 | { | 96 | { |
| 97 | /* The gpio interface */ | 97 | /* The gpio interface */ |
| 98 | platform_device_register(&acs5k_i2c_device); | 98 | platform_device_register(&acs5k_i2c_device); |
diff --git a/arch/arm/mach-mmp/sram.c b/arch/arm/mach-mmp/sram.c index a6c08ede4491..bf5e64906e65 100644 --- a/arch/arm/mach-mmp/sram.c +++ b/arch/arm/mach-mmp/sram.c | |||
| @@ -61,7 +61,7 @@ struct gen_pool *sram_get_gpool(char *pool_name) | |||
| 61 | } | 61 | } |
| 62 | EXPORT_SYMBOL(sram_get_gpool); | 62 | EXPORT_SYMBOL(sram_get_gpool); |
| 63 | 63 | ||
| 64 | static int __devinit sram_probe(struct platform_device *pdev) | 64 | static int sram_probe(struct platform_device *pdev) |
| 65 | { | 65 | { |
| 66 | struct sram_platdata *pdata = pdev->dev.platform_data; | 66 | struct sram_platdata *pdata = pdev->dev.platform_data; |
| 67 | struct sram_bank_info *info; | 67 | struct sram_bank_info *info; |
| @@ -125,7 +125,7 @@ out: | |||
| 125 | return ret; | 125 | return ret; |
| 126 | } | 126 | } |
| 127 | 127 | ||
| 128 | static int __devexit sram_remove(struct platform_device *pdev) | 128 | static int sram_remove(struct platform_device *pdev) |
| 129 | { | 129 | { |
| 130 | struct sram_bank_info *info; | 130 | struct sram_bank_info *info; |
| 131 | 131 | ||
diff --git a/arch/arm/mach-msm/proc_comm.c b/arch/arm/mach-msm/proc_comm.c index 8f1eecd88186..507f5ca80697 100644 --- a/arch/arm/mach-msm/proc_comm.c +++ b/arch/arm/mach-msm/proc_comm.c | |||
| @@ -120,7 +120,7 @@ int msm_proc_comm(unsigned cmd, unsigned *data1, unsigned *data2) | |||
| 120 | * and unknown state. This function should be called early to | 120 | * and unknown state. This function should be called early to |
| 121 | * wait on the ARM9. | 121 | * wait on the ARM9. |
| 122 | */ | 122 | */ |
| 123 | void __devinit proc_comm_boot_wait(void) | 123 | void proc_comm_boot_wait(void) |
| 124 | { | 124 | { |
| 125 | void __iomem *base = MSM_SHARED_RAM_BASE; | 125 | void __iomem *base = MSM_SHARED_RAM_BASE; |
| 126 | 126 | ||
diff --git a/arch/arm/mach-msm/smd.c b/arch/arm/mach-msm/smd.c index c5a2eddc6cdc..b1588a1ea2f8 100644 --- a/arch/arm/mach-msm/smd.c +++ b/arch/arm/mach-msm/smd.c | |||
| @@ -988,7 +988,7 @@ int smd_core_init(void) | |||
| 988 | return 0; | 988 | return 0; |
| 989 | } | 989 | } |
| 990 | 990 | ||
| 991 | static int __devinit msm_smd_probe(struct platform_device *pdev) | 991 | static int msm_smd_probe(struct platform_device *pdev) |
| 992 | { | 992 | { |
| 993 | /* | 993 | /* |
| 994 | * If we haven't waited for the ARM9 to boot up till now, | 994 | * If we haven't waited for the ARM9 to boot up till now, |
diff --git a/arch/arm/mach-mv78xx0/pcie.c b/arch/arm/mach-mv78xx0/pcie.c index a9a154a646dd..ee8c0b51df2c 100644 --- a/arch/arm/mach-mv78xx0/pcie.c +++ b/arch/arm/mach-mv78xx0/pcie.c | |||
| @@ -173,7 +173,7 @@ static struct pci_ops pcie_ops = { | |||
| 173 | .write = pcie_wr_conf, | 173 | .write = pcie_wr_conf, |
| 174 | }; | 174 | }; |
| 175 | 175 | ||
| 176 | static void __devinit rc_pci_fixup(struct pci_dev *dev) | 176 | static void rc_pci_fixup(struct pci_dev *dev) |
| 177 | { | 177 | { |
| 178 | /* | 178 | /* |
| 179 | * Prevent enumeration of root complex. | 179 | * Prevent enumeration of root complex. |
diff --git a/arch/arm/mach-mvebu/Makefile b/arch/arm/mach-mvebu/Makefile index 5dcb369b58aa..99df4df680fd 100644 --- a/arch/arm/mach-mvebu/Makefile +++ b/arch/arm/mach-mvebu/Makefile | |||
| @@ -1,6 +1,8 @@ | |||
| 1 | ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/$(src)/include \ | 1 | ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/$(src)/include \ |
| 2 | -I$(srctree)/arch/arm/plat-orion/include | 2 | -I$(srctree)/arch/arm/plat-orion/include |
| 3 | 3 | ||
| 4 | AFLAGS_coherency_ll.o := -Wa,-march=armv7-a | ||
| 5 | |||
| 4 | obj-y += system-controller.o | 6 | obj-y += system-controller.o |
| 5 | obj-$(CONFIG_MACH_ARMADA_370_XP) += armada-370-xp.o irq-armada-370-xp.o addr-map.o coherency.o coherency_ll.o pmsu.o | 7 | obj-$(CONFIG_MACH_ARMADA_370_XP) += armada-370-xp.o irq-armada-370-xp.o addr-map.o coherency.o coherency_ll.o pmsu.o |
| 6 | obj-$(CONFIG_SMP) += platsmp.o headsmp.o | 8 | obj-$(CONFIG_SMP) += platsmp.o headsmp.o |
diff --git a/arch/arm/mach-nomadik/board-nhk8815.c b/arch/arm/mach-nomadik/board-nhk8815.c index 98167a4319f7..9f19069248da 100644 --- a/arch/arm/mach-nomadik/board-nhk8815.c +++ b/arch/arm/mach-nomadik/board-nhk8815.c | |||
| @@ -27,7 +27,6 @@ | |||
| 27 | #include <linux/pinctrl/machine.h> | 27 | #include <linux/pinctrl/machine.h> |
| 28 | #include <linux/platform_data/pinctrl-nomadik.h> | 28 | #include <linux/platform_data/pinctrl-nomadik.h> |
| 29 | #include <linux/platform_data/clocksource-nomadik-mtu.h> | 29 | #include <linux/platform_data/clocksource-nomadik-mtu.h> |
| 30 | #include <linux/platform_data/mtd-nomadik-nand.h> | ||
| 31 | #include <asm/hardware/vic.h> | 30 | #include <asm/hardware/vic.h> |
| 32 | #include <asm/sizes.h> | 31 | #include <asm/sizes.h> |
| 33 | #include <asm/mach-types.h> | 32 | #include <asm/mach-types.h> |
diff --git a/arch/arm/mach-nomadik/include/mach/irqs.h b/arch/arm/mach-nomadik/include/mach/irqs.h index b549d0571548..215f8cdb4004 100644 --- a/arch/arm/mach-nomadik/include/mach/irqs.h +++ b/arch/arm/mach-nomadik/include/mach/irqs.h | |||
| @@ -22,49 +22,49 @@ | |||
| 22 | 22 | ||
| 23 | #include <mach/hardware.h> | 23 | #include <mach/hardware.h> |
| 24 | 24 | ||
| 25 | #define IRQ_VIC_START 1 /* first VIC interrupt is 1 */ | 25 | #define IRQ_VIC_START 32 /* first VIC interrupt is 1 */ |
| 26 | 26 | ||
| 27 | /* | 27 | /* |
| 28 | * Interrupt numbers generic for all Nomadik Chip cuts | 28 | * Interrupt numbers generic for all Nomadik Chip cuts |
| 29 | */ | 29 | */ |
| 30 | #define IRQ_WATCHDOG 1 | 30 | #define IRQ_WATCHDOG (IRQ_VIC_START+0) |
| 31 | #define IRQ_SOFTINT 2 | 31 | #define IRQ_SOFTINT (IRQ_VIC_START+1) |
| 32 | #define IRQ_CRYPTO 3 | 32 | #define IRQ_CRYPTO (IRQ_VIC_START+2) |
| 33 | #define IRQ_OWM 4 | 33 | #define IRQ_OWM (IRQ_VIC_START+3) |
| 34 | #define IRQ_MTU0 5 | 34 | #define IRQ_MTU0 (IRQ_VIC_START+4) |
| 35 | #define IRQ_MTU1 6 | 35 | #define IRQ_MTU1 (IRQ_VIC_START+5) |
| 36 | #define IRQ_GPIO0 7 | 36 | #define IRQ_GPIO0 (IRQ_VIC_START+6) |
| 37 | #define IRQ_GPIO1 8 | 37 | #define IRQ_GPIO1 (IRQ_VIC_START+7) |
| 38 | #define IRQ_GPIO2 9 | 38 | #define IRQ_GPIO2 (IRQ_VIC_START+8) |
| 39 | #define IRQ_GPIO3 10 | 39 | #define IRQ_GPIO3 (IRQ_VIC_START+9) |
| 40 | #define IRQ_RTC_RTT 11 | 40 | #define IRQ_RTC_RTT (IRQ_VIC_START+10) |
| 41 | #define IRQ_SSP 12 | 41 | #define IRQ_SSP (IRQ_VIC_START+11) |
| 42 | #define IRQ_UART0 13 | 42 | #define IRQ_UART0 (IRQ_VIC_START+12) |
| 43 | #define IRQ_DMA1 14 | 43 | #define IRQ_DMA1 (IRQ_VIC_START+13) |
| 44 | #define IRQ_CLCD_MDIF 15 | 44 | #define IRQ_CLCD_MDIF (IRQ_VIC_START+14) |
| 45 | #define IRQ_DMA0 16 | 45 | #define IRQ_DMA0 (IRQ_VIC_START+15) |
| 46 | #define IRQ_PWRFAIL 17 | 46 | #define IRQ_PWRFAIL (IRQ_VIC_START+16) |
| 47 | #define IRQ_UART1 18 | 47 | #define IRQ_UART1 (IRQ_VIC_START+17) |
| 48 | #define IRQ_FIRDA 19 | 48 | #define IRQ_FIRDA (IRQ_VIC_START+18) |
| 49 | #define IRQ_MSP0 20 | 49 | #define IRQ_MSP0 (IRQ_VIC_START+19) |
| 50 | #define IRQ_I2C0 21 | 50 | #define IRQ_I2C0 (IRQ_VIC_START+20) |
| 51 | #define IRQ_I2C1 22 | 51 | #define IRQ_I2C1 (IRQ_VIC_START+21) |
| 52 | #define IRQ_SDMMC 23 | 52 | #define IRQ_SDMMC (IRQ_VIC_START+22) |
| 53 | #define IRQ_USBOTG 24 | 53 | #define IRQ_USBOTG (IRQ_VIC_START+23) |
| 54 | #define IRQ_SVA_IT0 25 | 54 | #define IRQ_SVA_IT0 (IRQ_VIC_START+24) |
| 55 | #define IRQ_SVA_IT1 26 | 55 | #define IRQ_SVA_IT1 (IRQ_VIC_START+25) |
| 56 | #define IRQ_SAA_IT0 27 | 56 | #define IRQ_SAA_IT0 (IRQ_VIC_START+26) |
| 57 | #define IRQ_SAA_IT1 28 | 57 | #define IRQ_SAA_IT1 (IRQ_VIC_START+27) |
| 58 | #define IRQ_UART2 29 | 58 | #define IRQ_UART2 (IRQ_VIC_START+28) |
| 59 | #define IRQ_MSP2 30 | 59 | #define IRQ_MSP2 (IRQ_VIC_START+29) |
| 60 | #define IRQ_L2CC 49 | 60 | #define IRQ_L2CC (IRQ_VIC_START+30) |
| 61 | #define IRQ_HPI 50 | 61 | #define IRQ_HPI (IRQ_VIC_START+31) |
| 62 | #define IRQ_SKE 51 | 62 | #define IRQ_SKE (IRQ_VIC_START+32) |
| 63 | #define IRQ_KP 52 | 63 | #define IRQ_KP (IRQ_VIC_START+33) |
| 64 | #define IRQ_MEMST 55 | 64 | #define IRQ_MEMST (IRQ_VIC_START+34) |
| 65 | #define IRQ_SGA_IT 59 | 65 | #define IRQ_SGA_IT (IRQ_VIC_START+35) |
| 66 | #define IRQ_USBM 61 | 66 | #define IRQ_USBM (IRQ_VIC_START+36) |
| 67 | #define IRQ_MSP1 63 | 67 | #define IRQ_MSP1 (IRQ_VIC_START+37) |
| 68 | 68 | ||
| 69 | #define NOMADIK_GPIO_OFFSET (IRQ_VIC_START+64) | 69 | #define NOMADIK_GPIO_OFFSET (IRQ_VIC_START+64) |
| 70 | 70 | ||
diff --git a/arch/arm/mach-omap1/board-ams-delta.c b/arch/arm/mach-omap1/board-ams-delta.c index a8fce3ccc707..2e98a3ac7c5e 100644 --- a/arch/arm/mach-omap1/board-ams-delta.c +++ b/arch/arm/mach-omap1/board-ams-delta.c | |||
| @@ -160,7 +160,7 @@ static struct omap_lcd_config ams_delta_lcd_config __initdata = { | |||
| 160 | .ctrl_name = "internal", | 160 | .ctrl_name = "internal", |
| 161 | }; | 161 | }; |
| 162 | 162 | ||
| 163 | static struct omap_usb_config ams_delta_usb_config = { | 163 | static struct omap_usb_config ams_delta_usb_config __initdata = { |
| 164 | .register_host = 1, | 164 | .register_host = 1, |
| 165 | .hmc_mode = 16, | 165 | .hmc_mode = 16, |
| 166 | .pins[0] = 2, | 166 | .pins[0] = 2, |
diff --git a/arch/arm/mach-omap1/mailbox.c b/arch/arm/mach-omap1/mailbox.c index e962926b67bc..efc8f207f6fc 100644 --- a/arch/arm/mach-omap1/mailbox.c +++ b/arch/arm/mach-omap1/mailbox.c | |||
| @@ -142,7 +142,7 @@ static struct omap_mbox mbox_dsp_info = { | |||
| 142 | 142 | ||
| 143 | static struct omap_mbox *omap1_mboxes[] = { &mbox_dsp_info, NULL }; | 143 | static struct omap_mbox *omap1_mboxes[] = { &mbox_dsp_info, NULL }; |
| 144 | 144 | ||
| 145 | static int __devinit omap1_mbox_probe(struct platform_device *pdev) | 145 | static int omap1_mbox_probe(struct platform_device *pdev) |
| 146 | { | 146 | { |
| 147 | struct resource *mem; | 147 | struct resource *mem; |
| 148 | int ret; | 148 | int ret; |
| @@ -165,7 +165,7 @@ static int __devinit omap1_mbox_probe(struct platform_device *pdev) | |||
| 165 | return 0; | 165 | return 0; |
| 166 | } | 166 | } |
| 167 | 167 | ||
| 168 | static int __devexit omap1_mbox_remove(struct platform_device *pdev) | 168 | static int omap1_mbox_remove(struct platform_device *pdev) |
| 169 | { | 169 | { |
| 170 | omap_mbox_unregister(); | 170 | omap_mbox_unregister(); |
| 171 | iounmap(mbox_base); | 171 | iounmap(mbox_base); |
| @@ -174,7 +174,7 @@ static int __devexit omap1_mbox_remove(struct platform_device *pdev) | |||
| 174 | 174 | ||
| 175 | static struct platform_driver omap1_mbox_driver = { | 175 | static struct platform_driver omap1_mbox_driver = { |
| 176 | .probe = omap1_mbox_probe, | 176 | .probe = omap1_mbox_probe, |
| 177 | .remove = __devexit_p(omap1_mbox_remove), | 177 | .remove = omap1_mbox_remove, |
| 178 | .driver = { | 178 | .driver = { |
| 179 | .name = "omap-mailbox", | 179 | .name = "omap-mailbox", |
| 180 | }, | 180 | }, |
diff --git a/arch/arm/mach-omap1/usb.c b/arch/arm/mach-omap1/usb.c index 104fed366b8f..1a1db5971cd9 100644 --- a/arch/arm/mach-omap1/usb.c +++ b/arch/arm/mach-omap1/usb.c | |||
| @@ -629,8 +629,14 @@ static void __init omap_1510_usb_init(struct omap_usb_config *config) | |||
| 629 | static inline void omap_1510_usb_init(struct omap_usb_config *config) {} | 629 | static inline void omap_1510_usb_init(struct omap_usb_config *config) {} |
| 630 | #endif | 630 | #endif |
| 631 | 631 | ||
| 632 | void __init omap1_usb_init(struct omap_usb_config *pdata) | 632 | void __init omap1_usb_init(struct omap_usb_config *_pdata) |
| 633 | { | 633 | { |
| 634 | struct omap_usb_config *pdata; | ||
| 635 | |||
| 636 | pdata = kmemdup(_pdata, sizeof(*pdata), GFP_KERNEL); | ||
| 637 | if (!pdata) | ||
| 638 | return; | ||
| 639 | |||
| 634 | pdata->usb0_init = omap1_usb0_init; | 640 | pdata->usb0_init = omap1_usb0_init; |
| 635 | pdata->usb1_init = omap1_usb1_init; | 641 | pdata->usb1_init = omap1_usb1_init; |
| 636 | pdata->usb2_init = omap1_usb2_init; | 642 | pdata->usb2_init = omap1_usb2_init; |
diff --git a/arch/arm/mach-omap2/board-omap4panda.c b/arch/arm/mach-omap2/board-omap4panda.c index 5c8e9cee2c2e..769c1feee1c4 100644 --- a/arch/arm/mach-omap2/board-omap4panda.c +++ b/arch/arm/mach-omap2/board-omap4panda.c | |||
| @@ -397,6 +397,12 @@ static struct omap_board_mux board_mux[] __initdata = { | |||
| 397 | OMAP_PULL_ENA), | 397 | OMAP_PULL_ENA), |
| 398 | OMAP4_MUX(ABE_MCBSP1_FSX, OMAP_MUX_MODE0 | OMAP_PIN_INPUT), | 398 | OMAP4_MUX(ABE_MCBSP1_FSX, OMAP_MUX_MODE0 | OMAP_PIN_INPUT), |
| 399 | 399 | ||
| 400 | /* UART2 - BT/FM/GPS shared transport */ | ||
| 401 | OMAP4_MUX(UART2_CTS, OMAP_PIN_INPUT | OMAP_MUX_MODE0), | ||
| 402 | OMAP4_MUX(UART2_RTS, OMAP_PIN_OUTPUT | OMAP_MUX_MODE0), | ||
| 403 | OMAP4_MUX(UART2_RX, OMAP_PIN_INPUT | OMAP_MUX_MODE0), | ||
| 404 | OMAP4_MUX(UART2_TX, OMAP_PIN_OUTPUT | OMAP_MUX_MODE0), | ||
| 405 | |||
| 400 | { .reg_offset = OMAP_MUX_TERMINATOR }, | 406 | { .reg_offset = OMAP_MUX_TERMINATOR }, |
| 401 | }; | 407 | }; |
| 402 | 408 | ||
diff --git a/arch/arm/mach-omap2/cclock2420_data.c b/arch/arm/mach-omap2/cclock2420_data.c index 7e5febe456d9..ab7e952d2070 100644 --- a/arch/arm/mach-omap2/cclock2420_data.c +++ b/arch/arm/mach-omap2/cclock2420_data.c | |||
| @@ -1935,6 +1935,8 @@ int __init omap2420_clk_init(void) | |||
| 1935 | omap2_init_clk_hw_omap_clocks(c->lk.clk); | 1935 | omap2_init_clk_hw_omap_clocks(c->lk.clk); |
| 1936 | } | 1936 | } |
| 1937 | 1937 | ||
| 1938 | omap2xxx_clkt_vps_late_init(); | ||
| 1939 | |||
| 1938 | omap2_clk_disable_autoidle_all(); | 1940 | omap2_clk_disable_autoidle_all(); |
| 1939 | 1941 | ||
| 1940 | omap2_clk_enable_init_clocks(enable_init_clks, | 1942 | omap2_clk_enable_init_clocks(enable_init_clks, |
diff --git a/arch/arm/mach-omap2/cclock2430_data.c b/arch/arm/mach-omap2/cclock2430_data.c index eda079b96c6a..eb3dab68d536 100644 --- a/arch/arm/mach-omap2/cclock2430_data.c +++ b/arch/arm/mach-omap2/cclock2430_data.c | |||
| @@ -2050,6 +2050,8 @@ int __init omap2430_clk_init(void) | |||
| 2050 | omap2_init_clk_hw_omap_clocks(c->lk.clk); | 2050 | omap2_init_clk_hw_omap_clocks(c->lk.clk); |
| 2051 | } | 2051 | } |
| 2052 | 2052 | ||
| 2053 | omap2xxx_clkt_vps_late_init(); | ||
| 2054 | |||
| 2053 | omap2_clk_disable_autoidle_all(); | 2055 | omap2_clk_disable_autoidle_all(); |
| 2054 | 2056 | ||
| 2055 | omap2_clk_enable_init_clocks(enable_init_clks, | 2057 | omap2_clk_enable_init_clocks(enable_init_clks, |
diff --git a/arch/arm/mach-omap2/cclock3xxx_data.c b/arch/arm/mach-omap2/cclock3xxx_data.c index bdf39481fbd6..6ef87580c33f 100644 --- a/arch/arm/mach-omap2/cclock3xxx_data.c +++ b/arch/arm/mach-omap2/cclock3xxx_data.c | |||
| @@ -1167,6 +1167,8 @@ static const struct clk_ops emu_src_ck_ops = { | |||
| 1167 | .recalc_rate = &omap2_clksel_recalc, | 1167 | .recalc_rate = &omap2_clksel_recalc, |
| 1168 | .get_parent = &omap2_clksel_find_parent_index, | 1168 | .get_parent = &omap2_clksel_find_parent_index, |
| 1169 | .set_parent = &omap2_clksel_set_parent, | 1169 | .set_parent = &omap2_clksel_set_parent, |
| 1170 | .enable = &omap2_clkops_enable_clkdm, | ||
| 1171 | .disable = &omap2_clkops_disable_clkdm, | ||
| 1170 | }; | 1172 | }; |
| 1171 | 1173 | ||
| 1172 | static struct clk emu_src_ck; | 1174 | static struct clk emu_src_ck; |
diff --git a/arch/arm/mach-omap2/cclock44xx_data.c b/arch/arm/mach-omap2/cclock44xx_data.c index 5789a5e25563..a2cc046b47f4 100644 --- a/arch/arm/mach-omap2/cclock44xx_data.c +++ b/arch/arm/mach-omap2/cclock44xx_data.c | |||
| @@ -2026,14 +2026,13 @@ int __init omap4xxx_clk_init(void) | |||
| 2026 | * On OMAP4460 the ABE DPLL fails to turn on if in idle low-power | 2026 | * On OMAP4460 the ABE DPLL fails to turn on if in idle low-power |
| 2027 | * state when turning the ABE clock domain. Workaround this by | 2027 | * state when turning the ABE clock domain. Workaround this by |
| 2028 | * locking the ABE DPLL on boot. | 2028 | * locking the ABE DPLL on boot. |
| 2029 | * Lock the ABE DPLL in any case to avoid issues with audio. | ||
| 2029 | */ | 2030 | */ |
| 2030 | if (cpu_is_omap446x()) { | 2031 | rc = clk_set_parent(&abe_dpll_refclk_mux_ck, &sys_32k_ck); |
| 2031 | rc = clk_set_parent(&abe_dpll_refclk_mux_ck, &sys_32k_ck); | 2032 | if (!rc) |
| 2032 | if (!rc) | 2033 | rc = clk_set_rate(&dpll_abe_ck, OMAP4_DPLL_ABE_DEFFREQ); |
| 2033 | rc = clk_set_rate(&dpll_abe_ck, OMAP4_DPLL_ABE_DEFFREQ); | 2034 | if (rc) |
| 2034 | if (rc) | 2035 | pr_err("%s: failed to configure ABE DPLL!\n", __func__); |
| 2035 | pr_err("%s: failed to configure ABE DPLL!\n", __func__); | ||
| 2036 | } | ||
| 2037 | 2036 | ||
| 2038 | return 0; | 2037 | return 0; |
| 2039 | } | 2038 | } |
diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c index 5e304d0719a2..626f3ea3142f 100644 --- a/arch/arm/mach-omap2/devices.c +++ b/arch/arm/mach-omap2/devices.c | |||
| @@ -639,7 +639,7 @@ static int count_ocp2scp_devices(struct omap_ocp2scp_dev *ocp2scp_dev) | |||
| 639 | return cnt; | 639 | return cnt; |
| 640 | } | 640 | } |
| 641 | 641 | ||
| 642 | static void omap_init_ocp2scp(void) | 642 | static void __init omap_init_ocp2scp(void) |
| 643 | { | 643 | { |
| 644 | struct omap_hwmod *oh; | 644 | struct omap_hwmod *oh; |
| 645 | struct platform_device *pdev; | 645 | struct platform_device *pdev; |
diff --git a/arch/arm/mach-omap2/drm.c b/arch/arm/mach-omap2/drm.c index 4c7566c7e24a..2a2cfa88ddbf 100644 --- a/arch/arm/mach-omap2/drm.c +++ b/arch/arm/mach-omap2/drm.c | |||
| @@ -25,6 +25,7 @@ | |||
| 25 | #include <linux/dma-mapping.h> | 25 | #include <linux/dma-mapping.h> |
| 26 | #include <linux/platform_data/omap_drm.h> | 26 | #include <linux/platform_data/omap_drm.h> |
| 27 | 27 | ||
| 28 | #include "soc.h" | ||
| 28 | #include "omap_device.h" | 29 | #include "omap_device.h" |
| 29 | #include "omap_hwmod.h" | 30 | #include "omap_hwmod.h" |
| 30 | 31 | ||
| @@ -56,7 +57,7 @@ static int __init omap_init_drm(void) | |||
| 56 | oh->name); | 57 | oh->name); |
| 57 | } | 58 | } |
| 58 | 59 | ||
| 59 | platform_data.omaprev = GET_OMAP_REVISION(); | 60 | platform_data.omaprev = GET_OMAP_TYPE; |
| 60 | 61 | ||
| 61 | return platform_device_register(&omap_drm_device); | 62 | return platform_device_register(&omap_drm_device); |
| 62 | 63 | ||
diff --git a/arch/arm/mach-omap2/gpmc.c b/arch/arm/mach-omap2/gpmc.c index 65468f6d7f0e..8033cb747c86 100644 --- a/arch/arm/mach-omap2/gpmc.c +++ b/arch/arm/mach-omap2/gpmc.c | |||
| @@ -744,7 +744,7 @@ static int gpmc_setup_irq(void) | |||
| 744 | return request_irq(gpmc_irq, gpmc_handle_irq, 0, "gpmc", NULL); | 744 | return request_irq(gpmc_irq, gpmc_handle_irq, 0, "gpmc", NULL); |
| 745 | } | 745 | } |
| 746 | 746 | ||
| 747 | static __devexit int gpmc_free_irq(void) | 747 | static int gpmc_free_irq(void) |
| 748 | { | 748 | { |
| 749 | int i; | 749 | int i; |
| 750 | 750 | ||
| @@ -762,7 +762,7 @@ static __devexit int gpmc_free_irq(void) | |||
| 762 | return 0; | 762 | return 0; |
| 763 | } | 763 | } |
| 764 | 764 | ||
| 765 | static void __devexit gpmc_mem_exit(void) | 765 | static void gpmc_mem_exit(void) |
| 766 | { | 766 | { |
| 767 | int cs; | 767 | int cs; |
| 768 | 768 | ||
| @@ -774,7 +774,7 @@ static void __devexit gpmc_mem_exit(void) | |||
| 774 | 774 | ||
| 775 | } | 775 | } |
| 776 | 776 | ||
| 777 | static int __devinit gpmc_mem_init(void) | 777 | static int gpmc_mem_init(void) |
| 778 | { | 778 | { |
| 779 | int cs, rc; | 779 | int cs, rc; |
| 780 | unsigned long boot_rom_space = 0; | 780 | unsigned long boot_rom_space = 0; |
| @@ -1121,7 +1121,7 @@ int gpmc_calc_timings(struct gpmc_timings *gpmc_t, | |||
| 1121 | return 0; | 1121 | return 0; |
| 1122 | } | 1122 | } |
| 1123 | 1123 | ||
| 1124 | static __devinit int gpmc_probe(struct platform_device *pdev) | 1124 | static int gpmc_probe(struct platform_device *pdev) |
| 1125 | { | 1125 | { |
| 1126 | int rc; | 1126 | int rc; |
| 1127 | u32 l; | 1127 | u32 l; |
| @@ -1177,7 +1177,7 @@ static __devinit int gpmc_probe(struct platform_device *pdev) | |||
| 1177 | return 0; | 1177 | return 0; |
| 1178 | } | 1178 | } |
| 1179 | 1179 | ||
| 1180 | static __devexit int gpmc_remove(struct platform_device *pdev) | 1180 | static int gpmc_remove(struct platform_device *pdev) |
| 1181 | { | 1181 | { |
| 1182 | gpmc_free_irq(); | 1182 | gpmc_free_irq(); |
| 1183 | gpmc_mem_exit(); | 1183 | gpmc_mem_exit(); |
| @@ -1187,7 +1187,7 @@ static __devexit int gpmc_remove(struct platform_device *pdev) | |||
| 1187 | 1187 | ||
| 1188 | static struct platform_driver gpmc_driver = { | 1188 | static struct platform_driver gpmc_driver = { |
| 1189 | .probe = gpmc_probe, | 1189 | .probe = gpmc_probe, |
| 1190 | .remove = __devexit_p(gpmc_remove), | 1190 | .remove = gpmc_remove, |
| 1191 | .driver = { | 1191 | .driver = { |
| 1192 | .name = DEVICE_NAME, | 1192 | .name = DEVICE_NAME, |
| 1193 | .owner = THIS_MODULE, | 1193 | .owner = THIS_MODULE, |
diff --git a/arch/arm/mach-omap2/mailbox.c b/arch/arm/mach-omap2/mailbox.c index 0d974565f8ca..0b080267b7f6 100644 --- a/arch/arm/mach-omap2/mailbox.c +++ b/arch/arm/mach-omap2/mailbox.c | |||
| @@ -342,7 +342,7 @@ struct omap_mbox mbox_2_info = { | |||
| 342 | struct omap_mbox *omap4_mboxes[] = { &mbox_1_info, &mbox_2_info, NULL }; | 342 | struct omap_mbox *omap4_mboxes[] = { &mbox_1_info, &mbox_2_info, NULL }; |
| 343 | #endif | 343 | #endif |
| 344 | 344 | ||
| 345 | static int __devinit omap2_mbox_probe(struct platform_device *pdev) | 345 | static int omap2_mbox_probe(struct platform_device *pdev) |
| 346 | { | 346 | { |
| 347 | struct resource *mem; | 347 | struct resource *mem; |
| 348 | int ret; | 348 | int ret; |
| @@ -395,7 +395,7 @@ static int __devinit omap2_mbox_probe(struct platform_device *pdev) | |||
| 395 | return 0; | 395 | return 0; |
| 396 | } | 396 | } |
| 397 | 397 | ||
| 398 | static int __devexit omap2_mbox_remove(struct platform_device *pdev) | 398 | static int omap2_mbox_remove(struct platform_device *pdev) |
| 399 | { | 399 | { |
| 400 | omap_mbox_unregister(); | 400 | omap_mbox_unregister(); |
| 401 | iounmap(mbox_base); | 401 | iounmap(mbox_base); |
| @@ -404,7 +404,7 @@ static int __devexit omap2_mbox_remove(struct platform_device *pdev) | |||
| 404 | 404 | ||
| 405 | static struct platform_driver omap2_mbox_driver = { | 405 | static struct platform_driver omap2_mbox_driver = { |
| 406 | .probe = omap2_mbox_probe, | 406 | .probe = omap2_mbox_probe, |
| 407 | .remove = __devexit_p(omap2_mbox_remove), | 407 | .remove = omap2_mbox_remove, |
| 408 | .driver = { | 408 | .driver = { |
| 409 | .name = "omap-mailbox", | 409 | .name = "omap-mailbox", |
| 410 | }, | 410 | }, |
diff --git a/arch/arm/mach-omap2/omap_hwmod_33xx_data.c b/arch/arm/mach-omap2/omap_hwmod_33xx_data.c index 081c71edddf4..646c14d9fdb9 100644 --- a/arch/arm/mach-omap2/omap_hwmod_33xx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_33xx_data.c | |||
| @@ -2070,7 +2070,7 @@ static struct omap_hwmod_irq_info am33xx_usbss_mpu_irqs[] = { | |||
| 2070 | { .name = "usbss-irq", .irq = 17 + OMAP_INTC_START, }, | 2070 | { .name = "usbss-irq", .irq = 17 + OMAP_INTC_START, }, |
| 2071 | { .name = "musb0-irq", .irq = 18 + OMAP_INTC_START, }, | 2071 | { .name = "musb0-irq", .irq = 18 + OMAP_INTC_START, }, |
| 2072 | { .name = "musb1-irq", .irq = 19 + OMAP_INTC_START, }, | 2072 | { .name = "musb1-irq", .irq = 19 + OMAP_INTC_START, }, |
| 2073 | { .irq = -1 + OMAP_INTC_START, }, | 2073 | { .irq = -1, }, |
| 2074 | }; | 2074 | }; |
| 2075 | 2075 | ||
| 2076 | static struct omap_hwmod am33xx_usbss_hwmod = { | 2076 | static struct omap_hwmod am33xx_usbss_hwmod = { |
| @@ -2515,7 +2515,7 @@ static struct omap_hwmod_ocp_if am33xx_l4_hs__cpgmac0 = { | |||
| 2515 | .user = OCP_USER_MPU, | 2515 | .user = OCP_USER_MPU, |
| 2516 | }; | 2516 | }; |
| 2517 | 2517 | ||
| 2518 | struct omap_hwmod_addr_space am33xx_mdio_addr_space[] = { | 2518 | static struct omap_hwmod_addr_space am33xx_mdio_addr_space[] = { |
| 2519 | { | 2519 | { |
| 2520 | .pa_start = 0x4A101000, | 2520 | .pa_start = 0x4A101000, |
| 2521 | .pa_end = 0x4A101000 + SZ_256 - 1, | 2521 | .pa_end = 0x4A101000 + SZ_256 - 1, |
| @@ -2523,7 +2523,7 @@ struct omap_hwmod_addr_space am33xx_mdio_addr_space[] = { | |||
| 2523 | { } | 2523 | { } |
| 2524 | }; | 2524 | }; |
| 2525 | 2525 | ||
| 2526 | struct omap_hwmod_ocp_if am33xx_cpgmac0__mdio = { | 2526 | static struct omap_hwmod_ocp_if am33xx_cpgmac0__mdio = { |
| 2527 | .master = &am33xx_cpgmac0_hwmod, | 2527 | .master = &am33xx_cpgmac0_hwmod, |
| 2528 | .slave = &am33xx_mdio_hwmod, | 2528 | .slave = &am33xx_mdio_hwmod, |
| 2529 | .addr = am33xx_mdio_addr_space, | 2529 | .addr = am33xx_mdio_addr_space, |
diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c index 129d5081ed15..793f54ac7d14 100644 --- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c | |||
| @@ -2132,8 +2132,12 @@ static struct omap_hwmod omap44xx_mcpdm_hwmod = { | |||
| 2132 | * currently reset very early during boot, before I2C is | 2132 | * currently reset very early during boot, before I2C is |
| 2133 | * available, so it doesn't seem that we have any choice in | 2133 | * available, so it doesn't seem that we have any choice in |
| 2134 | * the kernel other than to avoid resetting it. | 2134 | * the kernel other than to avoid resetting it. |
| 2135 | * | ||
| 2136 | * Also, McPDM needs to be configured to NO_IDLE mode when it | ||
| 2137 | * is in used otherwise vital clocks will be gated which | ||
| 2138 | * results 'slow motion' audio playback. | ||
| 2135 | */ | 2139 | */ |
| 2136 | .flags = HWMOD_EXT_OPT_MAIN_CLK, | 2140 | .flags = HWMOD_EXT_OPT_MAIN_CLK | HWMOD_SWSUP_SIDLE, |
| 2137 | .mpu_irqs = omap44xx_mcpdm_irqs, | 2141 | .mpu_irqs = omap44xx_mcpdm_irqs, |
| 2138 | .sdma_reqs = omap44xx_mcpdm_sdma_reqs, | 2142 | .sdma_reqs = omap44xx_mcpdm_sdma_reqs, |
| 2139 | .main_clk = "mcpdm_fck", | 2143 | .main_clk = "mcpdm_fck", |
diff --git a/arch/arm/mach-omap2/prm2xxx.c b/arch/arm/mach-omap2/prm2xxx.c index cc0e71430af1..418de9c3b319 100644 --- a/arch/arm/mach-omap2/prm2xxx.c +++ b/arch/arm/mach-omap2/prm2xxx.c | |||
| @@ -28,6 +28,14 @@ | |||
| 28 | #include "prm-regbits-24xx.h" | 28 | #include "prm-regbits-24xx.h" |
| 29 | 29 | ||
| 30 | /* | 30 | /* |
| 31 | * OMAP24xx PM_PWSTCTRL_*.POWERSTATE and PM_PWSTST_*.LASTSTATEENTERED bits - | ||
| 32 | * these are reversed from the bits used on OMAP3+ | ||
| 33 | */ | ||
| 34 | #define OMAP24XX_PWRDM_POWER_ON 0x0 | ||
| 35 | #define OMAP24XX_PWRDM_POWER_RET 0x1 | ||
| 36 | #define OMAP24XX_PWRDM_POWER_OFF 0x3 | ||
| 37 | |||
| 38 | /* | ||
| 31 | * omap2xxx_prm_reset_src_map - map from bits in the PRM_RSTST_WKUP | 39 | * omap2xxx_prm_reset_src_map - map from bits in the PRM_RSTST_WKUP |
| 32 | * hardware register (which are specific to the OMAP2xxx SoCs) to | 40 | * hardware register (which are specific to the OMAP2xxx SoCs) to |
| 33 | * reset source ID bit shifts (which is an OMAP SoC-independent | 41 | * reset source ID bit shifts (which is an OMAP SoC-independent |
| @@ -68,6 +76,34 @@ static u32 omap2xxx_prm_read_reset_sources(void) | |||
| 68 | } | 76 | } |
| 69 | 77 | ||
| 70 | /** | 78 | /** |
| 79 | * omap2xxx_pwrst_to_common_pwrst - convert OMAP2xxx pwrst to common pwrst | ||
| 80 | * @omap2xxx_pwrst: OMAP2xxx hardware power state to convert | ||
| 81 | * | ||
| 82 | * Return the common power state bits corresponding to the OMAP2xxx | ||
| 83 | * hardware power state bits @omap2xxx_pwrst, or -EINVAL upon error. | ||
| 84 | */ | ||
| 85 | static int omap2xxx_pwrst_to_common_pwrst(u8 omap2xxx_pwrst) | ||
| 86 | { | ||
| 87 | u8 pwrst; | ||
| 88 | |||
| 89 | switch (omap2xxx_pwrst) { | ||
| 90 | case OMAP24XX_PWRDM_POWER_OFF: | ||
| 91 | pwrst = PWRDM_POWER_OFF; | ||
| 92 | break; | ||
| 93 | case OMAP24XX_PWRDM_POWER_RET: | ||
| 94 | pwrst = PWRDM_POWER_RET; | ||
| 95 | break; | ||
| 96 | case OMAP24XX_PWRDM_POWER_ON: | ||
| 97 | pwrst = PWRDM_POWER_ON; | ||
| 98 | break; | ||
| 99 | default: | ||
| 100 | return -EINVAL; | ||
| 101 | } | ||
| 102 | |||
| 103 | return pwrst; | ||
| 104 | } | ||
| 105 | |||
| 106 | /** | ||
| 71 | * omap2xxx_prm_dpll_reset - use DPLL reset to reboot the OMAP SoC | 107 | * omap2xxx_prm_dpll_reset - use DPLL reset to reboot the OMAP SoC |
| 72 | * | 108 | * |
| 73 | * Set the DPLL reset bit, which should reboot the SoC. This is the | 109 | * Set the DPLL reset bit, which should reboot the SoC. This is the |
| @@ -97,10 +133,56 @@ int omap2xxx_clkdm_wakeup(struct clockdomain *clkdm) | |||
| 97 | return 0; | 133 | return 0; |
| 98 | } | 134 | } |
| 99 | 135 | ||
| 136 | static int omap2xxx_pwrdm_set_next_pwrst(struct powerdomain *pwrdm, u8 pwrst) | ||
| 137 | { | ||
| 138 | u8 omap24xx_pwrst; | ||
| 139 | |||
| 140 | switch (pwrst) { | ||
| 141 | case PWRDM_POWER_OFF: | ||
| 142 | omap24xx_pwrst = OMAP24XX_PWRDM_POWER_OFF; | ||
| 143 | break; | ||
| 144 | case PWRDM_POWER_RET: | ||
| 145 | omap24xx_pwrst = OMAP24XX_PWRDM_POWER_RET; | ||
| 146 | break; | ||
| 147 | case PWRDM_POWER_ON: | ||
| 148 | omap24xx_pwrst = OMAP24XX_PWRDM_POWER_ON; | ||
| 149 | break; | ||
| 150 | default: | ||
| 151 | return -EINVAL; | ||
| 152 | } | ||
| 153 | |||
| 154 | omap2_prm_rmw_mod_reg_bits(OMAP_POWERSTATE_MASK, | ||
| 155 | (omap24xx_pwrst << OMAP_POWERSTATE_SHIFT), | ||
| 156 | pwrdm->prcm_offs, OMAP2_PM_PWSTCTRL); | ||
| 157 | return 0; | ||
| 158 | } | ||
| 159 | |||
| 160 | static int omap2xxx_pwrdm_read_next_pwrst(struct powerdomain *pwrdm) | ||
| 161 | { | ||
| 162 | u8 omap2xxx_pwrst; | ||
| 163 | |||
| 164 | omap2xxx_pwrst = omap2_prm_read_mod_bits_shift(pwrdm->prcm_offs, | ||
| 165 | OMAP2_PM_PWSTCTRL, | ||
| 166 | OMAP_POWERSTATE_MASK); | ||
| 167 | |||
| 168 | return omap2xxx_pwrst_to_common_pwrst(omap2xxx_pwrst); | ||
| 169 | } | ||
| 170 | |||
| 171 | static int omap2xxx_pwrdm_read_pwrst(struct powerdomain *pwrdm) | ||
| 172 | { | ||
| 173 | u8 omap2xxx_pwrst; | ||
| 174 | |||
| 175 | omap2xxx_pwrst = omap2_prm_read_mod_bits_shift(pwrdm->prcm_offs, | ||
| 176 | OMAP2_PM_PWSTST, | ||
| 177 | OMAP_POWERSTATEST_MASK); | ||
| 178 | |||
| 179 | return omap2xxx_pwrst_to_common_pwrst(omap2xxx_pwrst); | ||
| 180 | } | ||
| 181 | |||
| 100 | struct pwrdm_ops omap2_pwrdm_operations = { | 182 | struct pwrdm_ops omap2_pwrdm_operations = { |
| 101 | .pwrdm_set_next_pwrst = omap2_pwrdm_set_next_pwrst, | 183 | .pwrdm_set_next_pwrst = omap2xxx_pwrdm_set_next_pwrst, |
| 102 | .pwrdm_read_next_pwrst = omap2_pwrdm_read_next_pwrst, | 184 | .pwrdm_read_next_pwrst = omap2xxx_pwrdm_read_next_pwrst, |
| 103 | .pwrdm_read_pwrst = omap2_pwrdm_read_pwrst, | 185 | .pwrdm_read_pwrst = omap2xxx_pwrdm_read_pwrst, |
| 104 | .pwrdm_set_logic_retst = omap2_pwrdm_set_logic_retst, | 186 | .pwrdm_set_logic_retst = omap2_pwrdm_set_logic_retst, |
| 105 | .pwrdm_set_mem_onst = omap2_pwrdm_set_mem_onst, | 187 | .pwrdm_set_mem_onst = omap2_pwrdm_set_mem_onst, |
| 106 | .pwrdm_set_mem_retst = omap2_pwrdm_set_mem_retst, | 188 | .pwrdm_set_mem_retst = omap2_pwrdm_set_mem_retst, |
diff --git a/arch/arm/mach-omap2/prm2xxx_3xxx.c b/arch/arm/mach-omap2/prm2xxx_3xxx.c index 30517f5af707..a3e121f94a86 100644 --- a/arch/arm/mach-omap2/prm2xxx_3xxx.c +++ b/arch/arm/mach-omap2/prm2xxx_3xxx.c | |||
| @@ -103,28 +103,6 @@ int omap2_prm_deassert_hardreset(s16 prm_mod, u8 rst_shift, u8 st_shift) | |||
| 103 | /* Powerdomain low-level functions */ | 103 | /* Powerdomain low-level functions */ |
| 104 | 104 | ||
| 105 | /* Common functions across OMAP2 and OMAP3 */ | 105 | /* Common functions across OMAP2 and OMAP3 */ |
| 106 | int omap2_pwrdm_set_next_pwrst(struct powerdomain *pwrdm, u8 pwrst) | ||
| 107 | { | ||
| 108 | omap2_prm_rmw_mod_reg_bits(OMAP_POWERSTATE_MASK, | ||
| 109 | (pwrst << OMAP_POWERSTATE_SHIFT), | ||
| 110 | pwrdm->prcm_offs, OMAP2_PM_PWSTCTRL); | ||
| 111 | return 0; | ||
| 112 | } | ||
| 113 | |||
| 114 | int omap2_pwrdm_read_next_pwrst(struct powerdomain *pwrdm) | ||
| 115 | { | ||
| 116 | return omap2_prm_read_mod_bits_shift(pwrdm->prcm_offs, | ||
| 117 | OMAP2_PM_PWSTCTRL, | ||
| 118 | OMAP_POWERSTATE_MASK); | ||
| 119 | } | ||
| 120 | |||
| 121 | int omap2_pwrdm_read_pwrst(struct powerdomain *pwrdm) | ||
| 122 | { | ||
| 123 | return omap2_prm_read_mod_bits_shift(pwrdm->prcm_offs, | ||
| 124 | OMAP2_PM_PWSTST, | ||
| 125 | OMAP_POWERSTATEST_MASK); | ||
| 126 | } | ||
| 127 | |||
| 128 | int omap2_pwrdm_set_mem_onst(struct powerdomain *pwrdm, u8 bank, | 106 | int omap2_pwrdm_set_mem_onst(struct powerdomain *pwrdm, u8 bank, |
| 129 | u8 pwrst) | 107 | u8 pwrst) |
| 130 | { | 108 | { |
diff --git a/arch/arm/mach-omap2/prm3xxx.c b/arch/arm/mach-omap2/prm3xxx.c index 39822aabcff3..e648bd55b072 100644 --- a/arch/arm/mach-omap2/prm3xxx.c +++ b/arch/arm/mach-omap2/prm3xxx.c | |||
| @@ -277,6 +277,28 @@ static u32 omap3xxx_prm_read_reset_sources(void) | |||
| 277 | 277 | ||
| 278 | /* Powerdomain low-level functions */ | 278 | /* Powerdomain low-level functions */ |
| 279 | 279 | ||
| 280 | static int omap3_pwrdm_set_next_pwrst(struct powerdomain *pwrdm, u8 pwrst) | ||
| 281 | { | ||
| 282 | omap2_prm_rmw_mod_reg_bits(OMAP_POWERSTATE_MASK, | ||
| 283 | (pwrst << OMAP_POWERSTATE_SHIFT), | ||
| 284 | pwrdm->prcm_offs, OMAP2_PM_PWSTCTRL); | ||
| 285 | return 0; | ||
| 286 | } | ||
| 287 | |||
| 288 | static int omap3_pwrdm_read_next_pwrst(struct powerdomain *pwrdm) | ||
| 289 | { | ||
| 290 | return omap2_prm_read_mod_bits_shift(pwrdm->prcm_offs, | ||
| 291 | OMAP2_PM_PWSTCTRL, | ||
| 292 | OMAP_POWERSTATE_MASK); | ||
| 293 | } | ||
| 294 | |||
| 295 | static int omap3_pwrdm_read_pwrst(struct powerdomain *pwrdm) | ||
| 296 | { | ||
| 297 | return omap2_prm_read_mod_bits_shift(pwrdm->prcm_offs, | ||
| 298 | OMAP2_PM_PWSTST, | ||
| 299 | OMAP_POWERSTATEST_MASK); | ||
| 300 | } | ||
| 301 | |||
| 280 | /* Applicable only for OMAP3. Not supported on OMAP2 */ | 302 | /* Applicable only for OMAP3. Not supported on OMAP2 */ |
| 281 | static int omap3_pwrdm_read_prev_pwrst(struct powerdomain *pwrdm) | 303 | static int omap3_pwrdm_read_prev_pwrst(struct powerdomain *pwrdm) |
| 282 | { | 304 | { |
| @@ -355,9 +377,9 @@ static int omap3_pwrdm_disable_hdwr_sar(struct powerdomain *pwrdm) | |||
| 355 | } | 377 | } |
| 356 | 378 | ||
| 357 | struct pwrdm_ops omap3_pwrdm_operations = { | 379 | struct pwrdm_ops omap3_pwrdm_operations = { |
| 358 | .pwrdm_set_next_pwrst = omap2_pwrdm_set_next_pwrst, | 380 | .pwrdm_set_next_pwrst = omap3_pwrdm_set_next_pwrst, |
| 359 | .pwrdm_read_next_pwrst = omap2_pwrdm_read_next_pwrst, | 381 | .pwrdm_read_next_pwrst = omap3_pwrdm_read_next_pwrst, |
| 360 | .pwrdm_read_pwrst = omap2_pwrdm_read_pwrst, | 382 | .pwrdm_read_pwrst = omap3_pwrdm_read_pwrst, |
| 361 | .pwrdm_read_prev_pwrst = omap3_pwrdm_read_prev_pwrst, | 383 | .pwrdm_read_prev_pwrst = omap3_pwrdm_read_prev_pwrst, |
| 362 | .pwrdm_set_logic_retst = omap2_pwrdm_set_logic_retst, | 384 | .pwrdm_set_logic_retst = omap2_pwrdm_set_logic_retst, |
| 363 | .pwrdm_read_logic_pwrst = omap3_pwrdm_read_logic_pwrst, | 385 | .pwrdm_read_logic_pwrst = omap3_pwrdm_read_logic_pwrst, |
diff --git a/arch/arm/mach-omap2/prm44xx.c b/arch/arm/mach-omap2/prm44xx.c index 7498bc77fe8b..c05a343d465d 100644 --- a/arch/arm/mach-omap2/prm44xx.c +++ b/arch/arm/mach-omap2/prm44xx.c | |||
| @@ -56,9 +56,9 @@ static struct omap_prcm_irq_setup omap4_prcm_irq_setup = { | |||
| 56 | * enumeration) | 56 | * enumeration) |
| 57 | */ | 57 | */ |
| 58 | static struct prm_reset_src_map omap44xx_prm_reset_src_map[] = { | 58 | static struct prm_reset_src_map omap44xx_prm_reset_src_map[] = { |
| 59 | { OMAP4430_RST_GLOBAL_WARM_SW_SHIFT, | 59 | { OMAP4430_GLOBAL_WARM_SW_RST_SHIFT, |
| 60 | OMAP_GLOBAL_WARM_RST_SRC_ID_SHIFT }, | 60 | OMAP_GLOBAL_WARM_RST_SRC_ID_SHIFT }, |
| 61 | { OMAP4430_RST_GLOBAL_COLD_SW_SHIFT, | 61 | { OMAP4430_GLOBAL_COLD_RST_SHIFT, |
| 62 | OMAP_GLOBAL_COLD_RST_SRC_ID_SHIFT }, | 62 | OMAP_GLOBAL_COLD_RST_SRC_ID_SHIFT }, |
| 63 | { OMAP4430_MPU_SECURITY_VIOL_RST_SHIFT, | 63 | { OMAP4430_MPU_SECURITY_VIOL_RST_SHIFT, |
| 64 | OMAP_SECU_VIOL_RST_SRC_ID_SHIFT }, | 64 | OMAP_SECU_VIOL_RST_SRC_ID_SHIFT }, |
| @@ -333,7 +333,7 @@ static u32 omap44xx_prm_read_reset_sources(void) | |||
| 333 | u32 r = 0; | 333 | u32 r = 0; |
| 334 | u32 v; | 334 | u32 v; |
| 335 | 335 | ||
| 336 | v = omap4_prm_read_inst_reg(OMAP4430_PRM_OCP_SOCKET_INST, | 336 | v = omap4_prm_read_inst_reg(OMAP4430_PRM_DEVICE_INST, |
| 337 | OMAP4_RM_RSTST); | 337 | OMAP4_RM_RSTST); |
| 338 | 338 | ||
| 339 | p = omap44xx_prm_reset_src_map; | 339 | p = omap44xx_prm_reset_src_map; |
diff --git a/arch/arm/mach-omap2/prm44xx.h b/arch/arm/mach-omap2/prm44xx.h index 22b0979206ca..8ee1fbdec561 100644 --- a/arch/arm/mach-omap2/prm44xx.h +++ b/arch/arm/mach-omap2/prm44xx.h | |||
| @@ -62,8 +62,8 @@ | |||
| 62 | 62 | ||
| 63 | /* OMAP4 specific register offsets */ | 63 | /* OMAP4 specific register offsets */ |
| 64 | #define OMAP4_RM_RSTCTRL 0x0000 | 64 | #define OMAP4_RM_RSTCTRL 0x0000 |
| 65 | #define OMAP4_RM_RSTTIME 0x0004 | 65 | #define OMAP4_RM_RSTST 0x0004 |
| 66 | #define OMAP4_RM_RSTST 0x0008 | 66 | #define OMAP4_RM_RSTTIME 0x0008 |
| 67 | #define OMAP4_PM_PWSTCTRL 0x0000 | 67 | #define OMAP4_PM_PWSTCTRL 0x0000 |
| 68 | #define OMAP4_PM_PWSTST 0x0004 | 68 | #define OMAP4_PM_PWSTST 0x0004 |
| 69 | 69 | ||
diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c index 691aa674665a..b8ad6e632bb8 100644 --- a/arch/arm/mach-omap2/timer.c +++ b/arch/arm/mach-omap2/timer.c | |||
| @@ -165,15 +165,11 @@ static struct device_node * __init omap_get_timer_dt(struct of_device_id *match, | |||
| 165 | struct device_node *np; | 165 | struct device_node *np; |
| 166 | 166 | ||
| 167 | for_each_matching_node(np, match) { | 167 | for_each_matching_node(np, match) { |
| 168 | if (!of_device_is_available(np)) { | 168 | if (!of_device_is_available(np)) |
| 169 | of_node_put(np); | ||
| 170 | continue; | 169 | continue; |
| 171 | } | ||
| 172 | 170 | ||
| 173 | if (property && !of_get_property(np, property, NULL)) { | 171 | if (property && !of_get_property(np, property, NULL)) |
| 174 | of_node_put(np); | ||
| 175 | continue; | 172 | continue; |
| 176 | } | ||
| 177 | 173 | ||
| 178 | of_add_property(np, &device_disabled); | 174 | of_add_property(np, &device_disabled); |
| 179 | return np; | 175 | return np; |
diff --git a/arch/arm/mach-orion5x/pci.c b/arch/arm/mach-orion5x/pci.c index cd50e328db2a..d9c7c3bf0d9c 100644 --- a/arch/arm/mach-orion5x/pci.c +++ b/arch/arm/mach-orion5x/pci.c | |||
| @@ -506,7 +506,7 @@ static int __init pci_setup(struct pci_sys_data *sys) | |||
| 506 | /***************************************************************************** | 506 | /***************************************************************************** |
| 507 | * General PCIe + PCI | 507 | * General PCIe + PCI |
| 508 | ****************************************************************************/ | 508 | ****************************************************************************/ |
| 509 | static void __devinit rc_pci_fixup(struct pci_dev *dev) | 509 | static void rc_pci_fixup(struct pci_dev *dev) |
| 510 | { | 510 | { |
| 511 | /* | 511 | /* |
| 512 | * Prevent enumeration of root complex. | 512 | * Prevent enumeration of root complex. |
diff --git a/arch/arm/mach-prima2/pm.c b/arch/arm/mach-prima2/pm.c index fb5a7910af35..9936c180bf01 100644 --- a/arch/arm/mach-prima2/pm.c +++ b/arch/arm/mach-prima2/pm.c | |||
| @@ -123,7 +123,7 @@ static const struct of_device_id memc_ids[] = { | |||
| 123 | {} | 123 | {} |
| 124 | }; | 124 | }; |
| 125 | 125 | ||
| 126 | static int __devinit sirfsoc_memc_probe(struct platform_device *op) | 126 | static int sirfsoc_memc_probe(struct platform_device *op) |
| 127 | { | 127 | { |
| 128 | struct device_node *np = op->dev.of_node; | 128 | struct device_node *np = op->dev.of_node; |
| 129 | 129 | ||
diff --git a/arch/arm/mach-prima2/rtciobrg.c b/arch/arm/mach-prima2/rtciobrg.c index 9d80f1e20a98..557353602130 100644 --- a/arch/arm/mach-prima2/rtciobrg.c +++ b/arch/arm/mach-prima2/rtciobrg.c | |||
| @@ -107,7 +107,7 @@ static const struct of_device_id rtciobrg_ids[] = { | |||
| 107 | {} | 107 | {} |
| 108 | }; | 108 | }; |
| 109 | 109 | ||
| 110 | static int __devinit sirfsoc_rtciobrg_probe(struct platform_device *op) | 110 | static int sirfsoc_rtciobrg_probe(struct platform_device *op) |
| 111 | { | 111 | { |
| 112 | struct device_node *np = op->dev.of_node; | 112 | struct device_node *np = op->dev.of_node; |
| 113 | 113 | ||
diff --git a/arch/arm/mach-pxa/corgi_pm.c b/arch/arm/mach-pxa/corgi_pm.c index 048c4299473c..7a39efc50865 100644 --- a/arch/arm/mach-pxa/corgi_pm.c +++ b/arch/arm/mach-pxa/corgi_pm.c | |||
| @@ -198,7 +198,7 @@ static struct sharpsl_charger_machinfo corgi_pm_machinfo = { | |||
| 198 | 198 | ||
| 199 | static struct platform_device *corgipm_device; | 199 | static struct platform_device *corgipm_device; |
| 200 | 200 | ||
| 201 | static int __devinit corgipm_init(void) | 201 | static int corgipm_init(void) |
| 202 | { | 202 | { |
| 203 | int ret; | 203 | int ret; |
| 204 | 204 | ||
diff --git a/arch/arm/mach-pxa/include/mach/mfp-pxa27x.h b/arch/arm/mach-pxa/include/mach/mfp-pxa27x.h index a611ad3153c7..b6132aa95dc0 100644 --- a/arch/arm/mach-pxa/include/mach/mfp-pxa27x.h +++ b/arch/arm/mach-pxa/include/mach/mfp-pxa27x.h | |||
| @@ -463,6 +463,9 @@ | |||
| 463 | GPIO76_LCD_PCLK, \ | 463 | GPIO76_LCD_PCLK, \ |
| 464 | GPIO77_LCD_BIAS | 464 | GPIO77_LCD_BIAS |
| 465 | 465 | ||
| 466 | /* these enable a work-around for a hw bug in pxa27x during ac97 warm reset */ | ||
| 467 | #define GPIO113_AC97_nRESET_GPIO_HIGH MFP_CFG_OUT(GPIO113, AF0, DEFAULT) | ||
| 468 | #define GPIO95_AC97_nRESET_GPIO_HIGH MFP_CFG_OUT(GPIO95, AF0, DEFAULT) | ||
| 466 | 469 | ||
| 467 | extern int keypad_set_wake(unsigned int on); | 470 | extern int keypad_set_wake(unsigned int on); |
| 468 | #endif /* __ASM_ARCH_MFP_PXA27X_H */ | 471 | #endif /* __ASM_ARCH_MFP_PXA27X_H */ |
diff --git a/arch/arm/mach-pxa/pxa27x.c b/arch/arm/mach-pxa/pxa27x.c index 8047ee0effc5..616cb87b6179 100644 --- a/arch/arm/mach-pxa/pxa27x.c +++ b/arch/arm/mach-pxa/pxa27x.c | |||
| @@ -47,9 +47,9 @@ void pxa27x_clear_otgph(void) | |||
| 47 | EXPORT_SYMBOL(pxa27x_clear_otgph); | 47 | EXPORT_SYMBOL(pxa27x_clear_otgph); |
| 48 | 48 | ||
| 49 | static unsigned long ac97_reset_config[] = { | 49 | static unsigned long ac97_reset_config[] = { |
| 50 | GPIO113_GPIO, | 50 | GPIO113_AC97_nRESET_GPIO_HIGH, |
| 51 | GPIO113_AC97_nRESET, | 51 | GPIO113_AC97_nRESET, |
| 52 | GPIO95_GPIO, | 52 | GPIO95_AC97_nRESET_GPIO_HIGH, |
| 53 | GPIO95_AC97_nRESET, | 53 | GPIO95_AC97_nRESET, |
| 54 | }; | 54 | }; |
| 55 | 55 | ||
diff --git a/arch/arm/mach-pxa/sharpsl_pm.c b/arch/arm/mach-pxa/sharpsl_pm.c index ec55c575ed19..0a36d3585f26 100644 --- a/arch/arm/mach-pxa/sharpsl_pm.c +++ b/arch/arm/mach-pxa/sharpsl_pm.c | |||
| @@ -829,7 +829,7 @@ static const struct platform_suspend_ops sharpsl_pm_ops = { | |||
| 829 | }; | 829 | }; |
| 830 | #endif | 830 | #endif |
| 831 | 831 | ||
| 832 | static int __devinit sharpsl_pm_probe(struct platform_device *pdev) | 832 | static int sharpsl_pm_probe(struct platform_device *pdev) |
| 833 | { | 833 | { |
| 834 | int ret, irq; | 834 | int ret, irq; |
| 835 | 835 | ||
| @@ -941,7 +941,7 @@ static struct platform_driver sharpsl_pm_driver = { | |||
| 941 | }, | 941 | }, |
| 942 | }; | 942 | }; |
| 943 | 943 | ||
| 944 | static int __devinit sharpsl_pm_init(void) | 944 | static int sharpsl_pm_init(void) |
| 945 | { | 945 | { |
| 946 | return platform_driver_register(&sharpsl_pm_driver); | 946 | return platform_driver_register(&sharpsl_pm_driver); |
| 947 | } | 947 | } |
diff --git a/arch/arm/mach-pxa/spitz_pm.c b/arch/arm/mach-pxa/spitz_pm.c index 842596d4d31e..e191f9996b26 100644 --- a/arch/arm/mach-pxa/spitz_pm.c +++ b/arch/arm/mach-pxa/spitz_pm.c | |||
| @@ -232,7 +232,7 @@ struct sharpsl_charger_machinfo spitz_pm_machinfo = { | |||
| 232 | 232 | ||
| 233 | static struct platform_device *spitzpm_device; | 233 | static struct platform_device *spitzpm_device; |
| 234 | 234 | ||
| 235 | static int __devinit spitzpm_init(void) | 235 | static int spitzpm_init(void) |
| 236 | { | 236 | { |
| 237 | int ret; | 237 | int ret; |
| 238 | 238 | ||
diff --git a/arch/arm/mach-pxa/tosa-bt.c b/arch/arm/mach-pxa/tosa-bt.c index b9b1e5c2b290..fc3646c2c694 100644 --- a/arch/arm/mach-pxa/tosa-bt.c +++ b/arch/arm/mach-pxa/tosa-bt.c | |||
| @@ -102,7 +102,7 @@ err_reset: | |||
| 102 | return rc; | 102 | return rc; |
| 103 | } | 103 | } |
| 104 | 104 | ||
| 105 | static int __devexit tosa_bt_remove(struct platform_device *dev) | 105 | static int tosa_bt_remove(struct platform_device *dev) |
| 106 | { | 106 | { |
| 107 | struct tosa_bt_data *data = dev->dev.platform_data; | 107 | struct tosa_bt_data *data = dev->dev.platform_data; |
| 108 | struct rfkill *rfk = platform_get_drvdata(dev); | 108 | struct rfkill *rfk = platform_get_drvdata(dev); |
| @@ -125,7 +125,7 @@ static int __devexit tosa_bt_remove(struct platform_device *dev) | |||
| 125 | 125 | ||
| 126 | static struct platform_driver tosa_bt_driver = { | 126 | static struct platform_driver tosa_bt_driver = { |
| 127 | .probe = tosa_bt_probe, | 127 | .probe = tosa_bt_probe, |
| 128 | .remove = __devexit_p(tosa_bt_remove), | 128 | .remove = tosa_bt_remove, |
| 129 | 129 | ||
| 130 | .driver = { | 130 | .driver = { |
| 131 | .name = "tosa-bt", | 131 | .name = "tosa-bt", |
diff --git a/arch/arm/mach-s3c24xx/h1940-bluetooth.c b/arch/arm/mach-s3c24xx/h1940-bluetooth.c index 57aee916bdb1..3f40c61b6e02 100644 --- a/arch/arm/mach-s3c24xx/h1940-bluetooth.c +++ b/arch/arm/mach-s3c24xx/h1940-bluetooth.c | |||
| @@ -62,7 +62,7 @@ static const struct rfkill_ops h1940bt_rfkill_ops = { | |||
| 62 | .set_block = h1940bt_set_block, | 62 | .set_block = h1940bt_set_block, |
| 63 | }; | 63 | }; |
| 64 | 64 | ||
| 65 | static int __devinit h1940bt_probe(struct platform_device *pdev) | 65 | static int h1940bt_probe(struct platform_device *pdev) |
| 66 | { | 66 | { |
| 67 | struct rfkill *rfk; | 67 | struct rfkill *rfk; |
| 68 | int ret = 0; | 68 | int ret = 0; |
diff --git a/arch/arm/mach-s3c24xx/mach-osiris-dvs.c b/arch/arm/mach-s3c24xx/mach-osiris-dvs.c index 5876c6ba7500..45e74363aaa9 100644 --- a/arch/arm/mach-s3c24xx/mach-osiris-dvs.c +++ b/arch/arm/mach-s3c24xx/mach-osiris-dvs.c | |||
| @@ -93,7 +93,7 @@ static struct notifier_block osiris_dvs_nb = { | |||
| 93 | .notifier_call = osiris_dvs_notify, | 93 | .notifier_call = osiris_dvs_notify, |
| 94 | }; | 94 | }; |
| 95 | 95 | ||
| 96 | static int __devinit osiris_dvs_probe(struct platform_device *pdev) | 96 | static int osiris_dvs_probe(struct platform_device *pdev) |
| 97 | { | 97 | { |
| 98 | int ret; | 98 | int ret; |
| 99 | 99 | ||
| @@ -126,7 +126,7 @@ err_nogpio: | |||
| 126 | return ret; | 126 | return ret; |
| 127 | } | 127 | } |
| 128 | 128 | ||
| 129 | static int __devexit osiris_dvs_remove(struct platform_device *pdev) | 129 | static int osiris_dvs_remove(struct platform_device *pdev) |
| 130 | { | 130 | { |
| 131 | dev_info(&pdev->dev, "exiting\n"); | 131 | dev_info(&pdev->dev, "exiting\n"); |
| 132 | 132 | ||
| @@ -167,7 +167,7 @@ static const struct dev_pm_ops osiris_dvs_pm = { | |||
| 167 | 167 | ||
| 168 | static struct platform_driver osiris_dvs_driver = { | 168 | static struct platform_driver osiris_dvs_driver = { |
| 169 | .probe = osiris_dvs_probe, | 169 | .probe = osiris_dvs_probe, |
| 170 | .remove = __devexit_p(osiris_dvs_remove), | 170 | .remove = osiris_dvs_remove, |
| 171 | .driver = { | 171 | .driver = { |
| 172 | .name = "osiris-dvs", | 172 | .name = "osiris-dvs", |
| 173 | .owner = THIS_MODULE, | 173 | .owner = THIS_MODULE, |
diff --git a/arch/arm/mach-s3c64xx/mach-crag6410-module.c b/arch/arm/mach-s3c64xx/mach-crag6410-module.c index c6d8dba90623..755c0bb119f4 100644 --- a/arch/arm/mach-s3c64xx/mach-crag6410-module.c +++ b/arch/arm/mach-s3c64xx/mach-crag6410-module.c | |||
| @@ -47,7 +47,7 @@ static struct spi_board_info wm1253_devs[] = { | |||
| 47 | .bus_num = 0, | 47 | .bus_num = 0, |
| 48 | .chip_select = 0, | 48 | .chip_select = 0, |
| 49 | .mode = SPI_MODE_0, | 49 | .mode = SPI_MODE_0, |
| 50 | .irq = S3C_EINT(5), | 50 | .irq = S3C_EINT(4), |
| 51 | .controller_data = &wm0010_spi_csinfo, | 51 | .controller_data = &wm0010_spi_csinfo, |
| 52 | .platform_data = &wm0010_pdata, | 52 | .platform_data = &wm0010_pdata, |
| 53 | }, | 53 | }, |
| @@ -290,7 +290,7 @@ static const struct i2c_board_info wm2200_i2c[] = { | |||
| 290 | .platform_data = &wm2200_pdata, }, | 290 | .platform_data = &wm2200_pdata, }, |
| 291 | }; | 291 | }; |
| 292 | 292 | ||
| 293 | static __devinitdata const struct { | 293 | static const struct { |
| 294 | u8 id; | 294 | u8 id; |
| 295 | u8 rev; | 295 | u8 rev; |
| 296 | const char *name; | 296 | const char *name; |
| @@ -343,8 +343,8 @@ static __devinitdata const struct { | |||
| 343 | .i2c_devs = wm2200_i2c, .num_i2c_devs = ARRAY_SIZE(wm2200_i2c) }, | 343 | .i2c_devs = wm2200_i2c, .num_i2c_devs = ARRAY_SIZE(wm2200_i2c) }, |
| 344 | }; | 344 | }; |
| 345 | 345 | ||
| 346 | static __devinit int wlf_gf_module_probe(struct i2c_client *i2c, | 346 | static int wlf_gf_module_probe(struct i2c_client *i2c, |
| 347 | const struct i2c_device_id *i2c_id) | 347 | const struct i2c_device_id *i2c_id) |
| 348 | { | 348 | { |
| 349 | int ret, i, j, id, rev; | 349 | int ret, i, j, id, rev; |
| 350 | 350 | ||
diff --git a/arch/arm/mach-s3c64xx/mach-crag6410.c b/arch/arm/mach-s3c64xx/mach-crag6410.c index cdde249166b5..bf6311a28f3d 100644 --- a/arch/arm/mach-s3c64xx/mach-crag6410.c +++ b/arch/arm/mach-s3c64xx/mach-crag6410.c | |||
| @@ -171,7 +171,7 @@ static struct fb_videomode crag6410_lcd_timing = { | |||
| 171 | }; | 171 | }; |
| 172 | 172 | ||
| 173 | /* 405566 clocks per frame => 60Hz refresh requires 24333960Hz clock */ | 173 | /* 405566 clocks per frame => 60Hz refresh requires 24333960Hz clock */ |
| 174 | static struct s3c_fb_platdata crag6410_lcd_pdata __devinitdata = { | 174 | static struct s3c_fb_platdata crag6410_lcd_pdata = { |
| 175 | .setup_gpio = s3c64xx_fb_gpio_setup_24bpp, | 175 | .setup_gpio = s3c64xx_fb_gpio_setup_24bpp, |
| 176 | .vtiming = &crag6410_lcd_timing, | 176 | .vtiming = &crag6410_lcd_timing, |
| 177 | .win[0] = &crag6410_fb_win0, | 177 | .win[0] = &crag6410_fb_win0, |
| @@ -181,7 +181,7 @@ static struct s3c_fb_platdata crag6410_lcd_pdata __devinitdata = { | |||
| 181 | 181 | ||
| 182 | /* 2x6 keypad */ | 182 | /* 2x6 keypad */ |
| 183 | 183 | ||
| 184 | static uint32_t crag6410_keymap[] __devinitdata = { | 184 | static uint32_t crag6410_keymap[] = { |
| 185 | /* KEY(row, col, keycode) */ | 185 | /* KEY(row, col, keycode) */ |
| 186 | KEY(0, 0, KEY_VOLUMEUP), | 186 | KEY(0, 0, KEY_VOLUMEUP), |
| 187 | KEY(0, 1, KEY_HOME), | 187 | KEY(0, 1, KEY_HOME), |
| @@ -197,12 +197,12 @@ static uint32_t crag6410_keymap[] __devinitdata = { | |||
| 197 | KEY(1, 5, KEY_CAMERA), | 197 | KEY(1, 5, KEY_CAMERA), |
| 198 | }; | 198 | }; |
| 199 | 199 | ||
| 200 | static struct matrix_keymap_data crag6410_keymap_data __devinitdata = { | 200 | static struct matrix_keymap_data crag6410_keymap_data = { |
| 201 | .keymap = crag6410_keymap, | 201 | .keymap = crag6410_keymap, |
| 202 | .keymap_size = ARRAY_SIZE(crag6410_keymap), | 202 | .keymap_size = ARRAY_SIZE(crag6410_keymap), |
| 203 | }; | 203 | }; |
| 204 | 204 | ||
| 205 | static struct samsung_keypad_platdata crag6410_keypad_data __devinitdata = { | 205 | static struct samsung_keypad_platdata crag6410_keypad_data = { |
| 206 | .keymap_data = &crag6410_keymap_data, | 206 | .keymap_data = &crag6410_keymap_data, |
| 207 | .rows = 2, | 207 | .rows = 2, |
| 208 | .cols = 6, | 208 | .cols = 6, |
| @@ -407,11 +407,11 @@ static struct wm831x_buckv_pdata vddarm_pdata = { | |||
| 407 | .dvs_gpio = S3C64XX_GPK(0), | 407 | .dvs_gpio = S3C64XX_GPK(0), |
| 408 | }; | 408 | }; |
| 409 | 409 | ||
| 410 | static struct regulator_consumer_supply vddarm_consumers[] __devinitdata = { | 410 | static struct regulator_consumer_supply vddarm_consumers[] = { |
| 411 | REGULATOR_SUPPLY("vddarm", NULL), | 411 | REGULATOR_SUPPLY("vddarm", NULL), |
| 412 | }; | 412 | }; |
| 413 | 413 | ||
| 414 | static struct regulator_init_data vddarm __devinitdata = { | 414 | static struct regulator_init_data vddarm = { |
| 415 | .constraints = { | 415 | .constraints = { |
| 416 | .name = "VDDARM", | 416 | .name = "VDDARM", |
| 417 | .min_uV = 1000000, | 417 | .min_uV = 1000000, |
| @@ -425,11 +425,11 @@ static struct regulator_init_data vddarm __devinitdata = { | |||
| 425 | .driver_data = &vddarm_pdata, | 425 | .driver_data = &vddarm_pdata, |
| 426 | }; | 426 | }; |
| 427 | 427 | ||
| 428 | static struct regulator_consumer_supply vddint_consumers[] __devinitdata = { | 428 | static struct regulator_consumer_supply vddint_consumers[] = { |
| 429 | REGULATOR_SUPPLY("vddint", NULL), | 429 | REGULATOR_SUPPLY("vddint", NULL), |
| 430 | }; | 430 | }; |
| 431 | 431 | ||
| 432 | static struct regulator_init_data vddint __devinitdata = { | 432 | static struct regulator_init_data vddint = { |
| 433 | .constraints = { | 433 | .constraints = { |
| 434 | .name = "VDDINT", | 434 | .name = "VDDINT", |
| 435 | .min_uV = 1000000, | 435 | .min_uV = 1000000, |
| @@ -442,27 +442,27 @@ static struct regulator_init_data vddint __devinitdata = { | |||
| 442 | .supply_regulator = "WALLVDD", | 442 | .supply_regulator = "WALLVDD", |
| 443 | }; | 443 | }; |
| 444 | 444 | ||
| 445 | static struct regulator_init_data vddmem __devinitdata = { | 445 | static struct regulator_init_data vddmem = { |
| 446 | .constraints = { | 446 | .constraints = { |
| 447 | .name = "VDDMEM", | 447 | .name = "VDDMEM", |
| 448 | .always_on = 1, | 448 | .always_on = 1, |
| 449 | }, | 449 | }, |
| 450 | }; | 450 | }; |
| 451 | 451 | ||
| 452 | static struct regulator_init_data vddsys __devinitdata = { | 452 | static struct regulator_init_data vddsys = { |
| 453 | .constraints = { | 453 | .constraints = { |
| 454 | .name = "VDDSYS,VDDEXT,VDDPCM,VDDSS", | 454 | .name = "VDDSYS,VDDEXT,VDDPCM,VDDSS", |
| 455 | .always_on = 1, | 455 | .always_on = 1, |
| 456 | }, | 456 | }, |
| 457 | }; | 457 | }; |
| 458 | 458 | ||
| 459 | static struct regulator_consumer_supply vddmmc_consumers[] __devinitdata = { | 459 | static struct regulator_consumer_supply vddmmc_consumers[] = { |
| 460 | REGULATOR_SUPPLY("vmmc", "s3c-sdhci.0"), | 460 | REGULATOR_SUPPLY("vmmc", "s3c-sdhci.0"), |
| 461 | REGULATOR_SUPPLY("vmmc", "s3c-sdhci.1"), | 461 | REGULATOR_SUPPLY("vmmc", "s3c-sdhci.1"), |
| 462 | REGULATOR_SUPPLY("vmmc", "s3c-sdhci.2"), | 462 | REGULATOR_SUPPLY("vmmc", "s3c-sdhci.2"), |
| 463 | }; | 463 | }; |
| 464 | 464 | ||
| 465 | static struct regulator_init_data vddmmc __devinitdata = { | 465 | static struct regulator_init_data vddmmc = { |
| 466 | .constraints = { | 466 | .constraints = { |
| 467 | .name = "VDDMMC,UH", | 467 | .name = "VDDMMC,UH", |
| 468 | .always_on = 1, | 468 | .always_on = 1, |
| @@ -472,7 +472,7 @@ static struct regulator_init_data vddmmc __devinitdata = { | |||
| 472 | .supply_regulator = "WALLVDD", | 472 | .supply_regulator = "WALLVDD", |
| 473 | }; | 473 | }; |
| 474 | 474 | ||
| 475 | static struct regulator_init_data vddotgi __devinitdata = { | 475 | static struct regulator_init_data vddotgi = { |
| 476 | .constraints = { | 476 | .constraints = { |
| 477 | .name = "VDDOTGi", | 477 | .name = "VDDOTGi", |
| 478 | .always_on = 1, | 478 | .always_on = 1, |
| @@ -480,7 +480,7 @@ static struct regulator_init_data vddotgi __devinitdata = { | |||
| 480 | .supply_regulator = "WALLVDD", | 480 | .supply_regulator = "WALLVDD", |
| 481 | }; | 481 | }; |
| 482 | 482 | ||
| 483 | static struct regulator_init_data vddotg __devinitdata = { | 483 | static struct regulator_init_data vddotg = { |
| 484 | .constraints = { | 484 | .constraints = { |
| 485 | .name = "VDDOTG", | 485 | .name = "VDDOTG", |
| 486 | .always_on = 1, | 486 | .always_on = 1, |
| @@ -488,7 +488,7 @@ static struct regulator_init_data vddotg __devinitdata = { | |||
| 488 | .supply_regulator = "WALLVDD", | 488 | .supply_regulator = "WALLVDD", |
| 489 | }; | 489 | }; |
| 490 | 490 | ||
| 491 | static struct regulator_init_data vddhi __devinitdata = { | 491 | static struct regulator_init_data vddhi = { |
| 492 | .constraints = { | 492 | .constraints = { |
| 493 | .name = "VDDHI", | 493 | .name = "VDDHI", |
| 494 | .always_on = 1, | 494 | .always_on = 1, |
| @@ -496,7 +496,7 @@ static struct regulator_init_data vddhi __devinitdata = { | |||
| 496 | .supply_regulator = "WALLVDD", | 496 | .supply_regulator = "WALLVDD", |
| 497 | }; | 497 | }; |
| 498 | 498 | ||
| 499 | static struct regulator_init_data vddadc __devinitdata = { | 499 | static struct regulator_init_data vddadc = { |
| 500 | .constraints = { | 500 | .constraints = { |
| 501 | .name = "VDDADC,VDDDAC", | 501 | .name = "VDDADC,VDDDAC", |
| 502 | .always_on = 1, | 502 | .always_on = 1, |
| @@ -504,7 +504,7 @@ static struct regulator_init_data vddadc __devinitdata = { | |||
| 504 | .supply_regulator = "WALLVDD", | 504 | .supply_regulator = "WALLVDD", |
| 505 | }; | 505 | }; |
| 506 | 506 | ||
| 507 | static struct regulator_init_data vddmem0 __devinitdata = { | 507 | static struct regulator_init_data vddmem0 = { |
| 508 | .constraints = { | 508 | .constraints = { |
| 509 | .name = "VDDMEM0", | 509 | .name = "VDDMEM0", |
| 510 | .always_on = 1, | 510 | .always_on = 1, |
| @@ -512,7 +512,7 @@ static struct regulator_init_data vddmem0 __devinitdata = { | |||
| 512 | .supply_regulator = "WALLVDD", | 512 | .supply_regulator = "WALLVDD", |
| 513 | }; | 513 | }; |
| 514 | 514 | ||
| 515 | static struct regulator_init_data vddpll __devinitdata = { | 515 | static struct regulator_init_data vddpll = { |
| 516 | .constraints = { | 516 | .constraints = { |
| 517 | .name = "VDDPLL", | 517 | .name = "VDDPLL", |
| 518 | .always_on = 1, | 518 | .always_on = 1, |
| @@ -520,7 +520,7 @@ static struct regulator_init_data vddpll __devinitdata = { | |||
| 520 | .supply_regulator = "WALLVDD", | 520 | .supply_regulator = "WALLVDD", |
| 521 | }; | 521 | }; |
| 522 | 522 | ||
| 523 | static struct regulator_init_data vddlcd __devinitdata = { | 523 | static struct regulator_init_data vddlcd = { |
| 524 | .constraints = { | 524 | .constraints = { |
| 525 | .name = "VDDLCD", | 525 | .name = "VDDLCD", |
| 526 | .always_on = 1, | 526 | .always_on = 1, |
| @@ -528,7 +528,7 @@ static struct regulator_init_data vddlcd __devinitdata = { | |||
| 528 | .supply_regulator = "WALLVDD", | 528 | .supply_regulator = "WALLVDD", |
| 529 | }; | 529 | }; |
| 530 | 530 | ||
| 531 | static struct regulator_init_data vddalive __devinitdata = { | 531 | static struct regulator_init_data vddalive = { |
| 532 | .constraints = { | 532 | .constraints = { |
| 533 | .name = "VDDALIVE", | 533 | .name = "VDDALIVE", |
| 534 | .always_on = 1, | 534 | .always_on = 1, |
| @@ -536,28 +536,28 @@ static struct regulator_init_data vddalive __devinitdata = { | |||
| 536 | .supply_regulator = "WALLVDD", | 536 | .supply_regulator = "WALLVDD", |
| 537 | }; | 537 | }; |
| 538 | 538 | ||
| 539 | static struct wm831x_backup_pdata banff_backup_pdata __devinitdata = { | 539 | static struct wm831x_backup_pdata banff_backup_pdata = { |
| 540 | .charger_enable = 1, | 540 | .charger_enable = 1, |
| 541 | .vlim = 2500, /* mV */ | 541 | .vlim = 2500, /* mV */ |
| 542 | .ilim = 200, /* uA */ | 542 | .ilim = 200, /* uA */ |
| 543 | }; | 543 | }; |
| 544 | 544 | ||
| 545 | static struct wm831x_status_pdata banff_red_led __devinitdata = { | 545 | static struct wm831x_status_pdata banff_red_led = { |
| 546 | .name = "banff:red:", | 546 | .name = "banff:red:", |
| 547 | .default_src = WM831X_STATUS_MANUAL, | 547 | .default_src = WM831X_STATUS_MANUAL, |
| 548 | }; | 548 | }; |
| 549 | 549 | ||
| 550 | static struct wm831x_status_pdata banff_green_led __devinitdata = { | 550 | static struct wm831x_status_pdata banff_green_led = { |
| 551 | .name = "banff:green:", | 551 | .name = "banff:green:", |
| 552 | .default_src = WM831X_STATUS_MANUAL, | 552 | .default_src = WM831X_STATUS_MANUAL, |
| 553 | }; | 553 | }; |
| 554 | 554 | ||
| 555 | static struct wm831x_touch_pdata touch_pdata __devinitdata = { | 555 | static struct wm831x_touch_pdata touch_pdata = { |
| 556 | .data_irq = S3C_EINT(26), | 556 | .data_irq = S3C_EINT(26), |
| 557 | .pd_irq = S3C_EINT(27), | 557 | .pd_irq = S3C_EINT(27), |
| 558 | }; | 558 | }; |
| 559 | 559 | ||
| 560 | static struct wm831x_pdata crag_pmic_pdata __devinitdata = { | 560 | static struct wm831x_pdata crag_pmic_pdata = { |
| 561 | .wm831x_num = 1, | 561 | .wm831x_num = 1, |
| 562 | .gpio_base = BANFF_PMIC_GPIO_BASE, | 562 | .gpio_base = BANFF_PMIC_GPIO_BASE, |
| 563 | .soft_shutdown = true, | 563 | .soft_shutdown = true, |
| @@ -601,7 +601,7 @@ static struct wm831x_pdata crag_pmic_pdata __devinitdata = { | |||
| 601 | .touch = &touch_pdata, | 601 | .touch = &touch_pdata, |
| 602 | }; | 602 | }; |
| 603 | 603 | ||
| 604 | static struct i2c_board_info i2c_devs0[] __devinitdata = { | 604 | static struct i2c_board_info i2c_devs0[] = { |
| 605 | { I2C_BOARD_INFO("24c08", 0x50), }, | 605 | { I2C_BOARD_INFO("24c08", 0x50), }, |
| 606 | { I2C_BOARD_INFO("tca6408", 0x20), | 606 | { I2C_BOARD_INFO("tca6408", 0x20), |
| 607 | .platform_data = &crag6410_pca_data, | 607 | .platform_data = &crag6410_pca_data, |
| @@ -616,13 +616,13 @@ static struct s3c2410_platform_i2c i2c0_pdata = { | |||
| 616 | .frequency = 400000, | 616 | .frequency = 400000, |
| 617 | }; | 617 | }; |
| 618 | 618 | ||
| 619 | static struct regulator_consumer_supply pvdd_1v2_consumers[] __devinitdata = { | 619 | static struct regulator_consumer_supply pvdd_1v2_consumers[] = { |
| 620 | REGULATOR_SUPPLY("DCVDD", "spi0.0"), | 620 | REGULATOR_SUPPLY("DCVDD", "spi0.0"), |
| 621 | REGULATOR_SUPPLY("AVDD", "spi0.0"), | 621 | REGULATOR_SUPPLY("AVDD", "spi0.0"), |
| 622 | REGULATOR_SUPPLY("AVDD", "spi0.1"), | 622 | REGULATOR_SUPPLY("AVDD", "spi0.1"), |
| 623 | }; | 623 | }; |
| 624 | 624 | ||
| 625 | static struct regulator_init_data pvdd_1v2 __devinitdata = { | 625 | static struct regulator_init_data pvdd_1v2 = { |
| 626 | .constraints = { | 626 | .constraints = { |
| 627 | .name = "PVDD_1V2", | 627 | .name = "PVDD_1V2", |
| 628 | .valid_ops_mask = REGULATOR_CHANGE_STATUS, | 628 | .valid_ops_mask = REGULATOR_CHANGE_STATUS, |
| @@ -632,7 +632,7 @@ static struct regulator_init_data pvdd_1v2 __devinitdata = { | |||
| 632 | .num_consumer_supplies = ARRAY_SIZE(pvdd_1v2_consumers), | 632 | .num_consumer_supplies = ARRAY_SIZE(pvdd_1v2_consumers), |
| 633 | }; | 633 | }; |
| 634 | 634 | ||
| 635 | static struct regulator_consumer_supply pvdd_1v8_consumers[] __devinitdata = { | 635 | static struct regulator_consumer_supply pvdd_1v8_consumers[] = { |
| 636 | REGULATOR_SUPPLY("LDOVDD", "1-001a"), | 636 | REGULATOR_SUPPLY("LDOVDD", "1-001a"), |
| 637 | REGULATOR_SUPPLY("PLLVDD", "1-001a"), | 637 | REGULATOR_SUPPLY("PLLVDD", "1-001a"), |
| 638 | REGULATOR_SUPPLY("DBVDD", "1-001a"), | 638 | REGULATOR_SUPPLY("DBVDD", "1-001a"), |
| @@ -664,7 +664,7 @@ static struct regulator_consumer_supply pvdd_1v8_consumers[] __devinitdata = { | |||
| 664 | REGULATOR_SUPPLY("CPVDD", "wm5110-codec"), | 664 | REGULATOR_SUPPLY("CPVDD", "wm5110-codec"), |
| 665 | }; | 665 | }; |
| 666 | 666 | ||
| 667 | static struct regulator_init_data pvdd_1v8 __devinitdata = { | 667 | static struct regulator_init_data pvdd_1v8 = { |
| 668 | .constraints = { | 668 | .constraints = { |
| 669 | .name = "PVDD_1V8", | 669 | .name = "PVDD_1V8", |
| 670 | .always_on = 1, | 670 | .always_on = 1, |
| @@ -674,12 +674,12 @@ static struct regulator_init_data pvdd_1v8 __devinitdata = { | |||
| 674 | .num_consumer_supplies = ARRAY_SIZE(pvdd_1v8_consumers), | 674 | .num_consumer_supplies = ARRAY_SIZE(pvdd_1v8_consumers), |
| 675 | }; | 675 | }; |
| 676 | 676 | ||
| 677 | static struct regulator_consumer_supply pvdd_3v3_consumers[] __devinitdata = { | 677 | static struct regulator_consumer_supply pvdd_3v3_consumers[] = { |
| 678 | REGULATOR_SUPPLY("MICVDD", "1-001a"), | 678 | REGULATOR_SUPPLY("MICVDD", "1-001a"), |
| 679 | REGULATOR_SUPPLY("AVDD1", "1-001a"), | 679 | REGULATOR_SUPPLY("AVDD1", "1-001a"), |
| 680 | }; | 680 | }; |
| 681 | 681 | ||
| 682 | static struct regulator_init_data pvdd_3v3 __devinitdata = { | 682 | static struct regulator_init_data pvdd_3v3 = { |
| 683 | .constraints = { | 683 | .constraints = { |
| 684 | .name = "PVDD_3V3", | 684 | .name = "PVDD_3V3", |
| 685 | .always_on = 1, | 685 | .always_on = 1, |
| @@ -689,7 +689,7 @@ static struct regulator_init_data pvdd_3v3 __devinitdata = { | |||
| 689 | .num_consumer_supplies = ARRAY_SIZE(pvdd_3v3_consumers), | 689 | .num_consumer_supplies = ARRAY_SIZE(pvdd_3v3_consumers), |
| 690 | }; | 690 | }; |
| 691 | 691 | ||
| 692 | static struct wm831x_pdata glenfarclas_pmic_pdata __devinitdata = { | 692 | static struct wm831x_pdata glenfarclas_pmic_pdata = { |
| 693 | .wm831x_num = 2, | 693 | .wm831x_num = 2, |
| 694 | .irq_base = GLENFARCLAS_PMIC_IRQ_BASE, | 694 | .irq_base = GLENFARCLAS_PMIC_IRQ_BASE, |
| 695 | .gpio_base = GLENFARCLAS_PMIC_GPIO_BASE, | 695 | .gpio_base = GLENFARCLAS_PMIC_GPIO_BASE, |
| @@ -721,7 +721,7 @@ static struct wm1250_ev1_pdata wm1250_ev1_pdata = { | |||
| 721 | }, | 721 | }, |
| 722 | }; | 722 | }; |
| 723 | 723 | ||
| 724 | static struct i2c_board_info i2c_devs1[] __devinitdata = { | 724 | static struct i2c_board_info i2c_devs1[] = { |
| 725 | { I2C_BOARD_INFO("wm8311", 0x34), | 725 | { I2C_BOARD_INFO("wm8311", 0x34), |
| 726 | .irq = S3C_EINT(0), | 726 | .irq = S3C_EINT(0), |
| 727 | .platform_data = &glenfarclas_pmic_pdata }, | 727 | .platform_data = &glenfarclas_pmic_pdata }, |
diff --git a/arch/arm/mach-s3c64xx/pm.c b/arch/arm/mach-s3c64xx/pm.c index 7feb426fc202..d2e1a16690bd 100644 --- a/arch/arm/mach-s3c64xx/pm.c +++ b/arch/arm/mach-s3c64xx/pm.c | |||
| @@ -338,8 +338,10 @@ int __init s3c64xx_pm_init(void) | |||
| 338 | for (i = 0; i < ARRAY_SIZE(s3c64xx_pm_domains); i++) | 338 | for (i = 0; i < ARRAY_SIZE(s3c64xx_pm_domains); i++) |
| 339 | pm_genpd_init(&s3c64xx_pm_domains[i]->pd, NULL, false); | 339 | pm_genpd_init(&s3c64xx_pm_domains[i]->pd, NULL, false); |
| 340 | 340 | ||
| 341 | #ifdef CONFIG_S3C_DEV_FB | ||
| 341 | if (dev_get_platdata(&s3c_device_fb.dev)) | 342 | if (dev_get_platdata(&s3c_device_fb.dev)) |
| 342 | pm_genpd_add_device(&s3c64xx_pm_f.pd, &s3c_device_fb.dev); | 343 | pm_genpd_add_device(&s3c64xx_pm_f.pd, &s3c_device_fb.dev); |
| 344 | #endif | ||
| 343 | 345 | ||
| 344 | return 0; | 346 | return 0; |
| 345 | } | 347 | } |
diff --git a/arch/arm/mach-sa1100/jornada720_ssp.c b/arch/arm/mach-sa1100/jornada720_ssp.c index 7f07f08d8968..b143c4659346 100644 --- a/arch/arm/mach-sa1100/jornada720_ssp.c +++ b/arch/arm/mach-sa1100/jornada720_ssp.c | |||
| @@ -130,7 +130,7 @@ void jornada_ssp_end(void) | |||
| 130 | }; | 130 | }; |
| 131 | EXPORT_SYMBOL(jornada_ssp_end); | 131 | EXPORT_SYMBOL(jornada_ssp_end); |
| 132 | 132 | ||
| 133 | static int __devinit jornada_ssp_probe(struct platform_device *dev) | 133 | static int jornada_ssp_probe(struct platform_device *dev) |
| 134 | { | 134 | { |
| 135 | int ret; | 135 | int ret; |
| 136 | 136 | ||
diff --git a/arch/arm/mach-sa1100/neponset.c b/arch/arm/mach-sa1100/neponset.c index 88be0474f3d7..400f80332046 100644 --- a/arch/arm/mach-sa1100/neponset.c +++ b/arch/arm/mach-sa1100/neponset.c | |||
| @@ -154,7 +154,7 @@ static u_int neponset_get_mctrl(struct uart_port *port) | |||
| 154 | return ret; | 154 | return ret; |
| 155 | } | 155 | } |
| 156 | 156 | ||
| 157 | static struct sa1100_port_fns neponset_port_fns __devinitdata = { | 157 | static struct sa1100_port_fns neponset_port_fns = { |
| 158 | .set_mctrl = neponset_set_mctrl, | 158 | .set_mctrl = neponset_set_mctrl, |
| 159 | .get_mctrl = neponset_get_mctrl, | 159 | .get_mctrl = neponset_get_mctrl, |
| 160 | }; | 160 | }; |
| @@ -233,7 +233,7 @@ static struct sa1111_platform_data sa1111_info = { | |||
| 233 | .disable_devs = SA1111_DEVID_PS2_MSE, | 233 | .disable_devs = SA1111_DEVID_PS2_MSE, |
| 234 | }; | 234 | }; |
| 235 | 235 | ||
| 236 | static int __devinit neponset_probe(struct platform_device *dev) | 236 | static int neponset_probe(struct platform_device *dev) |
| 237 | { | 237 | { |
| 238 | struct neponset_drvdata *d; | 238 | struct neponset_drvdata *d; |
| 239 | struct resource *nep_res, *sa1111_res, *smc91x_res; | 239 | struct resource *nep_res, *sa1111_res, *smc91x_res; |
| @@ -368,7 +368,7 @@ static int __devinit neponset_probe(struct platform_device *dev) | |||
| 368 | return ret; | 368 | return ret; |
| 369 | } | 369 | } |
| 370 | 370 | ||
| 371 | static int __devexit neponset_remove(struct platform_device *dev) | 371 | static int neponset_remove(struct platform_device *dev) |
| 372 | { | 372 | { |
| 373 | struct neponset_drvdata *d = platform_get_drvdata(dev); | 373 | struct neponset_drvdata *d = platform_get_drvdata(dev); |
| 374 | int irq = platform_get_irq(dev, 0); | 374 | int irq = platform_get_irq(dev, 0); |
| @@ -420,7 +420,7 @@ static const struct dev_pm_ops neponset_pm_ops = { | |||
| 420 | 420 | ||
| 421 | static struct platform_driver neponset_device_driver = { | 421 | static struct platform_driver neponset_device_driver = { |
| 422 | .probe = neponset_probe, | 422 | .probe = neponset_probe, |
| 423 | .remove = __devexit_p(neponset_remove), | 423 | .remove = neponset_remove, |
| 424 | .driver = { | 424 | .driver = { |
| 425 | .name = "neponset", | 425 | .name = "neponset", |
| 426 | .owner = THIS_MODULE, | 426 | .owner = THIS_MODULE, |
diff --git a/arch/arm/mach-tegra/pcie.c b/arch/arm/mach-tegra/pcie.c index 53d085871798..bffcd643d7a3 100644 --- a/arch/arm/mach-tegra/pcie.c +++ b/arch/arm/mach-tegra/pcie.c | |||
| @@ -331,7 +331,7 @@ static struct pci_ops tegra_pcie_ops = { | |||
| 331 | .write = tegra_pcie_write_conf, | 331 | .write = tegra_pcie_write_conf, |
| 332 | }; | 332 | }; |
| 333 | 333 | ||
| 334 | static void __devinit tegra_pcie_fixup_bridge(struct pci_dev *dev) | 334 | static void tegra_pcie_fixup_bridge(struct pci_dev *dev) |
| 335 | { | 335 | { |
| 336 | u16 reg; | 336 | u16 reg; |
| 337 | 337 | ||
| @@ -345,7 +345,7 @@ static void __devinit tegra_pcie_fixup_bridge(struct pci_dev *dev) | |||
| 345 | DECLARE_PCI_FIXUP_FINAL(PCI_ANY_ID, PCI_ANY_ID, tegra_pcie_fixup_bridge); | 345 | DECLARE_PCI_FIXUP_FINAL(PCI_ANY_ID, PCI_ANY_ID, tegra_pcie_fixup_bridge); |
| 346 | 346 | ||
| 347 | /* Tegra PCIE root complex wrongly reports device class */ | 347 | /* Tegra PCIE root complex wrongly reports device class */ |
| 348 | static void __devinit tegra_pcie_fixup_class(struct pci_dev *dev) | 348 | static void tegra_pcie_fixup_class(struct pci_dev *dev) |
| 349 | { | 349 | { |
| 350 | dev->class = PCI_CLASS_BRIDGE_PCI << 8; | 350 | dev->class = PCI_CLASS_BRIDGE_PCI << 8; |
| 351 | } | 351 | } |
| @@ -353,7 +353,7 @@ DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_NVIDIA, 0x0bf0, tegra_pcie_fixup_class); | |||
| 353 | DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_NVIDIA, 0x0bf1, tegra_pcie_fixup_class); | 353 | DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_NVIDIA, 0x0bf1, tegra_pcie_fixup_class); |
| 354 | 354 | ||
| 355 | /* Tegra PCIE requires relaxed ordering */ | 355 | /* Tegra PCIE requires relaxed ordering */ |
| 356 | static void __devinit tegra_pcie_relax_enable(struct pci_dev *dev) | 356 | static void tegra_pcie_relax_enable(struct pci_dev *dev) |
| 357 | { | 357 | { |
| 358 | pcie_capability_set_word(dev, PCI_EXP_DEVCTL, PCI_EXP_DEVCTL_RELAX_EN); | 358 | pcie_capability_set_word(dev, PCI_EXP_DEVCTL, PCI_EXP_DEVCTL_RELAX_EN); |
| 359 | } | 359 | } |
diff --git a/arch/arm/mach-tegra/tegra2_emc.c b/arch/arm/mach-tegra/tegra2_emc.c index 837c7b9ea63b..e18aa2f83ebf 100644 --- a/arch/arm/mach-tegra/tegra2_emc.c +++ b/arch/arm/mach-tegra/tegra2_emc.c | |||
| @@ -268,7 +268,7 @@ static struct tegra_emc_pdata *tegra_emc_dt_parse_pdata( | |||
| 268 | } | 268 | } |
| 269 | #endif | 269 | #endif |
| 270 | 270 | ||
| 271 | static struct tegra_emc_pdata __devinit *tegra_emc_fill_pdata(struct platform_device *pdev) | 271 | static struct tegra_emc_pdata *tegra_emc_fill_pdata(struct platform_device *pdev) |
| 272 | { | 272 | { |
| 273 | struct clk *c = clk_get_sys(NULL, "emc"); | 273 | struct clk *c = clk_get_sys(NULL, "emc"); |
| 274 | struct tegra_emc_pdata *pdata; | 274 | struct tegra_emc_pdata *pdata; |
| @@ -296,7 +296,7 @@ static struct tegra_emc_pdata __devinit *tegra_emc_fill_pdata(struct platform_de | |||
| 296 | return pdata; | 296 | return pdata; |
| 297 | } | 297 | } |
| 298 | 298 | ||
| 299 | static int __devinit tegra_emc_probe(struct platform_device *pdev) | 299 | static int tegra_emc_probe(struct platform_device *pdev) |
| 300 | { | 300 | { |
| 301 | struct tegra_emc_pdata *pdata; | 301 | struct tegra_emc_pdata *pdata; |
| 302 | struct resource *res; | 302 | struct resource *res; |
| @@ -333,7 +333,7 @@ static int __devinit tegra_emc_probe(struct platform_device *pdev) | |||
| 333 | return 0; | 333 | return 0; |
| 334 | } | 334 | } |
| 335 | 335 | ||
| 336 | static struct of_device_id tegra_emc_of_match[] __devinitdata = { | 336 | static struct of_device_id tegra_emc_of_match[] = { |
| 337 | { .compatible = "nvidia,tegra20-emc", }, | 337 | { .compatible = "nvidia,tegra20-emc", }, |
| 338 | { }, | 338 | { }, |
| 339 | }; | 339 | }; |
diff --git a/arch/arm/mach-u300/dummyspichip.c b/arch/arm/mach-u300/dummyspichip.c index 03f793612594..2785cb67b5e8 100644 --- a/arch/arm/mach-u300/dummyspichip.c +++ b/arch/arm/mach-u300/dummyspichip.c | |||
| @@ -222,7 +222,7 @@ static ssize_t dummy_looptest(struct device *dev, | |||
| 222 | 222 | ||
| 223 | static DEVICE_ATTR(looptest, S_IRUGO, dummy_looptest, NULL); | 223 | static DEVICE_ATTR(looptest, S_IRUGO, dummy_looptest, NULL); |
| 224 | 224 | ||
| 225 | static int __devinit pl022_dummy_probe(struct spi_device *spi) | 225 | static int pl022_dummy_probe(struct spi_device *spi) |
| 226 | { | 226 | { |
| 227 | struct dummy *p_dummy; | 227 | struct dummy *p_dummy; |
| 228 | int status; | 228 | int status; |
| @@ -251,7 +251,7 @@ out_dev_create_looptest_failed: | |||
| 251 | return status; | 251 | return status; |
| 252 | } | 252 | } |
| 253 | 253 | ||
| 254 | static int __devexit pl022_dummy_remove(struct spi_device *spi) | 254 | static int pl022_dummy_remove(struct spi_device *spi) |
| 255 | { | 255 | { |
| 256 | struct dummy *p_dummy = dev_get_drvdata(&spi->dev); | 256 | struct dummy *p_dummy = dev_get_drvdata(&spi->dev); |
| 257 | 257 | ||
| @@ -269,7 +269,7 @@ static struct spi_driver pl022_dummy_driver = { | |||
| 269 | .owner = THIS_MODULE, | 269 | .owner = THIS_MODULE, |
| 270 | }, | 270 | }, |
| 271 | .probe = pl022_dummy_probe, | 271 | .probe = pl022_dummy_probe, |
| 272 | .remove = __devexit_p(pl022_dummy_remove), | 272 | .remove = pl022_dummy_remove, |
| 273 | }; | 273 | }; |
| 274 | 274 | ||
| 275 | static int __init pl022_init_dummy(void) | 275 | static int __init pl022_init_dummy(void) |
diff --git a/arch/arm/mach-ux500/cpu-db8500.c b/arch/arm/mach-ux500/cpu-db8500.c index db0bb75e2c76..5b286e06474c 100644 --- a/arch/arm/mach-ux500/cpu-db8500.c +++ b/arch/arm/mach-ux500/cpu-db8500.c | |||
| @@ -285,7 +285,8 @@ static struct of_dev_auxdata u8500_auxdata_lookup[] __initdata = { | |||
| 285 | OF_DEV_AUXDATA("st,nomadik-i2c", 0x80110000, "nmk-i2c.3", NULL), | 285 | OF_DEV_AUXDATA("st,nomadik-i2c", 0x80110000, "nmk-i2c.3", NULL), |
| 286 | OF_DEV_AUXDATA("st,nomadik-i2c", 0x8012a000, "nmk-i2c.4", NULL), | 286 | OF_DEV_AUXDATA("st,nomadik-i2c", 0x8012a000, "nmk-i2c.4", NULL), |
| 287 | /* Requires device name bindings. */ | 287 | /* Requires device name bindings. */ |
| 288 | OF_DEV_AUXDATA("stericsson,nmk_pinctrl", 0, "pinctrl-db8500", NULL), | 288 | OF_DEV_AUXDATA("stericsson,nmk_pinctrl", U8500_PRCMU_BASE, |
| 289 | "pinctrl-db8500", NULL), | ||
| 289 | /* Requires clock name and DMA bindings. */ | 290 | /* Requires clock name and DMA bindings. */ |
| 290 | OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80123000, | 291 | OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80123000, |
| 291 | "ux500-msp-i2s.0", &msp0_platform_data), | 292 | "ux500-msp-i2s.0", &msp0_platform_data), |
diff --git a/arch/arm/mach-versatile/include/mach/irqs.h b/arch/arm/mach-versatile/include/mach/irqs.h index bf44c61bd1f6..0fd771ca617b 100644 --- a/arch/arm/mach-versatile/include/mach/irqs.h +++ b/arch/arm/mach-versatile/include/mach/irqs.h | |||
| @@ -25,7 +25,7 @@ | |||
| 25 | * IRQ interrupts definitions are the same as the INT definitions | 25 | * IRQ interrupts definitions are the same as the INT definitions |
| 26 | * held within platform.h | 26 | * held within platform.h |
| 27 | */ | 27 | */ |
| 28 | #define IRQ_VIC_START 0 | 28 | #define IRQ_VIC_START 32 |
| 29 | #define IRQ_WDOGINT (IRQ_VIC_START + INT_WDOGINT) | 29 | #define IRQ_WDOGINT (IRQ_VIC_START + INT_WDOGINT) |
| 30 | #define IRQ_SOFTINT (IRQ_VIC_START + INT_SOFTINT) | 30 | #define IRQ_SOFTINT (IRQ_VIC_START + INT_SOFTINT) |
| 31 | #define IRQ_COMMRx (IRQ_VIC_START + INT_COMMRx) | 31 | #define IRQ_COMMRx (IRQ_VIC_START + INT_COMMRx) |
| @@ -100,7 +100,7 @@ | |||
| 100 | /* | 100 | /* |
| 101 | * Secondary interrupt controller | 101 | * Secondary interrupt controller |
| 102 | */ | 102 | */ |
| 103 | #define IRQ_SIC_START 32 | 103 | #define IRQ_SIC_START 64 |
| 104 | #define IRQ_SIC_MMCI0B (IRQ_SIC_START + SIC_INT_MMCI0B) | 104 | #define IRQ_SIC_MMCI0B (IRQ_SIC_START + SIC_INT_MMCI0B) |
| 105 | #define IRQ_SIC_MMCI1B (IRQ_SIC_START + SIC_INT_MMCI1B) | 105 | #define IRQ_SIC_MMCI1B (IRQ_SIC_START + SIC_INT_MMCI1B) |
| 106 | #define IRQ_SIC_KMI0 (IRQ_SIC_START + SIC_INT_KMI0) | 106 | #define IRQ_SIC_KMI0 (IRQ_SIC_START + SIC_INT_KMI0) |
| @@ -120,7 +120,7 @@ | |||
| 120 | #define IRQ_SIC_PCI1 (IRQ_SIC_START + SIC_INT_PCI1) | 120 | #define IRQ_SIC_PCI1 (IRQ_SIC_START + SIC_INT_PCI1) |
| 121 | #define IRQ_SIC_PCI2 (IRQ_SIC_START + SIC_INT_PCI2) | 121 | #define IRQ_SIC_PCI2 (IRQ_SIC_START + SIC_INT_PCI2) |
| 122 | #define IRQ_SIC_PCI3 (IRQ_SIC_START + SIC_INT_PCI3) | 122 | #define IRQ_SIC_PCI3 (IRQ_SIC_START + SIC_INT_PCI3) |
| 123 | #define IRQ_SIC_END 63 | 123 | #define IRQ_SIC_END 95 |
| 124 | 124 | ||
| 125 | #define IRQ_GPIO0_START (IRQ_SIC_END + 1) | 125 | #define IRQ_GPIO0_START (IRQ_SIC_END + 1) |
| 126 | #define IRQ_GPIO0_END (IRQ_GPIO0_START + 31) | 126 | #define IRQ_GPIO0_END (IRQ_GPIO0_START + 31) |
diff --git a/arch/arm/mach-vexpress/Kconfig b/arch/arm/mach-vexpress/Kconfig index 99e63f5f99d1..52d315b792c8 100644 --- a/arch/arm/mach-vexpress/Kconfig +++ b/arch/arm/mach-vexpress/Kconfig | |||
| @@ -42,7 +42,6 @@ config ARCH_VEXPRESS_CORTEX_A5_A9_ERRATA | |||
| 42 | bool "Enable A5 and A9 only errata work-arounds" | 42 | bool "Enable A5 and A9 only errata work-arounds" |
| 43 | default y | 43 | default y |
| 44 | select ARM_ERRATA_720789 | 44 | select ARM_ERRATA_720789 |
| 45 | select ARM_ERRATA_751472 | ||
| 46 | select PL310_ERRATA_753970 if CACHE_PL310 | 45 | select PL310_ERRATA_753970 if CACHE_PL310 |
| 47 | help | 46 | help |
| 48 | Provides common dependencies for Versatile Express platforms | 47 | Provides common dependencies for Versatile Express platforms |
diff --git a/arch/arm/mm/cache-l2x0.c b/arch/arm/mm/cache-l2x0.c index 6911b8b2745c..c2f37390308a 100644 --- a/arch/arm/mm/cache-l2x0.c +++ b/arch/arm/mm/cache-l2x0.c | |||
| @@ -352,7 +352,8 @@ void __init l2x0_init(void __iomem *base, u32 aux_val, u32 aux_mask) | |||
| 352 | /* Unmapped register. */ | 352 | /* Unmapped register. */ |
| 353 | sync_reg_offset = L2X0_DUMMY_REG; | 353 | sync_reg_offset = L2X0_DUMMY_REG; |
| 354 | #endif | 354 | #endif |
| 355 | outer_cache.set_debug = pl310_set_debug; | 355 | if ((cache_id & L2X0_CACHE_ID_RTL_MASK) <= L2X0_CACHE_ID_RTL_R3P0) |
| 356 | outer_cache.set_debug = pl310_set_debug; | ||
| 356 | break; | 357 | break; |
| 357 | case L2X0_CACHE_ID_PART_L210: | 358 | case L2X0_CACHE_ID_PART_L210: |
| 358 | ways = (aux >> 13) & 0xf; | 359 | ways = (aux >> 13) & 0xf; |
| @@ -459,8 +460,8 @@ static void aurora_pa_range(unsigned long start, unsigned long end, | |||
| 459 | unsigned long flags; | 460 | unsigned long flags; |
| 460 | 461 | ||
| 461 | raw_spin_lock_irqsave(&l2x0_lock, flags); | 462 | raw_spin_lock_irqsave(&l2x0_lock, flags); |
| 462 | writel(start, l2x0_base + AURORA_RANGE_BASE_ADDR_REG); | 463 | writel_relaxed(start, l2x0_base + AURORA_RANGE_BASE_ADDR_REG); |
| 463 | writel(end, l2x0_base + offset); | 464 | writel_relaxed(end, l2x0_base + offset); |
| 464 | raw_spin_unlock_irqrestore(&l2x0_lock, flags); | 465 | raw_spin_unlock_irqrestore(&l2x0_lock, flags); |
| 465 | 466 | ||
| 466 | cache_sync(); | 467 | cache_sync(); |
| @@ -505,15 +506,21 @@ static void aurora_clean_range(unsigned long start, unsigned long end) | |||
| 505 | 506 | ||
| 506 | static void aurora_flush_range(unsigned long start, unsigned long end) | 507 | static void aurora_flush_range(unsigned long start, unsigned long end) |
| 507 | { | 508 | { |
| 508 | if (!l2_wt_override) { | 509 | start &= ~(CACHE_LINE_SIZE - 1); |
| 509 | start &= ~(CACHE_LINE_SIZE - 1); | 510 | end = ALIGN(end, CACHE_LINE_SIZE); |
| 510 | end = ALIGN(end, CACHE_LINE_SIZE); | 511 | while (start != end) { |
| 511 | while (start != end) { | 512 | unsigned long range_end = calc_range_end(start, end); |
| 512 | unsigned long range_end = calc_range_end(start, end); | 513 | /* |
| 514 | * If L2 is forced to WT, the L2 will always be clean and we | ||
| 515 | * just need to invalidate. | ||
| 516 | */ | ||
| 517 | if (l2_wt_override) | ||
| 513 | aurora_pa_range(start, range_end - CACHE_LINE_SIZE, | 518 | aurora_pa_range(start, range_end - CACHE_LINE_SIZE, |
| 514 | AURORA_FLUSH_RANGE_REG); | 519 | AURORA_INVAL_RANGE_REG); |
| 515 | start = range_end; | 520 | else |
| 516 | } | 521 | aurora_pa_range(start, range_end - CACHE_LINE_SIZE, |
| 522 | AURORA_FLUSH_RANGE_REG); | ||
| 523 | start = range_end; | ||
| 517 | } | 524 | } |
| 518 | } | 525 | } |
| 519 | 526 | ||
| @@ -668,8 +675,9 @@ static void pl310_resume(void) | |||
| 668 | static void aurora_resume(void) | 675 | static void aurora_resume(void) |
| 669 | { | 676 | { |
| 670 | if (!(readl(l2x0_base + L2X0_CTRL) & L2X0_CTRL_EN)) { | 677 | if (!(readl(l2x0_base + L2X0_CTRL) & L2X0_CTRL_EN)) { |
| 671 | writel(l2x0_saved_regs.aux_ctrl, l2x0_base + L2X0_AUX_CTRL); | 678 | writel_relaxed(l2x0_saved_regs.aux_ctrl, |
| 672 | writel(l2x0_saved_regs.ctrl, l2x0_base + L2X0_CTRL); | 679 | l2x0_base + L2X0_AUX_CTRL); |
| 680 | writel_relaxed(l2x0_saved_regs.ctrl, l2x0_base + L2X0_CTRL); | ||
| 673 | } | 681 | } |
| 674 | } | 682 | } |
| 675 | 683 | ||
diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c index 6b2fb87c8698..076c26d43864 100644 --- a/arch/arm/mm/dma-mapping.c +++ b/arch/arm/mm/dma-mapping.c | |||
| @@ -774,25 +774,27 @@ static void dma_cache_maint_page(struct page *page, unsigned long offset, | |||
| 774 | size_t size, enum dma_data_direction dir, | 774 | size_t size, enum dma_data_direction dir, |
| 775 | void (*op)(const void *, size_t, int)) | 775 | void (*op)(const void *, size_t, int)) |
| 776 | { | 776 | { |
| 777 | unsigned long pfn; | ||
| 778 | size_t left = size; | ||
| 779 | |||
| 780 | pfn = page_to_pfn(page) + offset / PAGE_SIZE; | ||
| 781 | offset %= PAGE_SIZE; | ||
| 782 | |||
| 777 | /* | 783 | /* |
| 778 | * A single sg entry may refer to multiple physically contiguous | 784 | * A single sg entry may refer to multiple physically contiguous |
| 779 | * pages. But we still need to process highmem pages individually. | 785 | * pages. But we still need to process highmem pages individually. |
| 780 | * If highmem is not configured then the bulk of this loop gets | 786 | * If highmem is not configured then the bulk of this loop gets |
| 781 | * optimized out. | 787 | * optimized out. |
| 782 | */ | 788 | */ |
| 783 | size_t left = size; | ||
| 784 | do { | 789 | do { |
| 785 | size_t len = left; | 790 | size_t len = left; |
| 786 | void *vaddr; | 791 | void *vaddr; |
| 787 | 792 | ||
| 793 | page = pfn_to_page(pfn); | ||
| 794 | |||
| 788 | if (PageHighMem(page)) { | 795 | if (PageHighMem(page)) { |
| 789 | if (len + offset > PAGE_SIZE) { | 796 | if (len + offset > PAGE_SIZE) |
| 790 | if (offset >= PAGE_SIZE) { | ||
| 791 | page += offset / PAGE_SIZE; | ||
| 792 | offset %= PAGE_SIZE; | ||
| 793 | } | ||
| 794 | len = PAGE_SIZE - offset; | 797 | len = PAGE_SIZE - offset; |
| 795 | } | ||
| 796 | vaddr = kmap_high_get(page); | 798 | vaddr = kmap_high_get(page); |
| 797 | if (vaddr) { | 799 | if (vaddr) { |
| 798 | vaddr += offset; | 800 | vaddr += offset; |
| @@ -809,7 +811,7 @@ static void dma_cache_maint_page(struct page *page, unsigned long offset, | |||
| 809 | op(vaddr, len, dir); | 811 | op(vaddr, len, dir); |
| 810 | } | 812 | } |
| 811 | offset = 0; | 813 | offset = 0; |
| 812 | page++; | 814 | pfn++; |
| 813 | left -= len; | 815 | left -= len; |
| 814 | } while (left); | 816 | } while (left); |
| 815 | } | 817 | } |
diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c index 9f0610243bd6..ce328c7f5c94 100644 --- a/arch/arm/mm/mmu.c +++ b/arch/arm/mm/mmu.c | |||
| @@ -283,7 +283,7 @@ static struct mem_type mem_types[] = { | |||
| 283 | }, | 283 | }, |
| 284 | [MT_MEMORY_SO] = { | 284 | [MT_MEMORY_SO] = { |
| 285 | .prot_pte = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_DIRTY | | 285 | .prot_pte = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_DIRTY | |
| 286 | L_PTE_MT_UNCACHED, | 286 | L_PTE_MT_UNCACHED | L_PTE_XN, |
| 287 | .prot_l1 = PMD_TYPE_TABLE, | 287 | .prot_l1 = PMD_TYPE_TABLE, |
| 288 | .prot_sect = PMD_TYPE_SECT | PMD_SECT_AP_WRITE | PMD_SECT_S | | 288 | .prot_sect = PMD_TYPE_SECT | PMD_SECT_AP_WRITE | PMD_SECT_S | |
| 289 | PMD_SECT_UNCACHED | PMD_SECT_XN, | 289 | PMD_SECT_UNCACHED | PMD_SECT_XN, |
diff --git a/arch/arm/mm/proc-v7.S b/arch/arm/mm/proc-v7.S index 350f6a74992b..3a3c015f8d5c 100644 --- a/arch/arm/mm/proc-v7.S +++ b/arch/arm/mm/proc-v7.S | |||
| @@ -169,6 +169,7 @@ __v7_ca15mp_setup: | |||
| 169 | orreq r0, r0, r10 @ Enable CPU-specific SMP bits | 169 | orreq r0, r0, r10 @ Enable CPU-specific SMP bits |
| 170 | mcreq p15, 0, r0, c1, c0, 1 | 170 | mcreq p15, 0, r0, c1, c0, 1 |
| 171 | #endif | 171 | #endif |
| 172 | b __v7_setup | ||
| 172 | 173 | ||
| 173 | __v7_pj4b_setup: | 174 | __v7_pj4b_setup: |
| 174 | #ifdef CONFIG_CPU_PJ4B | 175 | #ifdef CONFIG_CPU_PJ4B |
| @@ -245,7 +246,8 @@ __v7_setup: | |||
| 245 | ldr r10, =0x00000c08 @ Cortex-A8 primary part number | 246 | ldr r10, =0x00000c08 @ Cortex-A8 primary part number |
| 246 | teq r0, r10 | 247 | teq r0, r10 |
| 247 | bne 2f | 248 | bne 2f |
| 248 | #ifdef CONFIG_ARM_ERRATA_430973 | 249 | #if defined(CONFIG_ARM_ERRATA_430973) && !defined(CONFIG_ARCH_MULTIPLATFORM) |
| 250 | |||
| 249 | teq r5, #0x00100000 @ only present in r1p* | 251 | teq r5, #0x00100000 @ only present in r1p* |
| 250 | mrceq p15, 0, r10, c1, c0, 1 @ read aux control register | 252 | mrceq p15, 0, r10, c1, c0, 1 @ read aux control register |
| 251 | orreq r10, r10, #(1 << 6) @ set IBE to 1 | 253 | orreq r10, r10, #(1 << 6) @ set IBE to 1 |
diff --git a/arch/arm/plat-omap/counter_32k.c b/arch/arm/plat-omap/counter_32k.c index f3771cdb9838..5b0b86bb34bb 100644 --- a/arch/arm/plat-omap/counter_32k.c +++ b/arch/arm/plat-omap/counter_32k.c | |||
| @@ -22,6 +22,8 @@ | |||
| 22 | #include <asm/mach/time.h> | 22 | #include <asm/mach/time.h> |
| 23 | #include <asm/sched_clock.h> | 23 | #include <asm/sched_clock.h> |
| 24 | 24 | ||
| 25 | #include <plat/counter-32k.h> | ||
| 26 | |||
| 25 | /* OMAP2_32KSYNCNT_CR_OFF: offset of 32ksync counter register */ | 27 | /* OMAP2_32KSYNCNT_CR_OFF: offset of 32ksync counter register */ |
| 26 | #define OMAP2_32KSYNCNT_REV_OFF 0x0 | 28 | #define OMAP2_32KSYNCNT_REV_OFF 0x0 |
| 27 | #define OMAP2_32KSYNCNT_REV_SCHEME (0x3 << 30) | 29 | #define OMAP2_32KSYNCNT_REV_SCHEME (0x3 << 30) |
diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c index 37a488aaa2ba..4136b20cba3c 100644 --- a/arch/arm/plat-omap/dma.c +++ b/arch/arm/plat-omap/dma.c | |||
| @@ -2000,7 +2000,7 @@ void omap_dma_global_context_restore(void) | |||
| 2000 | omap_clear_dma(ch); | 2000 | omap_clear_dma(ch); |
| 2001 | } | 2001 | } |
| 2002 | 2002 | ||
| 2003 | static int __devinit omap_system_dma_probe(struct platform_device *pdev) | 2003 | static int omap_system_dma_probe(struct platform_device *pdev) |
| 2004 | { | 2004 | { |
| 2005 | int ch, ret = 0; | 2005 | int ch, ret = 0; |
| 2006 | int dma_irq; | 2006 | int dma_irq; |
| @@ -2116,7 +2116,7 @@ exit_dma_lch_fail: | |||
| 2116 | return ret; | 2116 | return ret; |
| 2117 | } | 2117 | } |
| 2118 | 2118 | ||
| 2119 | static int __devexit omap_system_dma_remove(struct platform_device *pdev) | 2119 | static int omap_system_dma_remove(struct platform_device *pdev) |
| 2120 | { | 2120 | { |
| 2121 | int dma_irq; | 2121 | int dma_irq; |
| 2122 | 2122 | ||
| @@ -2140,7 +2140,7 @@ static int __devexit omap_system_dma_remove(struct platform_device *pdev) | |||
| 2140 | 2140 | ||
| 2141 | static struct platform_driver omap_system_dma_driver = { | 2141 | static struct platform_driver omap_system_dma_driver = { |
| 2142 | .probe = omap_system_dma_probe, | 2142 | .probe = omap_system_dma_probe, |
| 2143 | .remove = __devexit_p(omap_system_dma_remove), | 2143 | .remove = omap_system_dma_remove, |
| 2144 | .driver = { | 2144 | .driver = { |
| 2145 | .name = "omap_dma_system" | 2145 | .name = "omap_dma_system" |
| 2146 | }, | 2146 | }, |
diff --git a/arch/arm/plat-omap/dmtimer.c b/arch/arm/plat-omap/dmtimer.c index d51b75bdcad4..7b433f3bddca 100644 --- a/arch/arm/plat-omap/dmtimer.c +++ b/arch/arm/plat-omap/dmtimer.c | |||
| @@ -777,7 +777,7 @@ EXPORT_SYMBOL_GPL(omap_dm_timers_active); | |||
| 777 | * Called by driver framework at the end of device registration for all | 777 | * Called by driver framework at the end of device registration for all |
| 778 | * timer devices. | 778 | * timer devices. |
| 779 | */ | 779 | */ |
| 780 | static int __devinit omap_dm_timer_probe(struct platform_device *pdev) | 780 | static int omap_dm_timer_probe(struct platform_device *pdev) |
| 781 | { | 781 | { |
| 782 | unsigned long flags; | 782 | unsigned long flags; |
| 783 | struct omap_dm_timer *timer; | 783 | struct omap_dm_timer *timer; |
| @@ -864,7 +864,7 @@ static int __devinit omap_dm_timer_probe(struct platform_device *pdev) | |||
| 864 | * In addition to freeing platform resources it also deletes the timer | 864 | * In addition to freeing platform resources it also deletes the timer |
| 865 | * entry from the local list. | 865 | * entry from the local list. |
| 866 | */ | 866 | */ |
| 867 | static int __devexit omap_dm_timer_remove(struct platform_device *pdev) | 867 | static int omap_dm_timer_remove(struct platform_device *pdev) |
| 868 | { | 868 | { |
| 869 | struct omap_dm_timer *timer; | 869 | struct omap_dm_timer *timer; |
| 870 | unsigned long flags; | 870 | unsigned long flags; |
| @@ -891,7 +891,7 @@ MODULE_DEVICE_TABLE(of, omap_timer_match); | |||
| 891 | 891 | ||
| 892 | static struct platform_driver omap_dm_timer_driver = { | 892 | static struct platform_driver omap_dm_timer_driver = { |
| 893 | .probe = omap_dm_timer_probe, | 893 | .probe = omap_dm_timer_probe, |
| 894 | .remove = __devexit_p(omap_dm_timer_remove), | 894 | .remove = omap_dm_timer_remove, |
| 895 | .driver = { | 895 | .driver = { |
| 896 | .name = "omap_timer", | 896 | .name = "omap_timer", |
| 897 | .of_match_table = of_match_ptr(omap_timer_match), | 897 | .of_match_table = of_match_ptr(omap_timer_match), |
diff --git a/arch/arm/plat-omap/sram.c b/arch/arm/plat-omap/sram.c index 743fc2836f7a..a5bc92d7e476 100644 --- a/arch/arm/plat-omap/sram.c +++ b/arch/arm/plat-omap/sram.c | |||
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | #include <asm/mach/map.h> | 27 | #include <asm/mach/map.h> |
| 28 | 28 | ||
| 29 | #include <plat/sram.h> | ||
| 30 | |||
| 29 | #define ROUND_DOWN(value,boundary) ((value) & (~((boundary)-1))) | 31 | #define ROUND_DOWN(value,boundary) ((value) & (~((boundary)-1))) |
| 30 | 32 | ||
| 31 | static void __iomem *omap_sram_base; | 33 | static void __iomem *omap_sram_base; |
diff --git a/arch/arm/plat-pxa/ssp.c b/arch/arm/plat-pxa/ssp.c index 584c9bf8ed2d..8e11e96eab5e 100644 --- a/arch/arm/plat-pxa/ssp.c +++ b/arch/arm/plat-pxa/ssp.c | |||
| @@ -72,7 +72,7 @@ void pxa_ssp_free(struct ssp_device *ssp) | |||
| 72 | } | 72 | } |
| 73 | EXPORT_SYMBOL(pxa_ssp_free); | 73 | EXPORT_SYMBOL(pxa_ssp_free); |
| 74 | 74 | ||
| 75 | static int __devinit pxa_ssp_probe(struct platform_device *pdev) | 75 | static int pxa_ssp_probe(struct platform_device *pdev) |
| 76 | { | 76 | { |
| 77 | const struct platform_device_id *id = platform_get_device_id(pdev); | 77 | const struct platform_device_id *id = platform_get_device_id(pdev); |
| 78 | struct resource *res; | 78 | struct resource *res; |
| @@ -164,7 +164,7 @@ err_free: | |||
| 164 | return ret; | 164 | return ret; |
| 165 | } | 165 | } |
| 166 | 166 | ||
| 167 | static int __devexit pxa_ssp_remove(struct platform_device *pdev) | 167 | static int pxa_ssp_remove(struct platform_device *pdev) |
| 168 | { | 168 | { |
| 169 | struct resource *res; | 169 | struct resource *res; |
| 170 | struct ssp_device *ssp; | 170 | struct ssp_device *ssp; |
| @@ -199,7 +199,7 @@ static const struct platform_device_id ssp_id_table[] = { | |||
| 199 | 199 | ||
| 200 | static struct platform_driver pxa_ssp_driver = { | 200 | static struct platform_driver pxa_ssp_driver = { |
| 201 | .probe = pxa_ssp_probe, | 201 | .probe = pxa_ssp_probe, |
| 202 | .remove = __devexit_p(pxa_ssp_remove), | 202 | .remove = pxa_ssp_remove, |
| 203 | .driver = { | 203 | .driver = { |
| 204 | .owner = THIS_MODULE, | 204 | .owner = THIS_MODULE, |
| 205 | .name = "pxa2xx-ssp", | 205 | .name = "pxa2xx-ssp", |
diff --git a/arch/arm/plat-samsung/adc.c b/arch/arm/plat-samsung/adc.c index 37542c2689a2..2d676ab50f73 100644 --- a/arch/arm/plat-samsung/adc.c +++ b/arch/arm/plat-samsung/adc.c | |||
| @@ -416,7 +416,7 @@ static int s3c_adc_probe(struct platform_device *pdev) | |||
| 416 | return 0; | 416 | return 0; |
| 417 | } | 417 | } |
| 418 | 418 | ||
| 419 | static int __devexit s3c_adc_remove(struct platform_device *pdev) | 419 | static int s3c_adc_remove(struct platform_device *pdev) |
| 420 | { | 420 | { |
| 421 | struct adc_device *adc = platform_get_drvdata(pdev); | 421 | struct adc_device *adc = platform_get_drvdata(pdev); |
| 422 | 422 | ||
| @@ -516,7 +516,7 @@ static struct platform_driver s3c_adc_driver = { | |||
| 516 | .pm = &adc_pm_ops, | 516 | .pm = &adc_pm_ops, |
| 517 | }, | 517 | }, |
| 518 | .probe = s3c_adc_probe, | 518 | .probe = s3c_adc_probe, |
| 519 | .remove = __devexit_p(s3c_adc_remove), | 519 | .remove = s3c_adc_remove, |
| 520 | }; | 520 | }; |
| 521 | 521 | ||
| 522 | static int __init adc_init(void) | 522 | static int __init adc_init(void) |
diff --git a/arch/arm/plat-samsung/include/plat/cpu.h b/arch/arm/plat-samsung/include/plat/cpu.h index e0072ce8d6e9..b69e11dc679d 100644 --- a/arch/arm/plat-samsung/include/plat/cpu.h +++ b/arch/arm/plat-samsung/include/plat/cpu.h | |||
| @@ -43,7 +43,7 @@ extern unsigned long samsung_cpu_id; | |||
| 43 | #define EXYNOS4_CPU_MASK 0xFFFE0000 | 43 | #define EXYNOS4_CPU_MASK 0xFFFE0000 |
| 44 | 44 | ||
| 45 | #define EXYNOS5250_SOC_ID 0x43520000 | 45 | #define EXYNOS5250_SOC_ID 0x43520000 |
| 46 | #define EXYNOS5440_SOC_ID 0x54400000 | 46 | #define EXYNOS5440_SOC_ID 0xE5440000 |
| 47 | #define EXYNOS5_SOC_MASK 0xFFFFF000 | 47 | #define EXYNOS5_SOC_MASK 0xFFFFF000 |
| 48 | 48 | ||
| 49 | #define IS_SAMSUNG_CPU(name, id, mask) \ | 49 | #define IS_SAMSUNG_CPU(name, id, mask) \ |
diff --git a/arch/arm/plat-versatile/headsmp.S b/arch/arm/plat-versatile/headsmp.S index dd703ef09b8d..b178d44e9eaa 100644 --- a/arch/arm/plat-versatile/headsmp.S +++ b/arch/arm/plat-versatile/headsmp.S | |||
| @@ -20,7 +20,7 @@ | |||
| 20 | */ | 20 | */ |
| 21 | ENTRY(versatile_secondary_startup) | 21 | ENTRY(versatile_secondary_startup) |
| 22 | mrc p15, 0, r0, c0, c0, 5 | 22 | mrc p15, 0, r0, c0, c0, 5 |
| 23 | and r0, r0, #15 | 23 | bic r0, #0xff000000 |
| 24 | adr r4, 1f | 24 | adr r4, 1f |
| 25 | ldmia r4, {r5, r6} | 25 | ldmia r4, {r5, r6} |
| 26 | sub r4, r4, r5 | 26 | sub r4, r4, r5 |
diff --git a/arch/arm/vfp/entry.S b/arch/arm/vfp/entry.S index cc926c985981..323ce1a62bbf 100644 --- a/arch/arm/vfp/entry.S +++ b/arch/arm/vfp/entry.S | |||
| @@ -22,7 +22,7 @@ | |||
| 22 | @ IRQs disabled. | 22 | @ IRQs disabled. |
| 23 | @ | 23 | @ |
| 24 | ENTRY(do_vfp) | 24 | ENTRY(do_vfp) |
| 25 | #ifdef CONFIG_PREEMPT | 25 | #ifdef CONFIG_PREEMPT_COUNT |
| 26 | ldr r4, [r10, #TI_PREEMPT] @ get preempt count | 26 | ldr r4, [r10, #TI_PREEMPT] @ get preempt count |
| 27 | add r11, r4, #1 @ increment it | 27 | add r11, r4, #1 @ increment it |
| 28 | str r11, [r10, #TI_PREEMPT] | 28 | str r11, [r10, #TI_PREEMPT] |
| @@ -35,7 +35,7 @@ ENTRY(do_vfp) | |||
| 35 | ENDPROC(do_vfp) | 35 | ENDPROC(do_vfp) |
| 36 | 36 | ||
| 37 | ENTRY(vfp_null_entry) | 37 | ENTRY(vfp_null_entry) |
| 38 | #ifdef CONFIG_PREEMPT | 38 | #ifdef CONFIG_PREEMPT_COUNT |
| 39 | get_thread_info r10 | 39 | get_thread_info r10 |
| 40 | ldr r4, [r10, #TI_PREEMPT] @ get preempt count | 40 | ldr r4, [r10, #TI_PREEMPT] @ get preempt count |
| 41 | sub r11, r4, #1 @ decrement it | 41 | sub r11, r4, #1 @ decrement it |
| @@ -53,7 +53,7 @@ ENDPROC(vfp_null_entry) | |||
| 53 | 53 | ||
| 54 | __INIT | 54 | __INIT |
| 55 | ENTRY(vfp_testing_entry) | 55 | ENTRY(vfp_testing_entry) |
| 56 | #ifdef CONFIG_PREEMPT | 56 | #ifdef CONFIG_PREEMPT_COUNT |
| 57 | get_thread_info r10 | 57 | get_thread_info r10 |
| 58 | ldr r4, [r10, #TI_PREEMPT] @ get preempt count | 58 | ldr r4, [r10, #TI_PREEMPT] @ get preempt count |
| 59 | sub r11, r4, #1 @ decrement it | 59 | sub r11, r4, #1 @ decrement it |
diff --git a/arch/arm/vfp/vfphw.S b/arch/arm/vfp/vfphw.S index ea0349f63586..dd5e56f95f3f 100644 --- a/arch/arm/vfp/vfphw.S +++ b/arch/arm/vfp/vfphw.S | |||
| @@ -168,7 +168,7 @@ vfp_hw_state_valid: | |||
| 168 | @ else it's one 32-bit instruction, so | 168 | @ else it's one 32-bit instruction, so |
| 169 | @ always subtract 4 from the following | 169 | @ always subtract 4 from the following |
| 170 | @ instruction address. | 170 | @ instruction address. |
| 171 | #ifdef CONFIG_PREEMPT | 171 | #ifdef CONFIG_PREEMPT_COUNT |
| 172 | get_thread_info r10 | 172 | get_thread_info r10 |
| 173 | ldr r4, [r10, #TI_PREEMPT] @ get preempt count | 173 | ldr r4, [r10, #TI_PREEMPT] @ get preempt count |
| 174 | sub r11, r4, #1 @ decrement it | 174 | sub r11, r4, #1 @ decrement it |
| @@ -192,7 +192,7 @@ look_for_VFP_exceptions: | |||
| 192 | @ not recognised by VFP | 192 | @ not recognised by VFP |
| 193 | 193 | ||
| 194 | DBGSTR "not VFP" | 194 | DBGSTR "not VFP" |
| 195 | #ifdef CONFIG_PREEMPT | 195 | #ifdef CONFIG_PREEMPT_COUNT |
| 196 | get_thread_info r10 | 196 | get_thread_info r10 |
| 197 | ldr r4, [r10, #TI_PREEMPT] @ get preempt count | 197 | ldr r4, [r10, #TI_PREEMPT] @ get preempt count |
| 198 | sub r11, r4, #1 @ decrement it | 198 | sub r11, r4, #1 @ decrement it |
diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index 9c829b008261..f8f362aafee9 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig | |||
| @@ -2,6 +2,8 @@ config ARM64 | |||
| 2 | def_bool y | 2 | def_bool y |
| 3 | select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE | 3 | select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE |
| 4 | select ARCH_WANT_COMPAT_IPC_PARSE_VERSION | 4 | select ARCH_WANT_COMPAT_IPC_PARSE_VERSION |
| 5 | select ARM_AMBA | ||
| 6 | select CLONE_BACKWARDS | ||
| 5 | select COMMON_CLK | 7 | select COMMON_CLK |
| 6 | select GENERIC_CLOCKEVENTS | 8 | select GENERIC_CLOCKEVENTS |
| 7 | select GENERIC_HARDIRQS_NO_DEPRECATED | 9 | select GENERIC_HARDIRQS_NO_DEPRECATED |
| @@ -31,7 +33,6 @@ config ARM64 | |||
| 31 | select RTC_LIB | 33 | select RTC_LIB |
| 32 | select SPARSE_IRQ | 34 | select SPARSE_IRQ |
| 33 | select SYSCTL_EXCEPTION_TRACE | 35 | select SYSCTL_EXCEPTION_TRACE |
| 34 | select CLONE_BACKWARDS | ||
| 35 | help | 36 | help |
| 36 | ARM 64-bit (AArch64) Linux support. | 37 | ARM 64-bit (AArch64) Linux support. |
| 37 | 38 | ||
| @@ -90,6 +91,9 @@ config SWIOTLB | |||
| 90 | config IOMMU_HELPER | 91 | config IOMMU_HELPER |
| 91 | def_bool SWIOTLB | 92 | def_bool SWIOTLB |
| 92 | 93 | ||
| 94 | config GENERIC_GPIO | ||
| 95 | def_bool y | ||
| 96 | |||
| 93 | source "init/Kconfig" | 97 | source "init/Kconfig" |
| 94 | 98 | ||
| 95 | source "kernel/Kconfig.freezer" | 99 | source "kernel/Kconfig.freezer" |
diff --git a/arch/arm64/boot/dts/Makefile b/arch/arm64/boot/dts/Makefile index 801e2d7fcbc6..32ac0aef0068 100644 --- a/arch/arm64/boot/dts/Makefile +++ b/arch/arm64/boot/dts/Makefile | |||
| @@ -1,4 +1,5 @@ | |||
| 1 | targets += dtbs | 1 | targets += dtbs |
| 2 | targets += $(dtb-y) | ||
| 2 | 3 | ||
| 3 | dtbs: $(addprefix $(obj)/, $(dtb-y)) | 4 | dtbs: $(addprefix $(obj)/, $(dtb-y)) |
| 4 | 5 | ||
diff --git a/arch/arm64/include/asm/compat.h b/arch/arm64/include/asm/compat.h index d9ec40217a27..618b450e5a1d 100644 --- a/arch/arm64/include/asm/compat.h +++ b/arch/arm64/include/asm/compat.h | |||
| @@ -23,6 +23,7 @@ | |||
| 23 | */ | 23 | */ |
| 24 | #include <linux/types.h> | 24 | #include <linux/types.h> |
| 25 | #include <linux/sched.h> | 25 | #include <linux/sched.h> |
| 26 | #include <linux/ptrace.h> | ||
| 26 | 27 | ||
| 27 | #define COMPAT_USER_HZ 100 | 28 | #define COMPAT_USER_HZ 100 |
| 28 | #define COMPAT_UTS_MACHINE "armv8l\0\0" | 29 | #define COMPAT_UTS_MACHINE "armv8l\0\0" |
diff --git a/arch/arm64/include/asm/elf.h b/arch/arm64/include/asm/elf.h index 07fea290d7c1..fe32c0e4ac01 100644 --- a/arch/arm64/include/asm/elf.h +++ b/arch/arm64/include/asm/elf.h | |||
| @@ -26,7 +26,10 @@ | |||
| 26 | 26 | ||
| 27 | typedef unsigned long elf_greg_t; | 27 | typedef unsigned long elf_greg_t; |
| 28 | 28 | ||
| 29 | #define ELF_NGREG (sizeof (struct pt_regs) / sizeof(elf_greg_t)) | 29 | #define ELF_NGREG (sizeof(struct user_pt_regs) / sizeof(elf_greg_t)) |
| 30 | #define ELF_CORE_COPY_REGS(dest, regs) \ | ||
| 31 | *(struct user_pt_regs *)&(dest) = (regs)->user_regs; | ||
| 32 | |||
| 30 | typedef elf_greg_t elf_gregset_t[ELF_NGREG]; | 33 | typedef elf_greg_t elf_gregset_t[ELF_NGREG]; |
| 31 | typedef struct user_fpsimd_state elf_fpregset_t; | 34 | typedef struct user_fpsimd_state elf_fpregset_t; |
| 32 | 35 | ||
diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h index 64b133949502..e333a243bfcc 100644 --- a/arch/arm64/include/asm/pgtable.h +++ b/arch/arm64/include/asm/pgtable.h | |||
| @@ -24,7 +24,8 @@ | |||
| 24 | /* | 24 | /* |
| 25 | * Software defined PTE bits definition. | 25 | * Software defined PTE bits definition. |
| 26 | */ | 26 | */ |
| 27 | #define PTE_VALID (_AT(pteval_t, 1) << 0) /* pte_present() check */ | 27 | #define PTE_VALID (_AT(pteval_t, 1) << 0) |
| 28 | #define PTE_PROT_NONE (_AT(pteval_t, 1) << 1) /* only when !PTE_VALID */ | ||
| 28 | #define PTE_FILE (_AT(pteval_t, 1) << 2) /* only when !pte_present() */ | 29 | #define PTE_FILE (_AT(pteval_t, 1) << 2) /* only when !pte_present() */ |
| 29 | #define PTE_DIRTY (_AT(pteval_t, 1) << 55) | 30 | #define PTE_DIRTY (_AT(pteval_t, 1) << 55) |
| 30 | #define PTE_SPECIAL (_AT(pteval_t, 1) << 56) | 31 | #define PTE_SPECIAL (_AT(pteval_t, 1) << 56) |
| @@ -60,9 +61,12 @@ extern void __pgd_error(const char *file, int line, unsigned long val); | |||
| 60 | 61 | ||
| 61 | extern pgprot_t pgprot_default; | 62 | extern pgprot_t pgprot_default; |
| 62 | 63 | ||
| 63 | #define _MOD_PROT(p, b) __pgprot(pgprot_val(p) | (b)) | 64 | #define __pgprot_modify(prot,mask,bits) \ |
| 65 | __pgprot((pgprot_val(prot) & ~(mask)) | (bits)) | ||
| 66 | |||
| 67 | #define _MOD_PROT(p, b) __pgprot_modify(p, 0, b) | ||
| 64 | 68 | ||
| 65 | #define PAGE_NONE _MOD_PROT(pgprot_default, PTE_NG | PTE_PXN | PTE_UXN | PTE_RDONLY) | 69 | #define PAGE_NONE __pgprot_modify(pgprot_default, PTE_TYPE_MASK, PTE_PROT_NONE) |
| 66 | #define PAGE_SHARED _MOD_PROT(pgprot_default, PTE_USER | PTE_NG | PTE_PXN | PTE_UXN) | 70 | #define PAGE_SHARED _MOD_PROT(pgprot_default, PTE_USER | PTE_NG | PTE_PXN | PTE_UXN) |
| 67 | #define PAGE_SHARED_EXEC _MOD_PROT(pgprot_default, PTE_USER | PTE_NG | PTE_PXN) | 71 | #define PAGE_SHARED_EXEC _MOD_PROT(pgprot_default, PTE_USER | PTE_NG | PTE_PXN) |
| 68 | #define PAGE_COPY _MOD_PROT(pgprot_default, PTE_USER | PTE_NG | PTE_PXN | PTE_UXN | PTE_RDONLY) | 72 | #define PAGE_COPY _MOD_PROT(pgprot_default, PTE_USER | PTE_NG | PTE_PXN | PTE_UXN | PTE_RDONLY) |
| @@ -72,7 +76,7 @@ extern pgprot_t pgprot_default; | |||
| 72 | #define PAGE_KERNEL _MOD_PROT(pgprot_default, PTE_PXN | PTE_UXN | PTE_DIRTY) | 76 | #define PAGE_KERNEL _MOD_PROT(pgprot_default, PTE_PXN | PTE_UXN | PTE_DIRTY) |
| 73 | #define PAGE_KERNEL_EXEC _MOD_PROT(pgprot_default, PTE_UXN | PTE_DIRTY) | 77 | #define PAGE_KERNEL_EXEC _MOD_PROT(pgprot_default, PTE_UXN | PTE_DIRTY) |
| 74 | 78 | ||
| 75 | #define __PAGE_NONE __pgprot(_PAGE_DEFAULT | PTE_NG | PTE_PXN | PTE_UXN | PTE_RDONLY) | 79 | #define __PAGE_NONE __pgprot(((_PAGE_DEFAULT) & ~PTE_TYPE_MASK) | PTE_PROT_NONE) |
| 76 | #define __PAGE_SHARED __pgprot(_PAGE_DEFAULT | PTE_USER | PTE_NG | PTE_PXN | PTE_UXN) | 80 | #define __PAGE_SHARED __pgprot(_PAGE_DEFAULT | PTE_USER | PTE_NG | PTE_PXN | PTE_UXN) |
| 77 | #define __PAGE_SHARED_EXEC __pgprot(_PAGE_DEFAULT | PTE_USER | PTE_NG | PTE_PXN) | 81 | #define __PAGE_SHARED_EXEC __pgprot(_PAGE_DEFAULT | PTE_USER | PTE_NG | PTE_PXN) |
| 78 | #define __PAGE_COPY __pgprot(_PAGE_DEFAULT | PTE_USER | PTE_NG | PTE_PXN | PTE_UXN | PTE_RDONLY) | 82 | #define __PAGE_COPY __pgprot(_PAGE_DEFAULT | PTE_USER | PTE_NG | PTE_PXN | PTE_UXN | PTE_RDONLY) |
| @@ -125,16 +129,15 @@ extern struct page *empty_zero_page; | |||
| 125 | /* | 129 | /* |
| 126 | * The following only work if pte_present(). Undefined behaviour otherwise. | 130 | * The following only work if pte_present(). Undefined behaviour otherwise. |
| 127 | */ | 131 | */ |
| 128 | #define pte_present(pte) (pte_val(pte) & PTE_VALID) | 132 | #define pte_present(pte) (pte_val(pte) & (PTE_VALID | PTE_PROT_NONE)) |
| 129 | #define pte_dirty(pte) (pte_val(pte) & PTE_DIRTY) | 133 | #define pte_dirty(pte) (pte_val(pte) & PTE_DIRTY) |
| 130 | #define pte_young(pte) (pte_val(pte) & PTE_AF) | 134 | #define pte_young(pte) (pte_val(pte) & PTE_AF) |
| 131 | #define pte_special(pte) (pte_val(pte) & PTE_SPECIAL) | 135 | #define pte_special(pte) (pte_val(pte) & PTE_SPECIAL) |
| 132 | #define pte_write(pte) (!(pte_val(pte) & PTE_RDONLY)) | 136 | #define pte_write(pte) (!(pte_val(pte) & PTE_RDONLY)) |
| 133 | #define pte_exec(pte) (!(pte_val(pte) & PTE_UXN)) | 137 | #define pte_exec(pte) (!(pte_val(pte) & PTE_UXN)) |
| 134 | 138 | ||
| 135 | #define pte_present_exec_user(pte) \ | 139 | #define pte_valid_user(pte) \ |
| 136 | ((pte_val(pte) & (PTE_VALID | PTE_USER | PTE_UXN)) == \ | 140 | ((pte_val(pte) & (PTE_VALID | PTE_USER)) == (PTE_VALID | PTE_USER)) |
| 137 | (PTE_VALID | PTE_USER)) | ||
| 138 | 141 | ||
| 139 | #define PTE_BIT_FUNC(fn,op) \ | 142 | #define PTE_BIT_FUNC(fn,op) \ |
| 140 | static inline pte_t pte_##fn(pte_t pte) { pte_val(pte) op; return pte; } | 143 | static inline pte_t pte_##fn(pte_t pte) { pte_val(pte) op; return pte; } |
| @@ -157,10 +160,13 @@ extern void __sync_icache_dcache(pte_t pteval, unsigned long addr); | |||
| 157 | static inline void set_pte_at(struct mm_struct *mm, unsigned long addr, | 160 | static inline void set_pte_at(struct mm_struct *mm, unsigned long addr, |
| 158 | pte_t *ptep, pte_t pte) | 161 | pte_t *ptep, pte_t pte) |
| 159 | { | 162 | { |
| 160 | if (pte_present_exec_user(pte)) | 163 | if (pte_valid_user(pte)) { |
| 161 | __sync_icache_dcache(pte, addr); | 164 | if (pte_exec(pte)) |
| 162 | if (!pte_dirty(pte)) | 165 | __sync_icache_dcache(pte, addr); |
| 163 | pte = pte_wrprotect(pte); | 166 | if (!pte_dirty(pte)) |
| 167 | pte = pte_wrprotect(pte); | ||
| 168 | } | ||
| 169 | |||
| 164 | set_pte(ptep, pte); | 170 | set_pte(ptep, pte); |
| 165 | } | 171 | } |
| 166 | 172 | ||
| @@ -170,9 +176,6 @@ static inline void set_pte_at(struct mm_struct *mm, unsigned long addr, | |||
| 170 | #define pte_huge(pte) ((pte_val(pte) & PTE_TYPE_MASK) == PTE_TYPE_HUGEPAGE) | 176 | #define pte_huge(pte) ((pte_val(pte) & PTE_TYPE_MASK) == PTE_TYPE_HUGEPAGE) |
| 171 | #define pte_mkhuge(pte) (__pte((pte_val(pte) & ~PTE_TYPE_MASK) | PTE_TYPE_HUGEPAGE)) | 177 | #define pte_mkhuge(pte) (__pte((pte_val(pte) & ~PTE_TYPE_MASK) | PTE_TYPE_HUGEPAGE)) |
| 172 | 178 | ||
| 173 | #define __pgprot_modify(prot,mask,bits) \ | ||
| 174 | __pgprot((pgprot_val(prot) & ~(mask)) | (bits)) | ||
| 175 | |||
| 176 | #define __HAVE_ARCH_PTE_SPECIAL | 179 | #define __HAVE_ARCH_PTE_SPECIAL |
| 177 | 180 | ||
| 178 | /* | 181 | /* |
| @@ -264,7 +267,8 @@ static inline pmd_t *pmd_offset(pud_t *pud, unsigned long addr) | |||
| 264 | 267 | ||
| 265 | static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) | 268 | static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) |
| 266 | { | 269 | { |
| 267 | const pteval_t mask = PTE_USER | PTE_PXN | PTE_UXN | PTE_RDONLY; | 270 | const pteval_t mask = PTE_USER | PTE_PXN | PTE_UXN | PTE_RDONLY | |
| 271 | PTE_PROT_NONE | PTE_VALID; | ||
| 268 | pte_val(pte) = (pte_val(pte) & ~mask) | (pgprot_val(newprot) & mask); | 272 | pte_val(pte) = (pte_val(pte) & ~mask) | (pgprot_val(newprot) & mask); |
| 269 | return pte; | 273 | return pte; |
| 270 | } | 274 | } |
diff --git a/arch/arm64/include/asm/unistd32.h b/arch/arm64/include/asm/unistd32.h index 58432625fdb3..5ef47ba3ed45 100644 --- a/arch/arm64/include/asm/unistd32.h +++ b/arch/arm64/include/asm/unistd32.h | |||
| @@ -395,8 +395,13 @@ __SYSCALL(370, sys_name_to_handle_at) | |||
| 395 | __SYSCALL(371, compat_sys_open_by_handle_at) | 395 | __SYSCALL(371, compat_sys_open_by_handle_at) |
| 396 | __SYSCALL(372, compat_sys_clock_adjtime) | 396 | __SYSCALL(372, compat_sys_clock_adjtime) |
| 397 | __SYSCALL(373, sys_syncfs) | 397 | __SYSCALL(373, sys_syncfs) |
| 398 | __SYSCALL(374, compat_sys_sendmmsg) | ||
| 399 | __SYSCALL(375, sys_setns) | ||
| 400 | __SYSCALL(376, compat_sys_process_vm_readv) | ||
| 401 | __SYSCALL(377, compat_sys_process_vm_writev) | ||
| 402 | __SYSCALL(378, sys_ni_syscall) /* 378 for kcmp */ | ||
| 398 | 403 | ||
| 399 | #define __NR_compat_syscalls 374 | 404 | #define __NR_compat_syscalls 379 |
| 400 | 405 | ||
| 401 | /* | 406 | /* |
| 402 | * Compat syscall numbers used by the AArch64 kernel. | 407 | * Compat syscall numbers used by the AArch64 kernel. |
diff --git a/arch/arm64/kernel/perf_event.c b/arch/arm64/kernel/perf_event.c index c76c7241125b..f7073c7b1ca9 100644 --- a/arch/arm64/kernel/perf_event.c +++ b/arch/arm64/kernel/perf_event.c | |||
| @@ -1221,7 +1221,7 @@ static struct of_device_id armpmu_of_device_ids[] = { | |||
| 1221 | {}, | 1221 | {}, |
| 1222 | }; | 1222 | }; |
| 1223 | 1223 | ||
| 1224 | static int __devinit armpmu_device_probe(struct platform_device *pdev) | 1224 | static int armpmu_device_probe(struct platform_device *pdev) |
| 1225 | { | 1225 | { |
| 1226 | if (!cpu_pmu) | 1226 | if (!cpu_pmu) |
| 1227 | return -ENODEV; | 1227 | return -ENODEV; |
diff --git a/arch/arm64/kernel/vdso.c b/arch/arm64/kernel/vdso.c index c958cb84d75f..6a389dc1bd49 100644 --- a/arch/arm64/kernel/vdso.c +++ b/arch/arm64/kernel/vdso.c | |||
| @@ -252,10 +252,6 @@ void update_vsyscall(struct timekeeper *tk) | |||
| 252 | 252 | ||
| 253 | void update_vsyscall_tz(void) | 253 | void update_vsyscall_tz(void) |
| 254 | { | 254 | { |
| 255 | ++vdso_data->tb_seq_count; | ||
| 256 | smp_wmb(); | ||
| 257 | vdso_data->tz_minuteswest = sys_tz.tz_minuteswest; | 255 | vdso_data->tz_minuteswest = sys_tz.tz_minuteswest; |
| 258 | vdso_data->tz_dsttime = sys_tz.tz_dsttime; | 256 | vdso_data->tz_dsttime = sys_tz.tz_dsttime; |
| 259 | smp_wmb(); | ||
| 260 | ++vdso_data->tb_seq_count; | ||
| 261 | } | 257 | } |
diff --git a/arch/arm64/kernel/vdso/gettimeofday.S b/arch/arm64/kernel/vdso/gettimeofday.S index 8bf658d974f9..f0a6d10b5211 100644 --- a/arch/arm64/kernel/vdso/gettimeofday.S +++ b/arch/arm64/kernel/vdso/gettimeofday.S | |||
| @@ -73,8 +73,6 @@ ENTRY(__kernel_gettimeofday) | |||
| 73 | /* If tz is NULL, return 0. */ | 73 | /* If tz is NULL, return 0. */ |
| 74 | cbz x1, 3f | 74 | cbz x1, 3f |
| 75 | ldp w4, w5, [vdso_data, #VDSO_TZ_MINWEST] | 75 | ldp w4, w5, [vdso_data, #VDSO_TZ_MINWEST] |
| 76 | seqcnt_read w9 | ||
| 77 | seqcnt_check w9, 1b | ||
| 78 | stp w4, w5, [x1, #TZ_MINWEST] | 76 | stp w4, w5, [x1, #TZ_MINWEST] |
| 79 | 3: | 77 | 3: |
| 80 | mov x0, xzr | 78 | mov x0, xzr |
diff --git a/arch/avr32/lib/delay.c b/arch/avr32/lib/delay.c index 9aa8800830f3..c2f4a07dcda1 100644 --- a/arch/avr32/lib/delay.c +++ b/arch/avr32/lib/delay.c | |||
| @@ -20,7 +20,7 @@ | |||
| 20 | #include <asm/processor.h> | 20 | #include <asm/processor.h> |
| 21 | #include <asm/sysreg.h> | 21 | #include <asm/sysreg.h> |
| 22 | 22 | ||
| 23 | int __devinit read_current_timer(unsigned long *timer_value) | 23 | int read_current_timer(unsigned long *timer_value) |
| 24 | { | 24 | { |
| 25 | *timer_value = sysreg_read(COUNT); | 25 | *timer_value = sysreg_read(COUNT); |
| 26 | return 0; | 26 | return 0; |
diff --git a/arch/blackfin/mach-common/dpmc.c b/arch/blackfin/mach-common/dpmc.c index 978bb400be06..724a8c5f5578 100644 --- a/arch/blackfin/mach-common/dpmc.c +++ b/arch/blackfin/mach-common/dpmc.c | |||
| @@ -129,7 +129,7 @@ static struct notifier_block vreg_cpufreq_notifier_block = { | |||
| 129 | * bfin_dpmc_probe - | 129 | * bfin_dpmc_probe - |
| 130 | * | 130 | * |
| 131 | */ | 131 | */ |
| 132 | static int __devinit bfin_dpmc_probe(struct platform_device *pdev) | 132 | static int bfin_dpmc_probe(struct platform_device *pdev) |
| 133 | { | 133 | { |
| 134 | if (pdev->dev.platform_data) | 134 | if (pdev->dev.platform_data) |
| 135 | pdata = pdev->dev.platform_data; | 135 | pdata = pdev->dev.platform_data; |
| @@ -143,7 +143,7 @@ static int __devinit bfin_dpmc_probe(struct platform_device *pdev) | |||
| 143 | /** | 143 | /** |
| 144 | * bfin_dpmc_remove - | 144 | * bfin_dpmc_remove - |
| 145 | */ | 145 | */ |
| 146 | static int __devexit bfin_dpmc_remove(struct platform_device *pdev) | 146 | static int bfin_dpmc_remove(struct platform_device *pdev) |
| 147 | { | 147 | { |
| 148 | pdata = NULL; | 148 | pdata = NULL; |
| 149 | return cpufreq_unregister_notifier(&vreg_cpufreq_notifier_block, | 149 | return cpufreq_unregister_notifier(&vreg_cpufreq_notifier_block, |
| @@ -152,7 +152,7 @@ static int __devexit bfin_dpmc_remove(struct platform_device *pdev) | |||
| 152 | 152 | ||
| 153 | struct platform_driver bfin_dpmc_device_driver = { | 153 | struct platform_driver bfin_dpmc_device_driver = { |
| 154 | .probe = bfin_dpmc_probe, | 154 | .probe = bfin_dpmc_probe, |
| 155 | .remove = __devexit_p(bfin_dpmc_remove), | 155 | .remove = bfin_dpmc_remove, |
| 156 | .driver = { | 156 | .driver = { |
| 157 | .name = DRIVER_NAME, | 157 | .name = DRIVER_NAME, |
| 158 | } | 158 | } |
diff --git a/arch/cris/arch-v32/drivers/pci/bios.c b/arch/cris/arch-v32/drivers/pci/bios.c index e3dfc72d0cfd..64a5fb93767d 100644 --- a/arch/cris/arch-v32/drivers/pci/bios.c +++ b/arch/cris/arch-v32/drivers/pci/bios.c | |||
| @@ -2,7 +2,7 @@ | |||
| 2 | #include <linux/kernel.h> | 2 | #include <linux/kernel.h> |
| 3 | #include <arch/hwregs/intr_vect.h> | 3 | #include <arch/hwregs/intr_vect.h> |
| 4 | 4 | ||
| 5 | void __devinit pcibios_fixup_bus(struct pci_bus *b) | 5 | void pcibios_fixup_bus(struct pci_bus *b) |
| 6 | { | 6 | { |
| 7 | } | 7 | } |
| 8 | 8 | ||
diff --git a/arch/cris/arch-v32/kernel/smp.c b/arch/cris/arch-v32/kernel/smp.c index ebe2cb30bd11..04a16edd5401 100644 --- a/arch/cris/arch-v32/kernel/smp.c +++ b/arch/cris/arch-v32/kernel/smp.c | |||
| @@ -84,7 +84,7 @@ void __init smp_prepare_cpus(unsigned int max_cpus) | |||
| 84 | cpumask_set_cpu(i, &phys_cpu_present_map); | 84 | cpumask_set_cpu(i, &phys_cpu_present_map); |
| 85 | } | 85 | } |
| 86 | 86 | ||
| 87 | void __devinit smp_prepare_boot_cpu(void) | 87 | void smp_prepare_boot_cpu(void) |
| 88 | { | 88 | { |
| 89 | /* PGD pointer has moved after per_cpu initialization so | 89 | /* PGD pointer has moved after per_cpu initialization so |
| 90 | * update the MMU. | 90 | * update the MMU. |
diff --git a/arch/frv/kernel/setup.c b/arch/frv/kernel/setup.c index 3cb3392f799e..a5136474c6fd 100644 --- a/arch/frv/kernel/setup.c +++ b/arch/frv/kernel/setup.c | |||
| @@ -852,7 +852,7 @@ void __init setup_arch(char **cmdline_p) | |||
| 852 | /* | 852 | /* |
| 853 | * | 853 | * |
| 854 | */ | 854 | */ |
| 855 | static int __devinit setup_arch_serial(void) | 855 | static int setup_arch_serial(void) |
| 856 | { | 856 | { |
| 857 | /* register those serial ports that are available */ | 857 | /* register those serial ports that are available */ |
| 858 | #ifndef CONFIG_GDBSTUB_UART0 | 858 | #ifndef CONFIG_GDBSTUB_UART0 |
diff --git a/arch/frv/mb93090-mb00/pci-vdk.c b/arch/frv/mb93090-mb00/pci-vdk.c index 71e9bcf58105..d186b254ce99 100644 --- a/arch/frv/mb93090-mb00/pci-vdk.c +++ b/arch/frv/mb93090-mb00/pci-vdk.c | |||
| @@ -268,7 +268,7 @@ static void __init pci_fixup_umc_ide(struct pci_dev *d) | |||
| 268 | d->resource[i].flags |= PCI_BASE_ADDRESS_SPACE_IO; | 268 | d->resource[i].flags |= PCI_BASE_ADDRESS_SPACE_IO; |
| 269 | } | 269 | } |
| 270 | 270 | ||
| 271 | static void __devinit pci_fixup_ide_bases(struct pci_dev *d) | 271 | static void pci_fixup_ide_bases(struct pci_dev *d) |
| 272 | { | 272 | { |
| 273 | int i; | 273 | int i; |
| 274 | 274 | ||
| @@ -287,7 +287,7 @@ static void __devinit pci_fixup_ide_bases(struct pci_dev *d) | |||
| 287 | } | 287 | } |
| 288 | } | 288 | } |
| 289 | 289 | ||
| 290 | static void __devinit pci_fixup_ide_trash(struct pci_dev *d) | 290 | static void pci_fixup_ide_trash(struct pci_dev *d) |
| 291 | { | 291 | { |
| 292 | int i; | 292 | int i; |
| 293 | 293 | ||
| @@ -300,7 +300,7 @@ static void __devinit pci_fixup_ide_trash(struct pci_dev *d) | |||
| 300 | d->resource[i].start = d->resource[i].end = d->resource[i].flags = 0; | 300 | d->resource[i].start = d->resource[i].end = d->resource[i].flags = 0; |
| 301 | } | 301 | } |
| 302 | 302 | ||
| 303 | static void __devinit pci_fixup_latency(struct pci_dev *d) | 303 | static void pci_fixup_latency(struct pci_dev *d) |
| 304 | { | 304 | { |
| 305 | /* | 305 | /* |
| 306 | * SiS 5597 and 5598 chipsets require latency timer set to | 306 | * SiS 5597 and 5598 chipsets require latency timer set to |
diff --git a/arch/ia64/include/asm/acpi.h b/arch/ia64/include/asm/acpi.h index 301609c3fcec..359e68a03ca3 100644 --- a/arch/ia64/include/asm/acpi.h +++ b/arch/ia64/include/asm/acpi.h | |||
| @@ -153,7 +153,7 @@ extern int additional_cpus; | |||
| 153 | #else | 153 | #else |
| 154 | #define MAX_PXM_DOMAINS (256) | 154 | #define MAX_PXM_DOMAINS (256) |
| 155 | #endif | 155 | #endif |
| 156 | extern int __devinitdata pxm_to_nid_map[MAX_PXM_DOMAINS]; | 156 | extern int pxm_to_nid_map[MAX_PXM_DOMAINS]; |
| 157 | extern int __initdata nid_to_pxm_map[MAX_NUMNODES]; | 157 | extern int __initdata nid_to_pxm_map[MAX_NUMNODES]; |
| 158 | #endif | 158 | #endif |
| 159 | 159 | ||
diff --git a/arch/ia64/include/asm/iosapic.h b/arch/ia64/include/asm/iosapic.h index b9c102e15f22..94c89a2d97fe 100644 --- a/arch/ia64/include/asm/iosapic.h +++ b/arch/ia64/include/asm/iosapic.h | |||
| @@ -87,18 +87,13 @@ static inline void iosapic_eoi(char __iomem *iosapic, u32 vector) | |||
| 87 | } | 87 | } |
| 88 | 88 | ||
| 89 | extern void __init iosapic_system_init (int pcat_compat); | 89 | extern void __init iosapic_system_init (int pcat_compat); |
| 90 | extern int __devinit iosapic_init (unsigned long address, | 90 | extern int iosapic_init (unsigned long address, unsigned int gsi_base); |
| 91 | unsigned int gsi_base); | ||
| 92 | #ifdef CONFIG_HOTPLUG | ||
| 93 | extern int iosapic_remove (unsigned int gsi_base); | 91 | extern int iosapic_remove (unsigned int gsi_base); |
| 94 | #else | ||
| 95 | #define iosapic_remove(gsi_base) (-EINVAL) | ||
| 96 | #endif /* CONFIG_HOTPLUG */ | ||
| 97 | extern int gsi_to_irq (unsigned int gsi); | 92 | extern int gsi_to_irq (unsigned int gsi); |
| 98 | extern int iosapic_register_intr (unsigned int gsi, unsigned long polarity, | 93 | extern int iosapic_register_intr (unsigned int gsi, unsigned long polarity, |
| 99 | unsigned long trigger); | 94 | unsigned long trigger); |
| 100 | extern void iosapic_unregister_intr (unsigned int irq); | 95 | extern void iosapic_unregister_intr (unsigned int irq); |
| 101 | extern void __devinit iosapic_override_isa_irq (unsigned int isa_irq, unsigned int gsi, | 96 | extern void iosapic_override_isa_irq (unsigned int isa_irq, unsigned int gsi, |
| 102 | unsigned long polarity, | 97 | unsigned long polarity, |
| 103 | unsigned long trigger); | 98 | unsigned long trigger); |
| 104 | extern int __init iosapic_register_platform_intr (u32 int_type, | 99 | extern int __init iosapic_register_platform_intr (u32 int_type, |
| @@ -109,7 +104,7 @@ extern int __init iosapic_register_platform_intr (u32 int_type, | |||
| 109 | unsigned long trigger); | 104 | unsigned long trigger); |
| 110 | 105 | ||
| 111 | #ifdef CONFIG_NUMA | 106 | #ifdef CONFIG_NUMA |
| 112 | extern void __devinit map_iosapic_to_node (unsigned int, int); | 107 | extern void map_iosapic_to_node (unsigned int, int); |
| 113 | #endif | 108 | #endif |
| 114 | #else | 109 | #else |
| 115 | #define iosapic_system_init(pcat_compat) do { } while (0) | 110 | #define iosapic_system_init(pcat_compat) do { } while (0) |
diff --git a/arch/ia64/include/asm/parport.h b/arch/ia64/include/asm/parport.h index 67e16adfcd25..638b4d271b99 100644 --- a/arch/ia64/include/asm/parport.h +++ b/arch/ia64/include/asm/parport.h | |||
| @@ -9,10 +9,9 @@ | |||
| 9 | #ifndef _ASM_IA64_PARPORT_H | 9 | #ifndef _ASM_IA64_PARPORT_H |
| 10 | #define _ASM_IA64_PARPORT_H 1 | 10 | #define _ASM_IA64_PARPORT_H 1 |
| 11 | 11 | ||
| 12 | static int __devinit parport_pc_find_isa_ports (int autoirq, int autodma); | 12 | static int parport_pc_find_isa_ports(int autoirq, int autodma); |
| 13 | 13 | ||
| 14 | static int __devinit | 14 | static int parport_pc_find_nonpci_ports(int autoirq, int autodma) |
| 15 | parport_pc_find_nonpci_ports (int autoirq, int autodma) | ||
| 16 | { | 15 | { |
| 17 | return parport_pc_find_isa_ports(autoirq, autodma); | 16 | return parport_pc_find_isa_ports(autoirq, autodma); |
| 18 | } | 17 | } |
diff --git a/arch/ia64/include/asm/smp.h b/arch/ia64/include/asm/smp.h index 0b3b3997decd..fea21e986022 100644 --- a/arch/ia64/include/asm/smp.h +++ b/arch/ia64/include/asm/smp.h | |||
| @@ -55,7 +55,7 @@ extern struct smp_boot_data { | |||
| 55 | int cpu_phys_id[NR_CPUS]; | 55 | int cpu_phys_id[NR_CPUS]; |
| 56 | } smp_boot_data __initdata; | 56 | } smp_boot_data __initdata; |
| 57 | 57 | ||
| 58 | extern char no_int_routing __devinitdata; | 58 | extern char no_int_routing; |
| 59 | 59 | ||
| 60 | extern cpumask_t cpu_core_map[NR_CPUS]; | 60 | extern cpumask_t cpu_core_map[NR_CPUS]; |
| 61 | DECLARE_PER_CPU_SHARED_ALIGNED(cpumask_t, cpu_sibling_map); | 61 | DECLARE_PER_CPU_SHARED_ALIGNED(cpumask_t, cpu_sibling_map); |
diff --git a/arch/ia64/include/asm/unistd.h b/arch/ia64/include/asm/unistd.h index 8b3ff2f5b861..c3cc42a15af1 100644 --- a/arch/ia64/include/asm/unistd.h +++ b/arch/ia64/include/asm/unistd.h | |||
| @@ -11,7 +11,7 @@ | |||
| 11 | 11 | ||
| 12 | 12 | ||
| 13 | 13 | ||
| 14 | #define NR_syscalls 311 /* length of syscall table */ | 14 | #define NR_syscalls 312 /* length of syscall table */ |
| 15 | 15 | ||
| 16 | /* | 16 | /* |
| 17 | * The following defines stop scripts/checksyscalls.sh from complaining about | 17 | * The following defines stop scripts/checksyscalls.sh from complaining about |
diff --git a/arch/ia64/include/uapi/asm/unistd.h b/arch/ia64/include/uapi/asm/unistd.h index b706aa54df20..34fd6fe46da1 100644 --- a/arch/ia64/include/uapi/asm/unistd.h +++ b/arch/ia64/include/uapi/asm/unistd.h | |||
| @@ -324,5 +324,6 @@ | |||
| 324 | #define __NR_process_vm_readv 1332 | 324 | #define __NR_process_vm_readv 1332 |
| 325 | #define __NR_process_vm_writev 1333 | 325 | #define __NR_process_vm_writev 1333 |
| 326 | #define __NR_accept4 1334 | 326 | #define __NR_accept4 1334 |
| 327 | #define __NR_finit_module 1335 | ||
| 327 | 328 | ||
| 328 | #endif /* _UAPI_ASM_IA64_UNISTD_H */ | 329 | #endif /* _UAPI_ASM_IA64_UNISTD_H */ |
diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c index e9682f5be343..335eb07480fe 100644 --- a/arch/ia64/kernel/acpi.c +++ b/arch/ia64/kernel/acpi.c | |||
| @@ -422,7 +422,7 @@ static int __init acpi_parse_madt(struct acpi_table_header *table) | |||
| 422 | #define PXM_FLAG_LEN ((MAX_PXM_DOMAINS + 1)/32) | 422 | #define PXM_FLAG_LEN ((MAX_PXM_DOMAINS + 1)/32) |
| 423 | 423 | ||
| 424 | static int __initdata srat_num_cpus; /* number of cpus */ | 424 | static int __initdata srat_num_cpus; /* number of cpus */ |
| 425 | static u32 __devinitdata pxm_flag[PXM_FLAG_LEN]; | 425 | static u32 pxm_flag[PXM_FLAG_LEN]; |
| 426 | #define pxm_bit_set(bit) (set_bit(bit,(void *)pxm_flag)) | 426 | #define pxm_bit_set(bit) (set_bit(bit,(void *)pxm_flag)) |
| 427 | #define pxm_bit_test(bit) (test_bit(bit,(void *)pxm_flag)) | 427 | #define pxm_bit_test(bit) (test_bit(bit,(void *)pxm_flag)) |
| 428 | static struct acpi_table_slit __initdata *slit_table; | 428 | static struct acpi_table_slit __initdata *slit_table; |
| @@ -956,8 +956,8 @@ EXPORT_SYMBOL(acpi_unmap_lsapic); | |||
| 956 | #endif /* CONFIG_ACPI_HOTPLUG_CPU */ | 956 | #endif /* CONFIG_ACPI_HOTPLUG_CPU */ |
| 957 | 957 | ||
| 958 | #ifdef CONFIG_ACPI_NUMA | 958 | #ifdef CONFIG_ACPI_NUMA |
| 959 | static acpi_status __devinit | 959 | static acpi_status acpi_map_iosapic(acpi_handle handle, u32 depth, |
| 960 | acpi_map_iosapic(acpi_handle handle, u32 depth, void *context, void **ret) | 960 | void *context, void **ret) |
| 961 | { | 961 | { |
| 962 | struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL }; | 962 | struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL }; |
| 963 | union acpi_object *obj; | 963 | union acpi_object *obj; |
diff --git a/arch/ia64/kernel/entry.S b/arch/ia64/kernel/entry.S index e25b784a2b72..6bfd8429ee0f 100644 --- a/arch/ia64/kernel/entry.S +++ b/arch/ia64/kernel/entry.S | |||
| @@ -1785,6 +1785,7 @@ sys_call_table: | |||
| 1785 | data8 sys_process_vm_readv | 1785 | data8 sys_process_vm_readv |
| 1786 | data8 sys_process_vm_writev | 1786 | data8 sys_process_vm_writev |
| 1787 | data8 sys_accept4 | 1787 | data8 sys_accept4 |
| 1788 | data8 sys_finit_module // 1335 | ||
| 1788 | 1789 | ||
| 1789 | .org sys_call_table + 8*NR_syscalls // guard against failures to increase NR_syscalls | 1790 | .org sys_call_table + 8*NR_syscalls // guard against failures to increase NR_syscalls |
| 1790 | #endif /* __IA64_ASM_PARAVIRTUALIZED_NATIVE */ | 1791 | #endif /* __IA64_ASM_PARAVIRTUALIZED_NATIVE */ |
diff --git a/arch/ia64/kernel/iosapic.c b/arch/ia64/kernel/iosapic.c index ef4b5d877cf2..ee33c3aaa2fc 100644 --- a/arch/ia64/kernel/iosapic.c +++ b/arch/ia64/kernel/iosapic.c | |||
| @@ -147,7 +147,7 @@ static struct iosapic_intr_info { | |||
| 147 | unsigned char trigger : 1; /* trigger mode (see iosapic.h) */ | 147 | unsigned char trigger : 1; /* trigger mode (see iosapic.h) */ |
| 148 | } iosapic_intr_info[NR_IRQS]; | 148 | } iosapic_intr_info[NR_IRQS]; |
| 149 | 149 | ||
| 150 | static unsigned char pcat_compat __devinitdata; /* 8259 compatibility flag */ | 150 | static unsigned char pcat_compat; /* 8259 compatibility flag */ |
| 151 | 151 | ||
| 152 | static inline void | 152 | static inline void |
| 153 | iosapic_write(struct iosapic *iosapic, unsigned int reg, u32 val) | 153 | iosapic_write(struct iosapic *iosapic, unsigned int reg, u32 val) |
| @@ -914,10 +914,8 @@ iosapic_register_platform_intr (u32 int_type, unsigned int gsi, | |||
| 914 | /* | 914 | /* |
| 915 | * ACPI calls this when it finds an entry for a legacy ISA IRQ override. | 915 | * ACPI calls this when it finds an entry for a legacy ISA IRQ override. |
| 916 | */ | 916 | */ |
| 917 | void __devinit | 917 | void iosapic_override_isa_irq(unsigned int isa_irq, unsigned int gsi, |
| 918 | iosapic_override_isa_irq (unsigned int isa_irq, unsigned int gsi, | 918 | unsigned long polarity, unsigned long trigger) |
| 919 | unsigned long polarity, | ||
| 920 | unsigned long trigger) | ||
| 921 | { | 919 | { |
| 922 | int vector, irq; | 920 | int vector, irq; |
| 923 | unsigned int dest = cpu_physical_id(smp_processor_id()); | 921 | unsigned int dest = cpu_physical_id(smp_processor_id()); |
| @@ -1012,8 +1010,7 @@ iosapic_check_gsi_range (unsigned int gsi_base, unsigned int ver) | |||
| 1012 | return 0; | 1010 | return 0; |
| 1013 | } | 1011 | } |
| 1014 | 1012 | ||
| 1015 | int __devinit | 1013 | int iosapic_init(unsigned long phys_addr, unsigned int gsi_base) |
| 1016 | iosapic_init (unsigned long phys_addr, unsigned int gsi_base) | ||
| 1017 | { | 1014 | { |
| 1018 | int num_rte, err, index; | 1015 | int num_rte, err, index; |
| 1019 | unsigned int isa_irq, ver; | 1016 | unsigned int isa_irq, ver; |
| @@ -1070,9 +1067,7 @@ iosapic_init (unsigned long phys_addr, unsigned int gsi_base) | |||
| 1070 | return 0; | 1067 | return 0; |
| 1071 | } | 1068 | } |
| 1072 | 1069 | ||
| 1073 | #ifdef CONFIG_HOTPLUG | 1070 | int iosapic_remove(unsigned int gsi_base) |
| 1074 | int | ||
| 1075 | iosapic_remove (unsigned int gsi_base) | ||
| 1076 | { | 1071 | { |
| 1077 | int index, err = 0; | 1072 | int index, err = 0; |
| 1078 | unsigned long flags; | 1073 | unsigned long flags; |
| @@ -1098,11 +1093,9 @@ iosapic_remove (unsigned int gsi_base) | |||
| 1098 | spin_unlock_irqrestore(&iosapic_lock, flags); | 1093 | spin_unlock_irqrestore(&iosapic_lock, flags); |
| 1099 | return err; | 1094 | return err; |
| 1100 | } | 1095 | } |
| 1101 | #endif /* CONFIG_HOTPLUG */ | ||
| 1102 | 1096 | ||
| 1103 | #ifdef CONFIG_NUMA | 1097 | #ifdef CONFIG_NUMA |
| 1104 | void __devinit | 1098 | void map_iosapic_to_node(unsigned int gsi_base, int node) |
| 1105 | map_iosapic_to_node(unsigned int gsi_base, int node) | ||
| 1106 | { | 1099 | { |
| 1107 | int index; | 1100 | int index; |
| 1108 | 1101 | ||
diff --git a/arch/ia64/kernel/ptrace.c b/arch/ia64/kernel/ptrace.c index 4265ff64219b..b7a5fffe0924 100644 --- a/arch/ia64/kernel/ptrace.c +++ b/arch/ia64/kernel/ptrace.c | |||
| @@ -672,33 +672,6 @@ ptrace_attach_sync_user_rbs (struct task_struct *child) | |||
| 672 | read_unlock(&tasklist_lock); | 672 | read_unlock(&tasklist_lock); |
| 673 | } | 673 | } |
| 674 | 674 | ||
| 675 | static inline int | ||
| 676 | thread_matches (struct task_struct *thread, unsigned long addr) | ||
| 677 | { | ||
| 678 | unsigned long thread_rbs_end; | ||
| 679 | struct pt_regs *thread_regs; | ||
| 680 | |||
| 681 | if (ptrace_check_attach(thread, 0) < 0) | ||
| 682 | /* | ||
| 683 | * If the thread is not in an attachable state, we'll | ||
| 684 | * ignore it. The net effect is that if ADDR happens | ||
| 685 | * to overlap with the portion of the thread's | ||
| 686 | * register backing store that is currently residing | ||
| 687 | * on the thread's kernel stack, then ptrace() may end | ||
| 688 | * up accessing a stale value. But if the thread | ||
| 689 | * isn't stopped, that's a problem anyhow, so we're | ||
| 690 | * doing as well as we can... | ||
| 691 | */ | ||
| 692 | return 0; | ||
| 693 | |||
| 694 | thread_regs = task_pt_regs(thread); | ||
| 695 | thread_rbs_end = ia64_get_user_rbs_end(thread, thread_regs, NULL); | ||
| 696 | if (!on_kernel_rbs(addr, thread_regs->ar_bspstore, thread_rbs_end)) | ||
| 697 | return 0; | ||
| 698 | |||
| 699 | return 1; /* looks like we've got a winner */ | ||
| 700 | } | ||
| 701 | |||
| 702 | /* | 675 | /* |
| 703 | * Write f32-f127 back to task->thread.fph if it has been modified. | 676 | * Write f32-f127 back to task->thread.fph if it has been modified. |
| 704 | */ | 677 | */ |
diff --git a/arch/ia64/kernel/smpboot.c b/arch/ia64/kernel/smpboot.c index 6a368cb2043e..500f1e4d9f9d 100644 --- a/arch/ia64/kernel/smpboot.c +++ b/arch/ia64/kernel/smpboot.c | |||
| @@ -347,8 +347,7 @@ ia64_sync_itc (unsigned int master) | |||
| 347 | /* | 347 | /* |
| 348 | * Ideally sets up per-cpu profiling hooks. Doesn't do much now... | 348 | * Ideally sets up per-cpu profiling hooks. Doesn't do much now... |
| 349 | */ | 349 | */ |
| 350 | static inline void __devinit | 350 | static inline void smp_setup_percpu_timer(void) |
| 351 | smp_setup_percpu_timer (void) | ||
| 352 | { | 351 | { |
| 353 | } | 352 | } |
| 354 | 353 | ||
| @@ -563,7 +562,7 @@ smp_prepare_cpus (unsigned int max_cpus) | |||
| 563 | } | 562 | } |
| 564 | } | 563 | } |
| 565 | 564 | ||
| 566 | void __devinit smp_prepare_boot_cpu(void) | 565 | void smp_prepare_boot_cpu(void) |
| 567 | { | 566 | { |
| 568 | set_cpu_online(smp_processor_id(), true); | 567 | set_cpu_online(smp_processor_id(), true); |
| 569 | cpu_set(smp_processor_id(), cpu_callin_map); | 568 | cpu_set(smp_processor_id(), cpu_callin_map); |
| @@ -713,8 +712,7 @@ smp_cpus_done (unsigned int dummy) | |||
| 713 | (int)num_online_cpus(), bogosum/(500000/HZ), (bogosum/(5000/HZ))%100); | 712 | (int)num_online_cpus(), bogosum/(500000/HZ), (bogosum/(5000/HZ))%100); |
| 714 | } | 713 | } |
| 715 | 714 | ||
| 716 | static inline void __devinit | 715 | static inline void set_cpu_sibling_map(int cpu) |
| 717 | set_cpu_sibling_map(int cpu) | ||
| 718 | { | 716 | { |
| 719 | int i; | 717 | int i; |
| 720 | 718 | ||
| @@ -793,8 +791,7 @@ init_smp_config(void) | |||
| 793 | * identify_siblings(cpu) gets called from identify_cpu. This populates the | 791 | * identify_siblings(cpu) gets called from identify_cpu. This populates the |
| 794 | * information related to logical execution units in per_cpu_data structure. | 792 | * information related to logical execution units in per_cpu_data structure. |
| 795 | */ | 793 | */ |
| 796 | void __devinit | 794 | void identify_siblings(struct cpuinfo_ia64 *c) |
| 797 | identify_siblings(struct cpuinfo_ia64 *c) | ||
| 798 | { | 795 | { |
| 799 | long status; | 796 | long status; |
| 800 | u16 pltid; | 797 | u16 pltid; |
diff --git a/arch/ia64/kernel/time.c b/arch/ia64/kernel/time.c index b1995efbfd21..88a794536bc0 100644 --- a/arch/ia64/kernel/time.c +++ b/arch/ia64/kernel/time.c | |||
| @@ -243,8 +243,7 @@ static int __init nojitter_setup(char *str) | |||
| 243 | __setup("nojitter", nojitter_setup); | 243 | __setup("nojitter", nojitter_setup); |
| 244 | 244 | ||
| 245 | 245 | ||
| 246 | void __devinit | 246 | void ia64_init_itm(void) |
| 247 | ia64_init_itm (void) | ||
| 248 | { | 247 | { |
| 249 | unsigned long platform_base_freq, itc_freq; | 248 | unsigned long platform_base_freq, itc_freq; |
| 250 | struct pal_freq_ratio itc_ratio, proc_ratio; | 249 | struct pal_freq_ratio itc_ratio, proc_ratio; |
diff --git a/arch/ia64/mm/init.c b/arch/ia64/mm/init.c index 082e383c1b6f..b755ea92aea7 100644 --- a/arch/ia64/mm/init.c +++ b/arch/ia64/mm/init.c | |||
| @@ -294,11 +294,10 @@ setup_gate (void) | |||
| 294 | ia64_patch_gate(); | 294 | ia64_patch_gate(); |
| 295 | } | 295 | } |
| 296 | 296 | ||
| 297 | void __devinit | 297 | void ia64_mmu_init(void *my_cpu_data) |
| 298 | ia64_mmu_init (void *my_cpu_data) | ||
| 299 | { | 298 | { |
| 300 | unsigned long pta, impl_va_bits; | 299 | unsigned long pta, impl_va_bits; |
| 301 | extern void __devinit tlb_init (void); | 300 | extern void tlb_init(void); |
| 302 | 301 | ||
| 303 | #ifdef CONFIG_DISABLE_VHPT | 302 | #ifdef CONFIG_DISABLE_VHPT |
| 304 | # define VHPT_ENABLE_BIT 0 | 303 | # define VHPT_ENABLE_BIT 0 |
diff --git a/arch/ia64/mm/tlb.c b/arch/ia64/mm/tlb.c index 7b3cdc6c6d91..ed6129768681 100644 --- a/arch/ia64/mm/tlb.c +++ b/arch/ia64/mm/tlb.c | |||
| @@ -337,8 +337,7 @@ flush_tlb_range (struct vm_area_struct *vma, unsigned long start, | |||
| 337 | } | 337 | } |
| 338 | EXPORT_SYMBOL(flush_tlb_range); | 338 | EXPORT_SYMBOL(flush_tlb_range); |
| 339 | 339 | ||
| 340 | void __devinit | 340 | void ia64_tlb_init(void) |
| 341 | ia64_tlb_init (void) | ||
| 342 | { | 341 | { |
| 343 | ia64_ptce_info_t uninitialized_var(ptce_info); /* GCC be quiet */ | 342 | ia64_ptce_info_t uninitialized_var(ptce_info); /* GCC be quiet */ |
| 344 | u64 tr_pgbits; | 343 | u64 tr_pgbits; |
diff --git a/arch/ia64/pci/fixup.c b/arch/ia64/pci/fixup.c index eab28e314022..5dc969dd4ac0 100644 --- a/arch/ia64/pci/fixup.c +++ b/arch/ia64/pci/fixup.c | |||
| @@ -24,7 +24,7 @@ | |||
| 24 | * video device at this point. | 24 | * video device at this point. |
| 25 | */ | 25 | */ |
| 26 | 26 | ||
| 27 | static void __devinit pci_fixup_video(struct pci_dev *pdev) | 27 | static void pci_fixup_video(struct pci_dev *pdev) |
| 28 | { | 28 | { |
| 29 | struct pci_dev *bridge; | 29 | struct pci_dev *bridge; |
| 30 | struct pci_bus *bus; | 30 | struct pci_bus *bus; |
diff --git a/arch/ia64/pci/pci.c b/arch/ia64/pci/pci.c index 5faa66c5c2a8..55b72ad57329 100644 --- a/arch/ia64/pci/pci.c +++ b/arch/ia64/pci/pci.c | |||
| @@ -116,8 +116,7 @@ struct pci_ops pci_root_ops = { | |||
| 116 | 116 | ||
| 117 | /* Called by ACPI when it finds a new root bus. */ | 117 | /* Called by ACPI when it finds a new root bus. */ |
| 118 | 118 | ||
| 119 | static struct pci_controller * __devinit | 119 | static struct pci_controller *alloc_pci_controller(int seg) |
| 120 | alloc_pci_controller (int seg) | ||
| 121 | { | 120 | { |
| 122 | struct pci_controller *controller; | 121 | struct pci_controller *controller; |
| 123 | 122 | ||
| @@ -165,8 +164,8 @@ new_space (u64 phys_base, int sparse) | |||
| 165 | return i; | 164 | return i; |
| 166 | } | 165 | } |
| 167 | 166 | ||
| 168 | static u64 __devinit | 167 | static u64 add_io_space(struct pci_root_info *info, |
| 169 | add_io_space (struct pci_root_info *info, struct acpi_resource_address64 *addr) | 168 | struct acpi_resource_address64 *addr) |
| 170 | { | 169 | { |
| 171 | struct resource *resource; | 170 | struct resource *resource; |
| 172 | char *name; | 171 | char *name; |
| @@ -226,8 +225,8 @@ out: | |||
| 226 | return ~0; | 225 | return ~0; |
| 227 | } | 226 | } |
| 228 | 227 | ||
| 229 | static acpi_status __devinit resource_to_window(struct acpi_resource *resource, | 228 | static acpi_status resource_to_window(struct acpi_resource *resource, |
| 230 | struct acpi_resource_address64 *addr) | 229 | struct acpi_resource_address64 *addr) |
| 231 | { | 230 | { |
| 232 | acpi_status status; | 231 | acpi_status status; |
| 233 | 232 | ||
| @@ -249,8 +248,7 @@ static acpi_status __devinit resource_to_window(struct acpi_resource *resource, | |||
| 249 | return AE_ERROR; | 248 | return AE_ERROR; |
| 250 | } | 249 | } |
| 251 | 250 | ||
| 252 | static acpi_status __devinit | 251 | static acpi_status count_window(struct acpi_resource *resource, void *data) |
| 253 | count_window (struct acpi_resource *resource, void *data) | ||
| 254 | { | 252 | { |
| 255 | unsigned int *windows = (unsigned int *) data; | 253 | unsigned int *windows = (unsigned int *) data; |
| 256 | struct acpi_resource_address64 addr; | 254 | struct acpi_resource_address64 addr; |
| @@ -263,7 +261,7 @@ count_window (struct acpi_resource *resource, void *data) | |||
| 263 | return AE_OK; | 261 | return AE_OK; |
| 264 | } | 262 | } |
| 265 | 263 | ||
| 266 | static __devinit acpi_status add_window(struct acpi_resource *res, void *data) | 264 | static acpi_status add_window(struct acpi_resource *res, void *data) |
| 267 | { | 265 | { |
| 268 | struct pci_root_info *info = data; | 266 | struct pci_root_info *info = data; |
| 269 | struct pci_window *window; | 267 | struct pci_window *window; |
| @@ -324,8 +322,7 @@ static __devinit acpi_status add_window(struct acpi_resource *res, void *data) | |||
| 324 | return AE_OK; | 322 | return AE_OK; |
| 325 | } | 323 | } |
| 326 | 324 | ||
| 327 | struct pci_bus * __devinit | 325 | struct pci_bus *pci_acpi_scan_root(struct acpi_pci_root *root) |
| 328 | pci_acpi_scan_root(struct acpi_pci_root *root) | ||
| 329 | { | 326 | { |
| 330 | struct acpi_device *device = root->device; | 327 | struct acpi_device *device = root->device; |
| 331 | int domain = root->segment; | 328 | int domain = root->segment; |
| @@ -396,7 +393,7 @@ out1: | |||
| 396 | return NULL; | 393 | return NULL; |
| 397 | } | 394 | } |
| 398 | 395 | ||
| 399 | static int __devinit is_valid_resource(struct pci_dev *dev, int idx) | 396 | static int is_valid_resource(struct pci_dev *dev, int idx) |
| 400 | { | 397 | { |
| 401 | unsigned int i, type_mask = IORESOURCE_IO | IORESOURCE_MEM; | 398 | unsigned int i, type_mask = IORESOURCE_IO | IORESOURCE_MEM; |
| 402 | struct resource *devr = &dev->resource[idx], *busr; | 399 | struct resource *devr = &dev->resource[idx], *busr; |
| @@ -414,8 +411,7 @@ static int __devinit is_valid_resource(struct pci_dev *dev, int idx) | |||
| 414 | return 0; | 411 | return 0; |
| 415 | } | 412 | } |
| 416 | 413 | ||
| 417 | static void __devinit | 414 | static void pcibios_fixup_resources(struct pci_dev *dev, int start, int limit) |
| 418 | pcibios_fixup_resources(struct pci_dev *dev, int start, int limit) | ||
| 419 | { | 415 | { |
| 420 | int i; | 416 | int i; |
| 421 | 417 | ||
| @@ -427,13 +423,13 @@ pcibios_fixup_resources(struct pci_dev *dev, int start, int limit) | |||
| 427 | } | 423 | } |
| 428 | } | 424 | } |
| 429 | 425 | ||
| 430 | void __devinit pcibios_fixup_device_resources(struct pci_dev *dev) | 426 | void pcibios_fixup_device_resources(struct pci_dev *dev) |
| 431 | { | 427 | { |
| 432 | pcibios_fixup_resources(dev, 0, PCI_BRIDGE_RESOURCES); | 428 | pcibios_fixup_resources(dev, 0, PCI_BRIDGE_RESOURCES); |
| 433 | } | 429 | } |
| 434 | EXPORT_SYMBOL_GPL(pcibios_fixup_device_resources); | 430 | EXPORT_SYMBOL_GPL(pcibios_fixup_device_resources); |
| 435 | 431 | ||
| 436 | static void __devinit pcibios_fixup_bridge_resources(struct pci_dev *dev) | 432 | static void pcibios_fixup_bridge_resources(struct pci_dev *dev) |
| 437 | { | 433 | { |
| 438 | pcibios_fixup_resources(dev, PCI_BRIDGE_RESOURCES, PCI_NUM_RESOURCES); | 434 | pcibios_fixup_resources(dev, PCI_BRIDGE_RESOURCES, PCI_NUM_RESOURCES); |
| 439 | } | 435 | } |
| @@ -441,8 +437,7 @@ static void __devinit pcibios_fixup_bridge_resources(struct pci_dev *dev) | |||
| 441 | /* | 437 | /* |
| 442 | * Called after each bus is probed, but before its children are examined. | 438 | * Called after each bus is probed, but before its children are examined. |
| 443 | */ | 439 | */ |
| 444 | void __devinit | 440 | void pcibios_fixup_bus(struct pci_bus *b) |
| 445 | pcibios_fixup_bus (struct pci_bus *b) | ||
| 446 | { | 441 | { |
| 447 | struct pci_dev *dev; | 442 | struct pci_dev *dev; |
| 448 | 443 | ||
diff --git a/arch/ia64/sn/kernel/io_common.c b/arch/ia64/sn/kernel/io_common.c index 8630875e74b5..11f2275570fb 100644 --- a/arch/ia64/sn/kernel/io_common.c +++ b/arch/ia64/sn/kernel/io_common.c | |||
| @@ -435,8 +435,7 @@ void sn_generate_path(struct pci_bus *pci_bus, char *address) | |||
| 435 | geo_slot(geoid)); | 435 | geo_slot(geoid)); |
| 436 | } | 436 | } |
| 437 | 437 | ||
| 438 | void __devinit | 438 | void sn_pci_fixup_bus(struct pci_bus *bus) |
| 439 | sn_pci_fixup_bus(struct pci_bus *bus) | ||
| 440 | { | 439 | { |
| 441 | 440 | ||
| 442 | if (SN_ACPI_BASE_SUPPORT()) | 441 | if (SN_ACPI_BASE_SUPPORT()) |
diff --git a/arch/ia64/sn/kernel/sn2/sn_hwperf.c b/arch/ia64/sn/kernel/sn2/sn_hwperf.c index 4554f68b7865..b9992571c036 100644 --- a/arch/ia64/sn/kernel/sn2/sn_hwperf.c +++ b/arch/ia64/sn/kernel/sn2/sn_hwperf.c | |||
| @@ -977,7 +977,7 @@ int sn_hwperf_get_nearest_node(cnodeid_t node, | |||
| 977 | return e; | 977 | return e; |
| 978 | } | 978 | } |
| 979 | 979 | ||
| 980 | static int __devinit sn_hwperf_misc_register_init(void) | 980 | static int sn_hwperf_misc_register_init(void) |
| 981 | { | 981 | { |
| 982 | int e; | 982 | int e; |
| 983 | 983 | ||
diff --git a/arch/ia64/xen/irq_xen.c b/arch/ia64/xen/irq_xen.c index 01f479ee1c43..efb74dafec4d 100644 --- a/arch/ia64/xen/irq_xen.c +++ b/arch/ia64/xen/irq_xen.c | |||
| @@ -273,9 +273,8 @@ xen_bind_early_percpu_irq(void) | |||
| 273 | */ | 273 | */ |
| 274 | 274 | ||
| 275 | #ifdef CONFIG_HOTPLUG_CPU | 275 | #ifdef CONFIG_HOTPLUG_CPU |
| 276 | static int __devinit | 276 | static int unbind_evtchn_callback(struct notifier_block *nfb, |
| 277 | unbind_evtchn_callback(struct notifier_block *nfb, | 277 | unsigned long action, void *hcpu) |
| 278 | unsigned long action, void *hcpu) | ||
| 279 | { | 278 | { |
| 280 | unsigned int cpu = (unsigned long)hcpu; | 279 | unsigned int cpu = (unsigned long)hcpu; |
| 281 | 280 | ||
diff --git a/arch/m32r/kernel/smpboot.c b/arch/m32r/kernel/smpboot.c index a2cfc0abb05c..13168a769f8f 100644 --- a/arch/m32r/kernel/smpboot.c +++ b/arch/m32r/kernel/smpboot.c | |||
| @@ -127,7 +127,7 @@ static void unmap_cpu_to_physid(int, int); | |||
| 127 | /*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ | 127 | /*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ |
| 128 | /* Boot up APs Routines : BSP */ | 128 | /* Boot up APs Routines : BSP */ |
| 129 | /*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ | 129 | /*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ |
| 130 | void __devinit smp_prepare_boot_cpu(void) | 130 | void smp_prepare_boot_cpu(void) |
| 131 | { | 131 | { |
| 132 | bsp_phys_id = hard_smp_processor_id(); | 132 | bsp_phys_id = hard_smp_processor_id(); |
| 133 | physid_set(bsp_phys_id, phys_cpu_present_map); | 133 | physid_set(bsp_phys_id, phys_cpu_present_map); |
diff --git a/arch/m68k/emu/nfeth.c b/arch/m68k/emu/nfeth.c index a985a7e87d45..695cd737a42e 100644 --- a/arch/m68k/emu/nfeth.c +++ b/arch/m68k/emu/nfeth.c | |||
| @@ -39,7 +39,7 @@ enum { | |||
| 39 | #define MAX_UNIT 8 | 39 | #define MAX_UNIT 8 |
| 40 | 40 | ||
| 41 | /* These identify the driver base version and may not be removed. */ | 41 | /* These identify the driver base version and may not be removed. */ |
| 42 | static const char version[] __devinitconst = | 42 | static const char version[] = |
| 43 | KERN_INFO KBUILD_MODNAME ".c:v" DRV_VERSION " " DRV_RELDATE | 43 | KERN_INFO KBUILD_MODNAME ".c:v" DRV_VERSION " " DRV_RELDATE |
| 44 | " S.Opichal, M.Jurik, P.Stehlik\n" | 44 | " S.Opichal, M.Jurik, P.Stehlik\n" |
| 45 | KERN_INFO " http://aranym.org/\n"; | 45 | KERN_INFO " http://aranym.org/\n"; |
diff --git a/arch/m68k/include/asm/dma-mapping.h b/arch/m68k/include/asm/dma-mapping.h index 17f7a45948ea..3e6b8445af6a 100644 --- a/arch/m68k/include/asm/dma-mapping.h +++ b/arch/m68k/include/asm/dma-mapping.h | |||
| @@ -21,6 +21,22 @@ extern void *dma_alloc_coherent(struct device *, size_t, | |||
| 21 | extern void dma_free_coherent(struct device *, size_t, | 21 | extern void dma_free_coherent(struct device *, size_t, |
| 22 | void *, dma_addr_t); | 22 | void *, dma_addr_t); |
| 23 | 23 | ||
| 24 | static inline void *dma_alloc_attrs(struct device *dev, size_t size, | ||
| 25 | dma_addr_t *dma_handle, gfp_t flag, | ||
| 26 | struct dma_attrs *attrs) | ||
| 27 | { | ||
| 28 | /* attrs is not supported and ignored */ | ||
| 29 | return dma_alloc_coherent(dev, size, dma_handle, flag); | ||
| 30 | } | ||
| 31 | |||
| 32 | static inline void dma_free_attrs(struct device *dev, size_t size, | ||
| 33 | void *cpu_addr, dma_addr_t dma_handle, | ||
| 34 | struct dma_attrs *attrs) | ||
| 35 | { | ||
| 36 | /* attrs is not supported and ignored */ | ||
| 37 | dma_free_coherent(dev, size, cpu_addr, dma_handle); | ||
| 38 | } | ||
| 39 | |||
| 24 | static inline void *dma_alloc_noncoherent(struct device *dev, size_t size, | 40 | static inline void *dma_alloc_noncoherent(struct device *dev, size_t size, |
| 25 | dma_addr_t *handle, gfp_t flag) | 41 | dma_addr_t *handle, gfp_t flag) |
| 26 | { | 42 | { |
diff --git a/arch/m68k/include/asm/parport.h b/arch/m68k/include/asm/parport.h index 646b1872f73b..5ea75e6a7399 100644 --- a/arch/m68k/include/asm/parport.h +++ b/arch/m68k/include/asm/parport.h | |||
| @@ -15,8 +15,8 @@ | |||
| 15 | #define outsl(port,buf,len) isa_outsb(port,buf,(len)<<2) | 15 | #define outsl(port,buf,len) isa_outsb(port,buf,(len)<<2) |
| 16 | 16 | ||
| 17 | /* no dma, or IRQ autoprobing */ | 17 | /* no dma, or IRQ autoprobing */ |
| 18 | static int __devinit parport_pc_find_isa_ports (int autoirq, int autodma); | 18 | static int parport_pc_find_isa_ports (int autoirq, int autodma); |
| 19 | static int __devinit parport_pc_find_nonpci_ports (int autoirq, int autodma) | 19 | static int parport_pc_find_nonpci_ports (int autoirq, int autodma) |
| 20 | { | 20 | { |
| 21 | if (! (MACH_IS_Q40)) | 21 | if (! (MACH_IS_Q40)) |
| 22 | return 0; /* count=0 */ | 22 | return 0; /* count=0 */ |
diff --git a/arch/m68k/include/asm/pgtable_no.h b/arch/m68k/include/asm/pgtable_no.h index bf86b29fe64a..037028f4ab70 100644 --- a/arch/m68k/include/asm/pgtable_no.h +++ b/arch/m68k/include/asm/pgtable_no.h | |||
| @@ -64,6 +64,8 @@ extern unsigned int kobjsize(const void *objp); | |||
| 64 | */ | 64 | */ |
| 65 | #define VMALLOC_START 0 | 65 | #define VMALLOC_START 0 |
| 66 | #define VMALLOC_END 0xffffffff | 66 | #define VMALLOC_END 0xffffffff |
| 67 | #define KMAP_START 0 | ||
| 68 | #define KMAP_END 0xffffffff | ||
| 67 | 69 | ||
| 68 | #include <asm-generic/pgtable.h> | 70 | #include <asm-generic/pgtable.h> |
| 69 | 71 | ||
diff --git a/arch/m68k/include/asm/unistd.h b/arch/m68k/include/asm/unistd.h index 847994ce6804..f9337f614660 100644 --- a/arch/m68k/include/asm/unistd.h +++ b/arch/m68k/include/asm/unistd.h | |||
| @@ -4,7 +4,7 @@ | |||
| 4 | #include <uapi/asm/unistd.h> | 4 | #include <uapi/asm/unistd.h> |
| 5 | 5 | ||
| 6 | 6 | ||
| 7 | #define NR_syscalls 348 | 7 | #define NR_syscalls 349 |
| 8 | 8 | ||
| 9 | #define __ARCH_WANT_OLD_READDIR | 9 | #define __ARCH_WANT_OLD_READDIR |
| 10 | #define __ARCH_WANT_OLD_STAT | 10 | #define __ARCH_WANT_OLD_STAT |
diff --git a/arch/m68k/include/uapi/asm/unistd.h b/arch/m68k/include/uapi/asm/unistd.h index b94bfbf90705..625f321001dc 100644 --- a/arch/m68k/include/uapi/asm/unistd.h +++ b/arch/m68k/include/uapi/asm/unistd.h | |||
| @@ -353,5 +353,6 @@ | |||
| 353 | #define __NR_process_vm_readv 345 | 353 | #define __NR_process_vm_readv 345 |
| 354 | #define __NR_process_vm_writev 346 | 354 | #define __NR_process_vm_writev 346 |
| 355 | #define __NR_kcmp 347 | 355 | #define __NR_kcmp 347 |
| 356 | #define __NR_finit_module 348 | ||
| 356 | 357 | ||
| 357 | #endif /* _UAPI_ASM_M68K_UNISTD_H_ */ | 358 | #endif /* _UAPI_ASM_M68K_UNISTD_H_ */ |
diff --git a/arch/m68k/kernel/pcibios.c b/arch/m68k/kernel/pcibios.c index 73fa0b56a06c..931a31ff59dd 100644 --- a/arch/m68k/kernel/pcibios.c +++ b/arch/m68k/kernel/pcibios.c | |||
| @@ -87,7 +87,7 @@ int pcibios_enable_device(struct pci_dev *dev, int mask) | |||
| 87 | return 0; | 87 | return 0; |
| 88 | } | 88 | } |
| 89 | 89 | ||
| 90 | void __devinit pcibios_fixup_bus(struct pci_bus *bus) | 90 | void pcibios_fixup_bus(struct pci_bus *bus) |
| 91 | { | 91 | { |
| 92 | struct pci_dev *dev; | 92 | struct pci_dev *dev; |
| 93 | 93 | ||
| @@ -97,7 +97,7 @@ void __devinit pcibios_fixup_bus(struct pci_bus *bus) | |||
| 97 | } | 97 | } |
| 98 | } | 98 | } |
| 99 | 99 | ||
| 100 | char __devinit *pcibios_setup(char *str) | 100 | char *pcibios_setup(char *str) |
| 101 | { | 101 | { |
| 102 | return str; | 102 | return str; |
| 103 | } | 103 | } |
diff --git a/arch/m68k/kernel/syscalltable.S b/arch/m68k/kernel/syscalltable.S index c30da5b3f2db..3f04ea0ab802 100644 --- a/arch/m68k/kernel/syscalltable.S +++ b/arch/m68k/kernel/syscalltable.S | |||
| @@ -368,4 +368,5 @@ ENTRY(sys_call_table) | |||
| 368 | .long sys_process_vm_readv /* 345 */ | 368 | .long sys_process_vm_readv /* 345 */ |
| 369 | .long sys_process_vm_writev | 369 | .long sys_process_vm_writev |
| 370 | .long sys_kcmp | 370 | .long sys_kcmp |
| 371 | .long sys_finit_module | ||
| 371 | 372 | ||
diff --git a/arch/m68k/mm/init.c b/arch/m68k/mm/init.c index f0e05bce92f2..afd8106fd83b 100644 --- a/arch/m68k/mm/init.c +++ b/arch/m68k/mm/init.c | |||
| @@ -39,6 +39,11 @@ | |||
| 39 | void *empty_zero_page; | 39 | void *empty_zero_page; |
| 40 | EXPORT_SYMBOL(empty_zero_page); | 40 | EXPORT_SYMBOL(empty_zero_page); |
| 41 | 41 | ||
| 42 | #if !defined(CONFIG_SUN3) && !defined(CONFIG_COLDFIRE) | ||
| 43 | extern void init_pointer_table(unsigned long ptable); | ||
| 44 | extern pmd_t *zero_pgtable; | ||
| 45 | #endif | ||
| 46 | |||
| 42 | #ifdef CONFIG_MMU | 47 | #ifdef CONFIG_MMU |
| 43 | 48 | ||
| 44 | pg_data_t pg_data_map[MAX_NUMNODES]; | 49 | pg_data_t pg_data_map[MAX_NUMNODES]; |
| @@ -69,9 +74,6 @@ void __init m68k_setup_node(int node) | |||
| 69 | node_set_online(node); | 74 | node_set_online(node); |
| 70 | } | 75 | } |
| 71 | 76 | ||
| 72 | extern void init_pointer_table(unsigned long ptable); | ||
| 73 | extern pmd_t *zero_pgtable; | ||
| 74 | |||
| 75 | #else /* CONFIG_MMU */ | 77 | #else /* CONFIG_MMU */ |
| 76 | 78 | ||
| 77 | /* | 79 | /* |
diff --git a/arch/microblaze/configs/mmu_defconfig b/arch/microblaze/configs/mmu_defconfig index b3f5eecff2a7..d2b097a652d9 100644 --- a/arch/microblaze/configs/mmu_defconfig +++ b/arch/microblaze/configs/mmu_defconfig | |||
| @@ -1,25 +1,22 @@ | |||
| 1 | CONFIG_EXPERIMENTAL=y | 1 | CONFIG_EXPERIMENTAL=y |
| 2 | CONFIG_SYSVIPC=y | 2 | CONFIG_SYSVIPC=y |
| 3 | CONFIG_POSIX_MQUEUE=y | ||
| 4 | CONFIG_FHANDLE=y | ||
| 5 | CONFIG_AUDIT=y | ||
| 6 | CONFIG_AUDIT_LOGINUID_IMMUTABLE=y | ||
| 3 | CONFIG_IKCONFIG=y | 7 | CONFIG_IKCONFIG=y |
| 4 | CONFIG_IKCONFIG_PROC=y | 8 | CONFIG_IKCONFIG_PROC=y |
| 9 | CONFIG_SYSFS_DEPRECATED=y | ||
| 5 | CONFIG_SYSFS_DEPRECATED_V2=y | 10 | CONFIG_SYSFS_DEPRECATED_V2=y |
| 6 | CONFIG_BLK_DEV_INITRD=y | ||
| 7 | CONFIG_INITRAMFS_SOURCE="rootfs.cpio" | ||
| 8 | CONFIG_INITRAMFS_COMPRESSION_GZIP=y | ||
| 9 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
| 10 | CONFIG_EXPERT=y | ||
| 11 | CONFIG_KALLSYMS_ALL=y | 11 | CONFIG_KALLSYMS_ALL=y |
| 12 | CONFIG_KALLSYMS_EXTRA_PASS=y | ||
| 13 | # CONFIG_HOTPLUG is not set | ||
| 14 | # CONFIG_BASE_FULL is not set | 12 | # CONFIG_BASE_FULL is not set |
| 15 | # CONFIG_FUTEX is not set | 13 | CONFIG_EMBEDDED=y |
| 16 | # CONFIG_EPOLL is not set | ||
| 17 | # CONFIG_SIGNALFD is not set | ||
| 18 | # CONFIG_SHMEM is not set | ||
| 19 | CONFIG_SLAB=y | 14 | CONFIG_SLAB=y |
| 20 | CONFIG_MODULES=y | 15 | CONFIG_MODULES=y |
| 21 | CONFIG_MODULE_UNLOAD=y | 16 | CONFIG_MODULE_UNLOAD=y |
| 22 | # CONFIG_BLK_DEV_BSG is not set | 17 | # CONFIG_BLK_DEV_BSG is not set |
| 18 | CONFIG_PARTITION_ADVANCED=y | ||
| 19 | # CONFIG_EFI_PARTITION is not set | ||
| 23 | CONFIG_OPT_LIB_ASM=y | 20 | CONFIG_OPT_LIB_ASM=y |
| 24 | CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR=1 | 21 | CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR=1 |
| 25 | CONFIG_XILINX_MICROBLAZE0_USE_PCMP_INSTR=1 | 22 | CONFIG_XILINX_MICROBLAZE0_USE_PCMP_INSTR=1 |
| @@ -31,39 +28,62 @@ CONFIG_HZ_100=y | |||
| 31 | CONFIG_MMU=y | 28 | CONFIG_MMU=y |
| 32 | CONFIG_CMDLINE_BOOL=y | 29 | CONFIG_CMDLINE_BOOL=y |
| 33 | CONFIG_CMDLINE_FORCE=y | 30 | CONFIG_CMDLINE_FORCE=y |
| 31 | CONFIG_HIGHMEM=y | ||
| 32 | CONFIG_PCI=y | ||
| 33 | CONFIG_PCI_XILINX=y | ||
| 34 | CONFIG_NET=y | 34 | CONFIG_NET=y |
| 35 | CONFIG_PACKET=y | 35 | CONFIG_PACKET=y |
| 36 | CONFIG_UNIX=y | 36 | CONFIG_UNIX=y |
| 37 | CONFIG_INET=y | 37 | CONFIG_INET=y |
| 38 | # CONFIG_INET_LRO is not set | 38 | # CONFIG_INET_LRO is not set |
| 39 | # CONFIG_IPV6 is not set | 39 | # CONFIG_IPV6 is not set |
| 40 | CONFIG_MTD=y | ||
| 40 | CONFIG_PROC_DEVICETREE=y | 41 | CONFIG_PROC_DEVICETREE=y |
| 41 | CONFIG_BLK_DEV_RAM=y | 42 | CONFIG_BLK_DEV_RAM=y |
| 42 | CONFIG_BLK_DEV_RAM_SIZE=8192 | 43 | CONFIG_BLK_DEV_RAM_SIZE=8192 |
| 43 | CONFIG_NETDEVICES=y | 44 | CONFIG_NETDEVICES=y |
| 44 | CONFIG_NET_ETHERNET=y | ||
| 45 | CONFIG_XILINX_EMACLITE=y | 45 | CONFIG_XILINX_EMACLITE=y |
| 46 | CONFIG_XILINX_LL_TEMAC=y | ||
| 46 | # CONFIG_INPUT is not set | 47 | # CONFIG_INPUT is not set |
| 47 | # CONFIG_SERIO is not set | 48 | # CONFIG_SERIO is not set |
| 48 | # CONFIG_VT is not set | 49 | # CONFIG_VT is not set |
| 50 | CONFIG_SERIAL_8250=y | ||
| 51 | CONFIG_SERIAL_8250_CONSOLE=y | ||
| 49 | CONFIG_SERIAL_UARTLITE=y | 52 | CONFIG_SERIAL_UARTLITE=y |
| 50 | CONFIG_SERIAL_UARTLITE_CONSOLE=y | 53 | CONFIG_SERIAL_UARTLITE_CONSOLE=y |
| 51 | # CONFIG_HW_RANDOM is not set | 54 | # CONFIG_HW_RANDOM is not set |
| 55 | CONFIG_XILINX_HWICAP=y | ||
| 56 | CONFIG_I2C=y | ||
| 57 | CONFIG_I2C_XILINX=y | ||
| 58 | CONFIG_SPI=y | ||
| 59 | CONFIG_SPI_XILINX=y | ||
| 60 | CONFIG_GPIOLIB=y | ||
| 61 | CONFIG_GPIO_SYSFS=y | ||
| 62 | CONFIG_GPIO_XILINX=y | ||
| 52 | # CONFIG_HWMON is not set | 63 | # CONFIG_HWMON is not set |
| 64 | CONFIG_WATCHDOG=y | ||
| 65 | CONFIG_XILINX_WATCHDOG=y | ||
| 66 | CONFIG_FB=y | ||
| 67 | CONFIG_FB_XILINX=y | ||
| 53 | # CONFIG_USB_SUPPORT is not set | 68 | # CONFIG_USB_SUPPORT is not set |
| 69 | CONFIG_UIO=y | ||
| 70 | CONFIG_UIO_PDRV=y | ||
| 71 | CONFIG_UIO_PDRV_GENIRQ=y | ||
| 72 | CONFIG_UIO_DMEM_GENIRQ=y | ||
| 54 | CONFIG_EXT2_FS=y | 73 | CONFIG_EXT2_FS=y |
| 55 | # CONFIG_DNOTIFY is not set | 74 | # CONFIG_DNOTIFY is not set |
| 75 | CONFIG_CRAMFS=y | ||
| 76 | CONFIG_ROMFS_FS=y | ||
| 56 | CONFIG_NFS_FS=y | 77 | CONFIG_NFS_FS=y |
| 57 | CONFIG_NFS_V3=y | ||
| 58 | CONFIG_CIFS=y | 78 | CONFIG_CIFS=y |
| 59 | CONFIG_CIFS_STATS=y | 79 | CONFIG_CIFS_STATS=y |
| 60 | CONFIG_CIFS_STATS2=y | 80 | CONFIG_CIFS_STATS2=y |
| 61 | CONFIG_PARTITION_ADVANCED=y | ||
| 62 | CONFIG_DEBUG_KERNEL=y | ||
| 63 | CONFIG_DETECT_HUNG_TASK=y | 81 | CONFIG_DETECT_HUNG_TASK=y |
| 64 | CONFIG_DEBUG_SLAB=y | 82 | CONFIG_DEBUG_SLAB=y |
| 65 | CONFIG_DEBUG_SPINLOCK=y | 83 | CONFIG_DEBUG_SPINLOCK=y |
| 66 | CONFIG_DEBUG_INFO=y | 84 | CONFIG_DEBUG_INFO=y |
| 67 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | ||
| 68 | CONFIG_EARLY_PRINTK=y | 85 | CONFIG_EARLY_PRINTK=y |
| 86 | CONFIG_KEYS=y | ||
| 87 | CONFIG_ENCRYPTED_KEYS=y | ||
| 88 | CONFIG_KEYS_DEBUG_PROC_KEYS=y | ||
| 69 | # CONFIG_CRYPTO_ANSI_CPRNG is not set | 89 | # CONFIG_CRYPTO_ANSI_CPRNG is not set |
diff --git a/arch/microblaze/configs/nommu_defconfig b/arch/microblaze/configs/nommu_defconfig index 0249e4b7e1d3..10b5172283d7 100644 --- a/arch/microblaze/configs/nommu_defconfig +++ b/arch/microblaze/configs/nommu_defconfig | |||
| @@ -1,41 +1,42 @@ | |||
| 1 | CONFIG_EXPERIMENTAL=y | 1 | CONFIG_EXPERIMENTAL=y |
| 2 | CONFIG_SYSVIPC=y | 2 | CONFIG_SYSVIPC=y |
| 3 | CONFIG_POSIX_MQUEUE=y | 3 | CONFIG_POSIX_MQUEUE=y |
| 4 | CONFIG_FHANDLE=y | ||
| 5 | CONFIG_AUDIT=y | ||
| 6 | CONFIG_AUDIT_LOGINUID_IMMUTABLE=y | ||
| 4 | CONFIG_BSD_PROCESS_ACCT=y | 7 | CONFIG_BSD_PROCESS_ACCT=y |
| 5 | CONFIG_BSD_PROCESS_ACCT_V3=y | 8 | CONFIG_BSD_PROCESS_ACCT_V3=y |
| 6 | CONFIG_IKCONFIG=y | 9 | CONFIG_IKCONFIG=y |
| 7 | CONFIG_IKCONFIG_PROC=y | 10 | CONFIG_IKCONFIG_PROC=y |
| 11 | CONFIG_SYSFS_DEPRECATED=y | ||
| 8 | CONFIG_SYSFS_DEPRECATED_V2=y | 12 | CONFIG_SYSFS_DEPRECATED_V2=y |
| 9 | CONFIG_EXPERT=y | ||
| 10 | CONFIG_KALLSYMS_ALL=y | 13 | CONFIG_KALLSYMS_ALL=y |
| 11 | CONFIG_KALLSYMS_EXTRA_PASS=y | ||
| 12 | # CONFIG_HOTPLUG is not set | ||
| 13 | # CONFIG_BASE_FULL is not set | 14 | # CONFIG_BASE_FULL is not set |
| 15 | CONFIG_EMBEDDED=y | ||
| 14 | CONFIG_SLAB=y | 16 | CONFIG_SLAB=y |
| 15 | CONFIG_MODULES=y | 17 | CONFIG_MODULES=y |
| 16 | CONFIG_MODULE_UNLOAD=y | 18 | CONFIG_MODULE_UNLOAD=y |
| 17 | # CONFIG_BLK_DEV_BSG is not set | 19 | # CONFIG_BLK_DEV_BSG is not set |
| 18 | # CONFIG_OPT_LIB_FUNCTION is not set | 20 | CONFIG_PARTITION_ADVANCED=y |
| 21 | # CONFIG_EFI_PARTITION is not set | ||
| 19 | CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR=1 | 22 | CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR=1 |
| 20 | CONFIG_XILINX_MICROBLAZE0_USE_PCMP_INSTR=1 | 23 | CONFIG_XILINX_MICROBLAZE0_USE_PCMP_INSTR=1 |
| 21 | CONFIG_XILINX_MICROBLAZE0_USE_BARREL=1 | 24 | CONFIG_XILINX_MICROBLAZE0_USE_BARREL=1 |
| 22 | CONFIG_XILINX_MICROBLAZE0_USE_DIV=1 | 25 | CONFIG_XILINX_MICROBLAZE0_USE_DIV=1 |
| 23 | CONFIG_XILINX_MICROBLAZE0_USE_HW_MUL=2 | 26 | CONFIG_XILINX_MICROBLAZE0_USE_HW_MUL=2 |
| 24 | CONFIG_XILINX_MICROBLAZE0_USE_FPU=2 | 27 | CONFIG_XILINX_MICROBLAZE0_USE_FPU=2 |
| 25 | CONFIG_HIGH_RES_TIMERS=y | ||
| 26 | CONFIG_HZ_100=y | 28 | CONFIG_HZ_100=y |
| 27 | CONFIG_CMDLINE_BOOL=y | 29 | CONFIG_CMDLINE_BOOL=y |
| 28 | CONFIG_BINFMT_FLAT=y | 30 | CONFIG_CMDLINE_FORCE=y |
| 31 | CONFIG_PCI=y | ||
| 32 | CONFIG_PCI_XILINX=y | ||
| 29 | CONFIG_NET=y | 33 | CONFIG_NET=y |
| 30 | CONFIG_PACKET=y | 34 | CONFIG_PACKET=y |
| 31 | CONFIG_UNIX=y | 35 | CONFIG_UNIX=y |
| 32 | CONFIG_INET=y | 36 | CONFIG_INET=y |
| 33 | # CONFIG_INET_LRO is not set | 37 | # CONFIG_INET_LRO is not set |
| 34 | # CONFIG_IPV6 is not set | 38 | # CONFIG_IPV6 is not set |
| 35 | # CONFIG_PREVENT_FIRMWARE_BUILD is not set | ||
| 36 | CONFIG_MTD=y | 39 | CONFIG_MTD=y |
| 37 | CONFIG_MTD_CONCAT=y | ||
| 38 | CONFIG_MTD_PARTITIONS=y | ||
| 39 | CONFIG_MTD_CMDLINE_PARTS=y | 40 | CONFIG_MTD_CMDLINE_PARTS=y |
| 40 | CONFIG_MTD_CHAR=y | 41 | CONFIG_MTD_CHAR=y |
| 41 | CONFIG_MTD_BLOCK=y | 42 | CONFIG_MTD_BLOCK=y |
| @@ -45,41 +46,55 @@ CONFIG_MTD_CFI_AMDSTD=y | |||
| 45 | CONFIG_MTD_RAM=y | 46 | CONFIG_MTD_RAM=y |
| 46 | CONFIG_MTD_UCLINUX=y | 47 | CONFIG_MTD_UCLINUX=y |
| 47 | CONFIG_PROC_DEVICETREE=y | 48 | CONFIG_PROC_DEVICETREE=y |
| 48 | CONFIG_BLK_DEV_NBD=y | ||
| 49 | CONFIG_BLK_DEV_RAM=y | 49 | CONFIG_BLK_DEV_RAM=y |
| 50 | CONFIG_BLK_DEV_RAM_SIZE=8192 | ||
| 50 | CONFIG_NETDEVICES=y | 51 | CONFIG_NETDEVICES=y |
| 51 | CONFIG_NET_ETHERNET=y | 52 | CONFIG_XILINX_EMACLITE=y |
| 53 | CONFIG_XILINX_LL_TEMAC=y | ||
| 52 | # CONFIG_INPUT is not set | 54 | # CONFIG_INPUT is not set |
| 53 | # CONFIG_SERIO is not set | 55 | # CONFIG_SERIO is not set |
| 54 | # CONFIG_VT is not set | 56 | # CONFIG_VT is not set |
| 57 | CONFIG_SERIAL_8250=y | ||
| 58 | CONFIG_SERIAL_8250_CONSOLE=y | ||
| 55 | CONFIG_SERIAL_UARTLITE=y | 59 | CONFIG_SERIAL_UARTLITE=y |
| 56 | CONFIG_SERIAL_UARTLITE_CONSOLE=y | 60 | CONFIG_SERIAL_UARTLITE_CONSOLE=y |
| 57 | CONFIG_HW_RANDOM=y | 61 | # CONFIG_HW_RANDOM is not set |
| 62 | CONFIG_XILINX_HWICAP=y | ||
| 63 | CONFIG_I2C=y | ||
| 64 | CONFIG_I2C_XILINX=y | ||
| 65 | CONFIG_SPI=y | ||
| 66 | CONFIG_SPI_XILINX=y | ||
| 67 | CONFIG_GPIOLIB=y | ||
| 68 | CONFIG_GPIO_SYSFS=y | ||
| 69 | CONFIG_GPIO_XILINX=y | ||
| 58 | # CONFIG_HWMON is not set | 70 | # CONFIG_HWMON is not set |
| 59 | CONFIG_VIDEO_OUTPUT_CONTROL=y | 71 | CONFIG_WATCHDOG=y |
| 72 | CONFIG_XILINX_WATCHDOG=y | ||
| 73 | CONFIG_FB=y | ||
| 74 | CONFIG_FB_XILINX=y | ||
| 75 | # CONFIG_USB_SUPPORT is not set | ||
| 76 | CONFIG_UIO=y | ||
| 77 | CONFIG_UIO_PDRV=y | ||
| 78 | CONFIG_UIO_PDRV_GENIRQ=y | ||
| 79 | CONFIG_UIO_DMEM_GENIRQ=y | ||
| 60 | CONFIG_EXT2_FS=y | 80 | CONFIG_EXT2_FS=y |
| 61 | # CONFIG_DNOTIFY is not set | 81 | # CONFIG_DNOTIFY is not set |
| 62 | CONFIG_CRAMFS=y | 82 | CONFIG_CRAMFS=y |
| 63 | CONFIG_ROMFS_FS=y | 83 | CONFIG_ROMFS_FS=y |
| 64 | CONFIG_NFS_FS=y | 84 | CONFIG_NFS_FS=y |
| 65 | CONFIG_NFS_V3=y | ||
| 66 | CONFIG_NFS_V3_ACL=y | 85 | CONFIG_NFS_V3_ACL=y |
| 67 | CONFIG_UNUSED_SYMBOLS=y | 86 | CONFIG_NLS=y |
| 68 | CONFIG_DEBUG_FS=y | ||
| 69 | CONFIG_DEBUG_KERNEL=y | ||
| 70 | CONFIG_DEBUG_SHIRQ=y | ||
| 71 | CONFIG_DETECT_HUNG_TASK=y | 87 | CONFIG_DETECT_HUNG_TASK=y |
| 72 | CONFIG_SCHEDSTATS=y | 88 | CONFIG_DEBUG_SLAB=y |
| 73 | CONFIG_TIMER_STATS=y | 89 | CONFIG_DEBUG_SPINLOCK=y |
| 74 | CONFIG_DEBUG_OBJECTS=y | ||
| 75 | CONFIG_DEBUG_OBJECTS_SELFTEST=y | ||
| 76 | CONFIG_DEBUG_OBJECTS_FREE=y | ||
| 77 | CONFIG_DEBUG_OBJECTS_TIMERS=y | ||
| 78 | CONFIG_DEBUG_INFO=y | 90 | CONFIG_DEBUG_INFO=y |
| 79 | CONFIG_DEBUG_LIST=y | ||
| 80 | CONFIG_DEBUG_SG=y | ||
| 81 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | ||
| 82 | CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
| 83 | CONFIG_EARLY_PRINTK=y | 91 | CONFIG_EARLY_PRINTK=y |
| 92 | CONFIG_KEYS=y | ||
| 93 | CONFIG_ENCRYPTED_KEYS=y | ||
| 94 | CONFIG_KEYS_DEBUG_PROC_KEYS=y | ||
| 95 | CONFIG_CRYPTO_ECB=y | ||
| 96 | CONFIG_CRYPTO_MD4=y | ||
| 97 | CONFIG_CRYPTO_MD5=y | ||
| 98 | CONFIG_CRYPTO_ARC4=y | ||
| 99 | CONFIG_CRYPTO_DES=y | ||
| 84 | # CONFIG_CRYPTO_ANSI_CPRNG is not set | 100 | # CONFIG_CRYPTO_ANSI_CPRNG is not set |
| 85 | # CONFIG_CRC32 is not set | ||
diff --git a/arch/microblaze/include/asm/highmem.h b/arch/microblaze/include/asm/highmem.h index 2446a73140ac..d04638932438 100644 --- a/arch/microblaze/include/asm/highmem.h +++ b/arch/microblaze/include/asm/highmem.h | |||
| @@ -71,7 +71,7 @@ static inline void kunmap(struct page *page) | |||
| 71 | kunmap_high(page); | 71 | kunmap_high(page); |
| 72 | } | 72 | } |
| 73 | 73 | ||
| 74 | static inline void *__kmap_atomic(struct page *page) | 74 | static inline void *kmap_atomic(struct page *page) |
| 75 | { | 75 | { |
| 76 | return kmap_atomic_prot(page, kmap_prot); | 76 | return kmap_atomic_prot(page, kmap_prot); |
| 77 | } | 77 | } |
diff --git a/arch/microblaze/include/asm/uaccess.h b/arch/microblaze/include/asm/uaccess.h index 927540d3cb7d..a1ab5f0009ef 100644 --- a/arch/microblaze/include/asm/uaccess.h +++ b/arch/microblaze/include/asm/uaccess.h | |||
| @@ -108,7 +108,7 @@ static inline int ___range_ok(unsigned long addr, unsigned long size) | |||
| 108 | # define __EX_TABLE_SECTION ".section __ex_table,\"a\"\n" | 108 | # define __EX_TABLE_SECTION ".section __ex_table,\"a\"\n" |
| 109 | #else | 109 | #else |
| 110 | # define __FIXUP_SECTION ".section .discard,\"ax\"\n" | 110 | # define __FIXUP_SECTION ".section .discard,\"ax\"\n" |
| 111 | # define __EX_TABLE_SECTION ".section .discard,\"a\"\n" | 111 | # define __EX_TABLE_SECTION ".section .discard,\"ax\"\n" |
| 112 | #endif | 112 | #endif |
| 113 | 113 | ||
| 114 | extern unsigned long __copy_tofrom_user(void __user *to, | 114 | extern unsigned long __copy_tofrom_user(void __user *to, |
diff --git a/arch/microblaze/include/asm/unistd.h b/arch/microblaze/include/asm/unistd.h index a5f06ac97113..10f8ac186855 100644 --- a/arch/microblaze/include/asm/unistd.h +++ b/arch/microblaze/include/asm/unistd.h | |||
| @@ -37,9 +37,7 @@ | |||
| 37 | #define __ARCH_WANT_SYS_RT_SIGSUSPEND | 37 | #define __ARCH_WANT_SYS_RT_SIGSUSPEND |
| 38 | #define __ARCH_WANT_SYS_CLONE | 38 | #define __ARCH_WANT_SYS_CLONE |
| 39 | #define __ARCH_WANT_SYS_VFORK | 39 | #define __ARCH_WANT_SYS_VFORK |
| 40 | #ifdef CONFIG_MMU | ||
| 41 | #define __ARCH_WANT_SYS_FORK | 40 | #define __ARCH_WANT_SYS_FORK |
| 42 | #endif | ||
| 43 | 41 | ||
| 44 | /* | 42 | /* |
| 45 | * "Conditional" syscalls | 43 | * "Conditional" syscalls |
diff --git a/arch/microblaze/include/uapi/asm/unistd.h b/arch/microblaze/include/uapi/asm/unistd.h index ccb6920f3b33..5f7fe7582f3a 100644 --- a/arch/microblaze/include/uapi/asm/unistd.h +++ b/arch/microblaze/include/uapi/asm/unistd.h | |||
| @@ -395,7 +395,8 @@ | |||
| 395 | #define __NR_process_vm_readv 377 | 395 | #define __NR_process_vm_readv 377 |
| 396 | #define __NR_process_vm_writev 378 | 396 | #define __NR_process_vm_writev 378 |
| 397 | #define __NR_kcmp 379 | 397 | #define __NR_kcmp 379 |
| 398 | #define __NR_finit_module 380 | ||
| 398 | 399 | ||
| 399 | #define __NR_syscalls 380 | 400 | #define __NR_syscalls 381 |
| 400 | 401 | ||
| 401 | #endif /* _UAPI_ASM_MICROBLAZE_UNISTD_H */ | 402 | #endif /* _UAPI_ASM_MICROBLAZE_UNISTD_H */ |
diff --git a/arch/microblaze/kernel/syscall_table.S b/arch/microblaze/kernel/syscall_table.S index 1cbace29b5e2..4fca56cf02f6 100644 --- a/arch/microblaze/kernel/syscall_table.S +++ b/arch/microblaze/kernel/syscall_table.S | |||
| @@ -380,3 +380,4 @@ ENTRY(sys_call_table) | |||
| 380 | .long sys_process_vm_readv | 380 | .long sys_process_vm_readv |
| 381 | .long sys_process_vm_writev | 381 | .long sys_process_vm_writev |
| 382 | .long sys_kcmp | 382 | .long sys_kcmp |
| 383 | .long sys_finit_module | ||
diff --git a/arch/microblaze/pci/pci-common.c b/arch/microblaze/pci/pci-common.c index a1c5b996d66d..96416553cb36 100644 --- a/arch/microblaze/pci/pci-common.c +++ b/arch/microblaze/pci/pci-common.c | |||
| @@ -287,7 +287,7 @@ static struct resource *__pci_mmap_make_offset(struct pci_dev *dev, | |||
| 287 | unsigned long io_offset = 0; | 287 | unsigned long io_offset = 0; |
| 288 | int i, res_bit; | 288 | int i, res_bit; |
| 289 | 289 | ||
| 290 | if (hose == 0) | 290 | if (!hose) |
| 291 | return NULL; /* should never happen */ | 291 | return NULL; /* should never happen */ |
| 292 | 292 | ||
| 293 | /* If memory, add on the PCI bridge address offset */ | 293 | /* If memory, add on the PCI bridge address offset */ |
| @@ -655,9 +655,8 @@ void pci_resource_to_user(const struct pci_dev *dev, int bar, | |||
| 655 | * - Some 32 bits platforms such as 4xx can have physical space larger than | 655 | * - Some 32 bits platforms such as 4xx can have physical space larger than |
| 656 | * 32 bits so we need to use 64 bits values for the parsing | 656 | * 32 bits so we need to use 64 bits values for the parsing |
| 657 | */ | 657 | */ |
| 658 | void __devinit pci_process_bridge_OF_ranges(struct pci_controller *hose, | 658 | void pci_process_bridge_OF_ranges(struct pci_controller *hose, |
| 659 | struct device_node *dev, | 659 | struct device_node *dev, int primary) |
| 660 | int primary) | ||
| 661 | { | 660 | { |
| 662 | const u32 *ranges; | 661 | const u32 *ranges; |
| 663 | int rlen; | 662 | int rlen; |
| @@ -822,15 +821,13 @@ void __devinit pci_process_bridge_OF_ranges(struct pci_controller *hose, | |||
| 822 | /* Decide whether to display the domain number in /proc */ | 821 | /* Decide whether to display the domain number in /proc */ |
| 823 | int pci_proc_domain(struct pci_bus *bus) | 822 | int pci_proc_domain(struct pci_bus *bus) |
| 824 | { | 823 | { |
| 825 | struct pci_controller *hose = pci_bus_to_host(bus); | ||
| 826 | |||
| 827 | return 0; | 824 | return 0; |
| 828 | } | 825 | } |
| 829 | 826 | ||
| 830 | /* This header fixup will do the resource fixup for all devices as they are | 827 | /* This header fixup will do the resource fixup for all devices as they are |
| 831 | * probed, but not for bridge ranges | 828 | * probed, but not for bridge ranges |
| 832 | */ | 829 | */ |
| 833 | static void __devinit pcibios_fixup_resources(struct pci_dev *dev) | 830 | static void pcibios_fixup_resources(struct pci_dev *dev) |
| 834 | { | 831 | { |
| 835 | struct pci_controller *hose = pci_bus_to_host(dev->bus); | 832 | struct pci_controller *hose = pci_bus_to_host(dev->bus); |
| 836 | int i; | 833 | int i; |
| @@ -871,8 +868,8 @@ DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, pcibios_fixup_resources); | |||
| 871 | * things go more smoothly when it gets it right. It should covers cases such | 868 | * things go more smoothly when it gets it right. It should covers cases such |
| 872 | * as Apple "closed" bridge resources and bare-metal pSeries unassigned bridges | 869 | * as Apple "closed" bridge resources and bare-metal pSeries unassigned bridges |
| 873 | */ | 870 | */ |
| 874 | static int __devinit pcibios_uninitialized_bridge_resource(struct pci_bus *bus, | 871 | static int pcibios_uninitialized_bridge_resource(struct pci_bus *bus, |
| 875 | struct resource *res) | 872 | struct resource *res) |
| 876 | { | 873 | { |
| 877 | struct pci_controller *hose = pci_bus_to_host(bus); | 874 | struct pci_controller *hose = pci_bus_to_host(bus); |
| 878 | struct pci_dev *dev = bus->self; | 875 | struct pci_dev *dev = bus->self; |
| @@ -933,7 +930,7 @@ static int __devinit pcibios_uninitialized_bridge_resource(struct pci_bus *bus, | |||
| 933 | } | 930 | } |
| 934 | 931 | ||
| 935 | /* Fixup resources of a PCI<->PCI bridge */ | 932 | /* Fixup resources of a PCI<->PCI bridge */ |
| 936 | static void __devinit pcibios_fixup_bridge(struct pci_bus *bus) | 933 | static void pcibios_fixup_bridge(struct pci_bus *bus) |
| 937 | { | 934 | { |
| 938 | struct resource *res; | 935 | struct resource *res; |
| 939 | int i; | 936 | int i; |
| @@ -970,14 +967,14 @@ static void __devinit pcibios_fixup_bridge(struct pci_bus *bus) | |||
| 970 | } | 967 | } |
| 971 | } | 968 | } |
| 972 | 969 | ||
| 973 | void __devinit pcibios_setup_bus_self(struct pci_bus *bus) | 970 | void pcibios_setup_bus_self(struct pci_bus *bus) |
| 974 | { | 971 | { |
| 975 | /* Fix up the bus resources for P2P bridges */ | 972 | /* Fix up the bus resources for P2P bridges */ |
| 976 | if (bus->self != NULL) | 973 | if (bus->self != NULL) |
| 977 | pcibios_fixup_bridge(bus); | 974 | pcibios_fixup_bridge(bus); |
| 978 | } | 975 | } |
| 979 | 976 | ||
| 980 | void __devinit pcibios_setup_bus_devices(struct pci_bus *bus) | 977 | void pcibios_setup_bus_devices(struct pci_bus *bus) |
| 981 | { | 978 | { |
| 982 | struct pci_dev *dev; | 979 | struct pci_dev *dev; |
| 983 | 980 | ||
| @@ -1002,7 +999,7 @@ void __devinit pcibios_setup_bus_devices(struct pci_bus *bus) | |||
| 1002 | } | 999 | } |
| 1003 | } | 1000 | } |
| 1004 | 1001 | ||
| 1005 | void __devinit pcibios_fixup_bus(struct pci_bus *bus) | 1002 | void pcibios_fixup_bus(struct pci_bus *bus) |
| 1006 | { | 1003 | { |
| 1007 | /* When called from the generic PCI probe, read PCI<->PCI bridge | 1004 | /* When called from the generic PCI probe, read PCI<->PCI bridge |
| 1008 | * bases. This is -not- called when generating the PCI tree from | 1005 | * bases. This is -not- called when generating the PCI tree from |
| @@ -1124,7 +1121,7 @@ static int __init reparent_resources(struct resource *parent, | |||
| 1124 | * as well. | 1121 | * as well. |
| 1125 | */ | 1122 | */ |
| 1126 | 1123 | ||
| 1127 | void pcibios_allocate_bus_resources(struct pci_bus *bus) | 1124 | static void pcibios_allocate_bus_resources(struct pci_bus *bus) |
| 1128 | { | 1125 | { |
| 1129 | struct pci_bus *b; | 1126 | struct pci_bus *b; |
| 1130 | int i; | 1127 | int i; |
| @@ -1179,7 +1176,7 @@ void pcibios_allocate_bus_resources(struct pci_bus *bus) | |||
| 1179 | } | 1176 | } |
| 1180 | printk(KERN_WARNING "PCI: Cannot allocate resource region " | 1177 | printk(KERN_WARNING "PCI: Cannot allocate resource region " |
| 1181 | "%d of PCI bridge %d, will remap\n", i, bus->number); | 1178 | "%d of PCI bridge %d, will remap\n", i, bus->number); |
| 1182 | clear_resource: | 1179 | |
| 1183 | res->start = res->end = 0; | 1180 | res->start = res->end = 0; |
| 1184 | res->flags = 0; | 1181 | res->flags = 0; |
| 1185 | } | 1182 | } |
| @@ -1188,7 +1185,7 @@ clear_resource: | |||
| 1188 | pcibios_allocate_bus_resources(b); | 1185 | pcibios_allocate_bus_resources(b); |
| 1189 | } | 1186 | } |
| 1190 | 1187 | ||
| 1191 | static inline void __devinit alloc_resource(struct pci_dev *dev, int idx) | 1188 | static inline void alloc_resource(struct pci_dev *dev, int idx) |
| 1192 | { | 1189 | { |
| 1193 | struct resource *pr, *r = &dev->resource[idx]; | 1190 | struct resource *pr, *r = &dev->resource[idx]; |
| 1194 | 1191 | ||
| @@ -1351,7 +1348,7 @@ void __init pcibios_resource_survey(void) | |||
| 1351 | * rest of the code later, for now, keep it as-is as our main | 1348 | * rest of the code later, for now, keep it as-is as our main |
| 1352 | * resource allocation function doesn't deal with sub-trees yet. | 1349 | * resource allocation function doesn't deal with sub-trees yet. |
| 1353 | */ | 1350 | */ |
| 1354 | void __devinit pcibios_claim_one_bus(struct pci_bus *bus) | 1351 | void pcibios_claim_one_bus(struct pci_bus *bus) |
| 1355 | { | 1352 | { |
| 1356 | struct pci_dev *dev; | 1353 | struct pci_dev *dev; |
| 1357 | struct pci_bus *child_bus; | 1354 | struct pci_bus *child_bus; |
| @@ -1410,7 +1407,8 @@ int pcibios_enable_device(struct pci_dev *dev, int mask) | |||
| 1410 | return pci_enable_resources(dev, mask); | 1407 | return pci_enable_resources(dev, mask); |
| 1411 | } | 1408 | } |
| 1412 | 1409 | ||
| 1413 | static void __devinit pcibios_setup_phb_resources(struct pci_controller *hose, struct list_head *resources) | 1410 | static void pcibios_setup_phb_resources(struct pci_controller *hose, |
| 1411 | struct list_head *resources) | ||
| 1414 | { | 1412 | { |
| 1415 | unsigned long io_offset; | 1413 | unsigned long io_offset; |
| 1416 | struct resource *res; | 1414 | struct resource *res; |
| @@ -1433,7 +1431,8 @@ static void __devinit pcibios_setup_phb_resources(struct pci_controller *hose, s | |||
| 1433 | res->end = res->start + IO_SPACE_LIMIT; | 1431 | res->end = res->start + IO_SPACE_LIMIT; |
| 1434 | res->flags = IORESOURCE_IO; | 1432 | res->flags = IORESOURCE_IO; |
| 1435 | } | 1433 | } |
| 1436 | pci_add_resource_offset(resources, res, hose->io_base_virt - _IO_BASE); | 1434 | pci_add_resource_offset(resources, res, |
| 1435 | (__force resource_size_t)(hose->io_base_virt - _IO_BASE)); | ||
| 1437 | 1436 | ||
| 1438 | pr_debug("PCI: PHB IO resource = %016llx-%016llx [%lx]\n", | 1437 | pr_debug("PCI: PHB IO resource = %016llx-%016llx [%lx]\n", |
| 1439 | (unsigned long long)res->start, | 1438 | (unsigned long long)res->start, |
| @@ -1477,7 +1476,7 @@ struct device_node *pcibios_get_phb_of_node(struct pci_bus *bus) | |||
| 1477 | return of_node_get(hose->dn); | 1476 | return of_node_get(hose->dn); |
| 1478 | } | 1477 | } |
| 1479 | 1478 | ||
| 1480 | static void __devinit pcibios_scan_phb(struct pci_controller *hose) | 1479 | static void pcibios_scan_phb(struct pci_controller *hose) |
| 1481 | { | 1480 | { |
| 1482 | LIST_HEAD(resources); | 1481 | LIST_HEAD(resources); |
| 1483 | struct pci_bus *bus; | 1482 | struct pci_bus *bus; |
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index b7dc39c6c849..2ac626ab9d43 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig | |||
| @@ -39,8 +39,8 @@ config MIPS | |||
| 39 | select GENERIC_CLOCKEVENTS | 39 | select GENERIC_CLOCKEVENTS |
| 40 | select GENERIC_CMOS_UPDATE | 40 | select GENERIC_CMOS_UPDATE |
| 41 | select HAVE_MOD_ARCH_SPECIFIC | 41 | select HAVE_MOD_ARCH_SPECIFIC |
| 42 | select MODULES_USE_ELF_REL | 42 | select MODULES_USE_ELF_REL if MODULES |
| 43 | select MODULES_USE_ELF_RELA if 64BIT | 43 | select MODULES_USE_ELF_RELA if MODULES && 64BIT |
| 44 | 44 | ||
| 45 | menu "Machine selection" | 45 | menu "Machine selection" |
| 46 | 46 | ||
diff --git a/arch/mips/alchemy/common/time.c b/arch/mips/alchemy/common/time.c index a7193ae13a5d..b67930d19325 100644 --- a/arch/mips/alchemy/common/time.c +++ b/arch/mips/alchemy/common/time.c | |||
| @@ -53,7 +53,7 @@ static struct clocksource au1x_counter1_clocksource = { | |||
| 53 | .read = au1x_counter1_read, | 53 | .read = au1x_counter1_read, |
| 54 | .mask = CLOCKSOURCE_MASK(32), | 54 | .mask = CLOCKSOURCE_MASK(32), |
| 55 | .flags = CLOCK_SOURCE_IS_CONTINUOUS, | 55 | .flags = CLOCK_SOURCE_IS_CONTINUOUS, |
| 56 | .rating = 100, | 56 | .rating = 1500, |
| 57 | }; | 57 | }; |
| 58 | 58 | ||
| 59 | static int au1x_rtcmatch2_set_next_event(unsigned long delta, | 59 | static int au1x_rtcmatch2_set_next_event(unsigned long delta, |
| @@ -84,7 +84,7 @@ static irqreturn_t au1x_rtcmatch2_irq(int irq, void *dev_id) | |||
| 84 | static struct clock_event_device au1x_rtcmatch2_clockdev = { | 84 | static struct clock_event_device au1x_rtcmatch2_clockdev = { |
| 85 | .name = "rtcmatch2", | 85 | .name = "rtcmatch2", |
| 86 | .features = CLOCK_EVT_FEAT_ONESHOT, | 86 | .features = CLOCK_EVT_FEAT_ONESHOT, |
| 87 | .rating = 100, | 87 | .rating = 1500, |
| 88 | .set_next_event = au1x_rtcmatch2_set_next_event, | 88 | .set_next_event = au1x_rtcmatch2_set_next_event, |
| 89 | .set_mode = au1x_rtcmatch2_set_mode, | 89 | .set_mode = au1x_rtcmatch2_set_mode, |
| 90 | .cpumask = cpu_all_mask, | 90 | .cpumask = cpu_all_mask, |
| @@ -158,20 +158,6 @@ cntr_err: | |||
| 158 | return -1; | 158 | return -1; |
| 159 | } | 159 | } |
| 160 | 160 | ||
| 161 | static void __init alchemy_setup_c0timer(void) | ||
| 162 | { | ||
| 163 | /* | ||
| 164 | * MIPS kernel assigns 'au1k_wait' to 'cpu_wait' before this | ||
| 165 | * function is called. Because the Alchemy counters are unusable | ||
| 166 | * the C0 timekeeping code is installed and use of the 'wait' | ||
| 167 | * instruction must be prohibited, which is done most easily by | ||
| 168 | * assigning NULL to cpu_wait. | ||
| 169 | */ | ||
| 170 | cpu_wait = NULL; | ||
| 171 | r4k_clockevent_init(); | ||
| 172 | init_r4k_clocksource(); | ||
| 173 | } | ||
| 174 | |||
| 175 | static int alchemy_m2inttab[] __initdata = { | 161 | static int alchemy_m2inttab[] __initdata = { |
| 176 | AU1000_RTC_MATCH2_INT, | 162 | AU1000_RTC_MATCH2_INT, |
| 177 | AU1500_RTC_MATCH2_INT, | 163 | AU1500_RTC_MATCH2_INT, |
| @@ -186,8 +172,7 @@ void __init plat_time_init(void) | |||
| 186 | int t; | 172 | int t; |
| 187 | 173 | ||
| 188 | t = alchemy_get_cputype(); | 174 | t = alchemy_get_cputype(); |
| 189 | if (t == ALCHEMY_CPU_UNKNOWN) | 175 | if (t == ALCHEMY_CPU_UNKNOWN || |
| 190 | alchemy_setup_c0timer(); | 176 | alchemy_time_init(alchemy_m2inttab[t])) |
| 191 | else if (alchemy_time_init(alchemy_m2inttab[t])) | 177 | cpu_wait = NULL; /* wait doesn't work with r4k timer */ |
| 192 | alchemy_setup_c0timer(); | ||
| 193 | } | 178 | } |
diff --git a/arch/mips/bcm47xx/Kconfig b/arch/mips/bcm47xx/Kconfig index d7af29f1fcf0..ba611927749b 100644 --- a/arch/mips/bcm47xx/Kconfig +++ b/arch/mips/bcm47xx/Kconfig | |||
| @@ -8,8 +8,10 @@ config BCM47XX_SSB | |||
| 8 | select SSB_DRIVER_EXTIF | 8 | select SSB_DRIVER_EXTIF |
| 9 | select SSB_EMBEDDED | 9 | select SSB_EMBEDDED |
| 10 | select SSB_B43_PCI_BRIDGE if PCI | 10 | select SSB_B43_PCI_BRIDGE if PCI |
| 11 | select SSB_DRIVER_PCICORE if PCI | ||
| 11 | select SSB_PCICORE_HOSTMODE if PCI | 12 | select SSB_PCICORE_HOSTMODE if PCI |
| 12 | select SSB_DRIVER_GPIO | 13 | select SSB_DRIVER_GPIO |
| 14 | select GPIOLIB | ||
| 13 | default y | 15 | default y |
| 14 | help | 16 | help |
| 15 | Add support for old Broadcom BCM47xx boards with Sonics Silicon Backplane support. | 17 | Add support for old Broadcom BCM47xx boards with Sonics Silicon Backplane support. |
| @@ -25,6 +27,7 @@ config BCM47XX_BCMA | |||
| 25 | select BCMA_HOST_PCI if PCI | 27 | select BCMA_HOST_PCI if PCI |
| 26 | select BCMA_DRIVER_PCI_HOSTMODE if PCI | 28 | select BCMA_DRIVER_PCI_HOSTMODE if PCI |
| 27 | select BCMA_DRIVER_GPIO | 29 | select BCMA_DRIVER_GPIO |
| 30 | select GPIOLIB | ||
| 28 | default y | 31 | default y |
| 29 | help | 32 | help |
| 30 | Add support for new Broadcom BCM47xx boards with Broadcom specific Advanced Microcontroller Bus. | 33 | Add support for new Broadcom BCM47xx boards with Broadcom specific Advanced Microcontroller Bus. |
diff --git a/arch/mips/cavium-octeon/executive/cvmx-l2c.c b/arch/mips/cavium-octeon/executive/cvmx-l2c.c index 9f883bf76953..33b72144db31 100644 --- a/arch/mips/cavium-octeon/executive/cvmx-l2c.c +++ b/arch/mips/cavium-octeon/executive/cvmx-l2c.c | |||
| @@ -30,6 +30,7 @@ | |||
| 30 | * measurement, and debugging facilities. | 30 | * measurement, and debugging facilities. |
| 31 | */ | 31 | */ |
| 32 | 32 | ||
| 33 | #include <linux/compiler.h> | ||
| 33 | #include <linux/irqflags.h> | 34 | #include <linux/irqflags.h> |
| 34 | #include <asm/octeon/cvmx.h> | 35 | #include <asm/octeon/cvmx.h> |
| 35 | #include <asm/octeon/cvmx-l2c.h> | 36 | #include <asm/octeon/cvmx-l2c.h> |
| @@ -285,22 +286,22 @@ uint64_t cvmx_l2c_read_perf(uint32_t counter) | |||
| 285 | */ | 286 | */ |
| 286 | static void fault_in(uint64_t addr, int len) | 287 | static void fault_in(uint64_t addr, int len) |
| 287 | { | 288 | { |
| 288 | volatile char *ptr; | 289 | char *ptr; |
| 289 | volatile char dummy; | 290 | |
| 290 | /* | 291 | /* |
| 291 | * Adjust addr and length so we get all cache lines even for | 292 | * Adjust addr and length so we get all cache lines even for |
| 292 | * small ranges spanning two cache lines. | 293 | * small ranges spanning two cache lines. |
| 293 | */ | 294 | */ |
| 294 | len += addr & CVMX_CACHE_LINE_MASK; | 295 | len += addr & CVMX_CACHE_LINE_MASK; |
| 295 | addr &= ~CVMX_CACHE_LINE_MASK; | 296 | addr &= ~CVMX_CACHE_LINE_MASK; |
| 296 | ptr = (volatile char *)cvmx_phys_to_ptr(addr); | 297 | ptr = cvmx_phys_to_ptr(addr); |
| 297 | /* | 298 | /* |
| 298 | * Invalidate L1 cache to make sure all loads result in data | 299 | * Invalidate L1 cache to make sure all loads result in data |
| 299 | * being in L2. | 300 | * being in L2. |
| 300 | */ | 301 | */ |
| 301 | CVMX_DCACHE_INVALIDATE; | 302 | CVMX_DCACHE_INVALIDATE; |
| 302 | while (len > 0) { | 303 | while (len > 0) { |
| 303 | dummy += *ptr; | 304 | ACCESS_ONCE(*ptr); |
| 304 | len -= CVMX_CACHE_LINE_SIZE; | 305 | len -= CVMX_CACHE_LINE_SIZE; |
| 305 | ptr += CVMX_CACHE_LINE_SIZE; | 306 | ptr += CVMX_CACHE_LINE_SIZE; |
| 306 | } | 307 | } |
diff --git a/arch/mips/cavium-octeon/serial.c b/arch/mips/cavium-octeon/serial.c index 569f41bdcc46..f393f65f3923 100644 --- a/arch/mips/cavium-octeon/serial.c +++ b/arch/mips/cavium-octeon/serial.c | |||
| @@ -43,7 +43,7 @@ void octeon_serial_out(struct uart_port *up, int offset, int value) | |||
| 43 | cvmx_write_csr((uint64_t)(up->membase + (offset << 3)), (u8)value); | 43 | cvmx_write_csr((uint64_t)(up->membase + (offset << 3)), (u8)value); |
| 44 | } | 44 | } |
| 45 | 45 | ||
| 46 | static int __devinit octeon_serial_probe(struct platform_device *pdev) | 46 | static int octeon_serial_probe(struct platform_device *pdev) |
| 47 | { | 47 | { |
| 48 | int irq, res; | 48 | int irq, res; |
| 49 | struct resource *res_mem; | 49 | struct resource *res_mem; |
diff --git a/arch/mips/include/asm/dsp.h b/arch/mips/include/asm/dsp.h index e9bfc0813c72..7bfad0520e25 100644 --- a/arch/mips/include/asm/dsp.h +++ b/arch/mips/include/asm/dsp.h | |||
| @@ -16,7 +16,7 @@ | |||
| 16 | #include <asm/mipsregs.h> | 16 | #include <asm/mipsregs.h> |
| 17 | 17 | ||
| 18 | #define DSP_DEFAULT 0x00000000 | 18 | #define DSP_DEFAULT 0x00000000 |
| 19 | #define DSP_MASK 0x3ff | 19 | #define DSP_MASK 0x3f |
| 20 | 20 | ||
| 21 | #define __enable_dsp_hazard() \ | 21 | #define __enable_dsp_hazard() \ |
| 22 | do { \ | 22 | do { \ |
diff --git a/arch/mips/include/asm/inst.h b/arch/mips/include/asm/inst.h index ab84064283db..33c34adbecfa 100644 --- a/arch/mips/include/asm/inst.h +++ b/arch/mips/include/asm/inst.h | |||
| @@ -353,6 +353,7 @@ union mips_instruction { | |||
| 353 | struct u_format u_format; | 353 | struct u_format u_format; |
| 354 | struct c_format c_format; | 354 | struct c_format c_format; |
| 355 | struct r_format r_format; | 355 | struct r_format r_format; |
| 356 | struct p_format p_format; | ||
| 356 | struct f_format f_format; | 357 | struct f_format f_format; |
| 357 | struct ma_format ma_format; | 358 | struct ma_format ma_format; |
| 358 | struct b_format b_format; | 359 | struct b_format b_format; |
diff --git a/arch/mips/include/asm/mach-pnx833x/war.h b/arch/mips/include/asm/mach-pnx833x/war.h index edaa06d9d492..e410df4e1b3a 100644 --- a/arch/mips/include/asm/mach-pnx833x/war.h +++ b/arch/mips/include/asm/mach-pnx833x/war.h | |||
| @@ -21,4 +21,4 @@ | |||
| 21 | #define R10000_LLSC_WAR 0 | 21 | #define R10000_LLSC_WAR 0 |
| 22 | #define MIPS34K_MISSED_ITLB_WAR 0 | 22 | #define MIPS34K_MISSED_ITLB_WAR 0 |
| 23 | 23 | ||
| 24 | #endif /* __ASM_MIPS_MACH_PNX8550_WAR_H */ | 24 | #endif /* __ASM_MIPS_MACH_PNX833X_WAR_H */ |
diff --git a/arch/mips/include/asm/page.h b/arch/mips/include/asm/page.h index 31ab10f02bad..dbaec94046da 100644 --- a/arch/mips/include/asm/page.h +++ b/arch/mips/include/asm/page.h | |||
| @@ -45,8 +45,6 @@ | |||
| 45 | #define HUGETLB_PAGE_ORDER ({BUILD_BUG(); 0; }) | 45 | #define HUGETLB_PAGE_ORDER ({BUILD_BUG(); 0; }) |
| 46 | #endif /* CONFIG_MIPS_HUGE_TLB_SUPPORT */ | 46 | #endif /* CONFIG_MIPS_HUGE_TLB_SUPPORT */ |
| 47 | 47 | ||
| 48 | #ifndef __ASSEMBLY__ | ||
| 49 | |||
| 50 | #include <linux/pfn.h> | 48 | #include <linux/pfn.h> |
| 51 | #include <asm/io.h> | 49 | #include <asm/io.h> |
| 52 | 50 | ||
| @@ -139,8 +137,6 @@ typedef struct { unsigned long pgprot; } pgprot_t; | |||
| 139 | */ | 137 | */ |
| 140 | #define ptep_buddy(x) ((pte_t *)((unsigned long)(x) ^ sizeof(pte_t))) | 138 | #define ptep_buddy(x) ((pte_t *)((unsigned long)(x) ^ sizeof(pte_t))) |
| 141 | 139 | ||
| 142 | #endif /* !__ASSEMBLY__ */ | ||
| 143 | |||
| 144 | /* | 140 | /* |
| 145 | * __pa()/__va() should be used only during mem init. | 141 | * __pa()/__va() should be used only during mem init. |
| 146 | */ | 142 | */ |
| @@ -202,7 +198,10 @@ typedef struct { unsigned long pgprot; } pgprot_t; | |||
| 202 | #endif | 198 | #endif |
| 203 | 199 | ||
| 204 | #define virt_to_page(kaddr) pfn_to_page(PFN_DOWN(virt_to_phys(kaddr))) | 200 | #define virt_to_page(kaddr) pfn_to_page(PFN_DOWN(virt_to_phys(kaddr))) |
| 205 | #define virt_addr_valid(kaddr) pfn_valid(PFN_DOWN(virt_to_phys(kaddr))) | 201 | |
| 202 | extern int __virt_addr_valid(const volatile void *kaddr); | ||
| 203 | #define virt_addr_valid(kaddr) \ | ||
| 204 | __virt_addr_valid((const volatile void *) (kaddr)) | ||
| 206 | 205 | ||
| 207 | #define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \ | 206 | #define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \ |
| 208 | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC) | 207 | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC) |
diff --git a/arch/mips/include/asm/pci.h b/arch/mips/include/asm/pci.h index 90bf3b3fce19..d69ea743272b 100644 --- a/arch/mips/include/asm/pci.h +++ b/arch/mips/include/asm/pci.h | |||
| @@ -145,7 +145,7 @@ static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel) | |||
| 145 | extern char * (*pcibios_plat_setup)(char *str); | 145 | extern char * (*pcibios_plat_setup)(char *str); |
| 146 | 146 | ||
| 147 | /* this function parses memory ranges from a device node */ | 147 | /* this function parses memory ranges from a device node */ |
| 148 | extern void __devinit pci_load_of_ranges(struct pci_controller *hose, | 148 | extern void pci_load_of_ranges(struct pci_controller *hose, |
| 149 | struct device_node *node); | 149 | struct device_node *node); |
| 150 | 150 | ||
| 151 | #endif /* _ASM_PCI_H */ | 151 | #endif /* _ASM_PCI_H */ |
diff --git a/arch/mips/include/asm/pgtable-64.h b/arch/mips/include/asm/pgtable-64.h index c63191055e69..013d5f781263 100644 --- a/arch/mips/include/asm/pgtable-64.h +++ b/arch/mips/include/asm/pgtable-64.h | |||
| @@ -230,6 +230,7 @@ static inline void pud_clear(pud_t *pudp) | |||
| 230 | #else | 230 | #else |
| 231 | #define pte_pfn(x) ((unsigned long)((x).pte >> _PFN_SHIFT)) | 231 | #define pte_pfn(x) ((unsigned long)((x).pte >> _PFN_SHIFT)) |
| 232 | #define pfn_pte(pfn, prot) __pte(((pfn) << _PFN_SHIFT) | pgprot_val(prot)) | 232 | #define pfn_pte(pfn, prot) __pte(((pfn) << _PFN_SHIFT) | pgprot_val(prot)) |
| 233 | #define pfn_pmd(pfn, prot) __pmd(((pfn) << _PFN_SHIFT) | pgprot_val(prot)) | ||
| 233 | #endif | 234 | #endif |
| 234 | 235 | ||
| 235 | #define __pgd_offset(address) pgd_index(address) | 236 | #define __pgd_offset(address) pgd_index(address) |
diff --git a/arch/mips/include/asm/thread_info.h b/arch/mips/include/asm/thread_info.h index 18806a52061c..b2050b9e64b1 100644 --- a/arch/mips/include/asm/thread_info.h +++ b/arch/mips/include/asm/thread_info.h | |||
| @@ -29,10 +29,11 @@ struct thread_info { | |||
| 29 | __u32 cpu; /* current CPU */ | 29 | __u32 cpu; /* current CPU */ |
| 30 | int preempt_count; /* 0 => preemptable, <0 => BUG */ | 30 | int preempt_count; /* 0 => preemptable, <0 => BUG */ |
| 31 | 31 | ||
| 32 | mm_segment_t addr_limit; /* thread address space: | 32 | mm_segment_t addr_limit; /* |
| 33 | 0-0xBFFFFFFF for user-thead | 33 | * thread address space limit: |
| 34 | 0-0xFFFFFFFF for kernel-thread | 34 | * 0x7fffffff for user-thead |
| 35 | */ | 35 | * 0xffffffff for kernel-thread |
| 36 | */ | ||
| 36 | struct restart_block restart_block; | 37 | struct restart_block restart_block; |
| 37 | struct pt_regs *regs; | 38 | struct pt_regs *regs; |
| 38 | }; | 39 | }; |
diff --git a/arch/mips/include/uapi/asm/Kbuild b/arch/mips/include/uapi/asm/Kbuild index a1a0452ac185..77d4fb33f75a 100644 --- a/arch/mips/include/uapi/asm/Kbuild +++ b/arch/mips/include/uapi/asm/Kbuild | |||
| @@ -3,6 +3,7 @@ include include/uapi/asm-generic/Kbuild.asm | |||
| 3 | 3 | ||
| 4 | header-y += auxvec.h | 4 | header-y += auxvec.h |
| 5 | header-y += bitsperlong.h | 5 | header-y += bitsperlong.h |
| 6 | header-y += break.h | ||
| 6 | header-y += byteorder.h | 7 | header-y += byteorder.h |
| 7 | header-y += cachectl.h | 8 | header-y += cachectl.h |
| 8 | header-y += errno.h | 9 | header-y += errno.h |
diff --git a/arch/mips/include/asm/break.h b/arch/mips/include/uapi/asm/break.h index 9161e684cb4c..9161e684cb4c 100644 --- a/arch/mips/include/asm/break.h +++ b/arch/mips/include/uapi/asm/break.h | |||
diff --git a/arch/mips/include/uapi/asm/unistd.h b/arch/mips/include/uapi/asm/unistd.h index cc98a9dcb01b..0eebf3c3e03c 100644 --- a/arch/mips/include/uapi/asm/unistd.h +++ b/arch/mips/include/uapi/asm/unistd.h | |||
| @@ -368,16 +368,17 @@ | |||
| 368 | #define __NR_process_vm_readv (__NR_Linux + 345) | 368 | #define __NR_process_vm_readv (__NR_Linux + 345) |
| 369 | #define __NR_process_vm_writev (__NR_Linux + 346) | 369 | #define __NR_process_vm_writev (__NR_Linux + 346) |
| 370 | #define __NR_kcmp (__NR_Linux + 347) | 370 | #define __NR_kcmp (__NR_Linux + 347) |
| 371 | #define __NR_finit_module (__NR_Linux + 348) | ||
| 371 | 372 | ||
| 372 | /* | 373 | /* |
| 373 | * Offset of the last Linux o32 flavoured syscall | 374 | * Offset of the last Linux o32 flavoured syscall |
| 374 | */ | 375 | */ |
| 375 | #define __NR_Linux_syscalls 347 | 376 | #define __NR_Linux_syscalls 348 |
| 376 | 377 | ||
| 377 | #endif /* _MIPS_SIM == _MIPS_SIM_ABI32 */ | 378 | #endif /* _MIPS_SIM == _MIPS_SIM_ABI32 */ |
| 378 | 379 | ||
| 379 | #define __NR_O32_Linux 4000 | 380 | #define __NR_O32_Linux 4000 |
| 380 | #define __NR_O32_Linux_syscalls 347 | 381 | #define __NR_O32_Linux_syscalls 348 |
| 381 | 382 | ||
| 382 | #if _MIPS_SIM == _MIPS_SIM_ABI64 | 383 | #if _MIPS_SIM == _MIPS_SIM_ABI64 |
| 383 | 384 | ||
| @@ -692,16 +693,17 @@ | |||
| 692 | #define __NR_process_vm_readv (__NR_Linux + 304) | 693 | #define __NR_process_vm_readv (__NR_Linux + 304) |
| 693 | #define __NR_process_vm_writev (__NR_Linux + 305) | 694 | #define __NR_process_vm_writev (__NR_Linux + 305) |
| 694 | #define __NR_kcmp (__NR_Linux + 306) | 695 | #define __NR_kcmp (__NR_Linux + 306) |
| 696 | #define __NR_finit_module (__NR_Linux + 307) | ||
| 695 | 697 | ||
| 696 | /* | 698 | /* |
| 697 | * Offset of the last Linux 64-bit flavoured syscall | 699 | * Offset of the last Linux 64-bit flavoured syscall |
| 698 | */ | 700 | */ |
| 699 | #define __NR_Linux_syscalls 306 | 701 | #define __NR_Linux_syscalls 307 |
| 700 | 702 | ||
| 701 | #endif /* _MIPS_SIM == _MIPS_SIM_ABI64 */ | 703 | #endif /* _MIPS_SIM == _MIPS_SIM_ABI64 */ |
| 702 | 704 | ||
| 703 | #define __NR_64_Linux 5000 | 705 | #define __NR_64_Linux 5000 |
| 704 | #define __NR_64_Linux_syscalls 306 | 706 | #define __NR_64_Linux_syscalls 307 |
| 705 | 707 | ||
| 706 | #if _MIPS_SIM == _MIPS_SIM_NABI32 | 708 | #if _MIPS_SIM == _MIPS_SIM_NABI32 |
| 707 | 709 | ||
| @@ -1021,15 +1023,16 @@ | |||
| 1021 | #define __NR_process_vm_readv (__NR_Linux + 309) | 1023 | #define __NR_process_vm_readv (__NR_Linux + 309) |
| 1022 | #define __NR_process_vm_writev (__NR_Linux + 310) | 1024 | #define __NR_process_vm_writev (__NR_Linux + 310) |
| 1023 | #define __NR_kcmp (__NR_Linux + 311) | 1025 | #define __NR_kcmp (__NR_Linux + 311) |
| 1026 | #define __NR_finit_module (__NR_Linux + 312) | ||
| 1024 | 1027 | ||
| 1025 | /* | 1028 | /* |
| 1026 | * Offset of the last N32 flavoured syscall | 1029 | * Offset of the last N32 flavoured syscall |
| 1027 | */ | 1030 | */ |
| 1028 | #define __NR_Linux_syscalls 311 | 1031 | #define __NR_Linux_syscalls 312 |
| 1029 | 1032 | ||
| 1030 | #endif /* _MIPS_SIM == _MIPS_SIM_NABI32 */ | 1033 | #endif /* _MIPS_SIM == _MIPS_SIM_NABI32 */ |
| 1031 | 1034 | ||
| 1032 | #define __NR_N32_Linux 6000 | 1035 | #define __NR_N32_Linux 6000 |
| 1033 | #define __NR_N32_Linux_syscalls 311 | 1036 | #define __NR_N32_Linux_syscalls 312 |
| 1034 | 1037 | ||
| 1035 | #endif /* _UAPI_ASM_UNISTD_H */ | 1038 | #endif /* _UAPI_ASM_UNISTD_H */ |
diff --git a/arch/mips/kernel/asm-offsets.c b/arch/mips/kernel/asm-offsets.c index 9690998d4ef3..50285b2c7ffe 100644 --- a/arch/mips/kernel/asm-offsets.c +++ b/arch/mips/kernel/asm-offsets.c | |||
| @@ -200,6 +200,9 @@ void output_mm_defines(void) | |||
| 200 | DEFINE(_PTRS_PER_PMD, PTRS_PER_PMD); | 200 | DEFINE(_PTRS_PER_PMD, PTRS_PER_PMD); |
| 201 | DEFINE(_PTRS_PER_PTE, PTRS_PER_PTE); | 201 | DEFINE(_PTRS_PER_PTE, PTRS_PER_PTE); |
| 202 | BLANK(); | 202 | BLANK(); |
| 203 | DEFINE(_PAGE_SHIFT, PAGE_SHIFT); | ||
| 204 | DEFINE(_PAGE_SIZE, PAGE_SIZE); | ||
| 205 | BLANK(); | ||
| 203 | } | 206 | } |
| 204 | 207 | ||
| 205 | #ifdef CONFIG_32BIT | 208 | #ifdef CONFIG_32BIT |
diff --git a/arch/mips/kernel/ftrace.c b/arch/mips/kernel/ftrace.c index 6a2d758dd8e9..83fa1460e294 100644 --- a/arch/mips/kernel/ftrace.c +++ b/arch/mips/kernel/ftrace.c | |||
| @@ -25,6 +25,12 @@ | |||
| 25 | #define MCOUNT_OFFSET_INSNS 4 | 25 | #define MCOUNT_OFFSET_INSNS 4 |
| 26 | #endif | 26 | #endif |
| 27 | 27 | ||
| 28 | /* Arch override because MIPS doesn't need to run this from stop_machine() */ | ||
| 29 | void arch_ftrace_update_code(int command) | ||
| 30 | { | ||
| 31 | ftrace_modify_all_code(command); | ||
| 32 | } | ||
| 33 | |||
| 28 | /* | 34 | /* |
| 29 | * Check if the address is in kernel space | 35 | * Check if the address is in kernel space |
| 30 | * | 36 | * |
| @@ -89,6 +95,24 @@ static int ftrace_modify_code(unsigned long ip, unsigned int new_code) | |||
| 89 | return 0; | 95 | return 0; |
| 90 | } | 96 | } |
| 91 | 97 | ||
| 98 | #ifndef CONFIG_64BIT | ||
| 99 | static int ftrace_modify_code_2(unsigned long ip, unsigned int new_code1, | ||
| 100 | unsigned int new_code2) | ||
| 101 | { | ||
| 102 | int faulted; | ||
| 103 | |||
| 104 | safe_store_code(new_code1, ip, faulted); | ||
| 105 | if (unlikely(faulted)) | ||
| 106 | return -EFAULT; | ||
| 107 | ip += 4; | ||
| 108 | safe_store_code(new_code2, ip, faulted); | ||
| 109 | if (unlikely(faulted)) | ||
| 110 | return -EFAULT; | ||
| 111 | flush_icache_range(ip, ip + 8); /* original ip + 12 */ | ||
| 112 | return 0; | ||
| 113 | } | ||
| 114 | #endif | ||
| 115 | |||
| 92 | /* | 116 | /* |
| 93 | * The details about the calling site of mcount on MIPS | 117 | * The details about the calling site of mcount on MIPS |
| 94 | * | 118 | * |
| @@ -131,8 +155,18 @@ int ftrace_make_nop(struct module *mod, | |||
| 131 | * needed. | 155 | * needed. |
| 132 | */ | 156 | */ |
| 133 | new = in_kernel_space(ip) ? INSN_NOP : INSN_B_1F; | 157 | new = in_kernel_space(ip) ? INSN_NOP : INSN_B_1F; |
| 134 | 158 | #ifdef CONFIG_64BIT | |
| 135 | return ftrace_modify_code(ip, new); | 159 | return ftrace_modify_code(ip, new); |
| 160 | #else | ||
| 161 | /* | ||
| 162 | * On 32 bit MIPS platforms, gcc adds a stack adjust | ||
| 163 | * instruction in the delay slot after the branch to | ||
| 164 | * mcount and expects mcount to restore the sp on return. | ||
| 165 | * This is based on a legacy API and does nothing but | ||
| 166 | * waste instructions so it's being removed at runtime. | ||
| 167 | */ | ||
| 168 | return ftrace_modify_code_2(ip, new, INSN_NOP); | ||
| 169 | #endif | ||
| 136 | } | 170 | } |
| 137 | 171 | ||
| 138 | int ftrace_make_call(struct dyn_ftrace *rec, unsigned long addr) | 172 | int ftrace_make_call(struct dyn_ftrace *rec, unsigned long addr) |
diff --git a/arch/mips/kernel/genex.S b/arch/mips/kernel/genex.S index 8882e5766f27..8a0096d62812 100644 --- a/arch/mips/kernel/genex.S +++ b/arch/mips/kernel/genex.S | |||
| @@ -19,7 +19,6 @@ | |||
| 19 | #include <asm/mipsregs.h> | 19 | #include <asm/mipsregs.h> |
| 20 | #include <asm/stackframe.h> | 20 | #include <asm/stackframe.h> |
| 21 | #include <asm/war.h> | 21 | #include <asm/war.h> |
| 22 | #include <asm/page.h> | ||
| 23 | #include <asm/thread_info.h> | 22 | #include <asm/thread_info.h> |
| 24 | 23 | ||
| 25 | #define PANIC_PIC(msg) \ | 24 | #define PANIC_PIC(msg) \ |
| @@ -483,8 +482,8 @@ NESTED(nmi_handler, PT_SIZE, sp) | |||
| 483 | MFC0 k1, CP0_ENTRYHI | 482 | MFC0 k1, CP0_ENTRYHI |
| 484 | andi k1, 0xff /* ASID_MASK */ | 483 | andi k1, 0xff /* ASID_MASK */ |
| 485 | MFC0 k0, CP0_EPC | 484 | MFC0 k0, CP0_EPC |
| 486 | PTR_SRL k0, PAGE_SHIFT + 1 | 485 | PTR_SRL k0, _PAGE_SHIFT + 1 |
| 487 | PTR_SLL k0, PAGE_SHIFT + 1 | 486 | PTR_SLL k0, _PAGE_SHIFT + 1 |
| 488 | or k1, k0 | 487 | or k1, k0 |
| 489 | MTC0 k1, CP0_ENTRYHI | 488 | MTC0 k1, CP0_ENTRYHI |
| 490 | mtc0_tlbw_hazard | 489 | mtc0_tlbw_hazard |
diff --git a/arch/mips/kernel/head.S b/arch/mips/kernel/head.S index ea695d9605e9..fcf97312f328 100644 --- a/arch/mips/kernel/head.S +++ b/arch/mips/kernel/head.S | |||
| @@ -21,7 +21,6 @@ | |||
| 21 | #include <asm/asmmacro.h> | 21 | #include <asm/asmmacro.h> |
| 22 | #include <asm/irqflags.h> | 22 | #include <asm/irqflags.h> |
| 23 | #include <asm/regdef.h> | 23 | #include <asm/regdef.h> |
| 24 | #include <asm/page.h> | ||
| 25 | #include <asm/pgtable-bits.h> | 24 | #include <asm/pgtable-bits.h> |
| 26 | #include <asm/mipsregs.h> | 25 | #include <asm/mipsregs.h> |
| 27 | #include <asm/stackframe.h> | 26 | #include <asm/stackframe.h> |
diff --git a/arch/mips/kernel/mcount.S b/arch/mips/kernel/mcount.S index 4c968e7efb74..165867673357 100644 --- a/arch/mips/kernel/mcount.S +++ b/arch/mips/kernel/mcount.S | |||
| @@ -46,9 +46,8 @@ | |||
| 46 | PTR_L a5, PT_R9(sp) | 46 | PTR_L a5, PT_R9(sp) |
| 47 | PTR_L a6, PT_R10(sp) | 47 | PTR_L a6, PT_R10(sp) |
| 48 | PTR_L a7, PT_R11(sp) | 48 | PTR_L a7, PT_R11(sp) |
| 49 | PTR_ADDIU sp, PT_SIZE | ||
| 50 | #else | 49 | #else |
| 51 | PTR_ADDIU sp, (PT_SIZE + 8) | 50 | PTR_ADDIU sp, PT_SIZE |
| 52 | #endif | 51 | #endif |
| 53 | .endm | 52 | .endm |
| 54 | 53 | ||
| @@ -69,7 +68,9 @@ NESTED(ftrace_caller, PT_SIZE, ra) | |||
| 69 | .globl _mcount | 68 | .globl _mcount |
| 70 | _mcount: | 69 | _mcount: |
| 71 | b ftrace_stub | 70 | b ftrace_stub |
| 72 | nop | 71 | addiu sp,sp,8 |
| 72 | |||
| 73 | /* When tracing is activated, it calls ftrace_caller+8 (aka here) */ | ||
| 73 | lw t1, function_trace_stop | 74 | lw t1, function_trace_stop |
| 74 | bnez t1, ftrace_stub | 75 | bnez t1, ftrace_stub |
| 75 | nop | 76 | nop |
diff --git a/arch/mips/kernel/octeon_switch.S b/arch/mips/kernel/octeon_switch.S index 0441f54b2a6a..207f1341578b 100644 --- a/arch/mips/kernel/octeon_switch.S +++ b/arch/mips/kernel/octeon_switch.S | |||
| @@ -15,7 +15,6 @@ | |||
| 15 | #include <asm/fpregdef.h> | 15 | #include <asm/fpregdef.h> |
| 16 | #include <asm/mipsregs.h> | 16 | #include <asm/mipsregs.h> |
| 17 | #include <asm/asm-offsets.h> | 17 | #include <asm/asm-offsets.h> |
| 18 | #include <asm/page.h> | ||
| 19 | #include <asm/pgtable-bits.h> | 18 | #include <asm/pgtable-bits.h> |
| 20 | #include <asm/regdef.h> | 19 | #include <asm/regdef.h> |
| 21 | #include <asm/stackframe.h> | 20 | #include <asm/stackframe.h> |
diff --git a/arch/mips/kernel/perf_event_mipsxx.c b/arch/mips/kernel/perf_event_mipsxx.c index b14c14d90fc2..d9c81c5a6c90 100644 --- a/arch/mips/kernel/perf_event_mipsxx.c +++ b/arch/mips/kernel/perf_event_mipsxx.c | |||
| @@ -847,7 +847,6 @@ static const struct mips_perf_event xlp_event_map[PERF_COUNT_HW_MAX] = { | |||
| 847 | [PERF_COUNT_HW_CACHE_MISSES] = { 0x07, CNTR_ALL }, /* PAPI_L1_ICM */ | 847 | [PERF_COUNT_HW_CACHE_MISSES] = { 0x07, CNTR_ALL }, /* PAPI_L1_ICM */ |
| 848 | [PERF_COUNT_HW_BRANCH_INSTRUCTIONS] = { 0x1b, CNTR_ALL }, /* PAPI_BR_CN */ | 848 | [PERF_COUNT_HW_BRANCH_INSTRUCTIONS] = { 0x1b, CNTR_ALL }, /* PAPI_BR_CN */ |
| 849 | [PERF_COUNT_HW_BRANCH_MISSES] = { 0x1c, CNTR_ALL }, /* PAPI_BR_MSP */ | 849 | [PERF_COUNT_HW_BRANCH_MISSES] = { 0x1c, CNTR_ALL }, /* PAPI_BR_MSP */ |
| 850 | [PERF_COUNT_HW_BUS_CYCLES] = { UNSUPPORTED_PERF_EVENT_ID }, | ||
| 851 | }; | 850 | }; |
| 852 | 851 | ||
| 853 | /* 24K/34K/1004K cores can share the same cache event map. */ | 852 | /* 24K/34K/1004K cores can share the same cache event map. */ |
| @@ -1115,24 +1114,12 @@ static const struct mips_perf_event xlp_cache_map | |||
| 1115 | [C(RESULT_ACCESS)] = { 0x2f, CNTR_ALL }, /* PAPI_L1_DCW */ | 1114 | [C(RESULT_ACCESS)] = { 0x2f, CNTR_ALL }, /* PAPI_L1_DCW */ |
| 1116 | [C(RESULT_MISS)] = { 0x2e, CNTR_ALL }, /* PAPI_L1_STM */ | 1115 | [C(RESULT_MISS)] = { 0x2e, CNTR_ALL }, /* PAPI_L1_STM */ |
| 1117 | }, | 1116 | }, |
| 1118 | [C(OP_PREFETCH)] = { | ||
| 1119 | [C(RESULT_ACCESS)] = { UNSUPPORTED_PERF_EVENT_ID }, | ||
| 1120 | [C(RESULT_MISS)] = { UNSUPPORTED_PERF_EVENT_ID }, | ||
| 1121 | }, | ||
| 1122 | }, | 1117 | }, |
| 1123 | [C(L1I)] = { | 1118 | [C(L1I)] = { |
| 1124 | [C(OP_READ)] = { | 1119 | [C(OP_READ)] = { |
| 1125 | [C(RESULT_ACCESS)] = { 0x04, CNTR_ALL }, /* PAPI_L1_ICA */ | 1120 | [C(RESULT_ACCESS)] = { 0x04, CNTR_ALL }, /* PAPI_L1_ICA */ |
| 1126 | [C(RESULT_MISS)] = { 0x07, CNTR_ALL }, /* PAPI_L1_ICM */ | 1121 | [C(RESULT_MISS)] = { 0x07, CNTR_ALL }, /* PAPI_L1_ICM */ |
| 1127 | }, | 1122 | }, |
| 1128 | [C(OP_WRITE)] = { | ||
| 1129 | [C(RESULT_ACCESS)] = { UNSUPPORTED_PERF_EVENT_ID }, | ||
| 1130 | [C(RESULT_MISS)] = { UNSUPPORTED_PERF_EVENT_ID }, | ||
| 1131 | }, | ||
| 1132 | [C(OP_PREFETCH)] = { | ||
| 1133 | [C(RESULT_ACCESS)] = { UNSUPPORTED_PERF_EVENT_ID }, | ||
| 1134 | [C(RESULT_MISS)] = { UNSUPPORTED_PERF_EVENT_ID }, | ||
| 1135 | }, | ||
| 1136 | }, | 1123 | }, |
| 1137 | [C(LL)] = { | 1124 | [C(LL)] = { |
| 1138 | [C(OP_READ)] = { | 1125 | [C(OP_READ)] = { |
| @@ -1143,10 +1130,6 @@ static const struct mips_perf_event xlp_cache_map | |||
| 1143 | [C(RESULT_ACCESS)] = { 0x34, CNTR_ALL }, /* PAPI_L2_DCA */ | 1130 | [C(RESULT_ACCESS)] = { 0x34, CNTR_ALL }, /* PAPI_L2_DCA */ |
| 1144 | [C(RESULT_MISS)] = { 0x36, CNTR_ALL }, /* PAPI_L2_DCM */ | 1131 | [C(RESULT_MISS)] = { 0x36, CNTR_ALL }, /* PAPI_L2_DCM */ |
| 1145 | }, | 1132 | }, |
| 1146 | [C(OP_PREFETCH)] = { | ||
| 1147 | [C(RESULT_ACCESS)] = { UNSUPPORTED_PERF_EVENT_ID }, | ||
| 1148 | [C(RESULT_MISS)] = { UNSUPPORTED_PERF_EVENT_ID }, | ||
| 1149 | }, | ||
| 1150 | }, | 1133 | }, |
| 1151 | [C(DTLB)] = { | 1134 | [C(DTLB)] = { |
| 1152 | /* | 1135 | /* |
| @@ -1154,45 +1137,24 @@ static const struct mips_perf_event xlp_cache_map | |||
| 1154 | * read and write. | 1137 | * read and write. |
| 1155 | */ | 1138 | */ |
| 1156 | [C(OP_READ)] = { | 1139 | [C(OP_READ)] = { |
| 1157 | [C(RESULT_ACCESS)] = { UNSUPPORTED_PERF_EVENT_ID }, | ||
| 1158 | [C(RESULT_MISS)] = { 0x2d, CNTR_ALL }, /* PAPI_TLB_DM */ | 1140 | [C(RESULT_MISS)] = { 0x2d, CNTR_ALL }, /* PAPI_TLB_DM */ |
| 1159 | }, | 1141 | }, |
| 1160 | [C(OP_WRITE)] = { | 1142 | [C(OP_WRITE)] = { |
| 1161 | [C(RESULT_ACCESS)] = { UNSUPPORTED_PERF_EVENT_ID }, | ||
| 1162 | [C(RESULT_MISS)] = { 0x2d, CNTR_ALL }, /* PAPI_TLB_DM */ | 1143 | [C(RESULT_MISS)] = { 0x2d, CNTR_ALL }, /* PAPI_TLB_DM */ |
| 1163 | }, | 1144 | }, |
| 1164 | [C(OP_PREFETCH)] = { | ||
| 1165 | [C(RESULT_ACCESS)] = { UNSUPPORTED_PERF_EVENT_ID }, | ||
| 1166 | [C(RESULT_MISS)] = { UNSUPPORTED_PERF_EVENT_ID }, | ||
| 1167 | }, | ||
| 1168 | }, | 1145 | }, |
| 1169 | [C(ITLB)] = { | 1146 | [C(ITLB)] = { |
| 1170 | [C(OP_READ)] = { | 1147 | [C(OP_READ)] = { |
| 1171 | [C(RESULT_ACCESS)] = { UNSUPPORTED_PERF_EVENT_ID }, | ||
| 1172 | [C(RESULT_MISS)] = { 0x08, CNTR_ALL }, /* PAPI_TLB_IM */ | 1148 | [C(RESULT_MISS)] = { 0x08, CNTR_ALL }, /* PAPI_TLB_IM */ |
| 1173 | }, | 1149 | }, |
| 1174 | [C(OP_WRITE)] = { | 1150 | [C(OP_WRITE)] = { |
| 1175 | [C(RESULT_ACCESS)] = { UNSUPPORTED_PERF_EVENT_ID }, | ||
| 1176 | [C(RESULT_MISS)] = { 0x08, CNTR_ALL }, /* PAPI_TLB_IM */ | 1151 | [C(RESULT_MISS)] = { 0x08, CNTR_ALL }, /* PAPI_TLB_IM */ |
| 1177 | }, | 1152 | }, |
| 1178 | [C(OP_PREFETCH)] = { | ||
| 1179 | [C(RESULT_ACCESS)] = { UNSUPPORTED_PERF_EVENT_ID }, | ||
| 1180 | [C(RESULT_MISS)] = { UNSUPPORTED_PERF_EVENT_ID }, | ||
| 1181 | }, | ||
| 1182 | }, | 1153 | }, |
| 1183 | [C(BPU)] = { | 1154 | [C(BPU)] = { |
| 1184 | [C(OP_READ)] = { | 1155 | [C(OP_READ)] = { |
| 1185 | [C(RESULT_ACCESS)] = { UNSUPPORTED_PERF_EVENT_ID }, | ||
| 1186 | [C(RESULT_MISS)] = { 0x25, CNTR_ALL }, | 1156 | [C(RESULT_MISS)] = { 0x25, CNTR_ALL }, |
| 1187 | }, | 1157 | }, |
| 1188 | [C(OP_WRITE)] = { | ||
| 1189 | [C(RESULT_ACCESS)] = { UNSUPPORTED_PERF_EVENT_ID }, | ||
| 1190 | [C(RESULT_MISS)] = { UNSUPPORTED_PERF_EVENT_ID }, | ||
| 1191 | }, | ||
| 1192 | [C(OP_PREFETCH)] = { | ||
| 1193 | [C(RESULT_ACCESS)] = { UNSUPPORTED_PERF_EVENT_ID }, | ||
| 1194 | [C(RESULT_MISS)] = { UNSUPPORTED_PERF_EVENT_ID }, | ||
| 1195 | }, | ||
| 1196 | }, | 1158 | }, |
| 1197 | }; | 1159 | }; |
| 1198 | 1160 | ||
diff --git a/arch/mips/kernel/r2300_switch.S b/arch/mips/kernel/r2300_switch.S index 9c51be5a163a..8d32d5a6b460 100644 --- a/arch/mips/kernel/r2300_switch.S +++ b/arch/mips/kernel/r2300_switch.S | |||
| @@ -15,7 +15,6 @@ | |||
| 15 | #include <asm/fpregdef.h> | 15 | #include <asm/fpregdef.h> |
| 16 | #include <asm/mipsregs.h> | 16 | #include <asm/mipsregs.h> |
| 17 | #include <asm/asm-offsets.h> | 17 | #include <asm/asm-offsets.h> |
| 18 | #include <asm/page.h> | ||
| 19 | #include <asm/regdef.h> | 18 | #include <asm/regdef.h> |
| 20 | #include <asm/stackframe.h> | 19 | #include <asm/stackframe.h> |
| 21 | #include <asm/thread_info.h> | 20 | #include <asm/thread_info.h> |
diff --git a/arch/mips/kernel/r4k_switch.S b/arch/mips/kernel/r4k_switch.S index 42d2a3938420..8decdfacb448 100644 --- a/arch/mips/kernel/r4k_switch.S +++ b/arch/mips/kernel/r4k_switch.S | |||
| @@ -15,7 +15,6 @@ | |||
| 15 | #include <asm/fpregdef.h> | 15 | #include <asm/fpregdef.h> |
| 16 | #include <asm/mipsregs.h> | 16 | #include <asm/mipsregs.h> |
| 17 | #include <asm/asm-offsets.h> | 17 | #include <asm/asm-offsets.h> |
| 18 | #include <asm/page.h> | ||
| 19 | #include <asm/pgtable-bits.h> | 18 | #include <asm/pgtable-bits.h> |
| 20 | #include <asm/regdef.h> | 19 | #include <asm/regdef.h> |
| 21 | #include <asm/stackframe.h> | 20 | #include <asm/stackframe.h> |
diff --git a/arch/mips/kernel/relocate_kernel.S b/arch/mips/kernel/relocate_kernel.S index e4142c5f7c2b..804ebb2c34a6 100644 --- a/arch/mips/kernel/relocate_kernel.S +++ b/arch/mips/kernel/relocate_kernel.S | |||
| @@ -9,7 +9,6 @@ | |||
| 9 | #include <asm/asm.h> | 9 | #include <asm/asm.h> |
| 10 | #include <asm/asmmacro.h> | 10 | #include <asm/asmmacro.h> |
| 11 | #include <asm/regdef.h> | 11 | #include <asm/regdef.h> |
| 12 | #include <asm/page.h> | ||
| 13 | #include <asm/mipsregs.h> | 12 | #include <asm/mipsregs.h> |
| 14 | #include <asm/stackframe.h> | 13 | #include <asm/stackframe.h> |
| 15 | #include <asm/addrspace.h> | 14 | #include <asm/addrspace.h> |
| @@ -50,7 +49,7 @@ process_entry: | |||
| 50 | and s3, s2, 0x8 | 49 | and s3, s2, 0x8 |
| 51 | beq s3, zero, process_entry | 50 | beq s3, zero, process_entry |
| 52 | and s2, s2, ~0x8 | 51 | and s2, s2, ~0x8 |
| 53 | li s6, (1 << PAGE_SHIFT) / SZREG | 52 | li s6, (1 << _PAGE_SHIFT) / SZREG |
| 54 | 53 | ||
| 55 | copy_word: | 54 | copy_word: |
| 56 | /* copy page word by word */ | 55 | /* copy page word by word */ |
diff --git a/arch/mips/kernel/scall32-o32.S b/arch/mips/kernel/scall32-o32.S index 374f66e05f3d..d20a4bc9ed05 100644 --- a/arch/mips/kernel/scall32-o32.S +++ b/arch/mips/kernel/scall32-o32.S | |||
| @@ -583,6 +583,7 @@ einval: li v0, -ENOSYS | |||
| 583 | sys sys_process_vm_readv 6 /* 4345 */ | 583 | sys sys_process_vm_readv 6 /* 4345 */ |
| 584 | sys sys_process_vm_writev 6 | 584 | sys sys_process_vm_writev 6 |
| 585 | sys sys_kcmp 5 | 585 | sys sys_kcmp 5 |
| 586 | sys sys_finit_module 3 | ||
| 586 | .endm | 587 | .endm |
| 587 | 588 | ||
| 588 | /* We pre-compute the number of _instruction_ bytes needed to | 589 | /* We pre-compute the number of _instruction_ bytes needed to |
diff --git a/arch/mips/kernel/scall64-64.S b/arch/mips/kernel/scall64-64.S index 169de6a6d916..b64f642da073 100644 --- a/arch/mips/kernel/scall64-64.S +++ b/arch/mips/kernel/scall64-64.S | |||
| @@ -422,4 +422,5 @@ sys_call_table: | |||
| 422 | PTR sys_process_vm_readv | 422 | PTR sys_process_vm_readv |
| 423 | PTR sys_process_vm_writev /* 5305 */ | 423 | PTR sys_process_vm_writev /* 5305 */ |
| 424 | PTR sys_kcmp | 424 | PTR sys_kcmp |
| 425 | PTR sys_finit_module | ||
| 425 | .size sys_call_table,.-sys_call_table | 426 | .size sys_call_table,.-sys_call_table |
diff --git a/arch/mips/kernel/scall64-n32.S b/arch/mips/kernel/scall64-n32.S index ad3de9668da9..c29ac197f446 100644 --- a/arch/mips/kernel/scall64-n32.S +++ b/arch/mips/kernel/scall64-n32.S | |||
| @@ -416,4 +416,5 @@ EXPORT(sysn32_call_table) | |||
| 416 | PTR compat_sys_process_vm_readv | 416 | PTR compat_sys_process_vm_readv |
| 417 | PTR compat_sys_process_vm_writev /* 6310 */ | 417 | PTR compat_sys_process_vm_writev /* 6310 */ |
| 418 | PTR sys_kcmp | 418 | PTR sys_kcmp |
| 419 | PTR sys_finit_module | ||
| 419 | .size sysn32_call_table,.-sysn32_call_table | 420 | .size sysn32_call_table,.-sysn32_call_table |
diff --git a/arch/mips/kernel/scall64-o32.S b/arch/mips/kernel/scall64-o32.S index 9601be6afa3d..cf3e75e46650 100644 --- a/arch/mips/kernel/scall64-o32.S +++ b/arch/mips/kernel/scall64-o32.S | |||
| @@ -540,4 +540,5 @@ sys_call_table: | |||
| 540 | PTR compat_sys_process_vm_readv /* 4345 */ | 540 | PTR compat_sys_process_vm_readv /* 4345 */ |
| 541 | PTR compat_sys_process_vm_writev | 541 | PTR compat_sys_process_vm_writev |
| 542 | PTR sys_kcmp | 542 | PTR sys_kcmp |
| 543 | PTR sys_finit_module | ||
| 543 | .size sys_call_table,.-sys_call_table | 544 | .size sys_call_table,.-sys_call_table |
diff --git a/arch/mips/kernel/smp.c b/arch/mips/kernel/smp.c index 2e6374a589ec..66bf4e22d9b9 100644 --- a/arch/mips/kernel/smp.c +++ b/arch/mips/kernel/smp.c | |||
| @@ -188,7 +188,7 @@ void __init smp_prepare_cpus(unsigned int max_cpus) | |||
| 188 | } | 188 | } |
| 189 | 189 | ||
| 190 | /* preload SMP state for boot cpu */ | 190 | /* preload SMP state for boot cpu */ |
| 191 | void __devinit smp_prepare_boot_cpu(void) | 191 | void smp_prepare_boot_cpu(void) |
| 192 | { | 192 | { |
| 193 | set_cpu_possible(0, true); | 193 | set_cpu_possible(0, true); |
| 194 | set_cpu_online(0, true); | 194 | set_cpu_online(0, true); |
diff --git a/arch/mips/kernel/vmlinux.lds.S b/arch/mips/kernel/vmlinux.lds.S index 007ccbe1e264..0a4336b803e9 100644 --- a/arch/mips/kernel/vmlinux.lds.S +++ b/arch/mips/kernel/vmlinux.lds.S | |||
| @@ -1,7 +1,8 @@ | |||
| 1 | #include <asm/asm-offsets.h> | 1 | #include <asm/asm-offsets.h> |
| 2 | #include <asm/page.h> | ||
| 3 | #include <asm/thread_info.h> | 2 | #include <asm/thread_info.h> |
| 4 | 3 | ||
| 4 | #define PAGE_SIZE _PAGE_SIZE | ||
| 5 | |||
| 5 | /* | 6 | /* |
| 6 | * Put .bss..swapper_pg_dir as the first thing in .bss. This will | 7 | * Put .bss..swapper_pg_dir as the first thing in .bss. This will |
| 7 | * ensure that it has .bss alignment (64K). | 8 | * ensure that it has .bss alignment (64K). |
diff --git a/arch/mips/kernel/vpe.c b/arch/mips/kernel/vpe.c index eec690af6581..147cec19621d 100644 --- a/arch/mips/kernel/vpe.c +++ b/arch/mips/kernel/vpe.c | |||
| @@ -705,7 +705,7 @@ static int vpe_run(struct vpe * v) | |||
| 705 | 705 | ||
| 706 | printk(KERN_WARNING | 706 | printk(KERN_WARNING |
| 707 | "VPE loader: TC %d is already in use.\n", | 707 | "VPE loader: TC %d is already in use.\n", |
| 708 | t->index); | 708 | v->tc->index); |
| 709 | return -ENOEXEC; | 709 | return -ENOEXEC; |
| 710 | } | 710 | } |
| 711 | } else { | 711 | } else { |
diff --git a/arch/mips/lantiq/irq.c b/arch/mips/lantiq/irq.c index f36acd1b3808..a7935bf0fecb 100644 --- a/arch/mips/lantiq/irq.c +++ b/arch/mips/lantiq/irq.c | |||
| @@ -408,7 +408,7 @@ int __init icu_of_init(struct device_node *node, struct device_node *parent) | |||
| 408 | #endif | 408 | #endif |
| 409 | 409 | ||
| 410 | /* tell oprofile which irq to use */ | 410 | /* tell oprofile which irq to use */ |
| 411 | cp0_perfcount_irq = LTQ_PERF_IRQ; | 411 | cp0_perfcount_irq = irq_create_mapping(ltq_domain, LTQ_PERF_IRQ); |
| 412 | 412 | ||
| 413 | /* | 413 | /* |
| 414 | * if the timer irq is not one of the mips irqs we need to | 414 | * if the timer irq is not one of the mips irqs we need to |
diff --git a/arch/mips/lantiq/xway/dma.c b/arch/mips/lantiq/xway/dma.c index 6453962ac898..e44a1866653f 100644 --- a/arch/mips/lantiq/xway/dma.c +++ b/arch/mips/lantiq/xway/dma.c | |||
| @@ -210,7 +210,7 @@ ltq_dma_init_port(int p) | |||
| 210 | } | 210 | } |
| 211 | EXPORT_SYMBOL_GPL(ltq_dma_init_port); | 211 | EXPORT_SYMBOL_GPL(ltq_dma_init_port); |
| 212 | 212 | ||
| 213 | static int __devinit | 213 | static int |
| 214 | ltq_dma_init(struct platform_device *pdev) | 214 | ltq_dma_init(struct platform_device *pdev) |
| 215 | { | 215 | { |
| 216 | struct clk *clk; | 216 | struct clk *clk; |
diff --git a/arch/mips/lantiq/xway/gptu.c b/arch/mips/lantiq/xway/gptu.c index cbb56fc022bc..e30b1ed1b936 100644 --- a/arch/mips/lantiq/xway/gptu.c +++ b/arch/mips/lantiq/xway/gptu.c | |||
| @@ -133,7 +133,7 @@ static inline void clkdev_add_gptu(struct device *dev, const char *con, | |||
| 133 | clkdev_add(&clk->cl); | 133 | clkdev_add(&clk->cl); |
| 134 | } | 134 | } |
| 135 | 135 | ||
| 136 | static int __devinit gptu_probe(struct platform_device *pdev) | 136 | static int gptu_probe(struct platform_device *pdev) |
| 137 | { | 137 | { |
| 138 | struct clk *clk; | 138 | struct clk *clk; |
| 139 | struct resource *res; | 139 | struct resource *res; |
diff --git a/arch/mips/lantiq/xway/xrx200_phy_fw.c b/arch/mips/lantiq/xway/xrx200_phy_fw.c index fe808bf5366d..d4d9d31f152e 100644 --- a/arch/mips/lantiq/xway/xrx200_phy_fw.c +++ b/arch/mips/lantiq/xway/xrx200_phy_fw.c | |||
| @@ -54,7 +54,7 @@ static dma_addr_t xway_gphy_load(struct platform_device *pdev) | |||
| 54 | return dev_addr; | 54 | return dev_addr; |
| 55 | } | 55 | } |
| 56 | 56 | ||
| 57 | static int __devinit xway_phy_fw_probe(struct platform_device *pdev) | 57 | static int xway_phy_fw_probe(struct platform_device *pdev) |
| 58 | { | 58 | { |
| 59 | dma_addr_t fw_addr; | 59 | dma_addr_t fw_addr; |
| 60 | struct property *pp; | 60 | struct property *pp; |
diff --git a/arch/mips/lib/delay.c b/arch/mips/lib/delay.c index dc81ca8dc0dd..288f7954988d 100644 --- a/arch/mips/lib/delay.c +++ b/arch/mips/lib/delay.c | |||
| @@ -21,7 +21,7 @@ void __delay(unsigned long loops) | |||
| 21 | " .set noreorder \n" | 21 | " .set noreorder \n" |
| 22 | " .align 3 \n" | 22 | " .align 3 \n" |
| 23 | "1: bnez %0, 1b \n" | 23 | "1: bnez %0, 1b \n" |
| 24 | #if __SIZEOF_LONG__ == 4 | 24 | #if BITS_PER_LONG == 32 |
| 25 | " subu %0, 1 \n" | 25 | " subu %0, 1 \n" |
| 26 | #else | 26 | #else |
| 27 | " dsubu %0, 1 \n" | 27 | " dsubu %0, 1 \n" |
diff --git a/arch/mips/mm/mmap.c b/arch/mips/mm/mmap.c index d9be7540a6be..7e5fe2790d8a 100644 --- a/arch/mips/mm/mmap.c +++ b/arch/mips/mm/mmap.c | |||
| @@ -192,3 +192,9 @@ unsigned long arch_randomize_brk(struct mm_struct *mm) | |||
| 192 | 192 | ||
| 193 | return ret; | 193 | return ret; |
| 194 | } | 194 | } |
| 195 | |||
| 196 | int __virt_addr_valid(const volatile void *kaddr) | ||
| 197 | { | ||
| 198 | return pfn_valid(PFN_DOWN(virt_to_phys(kaddr))); | ||
| 199 | } | ||
| 200 | EXPORT_SYMBOL_GPL(__virt_addr_valid); | ||
diff --git a/arch/mips/mm/tlbex-fault.S b/arch/mips/mm/tlbex-fault.S index e99eaa1fbedc..318855eb5f80 100644 --- a/arch/mips/mm/tlbex-fault.S +++ b/arch/mips/mm/tlbex-fault.S | |||
| @@ -7,7 +7,6 @@ | |||
| 7 | * Copyright (C) 1999 Silicon Graphics, Inc. | 7 | * Copyright (C) 1999 Silicon Graphics, Inc. |
| 8 | */ | 8 | */ |
| 9 | #include <asm/mipsregs.h> | 9 | #include <asm/mipsregs.h> |
| 10 | #include <asm/page.h> | ||
| 11 | #include <asm/regdef.h> | 10 | #include <asm/regdef.h> |
| 12 | #include <asm/stackframe.h> | 11 | #include <asm/stackframe.h> |
| 13 | 12 | ||
diff --git a/arch/mips/mm/tlbex.c b/arch/mips/mm/tlbex.c index 05613355627b..1c8ac49ec72c 100644 --- a/arch/mips/mm/tlbex.c +++ b/arch/mips/mm/tlbex.c | |||
| @@ -976,13 +976,6 @@ build_get_pgde32(u32 **p, unsigned int tmp, unsigned int ptr) | |||
| 976 | #endif | 976 | #endif |
| 977 | uasm_i_mfc0(p, tmp, C0_BADVADDR); /* get faulting address */ | 977 | uasm_i_mfc0(p, tmp, C0_BADVADDR); /* get faulting address */ |
| 978 | uasm_i_lw(p, ptr, uasm_rel_lo(pgdc), ptr); | 978 | uasm_i_lw(p, ptr, uasm_rel_lo(pgdc), ptr); |
| 979 | |||
| 980 | if (cpu_has_mips_r2) { | ||
| 981 | uasm_i_ext(p, tmp, tmp, PGDIR_SHIFT, (32 - PGDIR_SHIFT)); | ||
| 982 | uasm_i_ins(p, ptr, tmp, PGD_T_LOG2, (32 - PGDIR_SHIFT)); | ||
| 983 | return; | ||
| 984 | } | ||
| 985 | |||
| 986 | uasm_i_srl(p, tmp, tmp, PGDIR_SHIFT); /* get pgd only bits */ | 979 | uasm_i_srl(p, tmp, tmp, PGDIR_SHIFT); /* get pgd only bits */ |
| 987 | uasm_i_sll(p, tmp, tmp, PGD_T_LOG2); | 980 | uasm_i_sll(p, tmp, tmp, PGD_T_LOG2); |
| 988 | uasm_i_addu(p, ptr, ptr, tmp); /* add in pgd offset */ | 981 | uasm_i_addu(p, ptr, ptr, tmp); /* add in pgd offset */ |
| @@ -1018,15 +1011,6 @@ static void __cpuinit build_adjust_context(u32 **p, unsigned int ctx) | |||
| 1018 | 1011 | ||
| 1019 | static void __cpuinit build_get_ptep(u32 **p, unsigned int tmp, unsigned int ptr) | 1012 | static void __cpuinit build_get_ptep(u32 **p, unsigned int tmp, unsigned int ptr) |
| 1020 | { | 1013 | { |
| 1021 | if (cpu_has_mips_r2) { | ||
| 1022 | /* PTE ptr offset is obtained from BadVAddr */ | ||
| 1023 | UASM_i_MFC0(p, tmp, C0_BADVADDR); | ||
| 1024 | UASM_i_LW(p, ptr, 0, ptr); | ||
| 1025 | uasm_i_ext(p, tmp, tmp, PAGE_SHIFT+1, PGDIR_SHIFT-PAGE_SHIFT-1); | ||
| 1026 | uasm_i_ins(p, ptr, tmp, PTE_T_LOG2+1, PGDIR_SHIFT-PAGE_SHIFT-1); | ||
| 1027 | return; | ||
| 1028 | } | ||
| 1029 | |||
| 1030 | /* | 1014 | /* |
| 1031 | * Bug workaround for the Nevada. It seems as if under certain | 1015 | * Bug workaround for the Nevada. It seems as if under certain |
| 1032 | * circumstances the move from cp0_context might produce a | 1016 | * circumstances the move from cp0_context might produce a |
diff --git a/arch/mips/mti-sead3/sead3-i2c-drv.c b/arch/mips/mti-sead3/sead3-i2c-drv.c index 0375ee66bca3..7aa2225e75b9 100644 --- a/arch/mips/mti-sead3/sead3-i2c-drv.c +++ b/arch/mips/mti-sead3/sead3-i2c-drv.c | |||
| @@ -297,7 +297,7 @@ static void sead3_i2c_platform_setup(struct pic32_i2c_platform_data *priv) | |||
| 297 | priv->base + PIC32_I2CxSTATCLR); | 297 | priv->base + PIC32_I2CxSTATCLR); |
| 298 | } | 298 | } |
| 299 | 299 | ||
| 300 | static int __devinit sead3_i2c_platform_probe(struct platform_device *pdev) | 300 | static int sead3_i2c_platform_probe(struct platform_device *pdev) |
| 301 | { | 301 | { |
| 302 | struct pic32_i2c_platform_data *priv; | 302 | struct pic32_i2c_platform_data *priv; |
| 303 | struct resource *r; | 303 | struct resource *r; |
| @@ -345,7 +345,7 @@ out: | |||
| 345 | return ret; | 345 | return ret; |
| 346 | } | 346 | } |
| 347 | 347 | ||
| 348 | static int __devexit sead3_i2c_platform_remove(struct platform_device *pdev) | 348 | static int sead3_i2c_platform_remove(struct platform_device *pdev) |
| 349 | { | 349 | { |
| 350 | struct pic32_i2c_platform_data *priv = platform_get_drvdata(pdev); | 350 | struct pic32_i2c_platform_data *priv = platform_get_drvdata(pdev); |
| 351 | 351 | ||
| @@ -383,7 +383,7 @@ static struct platform_driver sead3_i2c_platform_driver = { | |||
| 383 | .owner = THIS_MODULE, | 383 | .owner = THIS_MODULE, |
| 384 | }, | 384 | }, |
| 385 | .probe = sead3_i2c_platform_probe, | 385 | .probe = sead3_i2c_platform_probe, |
| 386 | .remove = __devexit_p(sead3_i2c_platform_remove), | 386 | .remove = sead3_i2c_platform_remove, |
| 387 | .suspend = sead3_i2c_platform_suspend, | 387 | .suspend = sead3_i2c_platform_suspend, |
| 388 | .resume = sead3_i2c_platform_resume, | 388 | .resume = sead3_i2c_platform_resume, |
| 389 | }; | 389 | }; |
diff --git a/arch/mips/mti-sead3/sead3-pic32-i2c-drv.c b/arch/mips/mti-sead3/sead3-pic32-i2c-drv.c index 46509b0a620d..514675ed0cde 100644 --- a/arch/mips/mti-sead3/sead3-pic32-i2c-drv.c +++ b/arch/mips/mti-sead3/sead3-pic32-i2c-drv.c | |||
| @@ -304,8 +304,7 @@ static void i2c_platform_disable(struct i2c_platform_data *priv) | |||
| 304 | pr_debug("i2c_platform_disable\n"); | 304 | pr_debug("i2c_platform_disable\n"); |
| 305 | } | 305 | } |
| 306 | 306 | ||
| 307 | static int __devinit | 307 | static int i2c_platform_probe(struct platform_device *pdev) |
| 308 | i2c_platform_probe(struct platform_device *pdev) | ||
| 309 | { | 308 | { |
| 310 | struct i2c_platform_data *priv; | 309 | struct i2c_platform_data *priv; |
| 311 | struct resource *r; | 310 | struct resource *r; |
| @@ -362,8 +361,7 @@ out: | |||
| 362 | return ret; | 361 | return ret; |
| 363 | } | 362 | } |
| 364 | 363 | ||
| 365 | static int __devexit | 364 | static int i2c_platform_remove(struct platform_device *pdev) |
| 366 | i2c_platform_remove(struct platform_device *pdev) | ||
| 367 | { | 365 | { |
| 368 | struct i2c_platform_data *priv = platform_get_drvdata(pdev); | 366 | struct i2c_platform_data *priv = platform_get_drvdata(pdev); |
| 369 | 367 | ||
| @@ -408,7 +406,7 @@ static struct platform_driver i2c_platform_driver = { | |||
| 408 | .owner = THIS_MODULE, | 406 | .owner = THIS_MODULE, |
| 409 | }, | 407 | }, |
| 410 | .probe = i2c_platform_probe, | 408 | .probe = i2c_platform_probe, |
| 411 | .remove = __devexit_p(i2c_platform_remove), | 409 | .remove = i2c_platform_remove, |
| 412 | .suspend = i2c_platform_suspend, | 410 | .suspend = i2c_platform_suspend, |
| 413 | .resume = i2c_platform_resume, | 411 | .resume = i2c_platform_resume, |
| 414 | }; | 412 | }; |
diff --git a/arch/mips/netlogic/xlr/setup.c b/arch/mips/netlogic/xlr/setup.c index 4e7f49d3d5a8..c5ce6992ac4c 100644 --- a/arch/mips/netlogic/xlr/setup.c +++ b/arch/mips/netlogic/xlr/setup.c | |||
| @@ -193,8 +193,11 @@ static void nlm_init_node(void) | |||
| 193 | 193 | ||
| 194 | void __init prom_init(void) | 194 | void __init prom_init(void) |
| 195 | { | 195 | { |
| 196 | int i, *argv, *envp; /* passed as 32 bit ptrs */ | 196 | int *argv, *envp; /* passed as 32 bit ptrs */ |
| 197 | struct psb_info *prom_infop; | 197 | struct psb_info *prom_infop; |
| 198 | #ifdef CONFIG_SMP | ||
| 199 | int i; | ||
| 200 | #endif | ||
| 198 | 201 | ||
| 199 | /* truncate to 32 bit and sign extend all args */ | 202 | /* truncate to 32 bit and sign extend all args */ |
| 200 | argv = (int *)(long)(int)fw_arg1; | 203 | argv = (int *)(long)(int)fw_arg1; |
diff --git a/arch/mips/pci/fixup-cobalt.c b/arch/mips/pci/fixup-cobalt.c index 3e7ce65d776c..9553b14002dd 100644 --- a/arch/mips/pci/fixup-cobalt.c +++ b/arch/mips/pci/fixup-cobalt.c | |||
| @@ -37,7 +37,7 @@ | |||
| 37 | #define VIA_COBALT_BRD_ID_REG 0x94 | 37 | #define VIA_COBALT_BRD_ID_REG 0x94 |
| 38 | #define VIA_COBALT_BRD_REG_to_ID(reg) ((unsigned char)(reg) >> 4) | 38 | #define VIA_COBALT_BRD_REG_to_ID(reg) ((unsigned char)(reg) >> 4) |
| 39 | 39 | ||
| 40 | static void __devinit qube_raq_galileo_early_fixup(struct pci_dev *dev) | 40 | static void qube_raq_galileo_early_fixup(struct pci_dev *dev) |
| 41 | { | 41 | { |
| 42 | if (dev->devfn == PCI_DEVFN(0, 0) && | 42 | if (dev->devfn == PCI_DEVFN(0, 0) && |
| 43 | (dev->class >> 8) == PCI_CLASS_MEMORY_OTHER) { | 43 | (dev->class >> 8) == PCI_CLASS_MEMORY_OTHER) { |
| @@ -51,7 +51,7 @@ static void __devinit qube_raq_galileo_early_fixup(struct pci_dev *dev) | |||
| 51 | DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_MARVELL, PCI_DEVICE_ID_MARVELL_GT64111, | 51 | DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_MARVELL, PCI_DEVICE_ID_MARVELL_GT64111, |
| 52 | qube_raq_galileo_early_fixup); | 52 | qube_raq_galileo_early_fixup); |
| 53 | 53 | ||
| 54 | static void __devinit qube_raq_via_bmIDE_fixup(struct pci_dev *dev) | 54 | static void qube_raq_via_bmIDE_fixup(struct pci_dev *dev) |
| 55 | { | 55 | { |
| 56 | unsigned short cfgword; | 56 | unsigned short cfgword; |
| 57 | unsigned char lt; | 57 | unsigned char lt; |
| @@ -74,7 +74,7 @@ static void __devinit qube_raq_via_bmIDE_fixup(struct pci_dev *dev) | |||
| 74 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_1, | 74 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_1, |
| 75 | qube_raq_via_bmIDE_fixup); | 75 | qube_raq_via_bmIDE_fixup); |
| 76 | 76 | ||
| 77 | static void __devinit qube_raq_galileo_fixup(struct pci_dev *dev) | 77 | static void qube_raq_galileo_fixup(struct pci_dev *dev) |
| 78 | { | 78 | { |
| 79 | if (dev->devfn != PCI_DEVFN(0, 0)) | 79 | if (dev->devfn != PCI_DEVFN(0, 0)) |
| 80 | return; | 80 | return; |
| @@ -129,7 +129,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MARVELL, PCI_DEVICE_ID_MARVELL_GT64111, | |||
| 129 | 129 | ||
| 130 | int cobalt_board_id; | 130 | int cobalt_board_id; |
| 131 | 131 | ||
| 132 | static void __devinit qube_raq_via_board_id_fixup(struct pci_dev *dev) | 132 | static void qube_raq_via_board_id_fixup(struct pci_dev *dev) |
| 133 | { | 133 | { |
| 134 | u8 id; | 134 | u8 id; |
| 135 | int retval; | 135 | int retval; |
diff --git a/arch/mips/pci/fixup-emma2rh.c b/arch/mips/pci/fixup-emma2rh.c index 0d9ccf4dfc5a..beaec32b02e5 100644 --- a/arch/mips/pci/fixup-emma2rh.c +++ b/arch/mips/pci/fixup-emma2rh.c | |||
| @@ -52,7 +52,7 @@ static unsigned char irq_map[][5] __initdata = { | |||
| 52 | MARKEINS_PCI_IRQ_INTA, MARKEINS_PCI_IRQ_INTB,}, | 52 | MARKEINS_PCI_IRQ_INTA, MARKEINS_PCI_IRQ_INTB,}, |
| 53 | }; | 53 | }; |
| 54 | 54 | ||
| 55 | static void __devinit nec_usb_controller_fixup(struct pci_dev *dev) | 55 | static void nec_usb_controller_fixup(struct pci_dev *dev) |
| 56 | { | 56 | { |
| 57 | if (PCI_SLOT(dev->devfn) == EMMA2RH_USB_SLOT) | 57 | if (PCI_SLOT(dev->devfn) == EMMA2RH_USB_SLOT) |
| 58 | /* on board USB controller configuration */ | 58 | /* on board USB controller configuration */ |
| @@ -67,7 +67,7 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_NEC, PCI_DEVICE_ID_NEC_USB, | |||
| 67 | * if it is the host bridge by marking it as such. These resources are of | 67 | * if it is the host bridge by marking it as such. These resources are of |
| 68 | * no consequence to the PCI layer (they are handled elsewhere). | 68 | * no consequence to the PCI layer (they are handled elsewhere). |
| 69 | */ | 69 | */ |
| 70 | static void __devinit emma2rh_pci_host_fixup(struct pci_dev *dev) | 70 | static void emma2rh_pci_host_fixup(struct pci_dev *dev) |
| 71 | { | 71 | { |
| 72 | int i; | 72 | int i; |
| 73 | 73 | ||
diff --git a/arch/mips/pci/fixup-fuloong2e.c b/arch/mips/pci/fixup-fuloong2e.c index 0857ab8c3919..63ab4a042cd6 100644 --- a/arch/mips/pci/fixup-fuloong2e.c +++ b/arch/mips/pci/fixup-fuloong2e.c | |||
| @@ -48,7 +48,7 @@ int pcibios_plat_dev_init(struct pci_dev *dev) | |||
| 48 | return 0; | 48 | return 0; |
| 49 | } | 49 | } |
| 50 | 50 | ||
| 51 | static void __devinit loongson2e_nec_fixup(struct pci_dev *pdev) | 51 | static void loongson2e_nec_fixup(struct pci_dev *pdev) |
| 52 | { | 52 | { |
| 53 | unsigned int val; | 53 | unsigned int val; |
| 54 | 54 | ||
| @@ -60,7 +60,7 @@ static void __devinit loongson2e_nec_fixup(struct pci_dev *pdev) | |||
| 60 | pci_write_config_dword(pdev, 0xe4, 1 << 5); | 60 | pci_write_config_dword(pdev, 0xe4, 1 << 5); |
| 61 | } | 61 | } |
| 62 | 62 | ||
| 63 | static void __devinit loongson2e_686b_func0_fixup(struct pci_dev *pdev) | 63 | static void loongson2e_686b_func0_fixup(struct pci_dev *pdev) |
| 64 | { | 64 | { |
| 65 | unsigned char c; | 65 | unsigned char c; |
| 66 | 66 | ||
| @@ -135,7 +135,7 @@ static void __devinit loongson2e_686b_func0_fixup(struct pci_dev *pdev) | |||
| 135 | printk(KERN_INFO"via686b fix: ISA bridge done\n"); | 135 | printk(KERN_INFO"via686b fix: ISA bridge done\n"); |
| 136 | } | 136 | } |
| 137 | 137 | ||
| 138 | static void __devinit loongson2e_686b_func1_fixup(struct pci_dev *pdev) | 138 | static void loongson2e_686b_func1_fixup(struct pci_dev *pdev) |
| 139 | { | 139 | { |
| 140 | printk(KERN_INFO"via686b fix: IDE\n"); | 140 | printk(KERN_INFO"via686b fix: IDE\n"); |
| 141 | 141 | ||
| @@ -168,19 +168,19 @@ static void __devinit loongson2e_686b_func1_fixup(struct pci_dev *pdev) | |||
| 168 | printk(KERN_INFO"via686b fix: IDE done\n"); | 168 | printk(KERN_INFO"via686b fix: IDE done\n"); |
| 169 | } | 169 | } |
| 170 | 170 | ||
| 171 | static void __devinit loongson2e_686b_func2_fixup(struct pci_dev *pdev) | 171 | static void loongson2e_686b_func2_fixup(struct pci_dev *pdev) |
| 172 | { | 172 | { |
| 173 | /* irq routing */ | 173 | /* irq routing */ |
| 174 | pci_write_config_byte(pdev, PCI_INTERRUPT_LINE, 10); | 174 | pci_write_config_byte(pdev, PCI_INTERRUPT_LINE, 10); |
| 175 | } | 175 | } |
| 176 | 176 | ||
| 177 | static void __devinit loongson2e_686b_func3_fixup(struct pci_dev *pdev) | 177 | static void loongson2e_686b_func3_fixup(struct pci_dev *pdev) |
| 178 | { | 178 | { |
| 179 | /* irq routing */ | 179 | /* irq routing */ |
| 180 | pci_write_config_byte(pdev, PCI_INTERRUPT_LINE, 11); | 180 | pci_write_config_byte(pdev, PCI_INTERRUPT_LINE, 11); |
| 181 | } | 181 | } |
| 182 | 182 | ||
| 183 | static void __devinit loongson2e_686b_func5_fixup(struct pci_dev *pdev) | 183 | static void loongson2e_686b_func5_fixup(struct pci_dev *pdev) |
| 184 | { | 184 | { |
| 185 | unsigned int val; | 185 | unsigned int val; |
| 186 | unsigned char c; | 186 | unsigned char c; |
diff --git a/arch/mips/pci/fixup-lemote2f.c b/arch/mips/pci/fixup-lemote2f.c index a7b917dcf604..519daaebb5da 100644 --- a/arch/mips/pci/fixup-lemote2f.c +++ b/arch/mips/pci/fixup-lemote2f.c | |||
| @@ -96,21 +96,21 @@ int pcibios_plat_dev_init(struct pci_dev *dev) | |||
| 96 | } | 96 | } |
| 97 | 97 | ||
| 98 | /* CS5536 SPEC. fixup */ | 98 | /* CS5536 SPEC. fixup */ |
| 99 | static void __devinit loongson_cs5536_isa_fixup(struct pci_dev *pdev) | 99 | static void loongson_cs5536_isa_fixup(struct pci_dev *pdev) |
| 100 | { | 100 | { |
| 101 | /* the uart1 and uart2 interrupt in PIC is enabled as default */ | 101 | /* the uart1 and uart2 interrupt in PIC is enabled as default */ |
| 102 | pci_write_config_dword(pdev, PCI_UART1_INT_REG, 1); | 102 | pci_write_config_dword(pdev, PCI_UART1_INT_REG, 1); |
| 103 | pci_write_config_dword(pdev, PCI_UART2_INT_REG, 1); | 103 | pci_write_config_dword(pdev, PCI_UART2_INT_REG, 1); |
| 104 | } | 104 | } |
| 105 | 105 | ||
| 106 | static void __devinit loongson_cs5536_ide_fixup(struct pci_dev *pdev) | 106 | static void loongson_cs5536_ide_fixup(struct pci_dev *pdev) |
| 107 | { | 107 | { |
| 108 | /* setting the mutex pin as IDE function */ | 108 | /* setting the mutex pin as IDE function */ |
| 109 | pci_write_config_dword(pdev, PCI_IDE_CFG_REG, | 109 | pci_write_config_dword(pdev, PCI_IDE_CFG_REG, |
| 110 | CS5536_IDE_FLASH_SIGNATURE); | 110 | CS5536_IDE_FLASH_SIGNATURE); |
| 111 | } | 111 | } |
| 112 | 112 | ||
| 113 | static void __devinit loongson_cs5536_acc_fixup(struct pci_dev *pdev) | 113 | static void loongson_cs5536_acc_fixup(struct pci_dev *pdev) |
| 114 | { | 114 | { |
| 115 | /* enable the AUDIO interrupt in PIC */ | 115 | /* enable the AUDIO interrupt in PIC */ |
| 116 | pci_write_config_dword(pdev, PCI_ACC_INT_REG, 1); | 116 | pci_write_config_dword(pdev, PCI_ACC_INT_REG, 1); |
| @@ -118,14 +118,14 @@ static void __devinit loongson_cs5536_acc_fixup(struct pci_dev *pdev) | |||
| 118 | pci_write_config_byte(pdev, PCI_LATENCY_TIMER, 0xc0); | 118 | pci_write_config_byte(pdev, PCI_LATENCY_TIMER, 0xc0); |
| 119 | } | 119 | } |
| 120 | 120 | ||
| 121 | static void __devinit loongson_cs5536_ohci_fixup(struct pci_dev *pdev) | 121 | static void loongson_cs5536_ohci_fixup(struct pci_dev *pdev) |
| 122 | { | 122 | { |
| 123 | /* enable the OHCI interrupt in PIC */ | 123 | /* enable the OHCI interrupt in PIC */ |
| 124 | /* THE OHCI, EHCI, UDC, OTG are shared with interrupt in PIC */ | 124 | /* THE OHCI, EHCI, UDC, OTG are shared with interrupt in PIC */ |
| 125 | pci_write_config_dword(pdev, PCI_OHCI_INT_REG, 1); | 125 | pci_write_config_dword(pdev, PCI_OHCI_INT_REG, 1); |
| 126 | } | 126 | } |
| 127 | 127 | ||
| 128 | static void __devinit loongson_cs5536_ehci_fixup(struct pci_dev *pdev) | 128 | static void loongson_cs5536_ehci_fixup(struct pci_dev *pdev) |
| 129 | { | 129 | { |
| 130 | u32 hi, lo; | 130 | u32 hi, lo; |
| 131 | 131 | ||
| @@ -137,7 +137,7 @@ static void __devinit loongson_cs5536_ehci_fixup(struct pci_dev *pdev) | |||
| 137 | pci_write_config_dword(pdev, PCI_EHCI_FLADJ_REG, 0x2000); | 137 | pci_write_config_dword(pdev, PCI_EHCI_FLADJ_REG, 0x2000); |
| 138 | } | 138 | } |
| 139 | 139 | ||
| 140 | static void __devinit loongson_nec_fixup(struct pci_dev *pdev) | 140 | static void loongson_nec_fixup(struct pci_dev *pdev) |
| 141 | { | 141 | { |
| 142 | unsigned int val; | 142 | unsigned int val; |
| 143 | 143 | ||
diff --git a/arch/mips/pci/fixup-malta.c b/arch/mips/pci/fixup-malta.c index 9a1a2244522a..75d03f6be3bd 100644 --- a/arch/mips/pci/fixup-malta.c +++ b/arch/mips/pci/fixup-malta.c | |||
| @@ -8,7 +8,7 @@ | |||
| 8 | #define PCID 4 | 8 | #define PCID 4 |
| 9 | 9 | ||
| 10 | /* This table is filled in by interrogating the PIIX4 chip */ | 10 | /* This table is filled in by interrogating the PIIX4 chip */ |
| 11 | static char pci_irq[5] __devinitdata = { | 11 | static char pci_irq[5] = { |
| 12 | }; | 12 | }; |
| 13 | 13 | ||
| 14 | static char irq_tab[][5] __initdata = { | 14 | static char irq_tab[][5] __initdata = { |
| @@ -50,10 +50,10 @@ int pcibios_plat_dev_init(struct pci_dev *dev) | |||
| 50 | return 0; | 50 | return 0; |
| 51 | } | 51 | } |
| 52 | 52 | ||
| 53 | static void __devinit malta_piix_func0_fixup(struct pci_dev *pdev) | 53 | static void malta_piix_func0_fixup(struct pci_dev *pdev) |
| 54 | { | 54 | { |
| 55 | unsigned char reg_val; | 55 | unsigned char reg_val; |
| 56 | static int piixirqmap[16] __devinitdata = { /* PIIX PIRQC[A:D] irq mappings */ | 56 | static int piixirqmap[16] = { /* PIIX PIRQC[A:D] irq mappings */ |
| 57 | 0, 0, 0, 3, | 57 | 0, 0, 0, 3, |
| 58 | 4, 5, 6, 7, | 58 | 4, 5, 6, 7, |
| 59 | 0, 9, 10, 11, | 59 | 0, 9, 10, 11, |
| @@ -84,7 +84,7 @@ static void __devinit malta_piix_func0_fixup(struct pci_dev *pdev) | |||
| 84 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82371AB_0, | 84 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82371AB_0, |
| 85 | malta_piix_func0_fixup); | 85 | malta_piix_func0_fixup); |
| 86 | 86 | ||
| 87 | static void __devinit malta_piix_func1_fixup(struct pci_dev *pdev) | 87 | static void malta_piix_func1_fixup(struct pci_dev *pdev) |
| 88 | { | 88 | { |
| 89 | unsigned char reg_val; | 89 | unsigned char reg_val; |
| 90 | 90 | ||
| @@ -104,7 +104,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82371AB, | |||
| 104 | malta_piix_func1_fixup); | 104 | malta_piix_func1_fixup); |
| 105 | 105 | ||
| 106 | /* Enable PCI 2.1 compatibility in PIIX4 */ | 106 | /* Enable PCI 2.1 compatibility in PIIX4 */ |
| 107 | static void __devinit quirk_dlcsetup(struct pci_dev *dev) | 107 | static void quirk_dlcsetup(struct pci_dev *dev) |
| 108 | { | 108 | { |
| 109 | u8 odlc, ndlc; | 109 | u8 odlc, ndlc; |
| 110 | 110 | ||
diff --git a/arch/mips/pci/fixup-rc32434.c b/arch/mips/pci/fixup-rc32434.c index 76bb1be99d43..d0f6ecbf35f7 100644 --- a/arch/mips/pci/fixup-rc32434.c +++ b/arch/mips/pci/fixup-rc32434.c | |||
| @@ -32,12 +32,12 @@ | |||
| 32 | #include <asm/mach-rc32434/rc32434.h> | 32 | #include <asm/mach-rc32434/rc32434.h> |
| 33 | #include <asm/mach-rc32434/irq.h> | 33 | #include <asm/mach-rc32434/irq.h> |
| 34 | 34 | ||
| 35 | static int __devinitdata irq_map[2][12] = { | 35 | static int irq_map[2][12] = { |
| 36 | {0, 0, 2, 3, 2, 3, 0, 0, 0, 0, 0, 1}, | 36 | {0, 0, 2, 3, 2, 3, 0, 0, 0, 0, 0, 1}, |
| 37 | {0, 0, 1, 3, 0, 2, 1, 3, 0, 2, 1, 3} | 37 | {0, 0, 1, 3, 0, 2, 1, 3, 0, 2, 1, 3} |
| 38 | }; | 38 | }; |
| 39 | 39 | ||
| 40 | int __devinit pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) | 40 | int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) |
| 41 | { | 41 | { |
| 42 | int irq = 0; | 42 | int irq = 0; |
| 43 | 43 | ||
| @@ -47,7 +47,7 @@ int __devinit pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) | |||
| 47 | return irq + GROUP4_IRQ_BASE + 4; | 47 | return irq + GROUP4_IRQ_BASE + 4; |
| 48 | } | 48 | } |
| 49 | 49 | ||
| 50 | static void __devinit rc32434_pci_early_fixup(struct pci_dev *dev) | 50 | static void rc32434_pci_early_fixup(struct pci_dev *dev) |
| 51 | { | 51 | { |
| 52 | if (PCI_SLOT(dev->devfn) == 6 && dev->bus->number == 0) { | 52 | if (PCI_SLOT(dev->devfn) == 6 && dev->bus->number == 0) { |
| 53 | /* disable prefetched memory range */ | 53 | /* disable prefetched memory range */ |
diff --git a/arch/mips/pci/fixup-sb1250.c b/arch/mips/pci/fixup-sb1250.c index d02900a72916..1441becdcb6c 100644 --- a/arch/mips/pci/fixup-sb1250.c +++ b/arch/mips/pci/fixup-sb1250.c | |||
| @@ -15,7 +15,7 @@ | |||
| 15 | * Set the BCM1250, etc. PCI host bridge's TRDY timeout | 15 | * Set the BCM1250, etc. PCI host bridge's TRDY timeout |
| 16 | * to the finite max. | 16 | * to the finite max. |
| 17 | */ | 17 | */ |
| 18 | static void __devinit quirk_sb1250_pci(struct pci_dev *dev) | 18 | static void quirk_sb1250_pci(struct pci_dev *dev) |
| 19 | { | 19 | { |
| 20 | pci_write_config_byte(dev, 0x40, 0xff); | 20 | pci_write_config_byte(dev, 0x40, 0xff); |
| 21 | } | 21 | } |
| @@ -25,7 +25,7 @@ DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_SIBYTE, PCI_DEVICE_ID_BCM1250_PCI, | |||
| 25 | /* | 25 | /* |
| 26 | * The BCM1250, etc. PCI/HT bridge reports as a host bridge. | 26 | * The BCM1250, etc. PCI/HT bridge reports as a host bridge. |
| 27 | */ | 27 | */ |
| 28 | static void __devinit quirk_sb1250_ht(struct pci_dev *dev) | 28 | static void quirk_sb1250_ht(struct pci_dev *dev) |
| 29 | { | 29 | { |
| 30 | dev->class = PCI_CLASS_BRIDGE_PCI << 8; | 30 | dev->class = PCI_CLASS_BRIDGE_PCI << 8; |
| 31 | } | 31 | } |
| @@ -35,7 +35,7 @@ DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_SIBYTE, PCI_DEVICE_ID_BCM1250_HT, | |||
| 35 | /* | 35 | /* |
| 36 | * Set the SP1011 HT/PCI bridge's TRDY timeout to the finite max. | 36 | * Set the SP1011 HT/PCI bridge's TRDY timeout to the finite max. |
| 37 | */ | 37 | */ |
| 38 | static void __devinit quirk_sp1011(struct pci_dev *dev) | 38 | static void quirk_sp1011(struct pci_dev *dev) |
| 39 | { | 39 | { |
| 40 | pci_write_config_byte(dev, 0x64, 0xff); | 40 | pci_write_config_byte(dev, 0x64, 0xff); |
| 41 | } | 41 | } |
diff --git a/arch/mips/pci/ops-bcm63xx.c b/arch/mips/pci/ops-bcm63xx.c index 65c7bd100486..4a156629e958 100644 --- a/arch/mips/pci/ops-bcm63xx.c +++ b/arch/mips/pci/ops-bcm63xx.c | |||
| @@ -411,7 +411,7 @@ struct pci_ops bcm63xx_cb_ops = { | |||
| 411 | * only one IO window, so it cannot be shared by PCI and cardbus, use | 411 | * only one IO window, so it cannot be shared by PCI and cardbus, use |
| 412 | * fixup to choose and detect unhandled configuration | 412 | * fixup to choose and detect unhandled configuration |
| 413 | */ | 413 | */ |
| 414 | static void __devinit bcm63xx_fixup(struct pci_dev *dev) | 414 | static void bcm63xx_fixup(struct pci_dev *dev) |
| 415 | { | 415 | { |
| 416 | static int io_window = -1; | 416 | static int io_window = -1; |
| 417 | int i, found, new_io_window; | 417 | int i, found, new_io_window; |
diff --git a/arch/mips/pci/ops-tx4927.c b/arch/mips/pci/ops-tx4927.c index bc13e29d2bb3..0d69d6f4ea44 100644 --- a/arch/mips/pci/ops-tx4927.c +++ b/arch/mips/pci/ops-tx4927.c | |||
| @@ -191,13 +191,13 @@ static struct { | |||
| 191 | u8 trdyto; | 191 | u8 trdyto; |
| 192 | u8 retryto; | 192 | u8 retryto; |
| 193 | u16 gbwc; | 193 | u16 gbwc; |
| 194 | } tx4927_pci_opts __devinitdata = { | 194 | } tx4927_pci_opts = { |
| 195 | .trdyto = 0, | 195 | .trdyto = 0, |
| 196 | .retryto = 0, | 196 | .retryto = 0, |
| 197 | .gbwc = 0xfe0, /* 4064 GBUSCLK for CCFG.GTOT=0b11 */ | 197 | .gbwc = 0xfe0, /* 4064 GBUSCLK for CCFG.GTOT=0b11 */ |
| 198 | }; | 198 | }; |
| 199 | 199 | ||
| 200 | char *__devinit tx4927_pcibios_setup(char *str) | 200 | char *tx4927_pcibios_setup(char *str) |
| 201 | { | 201 | { |
| 202 | unsigned long val; | 202 | unsigned long val; |
| 203 | 203 | ||
| @@ -495,7 +495,7 @@ irqreturn_t tx4927_pcierr_interrupt(int irq, void *dev_id) | |||
| 495 | } | 495 | } |
| 496 | 496 | ||
| 497 | #ifdef CONFIG_TOSHIBA_FPCIB0 | 497 | #ifdef CONFIG_TOSHIBA_FPCIB0 |
| 498 | static void __devinit tx4927_quirk_slc90e66_bridge(struct pci_dev *dev) | 498 | static void tx4927_quirk_slc90e66_bridge(struct pci_dev *dev) |
| 499 | { | 499 | { |
| 500 | struct tx4927_pcic_reg __iomem *pcicptr = pci_bus_to_pcicptr(dev->bus); | 500 | struct tx4927_pcic_reg __iomem *pcicptr = pci_bus_to_pcicptr(dev->bus); |
| 501 | 501 | ||
diff --git a/arch/mips/pci/pci-alchemy.c b/arch/mips/pci/pci-alchemy.c index ec125bed721c..c4ea6cc55f94 100644 --- a/arch/mips/pci/pci-alchemy.c +++ b/arch/mips/pci/pci-alchemy.c | |||
| @@ -356,7 +356,7 @@ static struct syscore_ops alchemy_pci_pmops = { | |||
| 356 | .resume = alchemy_pci_resume, | 356 | .resume = alchemy_pci_resume, |
| 357 | }; | 357 | }; |
| 358 | 358 | ||
| 359 | static int __devinit alchemy_pci_probe(struct platform_device *pdev) | 359 | static int alchemy_pci_probe(struct platform_device *pdev) |
| 360 | { | 360 | { |
| 361 | struct alchemy_pci_platdata *pd = pdev->dev.platform_data; | 361 | struct alchemy_pci_platdata *pd = pdev->dev.platform_data; |
| 362 | struct alchemy_pci_context *ctx; | 362 | struct alchemy_pci_context *ctx; |
diff --git a/arch/mips/pci/pci-ar71xx.c b/arch/mips/pci/pci-ar71xx.c index 1552522b8718..6eaa4f2d0e38 100644 --- a/arch/mips/pci/pci-ar71xx.c +++ b/arch/mips/pci/pci-ar71xx.c | |||
| @@ -24,7 +24,7 @@ | |||
| 24 | #include <asm/mach-ath79/pci.h> | 24 | #include <asm/mach-ath79/pci.h> |
| 25 | 25 | ||
| 26 | #define AR71XX_PCI_MEM_BASE 0x10000000 | 26 | #define AR71XX_PCI_MEM_BASE 0x10000000 |
| 27 | #define AR71XX_PCI_MEM_SIZE 0x08000000 | 27 | #define AR71XX_PCI_MEM_SIZE 0x07000000 |
| 28 | 28 | ||
| 29 | #define AR71XX_PCI_WIN0_OFFS 0x10000000 | 29 | #define AR71XX_PCI_WIN0_OFFS 0x10000000 |
| 30 | #define AR71XX_PCI_WIN1_OFFS 0x11000000 | 30 | #define AR71XX_PCI_WIN1_OFFS 0x11000000 |
diff --git a/arch/mips/pci/pci-ar724x.c b/arch/mips/pci/pci-ar724x.c index 86d77a666458..c11c75be2d7e 100644 --- a/arch/mips/pci/pci-ar724x.c +++ b/arch/mips/pci/pci-ar724x.c | |||
| @@ -21,7 +21,7 @@ | |||
| 21 | #define AR724X_PCI_CTRL_SIZE 0x100 | 21 | #define AR724X_PCI_CTRL_SIZE 0x100 |
| 22 | 22 | ||
| 23 | #define AR724X_PCI_MEM_BASE 0x10000000 | 23 | #define AR724X_PCI_MEM_BASE 0x10000000 |
| 24 | #define AR724X_PCI_MEM_SIZE 0x08000000 | 24 | #define AR724X_PCI_MEM_SIZE 0x04000000 |
| 25 | 25 | ||
| 26 | #define AR724X_PCI_REG_RESET 0x18 | 26 | #define AR724X_PCI_REG_RESET 0x18 |
| 27 | #define AR724X_PCI_REG_INT_STATUS 0x4c | 27 | #define AR724X_PCI_REG_INT_STATUS 0x4c |
diff --git a/arch/mips/pci/pci-ip27.c b/arch/mips/pci/pci-ip27.c index fdc24440294c..7f4f49b09b5b 100644 --- a/arch/mips/pci/pci-ip27.c +++ b/arch/mips/pci/pci-ip27.c | |||
| @@ -143,7 +143,7 @@ int __cpuinit bridge_probe(nasid_t nasid, int widget_id, int masterwid) | |||
| 143 | * A given PCI device, in general, should be able to intr any of the cpus | 143 | * A given PCI device, in general, should be able to intr any of the cpus |
| 144 | * on any one of the hubs connected to its xbow. | 144 | * on any one of the hubs connected to its xbow. |
| 145 | */ | 145 | */ |
| 146 | int __devinit pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) | 146 | int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) |
| 147 | { | 147 | { |
| 148 | return 0; | 148 | return 0; |
| 149 | } | 149 | } |
| @@ -212,7 +212,7 @@ static inline void pci_enable_swapping(struct pci_dev *dev) | |||
| 212 | bridge->b_widget.w_tflush; /* Flush */ | 212 | bridge->b_widget.w_tflush; /* Flush */ |
| 213 | } | 213 | } |
| 214 | 214 | ||
| 215 | static void __devinit pci_fixup_ioc3(struct pci_dev *d) | 215 | static void pci_fixup_ioc3(struct pci_dev *d) |
| 216 | { | 216 | { |
| 217 | pci_disable_swapping(d); | 217 | pci_disable_swapping(d); |
| 218 | } | 218 | } |
diff --git a/arch/mips/pci/pci-lantiq.c b/arch/mips/pci/pci-lantiq.c index 075d87acd12a..95681789b51e 100644 --- a/arch/mips/pci/pci-lantiq.c +++ b/arch/mips/pci/pci-lantiq.c | |||
| @@ -95,7 +95,7 @@ static inline u32 ltq_calc_bar11mask(void) | |||
| 95 | return bar11mask; | 95 | return bar11mask; |
| 96 | } | 96 | } |
| 97 | 97 | ||
| 98 | static int __devinit ltq_pci_startup(struct platform_device *pdev) | 98 | static int ltq_pci_startup(struct platform_device *pdev) |
| 99 | { | 99 | { |
| 100 | struct device_node *node = pdev->dev.of_node; | 100 | struct device_node *node = pdev->dev.of_node; |
| 101 | const __be32 *req_mask, *bus_clk; | 101 | const __be32 *req_mask, *bus_clk; |
| @@ -201,7 +201,7 @@ static int __devinit ltq_pci_startup(struct platform_device *pdev) | |||
| 201 | return 0; | 201 | return 0; |
| 202 | } | 202 | } |
| 203 | 203 | ||
| 204 | static int __devinit ltq_pci_probe(struct platform_device *pdev) | 204 | static int ltq_pci_probe(struct platform_device *pdev) |
| 205 | { | 205 | { |
| 206 | struct resource *res_cfg, *res_bridge; | 206 | struct resource *res_cfg, *res_bridge; |
| 207 | 207 | ||
diff --git a/arch/mips/pci/pci.c b/arch/mips/pci/pci.c index 4040416e0603..a1843448fad3 100644 --- a/arch/mips/pci/pci.c +++ b/arch/mips/pci/pci.c | |||
| @@ -76,7 +76,7 @@ pcibios_align_resource(void *data, const struct resource *res, | |||
| 76 | return start; | 76 | return start; |
| 77 | } | 77 | } |
| 78 | 78 | ||
| 79 | static void __devinit pcibios_scanbus(struct pci_controller *hose) | 79 | static void pcibios_scanbus(struct pci_controller *hose) |
| 80 | { | 80 | { |
| 81 | static int next_busno; | 81 | static int next_busno; |
| 82 | static int need_domain_info; | 82 | static int need_domain_info; |
| @@ -120,8 +120,7 @@ static void __devinit pcibios_scanbus(struct pci_controller *hose) | |||
| 120 | } | 120 | } |
| 121 | 121 | ||
| 122 | #ifdef CONFIG_OF | 122 | #ifdef CONFIG_OF |
| 123 | void __devinit pci_load_of_ranges(struct pci_controller *hose, | 123 | void pci_load_of_ranges(struct pci_controller *hose, struct device_node *node) |
| 124 | struct device_node *node) | ||
| 125 | { | 124 | { |
| 126 | const __be32 *ranges; | 125 | const __be32 *ranges; |
| 127 | int rlen; | 126 | int rlen; |
| @@ -174,7 +173,7 @@ void __devinit pci_load_of_ranges(struct pci_controller *hose, | |||
| 174 | 173 | ||
| 175 | static DEFINE_MUTEX(pci_scan_mutex); | 174 | static DEFINE_MUTEX(pci_scan_mutex); |
| 176 | 175 | ||
| 177 | void __devinit register_pci_controller(struct pci_controller *hose) | 176 | void register_pci_controller(struct pci_controller *hose) |
| 178 | { | 177 | { |
| 179 | if (request_resource(&iomem_resource, hose->mem_resource) < 0) | 178 | if (request_resource(&iomem_resource, hose->mem_resource) < 0) |
| 180 | goto out; | 179 | goto out; |
| @@ -303,7 +302,7 @@ int pcibios_enable_device(struct pci_dev *dev, int mask) | |||
| 303 | return pcibios_plat_dev_init(dev); | 302 | return pcibios_plat_dev_init(dev); |
| 304 | } | 303 | } |
| 305 | 304 | ||
| 306 | void __devinit pcibios_fixup_bus(struct pci_bus *bus) | 305 | void pcibios_fixup_bus(struct pci_bus *bus) |
| 307 | { | 306 | { |
| 308 | struct pci_dev *dev = bus->self; | 307 | struct pci_dev *dev = bus->self; |
| 309 | 308 | ||
diff --git a/arch/mips/power/hibernate.S b/arch/mips/power/hibernate.S index f8a751c03282..61e2558a2dcb 100644 --- a/arch/mips/power/hibernate.S +++ b/arch/mips/power/hibernate.S | |||
| @@ -8,7 +8,6 @@ | |||
| 8 | * Wu Zhangjin <wuzhangjin@gmail.com> | 8 | * Wu Zhangjin <wuzhangjin@gmail.com> |
| 9 | */ | 9 | */ |
| 10 | #include <asm/asm-offsets.h> | 10 | #include <asm/asm-offsets.h> |
| 11 | #include <asm/page.h> | ||
| 12 | #include <asm/regdef.h> | 11 | #include <asm/regdef.h> |
| 13 | #include <asm/asm.h> | 12 | #include <asm/asm.h> |
| 14 | 13 | ||
| @@ -35,7 +34,7 @@ LEAF(swsusp_arch_resume) | |||
| 35 | 0: | 34 | 0: |
| 36 | PTR_L t1, PBE_ADDRESS(t0) /* source */ | 35 | PTR_L t1, PBE_ADDRESS(t0) /* source */ |
| 37 | PTR_L t2, PBE_ORIG_ADDRESS(t0) /* destination */ | 36 | PTR_L t2, PBE_ORIG_ADDRESS(t0) /* destination */ |
| 38 | PTR_ADDU t3, t1, PAGE_SIZE | 37 | PTR_ADDU t3, t1, _PAGE_SIZE |
| 39 | 1: | 38 | 1: |
| 40 | REG_L t8, (t1) | 39 | REG_L t8, (t1) |
| 41 | REG_S t8, (t2) | 40 | REG_S t8, (t2) |
diff --git a/arch/mips/sni/setup.c b/arch/mips/sni/setup.c index d6c7bd4b5ab0..2e9c283b8e68 100644 --- a/arch/mips/sni/setup.c +++ b/arch/mips/sni/setup.c | |||
| @@ -236,7 +236,7 @@ void __init plat_mem_setup(void) | |||
| 236 | #include <video/vga.h> | 236 | #include <video/vga.h> |
| 237 | #include <video/cirrus.h> | 237 | #include <video/cirrus.h> |
| 238 | 238 | ||
| 239 | static void __devinit quirk_cirrus_ram_size(struct pci_dev *dev) | 239 | static void quirk_cirrus_ram_size(struct pci_dev *dev) |
| 240 | { | 240 | { |
| 241 | u16 cmd; | 241 | u16 cmd; |
| 242 | 242 | ||
diff --git a/arch/mips/txx9/generic/pci.c b/arch/mips/txx9/generic/pci.c index b14ee53581a9..ce8f8b9b930c 100644 --- a/arch/mips/txx9/generic/pci.c +++ b/arch/mips/txx9/generic/pci.c | |||
| @@ -256,8 +256,7 @@ static irqreturn_t i8259_interrupt(int irq, void *dev_id) | |||
| 256 | return IRQ_HANDLED; | 256 | return IRQ_HANDLED; |
| 257 | } | 257 | } |
| 258 | 258 | ||
| 259 | static int __devinit | 259 | static int txx9_i8259_irq_setup(int irq) |
| 260 | txx9_i8259_irq_setup(int irq) | ||
| 261 | { | 260 | { |
| 262 | int err; | 261 | int err; |
| 263 | 262 | ||
| @@ -269,7 +268,7 @@ txx9_i8259_irq_setup(int irq) | |||
| 269 | return err; | 268 | return err; |
| 270 | } | 269 | } |
| 271 | 270 | ||
| 272 | static void __devinit quirk_slc90e66_bridge(struct pci_dev *dev) | 271 | static void quirk_slc90e66_bridge(struct pci_dev *dev) |
| 273 | { | 272 | { |
| 274 | int irq; /* PCI/ISA Bridge interrupt */ | 273 | int irq; /* PCI/ISA Bridge interrupt */ |
| 275 | u8 reg_64; | 274 | u8 reg_64; |
| @@ -304,7 +303,7 @@ static void __devinit quirk_slc90e66_bridge(struct pci_dev *dev) | |||
| 304 | smsc_fdc37m81x_config_end(); | 303 | smsc_fdc37m81x_config_end(); |
| 305 | } | 304 | } |
| 306 | 305 | ||
| 307 | static void __devinit quirk_slc90e66_ide(struct pci_dev *dev) | 306 | static void quirk_slc90e66_ide(struct pci_dev *dev) |
| 308 | { | 307 | { |
| 309 | unsigned char dat; | 308 | unsigned char dat; |
| 310 | int regs[2] = {0x41, 0x43}; | 309 | int regs[2] = {0x41, 0x43}; |
| @@ -339,7 +338,7 @@ static void __devinit quirk_slc90e66_ide(struct pci_dev *dev) | |||
| 339 | } | 338 | } |
| 340 | #endif /* CONFIG_TOSHIBA_FPCIB0 */ | 339 | #endif /* CONFIG_TOSHIBA_FPCIB0 */ |
| 341 | 340 | ||
| 342 | static void __devinit tc35815_fixup(struct pci_dev *dev) | 341 | static void tc35815_fixup(struct pci_dev *dev) |
| 343 | { | 342 | { |
| 344 | /* This device may have PM registers but not they are not supported. */ | 343 | /* This device may have PM registers but not they are not supported. */ |
| 345 | if (dev->pm_cap) { | 344 | if (dev->pm_cap) { |
| @@ -348,7 +347,7 @@ static void __devinit tc35815_fixup(struct pci_dev *dev) | |||
| 348 | } | 347 | } |
| 349 | } | 348 | } |
| 350 | 349 | ||
| 351 | static void __devinit final_fixup(struct pci_dev *dev) | 350 | static void final_fixup(struct pci_dev *dev) |
| 352 | { | 351 | { |
| 353 | unsigned char bist; | 352 | unsigned char bist; |
| 354 | 353 | ||
diff --git a/arch/mn10300/Kconfig b/arch/mn10300/Kconfig index aa03f2e13385..e70001cfa05b 100644 --- a/arch/mn10300/Kconfig +++ b/arch/mn10300/Kconfig | |||
| @@ -6,6 +6,7 @@ config MN10300 | |||
| 6 | select ARCH_WANT_IPC_PARSE_VERSION | 6 | select ARCH_WANT_IPC_PARSE_VERSION |
| 7 | select HAVE_ARCH_TRACEHOOK | 7 | select HAVE_ARCH_TRACEHOOK |
| 8 | select HAVE_ARCH_KGDB | 8 | select HAVE_ARCH_KGDB |
| 9 | select GENERIC_ATOMIC64 | ||
| 9 | select HAVE_NMI_WATCHDOG if MN10300_WD_TIMER | 10 | select HAVE_NMI_WATCHDOG if MN10300_WD_TIMER |
| 10 | select GENERIC_CLOCKEVENTS | 11 | select GENERIC_CLOCKEVENTS |
| 11 | select MODULES_USE_ELF_RELA | 12 | select MODULES_USE_ELF_RELA |
diff --git a/arch/mn10300/kernel/smp.c b/arch/mn10300/kernel/smp.c index 95983cd21e77..5d7e152a23b7 100644 --- a/arch/mn10300/kernel/smp.c +++ b/arch/mn10300/kernel/smp.c | |||
| @@ -905,7 +905,7 @@ void __init smp_cpus_done(unsigned int max_cpus) | |||
| 905 | * Set up the cpu_online_mask, cpu_callout_map and cpu_callin_map of the boot | 905 | * Set up the cpu_online_mask, cpu_callout_map and cpu_callin_map of the boot |
| 906 | * processor (CPU 0). | 906 | * processor (CPU 0). |
| 907 | */ | 907 | */ |
| 908 | void __devinit smp_prepare_boot_cpu(void) | 908 | void smp_prepare_boot_cpu(void) |
| 909 | { | 909 | { |
| 910 | cpumask_set_cpu(0, &cpu_callout_map); | 910 | cpumask_set_cpu(0, &cpu_callout_map); |
| 911 | cpumask_set_cpu(0, &cpu_callin_map); | 911 | cpumask_set_cpu(0, &cpu_callin_map); |
| @@ -930,7 +930,7 @@ void initialize_secondary(void) | |||
| 930 | * __cpu_up - Set smp_commenced_mask for the nominated CPU | 930 | * __cpu_up - Set smp_commenced_mask for the nominated CPU |
| 931 | * @cpu: The target CPU. | 931 | * @cpu: The target CPU. |
| 932 | */ | 932 | */ |
| 933 | int __devinit __cpu_up(unsigned int cpu, struct task_struct *tidle) | 933 | int __cpu_up(unsigned int cpu, struct task_struct *tidle) |
| 934 | { | 934 | { |
| 935 | int timeout; | 935 | int timeout; |
| 936 | 936 | ||
diff --git a/arch/mn10300/unit-asb2305/pci.c b/arch/mn10300/unit-asb2305/pci.c index e2059486d3f8..6911e845b8cd 100644 --- a/arch/mn10300/unit-asb2305/pci.c +++ b/arch/mn10300/unit-asb2305/pci.c | |||
| @@ -282,7 +282,7 @@ static int __init pci_check_direct(void) | |||
| 282 | return -ENODEV; | 282 | return -ENODEV; |
| 283 | } | 283 | } |
| 284 | 284 | ||
| 285 | static int __devinit is_valid_resource(struct pci_dev *dev, int idx) | 285 | static int is_valid_resource(struct pci_dev *dev, int idx) |
| 286 | { | 286 | { |
| 287 | unsigned int i, type_mask = IORESOURCE_IO | IORESOURCE_MEM; | 287 | unsigned int i, type_mask = IORESOURCE_IO | IORESOURCE_MEM; |
| 288 | struct resource *devr = &dev->resource[idx], *busr; | 288 | struct resource *devr = &dev->resource[idx], *busr; |
| @@ -302,7 +302,7 @@ static int __devinit is_valid_resource(struct pci_dev *dev, int idx) | |||
| 302 | return 0; | 302 | return 0; |
| 303 | } | 303 | } |
| 304 | 304 | ||
| 305 | static void __devinit pcibios_fixup_device_resources(struct pci_dev *dev) | 305 | static void pcibios_fixup_device_resources(struct pci_dev *dev) |
| 306 | { | 306 | { |
| 307 | int limit, i; | 307 | int limit, i; |
| 308 | 308 | ||
| @@ -325,7 +325,7 @@ static void __devinit pcibios_fixup_device_resources(struct pci_dev *dev) | |||
| 325 | * Called after each bus is probed, but before its children | 325 | * Called after each bus is probed, but before its children |
| 326 | * are examined. | 326 | * are examined. |
| 327 | */ | 327 | */ |
| 328 | void __devinit pcibios_fixup_bus(struct pci_bus *bus) | 328 | void pcibios_fixup_bus(struct pci_bus *bus) |
| 329 | { | 329 | { |
| 330 | struct pci_dev *dev; | 330 | struct pci_dev *dev; |
| 331 | 331 | ||
diff --git a/arch/openrisc/lib/delay.c b/arch/openrisc/lib/delay.c index c330767c9217..c82b09f4a106 100644 --- a/arch/openrisc/lib/delay.c +++ b/arch/openrisc/lib/delay.c | |||
| @@ -22,7 +22,7 @@ | |||
| 22 | #include <asm/timex.h> | 22 | #include <asm/timex.h> |
| 23 | #include <asm/processor.h> | 23 | #include <asm/processor.h> |
| 24 | 24 | ||
| 25 | int __devinit read_current_timer(unsigned long *timer_value) | 25 | int read_current_timer(unsigned long *timer_value) |
| 26 | { | 26 | { |
| 27 | *timer_value = mfspr(SPR_TTCR); | 27 | *timer_value = mfspr(SPR_TTCR); |
| 28 | return 0; | 28 | return 0; |
diff --git a/arch/parisc/include/asm/parport.h b/arch/parisc/include/asm/parport.h index 00d9cc3e7b97..c391d7cbc223 100644 --- a/arch/parisc/include/asm/parport.h +++ b/arch/parisc/include/asm/parport.h | |||
| @@ -8,7 +8,7 @@ | |||
| 8 | #define _ASM_PARPORT_H 1 | 8 | #define _ASM_PARPORT_H 1 |
| 9 | 9 | ||
| 10 | 10 | ||
| 11 | static int __devinit parport_pc_find_nonpci_ports (int autoirq, int autodma) | 11 | static int parport_pc_find_nonpci_ports (int autoirq, int autodma) |
| 12 | { | 12 | { |
| 13 | /* nothing ! */ | 13 | /* nothing ! */ |
| 14 | return 0; | 14 | return 0; |
diff --git a/arch/parisc/kernel/entry.S b/arch/parisc/kernel/entry.S index bfb44247d7a7..eb7850b46c25 100644 --- a/arch/parisc/kernel/entry.S +++ b/arch/parisc/kernel/entry.S | |||
| @@ -1865,7 +1865,7 @@ syscall_restore: | |||
| 1865 | 1865 | ||
| 1866 | /* Are we being ptraced? */ | 1866 | /* Are we being ptraced? */ |
| 1867 | ldw TASK_FLAGS(%r1),%r19 | 1867 | ldw TASK_FLAGS(%r1),%r19 |
| 1868 | ldi (_TIF_SINGLESTEP|_TIF_BLOCKSTEP),%r2 | 1868 | ldi _TIF_SYSCALL_TRACE_MASK,%r2 |
| 1869 | and,COND(=) %r19,%r2,%r0 | 1869 | and,COND(=) %r19,%r2,%r0 |
| 1870 | b,n syscall_restore_rfi | 1870 | b,n syscall_restore_rfi |
| 1871 | 1871 | ||
| @@ -1978,15 +1978,23 @@ syscall_restore_rfi: | |||
| 1978 | /* sr2 should be set to zero for userspace syscalls */ | 1978 | /* sr2 should be set to zero for userspace syscalls */ |
| 1979 | STREG %r0,TASK_PT_SR2(%r1) | 1979 | STREG %r0,TASK_PT_SR2(%r1) |
| 1980 | 1980 | ||
| 1981 | pt_regs_ok: | ||
| 1982 | LDREG TASK_PT_GR31(%r1),%r2 | 1981 | LDREG TASK_PT_GR31(%r1),%r2 |
| 1983 | depi 3,31,2,%r2 /* ensure return to user mode. */ | 1982 | depi 3,31,2,%r2 /* ensure return to user mode. */ |
| 1984 | STREG %r2,TASK_PT_IAOQ0(%r1) | 1983 | STREG %r2,TASK_PT_IAOQ0(%r1) |
| 1985 | ldo 4(%r2),%r2 | 1984 | ldo 4(%r2),%r2 |
| 1986 | STREG %r2,TASK_PT_IAOQ1(%r1) | 1985 | STREG %r2,TASK_PT_IAOQ1(%r1) |
| 1986 | b intr_restore | ||
| 1987 | copy %r25,%r16 | 1987 | copy %r25,%r16 |
| 1988 | |||
| 1989 | pt_regs_ok: | ||
| 1990 | LDREG TASK_PT_IAOQ0(%r1),%r2 | ||
| 1991 | depi 3,31,2,%r2 /* ensure return to user mode. */ | ||
| 1992 | STREG %r2,TASK_PT_IAOQ0(%r1) | ||
| 1993 | LDREG TASK_PT_IAOQ1(%r1),%r2 | ||
| 1994 | depi 3,31,2,%r2 | ||
| 1995 | STREG %r2,TASK_PT_IAOQ1(%r1) | ||
| 1988 | b intr_restore | 1996 | b intr_restore |
| 1989 | nop | 1997 | copy %r25,%r16 |
| 1990 | 1998 | ||
| 1991 | .import schedule,code | 1999 | .import schedule,code |
| 1992 | syscall_do_resched: | 2000 | syscall_do_resched: |
diff --git a/arch/parisc/kernel/hardware.c b/arch/parisc/kernel/hardware.c index f48a640b55fb..f7752f6af29e 100644 --- a/arch/parisc/kernel/hardware.c +++ b/arch/parisc/kernel/hardware.c | |||
| @@ -38,7 +38,7 @@ | |||
| 38 | * so don't reference this table after starting the init process | 38 | * so don't reference this table after starting the init process |
| 39 | */ | 39 | */ |
| 40 | 40 | ||
| 41 | static struct hp_hardware hp_hardware_list[] __devinitdata = { | 41 | static struct hp_hardware hp_hardware_list[] = { |
| 42 | {HPHW_NPROC,0x01,0x4,0x0,"Indigo (840, 930)"}, | 42 | {HPHW_NPROC,0x01,0x4,0x0,"Indigo (840, 930)"}, |
| 43 | {HPHW_NPROC,0x8,0x4,0x01,"Firefox(825,925)"}, | 43 | {HPHW_NPROC,0x8,0x4,0x01,"Firefox(825,925)"}, |
| 44 | {HPHW_NPROC,0xA,0x4,0x01,"Top Gun (835,834,935,635)"}, | 44 | {HPHW_NPROC,0xA,0x4,0x01,"Top Gun (835,834,935,635)"}, |
| @@ -1230,7 +1230,7 @@ static struct hp_cpu_type_mask { | |||
| 1230 | unsigned short model; | 1230 | unsigned short model; |
| 1231 | unsigned short mask; | 1231 | unsigned short mask; |
| 1232 | enum cpu_type cpu; | 1232 | enum cpu_type cpu; |
| 1233 | } hp_cpu_type_mask_list[] __devinitdata = { | 1233 | } hp_cpu_type_mask_list[] = { |
| 1234 | 1234 | ||
| 1235 | { 0x0000, 0x0ff0, pcx }, /* 0x0000 - 0x000f */ | 1235 | { 0x0000, 0x0ff0, pcx }, /* 0x0000 - 0x000f */ |
| 1236 | { 0x0048, 0x0ff0, pcxl }, /* 0x0040 - 0x004f */ | 1236 | { 0x0048, 0x0ff0, pcxl }, /* 0x0040 - 0x004f */ |
| @@ -1327,8 +1327,7 @@ const char * const cpu_name_version[][2] = { | |||
| 1327 | [mako2] = { "PA8900 (Shortfin)", "2.0" } | 1327 | [mako2] = { "PA8900 (Shortfin)", "2.0" } |
| 1328 | }; | 1328 | }; |
| 1329 | 1329 | ||
| 1330 | const char * __devinit | 1330 | const char *parisc_hardware_description(struct parisc_device_id *id) |
| 1331 | parisc_hardware_description(struct parisc_device_id *id) | ||
| 1332 | { | 1331 | { |
| 1333 | struct hp_hardware *listptr; | 1332 | struct hp_hardware *listptr; |
| 1334 | 1333 | ||
diff --git a/arch/parisc/kernel/irq.c b/arch/parisc/kernel/irq.c index c0b1affc06a8..0299d63cd112 100644 --- a/arch/parisc/kernel/irq.c +++ b/arch/parisc/kernel/irq.c | |||
| @@ -410,11 +410,13 @@ void __init init_IRQ(void) | |||
| 410 | { | 410 | { |
| 411 | local_irq_disable(); /* PARANOID - should already be disabled */ | 411 | local_irq_disable(); /* PARANOID - should already be disabled */ |
| 412 | mtctl(~0UL, 23); /* EIRR : clear all pending external intr */ | 412 | mtctl(~0UL, 23); /* EIRR : clear all pending external intr */ |
| 413 | claim_cpu_irqs(); | ||
| 414 | #ifdef CONFIG_SMP | 413 | #ifdef CONFIG_SMP |
| 415 | if (!cpu_eiem) | 414 | if (!cpu_eiem) { |
| 415 | claim_cpu_irqs(); | ||
| 416 | cpu_eiem = EIEM_MASK(IPI_IRQ) | EIEM_MASK(TIMER_IRQ); | 416 | cpu_eiem = EIEM_MASK(IPI_IRQ) | EIEM_MASK(TIMER_IRQ); |
| 417 | } | ||
| 417 | #else | 418 | #else |
| 419 | claim_cpu_irqs(); | ||
| 418 | cpu_eiem = EIEM_MASK(TIMER_IRQ); | 420 | cpu_eiem = EIEM_MASK(TIMER_IRQ); |
| 419 | #endif | 421 | #endif |
| 420 | set_eiem(cpu_eiem); /* EIEM : enable all external intr */ | 422 | set_eiem(cpu_eiem); /* EIEM : enable all external intr */ |
diff --git a/arch/parisc/kernel/ptrace.c b/arch/parisc/kernel/ptrace.c index 857c2f545470..534abd4936e1 100644 --- a/arch/parisc/kernel/ptrace.c +++ b/arch/parisc/kernel/ptrace.c | |||
| @@ -26,7 +26,7 @@ | |||
| 26 | #include <asm/asm-offsets.h> | 26 | #include <asm/asm-offsets.h> |
| 27 | 27 | ||
| 28 | /* PSW bits we allow the debugger to modify */ | 28 | /* PSW bits we allow the debugger to modify */ |
| 29 | #define USER_PSW_BITS (PSW_N | PSW_V | PSW_CB) | 29 | #define USER_PSW_BITS (PSW_N | PSW_B | PSW_V | PSW_CB) |
| 30 | 30 | ||
| 31 | /* | 31 | /* |
| 32 | * Called by kernel/ptrace.c when detaching.. | 32 | * Called by kernel/ptrace.c when detaching.. |
diff --git a/arch/parisc/kernel/signal.c b/arch/parisc/kernel/signal.c index 537996955998..fd051705a407 100644 --- a/arch/parisc/kernel/signal.c +++ b/arch/parisc/kernel/signal.c | |||
| @@ -190,8 +190,10 @@ get_sigframe(struct k_sigaction *ka, unsigned long sp, size_t frame_size) | |||
| 190 | DBG(1,"get_sigframe: ka = %#lx, sp = %#lx, frame_size = %#lx\n", | 190 | DBG(1,"get_sigframe: ka = %#lx, sp = %#lx, frame_size = %#lx\n", |
| 191 | (unsigned long)ka, sp, frame_size); | 191 | (unsigned long)ka, sp, frame_size); |
| 192 | 192 | ||
| 193 | /* Align alternate stack and reserve 64 bytes for the signal | ||
| 194 | handler's frame marker. */ | ||
| 193 | if ((ka->sa.sa_flags & SA_ONSTACK) != 0 && ! sas_ss_flags(sp)) | 195 | if ((ka->sa.sa_flags & SA_ONSTACK) != 0 && ! sas_ss_flags(sp)) |
| 194 | sp = current->sas_ss_sp; /* Stacks grow up! */ | 196 | sp = (current->sas_ss_sp + 0x7f) & ~0x3f; /* Stacks grow up! */ |
| 195 | 197 | ||
| 196 | DBG(1,"get_sigframe: Returning sp = %#lx\n", (unsigned long)sp); | 198 | DBG(1,"get_sigframe: Returning sp = %#lx\n", (unsigned long)sp); |
| 197 | return (void __user *) sp; /* Stacks grow up. Fun. */ | 199 | return (void __user *) sp; /* Stacks grow up. Fun. */ |
diff --git a/arch/parisc/math-emu/cnv_float.h b/arch/parisc/math-emu/cnv_float.h index 9071e093164a..933423fa5144 100644 --- a/arch/parisc/math-emu/cnv_float.h +++ b/arch/parisc/math-emu/cnv_float.h | |||
| @@ -347,16 +347,15 @@ | |||
| 347 | Sgl_isinexact_to_fix(sgl_value,exponent) | 347 | Sgl_isinexact_to_fix(sgl_value,exponent) |
| 348 | 348 | ||
| 349 | #define Duint_from_sgl_mantissa(sgl_value,exponent,dresultA,dresultB) \ | 349 | #define Duint_from_sgl_mantissa(sgl_value,exponent,dresultA,dresultB) \ |
| 350 | {Sall(sgl_value) <<= SGL_EXP_LENGTH; /* left-justify */ \ | 350 | {unsigned int val = Sall(sgl_value) << SGL_EXP_LENGTH; \ |
| 351 | if (exponent <= 31) { \ | 351 | if (exponent <= 31) { \ |
| 352 | Dintp1(dresultA) = 0; \ | 352 | Dintp1(dresultA) = 0; \ |
| 353 | Dintp2(dresultB) = (unsigned)Sall(sgl_value) >> (31 - exponent); \ | 353 | Dintp2(dresultB) = val >> (31 - exponent); \ |
| 354 | } \ | 354 | } \ |
| 355 | else { \ | 355 | else { \ |
| 356 | Dintp1(dresultA) = Sall(sgl_value) >> (63 - exponent); \ | 356 | Dintp1(dresultA) = val >> (63 - exponent); \ |
| 357 | Dintp2(dresultB) = Sall(sgl_value) << (exponent - 31); \ | 357 | Dintp2(dresultB) = exponent <= 62 ? val << (exponent - 31) : 0; \ |
| 358 | } \ | 358 | } \ |
| 359 | Sall(sgl_value) >>= SGL_EXP_LENGTH; /* return to original */ \ | ||
| 360 | } | 359 | } |
| 361 | 360 | ||
| 362 | #define Duint_setzero(dresultA,dresultB) \ | 361 | #define Duint_setzero(dresultA,dresultB) \ |
diff --git a/arch/powerpc/include/asm/eeh.h b/arch/powerpc/include/asm/eeh.h index b0ef73882b38..a8fb03e22770 100644 --- a/arch/powerpc/include/asm/eeh.h +++ b/arch/powerpc/include/asm/eeh.h | |||
| @@ -183,7 +183,7 @@ static inline void eeh_unlock(void) | |||
| 183 | #define EEH_MAX_ALLOWED_FREEZES 5 | 183 | #define EEH_MAX_ALLOWED_FREEZES 5 |
| 184 | 184 | ||
| 185 | typedef void *(*eeh_traverse_func)(void *data, void *flag); | 185 | typedef void *(*eeh_traverse_func)(void *data, void *flag); |
| 186 | int __devinit eeh_phb_pe_create(struct pci_controller *phb); | 186 | int eeh_phb_pe_create(struct pci_controller *phb); |
| 187 | int eeh_add_to_parent_pe(struct eeh_dev *edev); | 187 | int eeh_add_to_parent_pe(struct eeh_dev *edev); |
| 188 | int eeh_rmv_from_parent_pe(struct eeh_dev *edev, int purge_pe); | 188 | int eeh_rmv_from_parent_pe(struct eeh_dev *edev, int purge_pe); |
| 189 | void *eeh_pe_dev_traverse(struct eeh_pe *root, | 189 | void *eeh_pe_dev_traverse(struct eeh_pe *root, |
| @@ -191,8 +191,8 @@ void *eeh_pe_dev_traverse(struct eeh_pe *root, | |||
| 191 | void eeh_pe_restore_bars(struct eeh_pe *pe); | 191 | void eeh_pe_restore_bars(struct eeh_pe *pe); |
| 192 | struct pci_bus *eeh_pe_bus_get(struct eeh_pe *pe); | 192 | struct pci_bus *eeh_pe_bus_get(struct eeh_pe *pe); |
| 193 | 193 | ||
| 194 | void * __devinit eeh_dev_init(struct device_node *dn, void *data); | 194 | void *eeh_dev_init(struct device_node *dn, void *data); |
| 195 | void __devinit eeh_dev_phb_init_dynamic(struct pci_controller *phb); | 195 | void eeh_dev_phb_init_dynamic(struct pci_controller *phb); |
| 196 | int __init eeh_ops_register(struct eeh_ops *ops); | 196 | int __init eeh_ops_register(struct eeh_ops *ops); |
| 197 | int __exit eeh_ops_unregister(const char *name); | 197 | int __exit eeh_ops_unregister(const char *name); |
| 198 | unsigned long eeh_check_failure(const volatile void __iomem *token, | 198 | unsigned long eeh_check_failure(const volatile void __iomem *token, |
diff --git a/arch/powerpc/include/asm/io-workarounds.h b/arch/powerpc/include/asm/io-workarounds.h index fbae49286926..f96dd096ff4e 100644 --- a/arch/powerpc/include/asm/io-workarounds.h +++ b/arch/powerpc/include/asm/io-workarounds.h | |||
| @@ -31,8 +31,8 @@ struct iowa_bus { | |||
| 31 | void *private; | 31 | void *private; |
| 32 | }; | 32 | }; |
| 33 | 33 | ||
| 34 | void __devinit iowa_register_bus(struct pci_controller *, struct ppc_pci_io *, | 34 | void iowa_register_bus(struct pci_controller *, struct ppc_pci_io *, |
| 35 | int (*)(struct iowa_bus *, void *), void *); | 35 | int (*)(struct iowa_bus *, void *), void *); |
| 36 | struct iowa_bus *iowa_mem_find_bus(const PCI_IO_ADDR); | 36 | struct iowa_bus *iowa_mem_find_bus(const PCI_IO_ADDR); |
| 37 | struct iowa_bus *iowa_pio_find_bus(unsigned long); | 37 | struct iowa_bus *iowa_pio_find_bus(unsigned long); |
| 38 | 38 | ||
diff --git a/arch/powerpc/include/asm/parport.h b/arch/powerpc/include/asm/parport.h index 1ca1102b4a2f..6dc2577932b1 100644 --- a/arch/powerpc/include/asm/parport.h +++ b/arch/powerpc/include/asm/parport.h | |||
| @@ -12,7 +12,7 @@ | |||
| 12 | 12 | ||
| 13 | #include <asm/prom.h> | 13 | #include <asm/prom.h> |
| 14 | 14 | ||
| 15 | static int __devinit parport_pc_find_nonpci_ports (int autoirq, int autodma) | 15 | static int parport_pc_find_nonpci_ports (int autoirq, int autodma) |
| 16 | { | 16 | { |
| 17 | struct device_node *np; | 17 | struct device_node *np; |
| 18 | const u32 *prop; | 18 | const u32 *prop; |
diff --git a/arch/powerpc/include/asm/smp.h b/arch/powerpc/include/asm/smp.h index 5a4e437c238d..195ce2ac5691 100644 --- a/arch/powerpc/include/asm/smp.h +++ b/arch/powerpc/include/asm/smp.h | |||
| @@ -54,8 +54,8 @@ struct smp_ops_t { | |||
| 54 | 54 | ||
| 55 | extern void smp_send_debugger_break(void); | 55 | extern void smp_send_debugger_break(void); |
| 56 | extern void start_secondary_resume(void); | 56 | extern void start_secondary_resume(void); |
| 57 | extern void __devinit smp_generic_give_timebase(void); | 57 | extern void smp_generic_give_timebase(void); |
| 58 | extern void __devinit smp_generic_take_timebase(void); | 58 | extern void smp_generic_take_timebase(void); |
| 59 | 59 | ||
| 60 | DECLARE_PER_CPU(unsigned int, cpu_pvr); | 60 | DECLARE_PER_CPU(unsigned int, cpu_pvr); |
| 61 | 61 | ||
diff --git a/arch/powerpc/include/asm/vio.h b/arch/powerpc/include/asm/vio.h index df81cb72d1e0..68d0cc998b1b 100644 --- a/arch/powerpc/include/asm/vio.h +++ b/arch/powerpc/include/asm/vio.h | |||
| @@ -139,7 +139,7 @@ extern void vio_unregister_driver(struct vio_driver *drv); | |||
| 139 | extern int vio_cmo_entitlement_update(size_t); | 139 | extern int vio_cmo_entitlement_update(size_t); |
| 140 | extern void vio_cmo_set_dev_desired(struct vio_dev *viodev, size_t desired); | 140 | extern void vio_cmo_set_dev_desired(struct vio_dev *viodev, size_t desired); |
| 141 | 141 | ||
| 142 | extern void __devinit vio_unregister_device(struct vio_dev *dev); | 142 | extern void vio_unregister_device(struct vio_dev *dev); |
| 143 | 143 | ||
| 144 | extern int vio_h_cop_sync(struct vio_dev *vdev, struct vio_pfo_op *op); | 144 | extern int vio_h_cop_sync(struct vio_dev *vdev, struct vio_pfo_op *op); |
| 145 | 145 | ||
diff --git a/arch/powerpc/include/uapi/asm/kvm_para.h b/arch/powerpc/include/uapi/asm/kvm_para.h index ed0e0254b47f..e3af3286a068 100644 --- a/arch/powerpc/include/uapi/asm/kvm_para.h +++ b/arch/powerpc/include/uapi/asm/kvm_para.h | |||
| @@ -78,7 +78,7 @@ struct kvm_vcpu_arch_shared { | |||
| 78 | 78 | ||
| 79 | #define KVM_HCALL_TOKEN(num) _EV_HCALL_TOKEN(EV_KVM_VENDOR_ID, num) | 79 | #define KVM_HCALL_TOKEN(num) _EV_HCALL_TOKEN(EV_KVM_VENDOR_ID, num) |
| 80 | 80 | ||
| 81 | #include <uapi/asm/epapr_hcalls.h> | 81 | #include <asm/epapr_hcalls.h> |
| 82 | 82 | ||
| 83 | #define KVM_FEATURE_MAGIC_PAGE 1 | 83 | #define KVM_FEATURE_MAGIC_PAGE 1 |
| 84 | 84 | ||
diff --git a/arch/powerpc/kernel/entry_32.S b/arch/powerpc/kernel/entry_32.S index d22e73e4618b..e514de57a125 100644 --- a/arch/powerpc/kernel/entry_32.S +++ b/arch/powerpc/kernel/entry_32.S | |||
| @@ -439,6 +439,8 @@ ret_from_fork: | |||
| 439 | ret_from_kernel_thread: | 439 | ret_from_kernel_thread: |
| 440 | REST_NVGPRS(r1) | 440 | REST_NVGPRS(r1) |
| 441 | bl schedule_tail | 441 | bl schedule_tail |
| 442 | li r3,0 | ||
| 443 | stw r3,0(r1) | ||
| 442 | mtlr r14 | 444 | mtlr r14 |
| 443 | mr r3,r15 | 445 | mr r3,r15 |
| 444 | PPC440EP_ERR42 | 446 | PPC440EP_ERR42 |
diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S index b310a0573625..3d990d3bd8ba 100644 --- a/arch/powerpc/kernel/entry_64.S +++ b/arch/powerpc/kernel/entry_64.S | |||
| @@ -664,6 +664,19 @@ resume_kernel: | |||
| 664 | ld r4,TI_FLAGS(r9) | 664 | ld r4,TI_FLAGS(r9) |
| 665 | andi. r0,r4,_TIF_NEED_RESCHED | 665 | andi. r0,r4,_TIF_NEED_RESCHED |
| 666 | bne 1b | 666 | bne 1b |
| 667 | |||
| 668 | /* | ||
| 669 | * arch_local_irq_restore() from preempt_schedule_irq above may | ||
| 670 | * enable hard interrupt but we really should disable interrupts | ||
| 671 | * when we return from the interrupt, and so that we don't get | ||
| 672 | * interrupted after loading SRR0/1. | ||
| 673 | */ | ||
| 674 | #ifdef CONFIG_PPC_BOOK3E | ||
| 675 | wrteei 0 | ||
| 676 | #else | ||
| 677 | ld r10,PACAKMSR(r13) /* Get kernel MSR without EE */ | ||
| 678 | mtmsrd r10,1 /* Update machine state */ | ||
| 679 | #endif /* CONFIG_PPC_BOOK3E */ | ||
| 667 | #endif /* CONFIG_PREEMPT */ | 680 | #endif /* CONFIG_PREEMPT */ |
| 668 | 681 | ||
| 669 | .globl fast_exc_return_irq | 682 | .globl fast_exc_return_irq |
diff --git a/arch/powerpc/kernel/io-workarounds.c b/arch/powerpc/kernel/io-workarounds.c index 12d329bcbb98..50e90b7e7139 100644 --- a/arch/powerpc/kernel/io-workarounds.c +++ b/arch/powerpc/kernel/io-workarounds.c | |||
| @@ -118,7 +118,7 @@ static void iowa_##name at \ | |||
| 118 | #undef DEF_PCI_AC_RET | 118 | #undef DEF_PCI_AC_RET |
| 119 | #undef DEF_PCI_AC_NORET | 119 | #undef DEF_PCI_AC_NORET |
| 120 | 120 | ||
| 121 | static const struct ppc_pci_io __devinitconst iowa_pci_io = { | 121 | static const struct ppc_pci_io iowa_pci_io = { |
| 122 | 122 | ||
| 123 | #define DEF_PCI_AC_RET(name, ret, at, al, space, aa) .name = iowa_##name, | 123 | #define DEF_PCI_AC_RET(name, ret, at, al, space, aa) .name = iowa_##name, |
| 124 | #define DEF_PCI_AC_NORET(name, at, al, space, aa) .name = iowa_##name, | 124 | #define DEF_PCI_AC_NORET(name, at, al, space, aa) .name = iowa_##name, |
| @@ -146,7 +146,7 @@ static void __iomem *iowa_ioremap(phys_addr_t addr, unsigned long size, | |||
| 146 | } | 146 | } |
| 147 | 147 | ||
| 148 | /* Enable IO workaround */ | 148 | /* Enable IO workaround */ |
| 149 | static void __devinit io_workaround_init(void) | 149 | static void io_workaround_init(void) |
| 150 | { | 150 | { |
| 151 | static int io_workaround_inited; | 151 | static int io_workaround_inited; |
| 152 | 152 | ||
| @@ -158,9 +158,8 @@ static void __devinit io_workaround_init(void) | |||
| 158 | } | 158 | } |
| 159 | 159 | ||
| 160 | /* Register new bus to support workaround */ | 160 | /* Register new bus to support workaround */ |
| 161 | void __devinit iowa_register_bus(struct pci_controller *phb, | 161 | void iowa_register_bus(struct pci_controller *phb, struct ppc_pci_io *ops, |
| 162 | struct ppc_pci_io *ops, | 162 | int (*initfunc)(struct iowa_bus *, void *), void *data) |
| 163 | int (*initfunc)(struct iowa_bus *, void *), void *data) | ||
| 164 | { | 163 | { |
| 165 | struct iowa_bus *bus; | 164 | struct iowa_bus *bus; |
| 166 | struct device_node *np = phb->dn; | 165 | struct device_node *np = phb->dn; |
diff --git a/arch/powerpc/kernel/isa-bridge.c b/arch/powerpc/kernel/isa-bridge.c index d45ec58703ce..0f1997097960 100644 --- a/arch/powerpc/kernel/isa-bridge.c +++ b/arch/powerpc/kernel/isa-bridge.c | |||
| @@ -41,8 +41,8 @@ EXPORT_SYMBOL_GPL(isa_bridge_pcidev); | |||
| 41 | #define ISA_SPACE_MASK 0x1 | 41 | #define ISA_SPACE_MASK 0x1 |
| 42 | #define ISA_SPACE_IO 0x1 | 42 | #define ISA_SPACE_IO 0x1 |
| 43 | 43 | ||
| 44 | static void __devinit pci_process_ISA_OF_ranges(struct device_node *isa_node, | 44 | static void pci_process_ISA_OF_ranges(struct device_node *isa_node, |
| 45 | unsigned long phb_io_base_phys) | 45 | unsigned long phb_io_base_phys) |
| 46 | { | 46 | { |
| 47 | /* We should get some saner parsing here and remove these structs */ | 47 | /* We should get some saner parsing here and remove these structs */ |
| 48 | struct pci_address { | 48 | struct pci_address { |
| @@ -170,8 +170,8 @@ void __init isa_bridge_find_early(struct pci_controller *hose) | |||
| 170 | * isa_bridge_find_late - Find and map the ISA IO space upon discovery of | 170 | * isa_bridge_find_late - Find and map the ISA IO space upon discovery of |
| 171 | * a new ISA bridge | 171 | * a new ISA bridge |
| 172 | */ | 172 | */ |
| 173 | static void __devinit isa_bridge_find_late(struct pci_dev *pdev, | 173 | static void isa_bridge_find_late(struct pci_dev *pdev, |
| 174 | struct device_node *devnode) | 174 | struct device_node *devnode) |
| 175 | { | 175 | { |
| 176 | struct pci_controller *hose = pci_bus_to_host(pdev->bus); | 176 | struct pci_controller *hose = pci_bus_to_host(pdev->bus); |
| 177 | 177 | ||
| @@ -215,8 +215,8 @@ static void isa_bridge_remove(void) | |||
| 215 | /** | 215 | /** |
| 216 | * isa_bridge_notify - Get notified of PCI devices addition/removal | 216 | * isa_bridge_notify - Get notified of PCI devices addition/removal |
| 217 | */ | 217 | */ |
| 218 | static int __devinit isa_bridge_notify(struct notifier_block *nb, | 218 | static int isa_bridge_notify(struct notifier_block *nb, unsigned long action, |
| 219 | unsigned long action, void *data) | 219 | void *data) |
| 220 | { | 220 | { |
| 221 | struct device *dev = data; | 221 | struct device *dev = data; |
| 222 | struct pci_dev *pdev = to_pci_dev(dev); | 222 | struct pci_dev *pdev = to_pci_dev(dev); |
diff --git a/arch/powerpc/kernel/kgdb.c b/arch/powerpc/kernel/kgdb.c index c470a40b29f5..a7bc7521c064 100644 --- a/arch/powerpc/kernel/kgdb.c +++ b/arch/powerpc/kernel/kgdb.c | |||
| @@ -154,12 +154,12 @@ static int kgdb_handle_breakpoint(struct pt_regs *regs) | |||
| 154 | static int kgdb_singlestep(struct pt_regs *regs) | 154 | static int kgdb_singlestep(struct pt_regs *regs) |
| 155 | { | 155 | { |
| 156 | struct thread_info *thread_info, *exception_thread_info; | 156 | struct thread_info *thread_info, *exception_thread_info; |
| 157 | struct thread_info *backup_current_thread_info = \ | 157 | struct thread_info *backup_current_thread_info; |
| 158 | (struct thread_info *)kmalloc(sizeof(struct thread_info), GFP_KERNEL); | ||
| 159 | 158 | ||
| 160 | if (user_mode(regs)) | 159 | if (user_mode(regs)) |
| 161 | return 0; | 160 | return 0; |
| 162 | 161 | ||
| 162 | backup_current_thread_info = (struct thread_info *)kmalloc(sizeof(struct thread_info), GFP_KERNEL); | ||
| 163 | /* | 163 | /* |
| 164 | * On Book E and perhaps other processors, singlestep is handled on | 164 | * On Book E and perhaps other processors, singlestep is handled on |
| 165 | * the critical exception stack. This causes current_thread_info() | 165 | * the critical exception stack. This causes current_thread_info() |
| @@ -185,6 +185,7 @@ static int kgdb_singlestep(struct pt_regs *regs) | |||
| 185 | /* Restore current_thread_info lastly. */ | 185 | /* Restore current_thread_info lastly. */ |
| 186 | memcpy(exception_thread_info, backup_current_thread_info, sizeof *thread_info); | 186 | memcpy(exception_thread_info, backup_current_thread_info, sizeof *thread_info); |
| 187 | 187 | ||
| 188 | kfree(backup_current_thread_info); | ||
| 188 | return 1; | 189 | return 1; |
| 189 | } | 190 | } |
| 190 | 191 | ||
diff --git a/arch/powerpc/kernel/of_platform.c b/arch/powerpc/kernel/of_platform.c index 9db8ec07ec94..07c12697d708 100644 --- a/arch/powerpc/kernel/of_platform.c +++ b/arch/powerpc/kernel/of_platform.c | |||
| @@ -37,7 +37,7 @@ | |||
| 37 | * lacking some bits needed here. | 37 | * lacking some bits needed here. |
| 38 | */ | 38 | */ |
| 39 | 39 | ||
| 40 | static int __devinit of_pci_phb_probe(struct platform_device *dev) | 40 | static int of_pci_phb_probe(struct platform_device *dev) |
| 41 | { | 41 | { |
| 42 | struct pci_controller *phb; | 42 | struct pci_controller *phb; |
| 43 | 43 | ||
diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c index abc0d0856994..7c37379ea9b1 100644 --- a/arch/powerpc/kernel/pci-common.c +++ b/arch/powerpc/kernel/pci-common.c | |||
| @@ -673,9 +673,8 @@ void pci_resource_to_user(const struct pci_dev *dev, int bar, | |||
| 673 | * - Some 32 bits platforms such as 4xx can have physical space larger than | 673 | * - Some 32 bits platforms such as 4xx can have physical space larger than |
| 674 | * 32 bits so we need to use 64 bits values for the parsing | 674 | * 32 bits so we need to use 64 bits values for the parsing |
| 675 | */ | 675 | */ |
| 676 | void __devinit pci_process_bridge_OF_ranges(struct pci_controller *hose, | 676 | void pci_process_bridge_OF_ranges(struct pci_controller *hose, |
| 677 | struct device_node *dev, | 677 | struct device_node *dev, int primary) |
| 678 | int primary) | ||
| 679 | { | 678 | { |
| 680 | const u32 *ranges; | 679 | const u32 *ranges; |
| 681 | int rlen; | 680 | int rlen; |
| @@ -848,7 +847,7 @@ int pci_proc_domain(struct pci_bus *bus) | |||
| 848 | /* This header fixup will do the resource fixup for all devices as they are | 847 | /* This header fixup will do the resource fixup for all devices as they are |
| 849 | * probed, but not for bridge ranges | 848 | * probed, but not for bridge ranges |
| 850 | */ | 849 | */ |
| 851 | static void __devinit pcibios_fixup_resources(struct pci_dev *dev) | 850 | static void pcibios_fixup_resources(struct pci_dev *dev) |
| 852 | { | 851 | { |
| 853 | struct pci_controller *hose = pci_bus_to_host(dev->bus); | 852 | struct pci_controller *hose = pci_bus_to_host(dev->bus); |
| 854 | int i; | 853 | int i; |
| @@ -902,8 +901,8 @@ DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, pcibios_fixup_resources); | |||
| 902 | * things go more smoothly when it gets it right. It should covers cases such | 901 | * things go more smoothly when it gets it right. It should covers cases such |
| 903 | * as Apple "closed" bridge resources and bare-metal pSeries unassigned bridges | 902 | * as Apple "closed" bridge resources and bare-metal pSeries unassigned bridges |
| 904 | */ | 903 | */ |
| 905 | static int __devinit pcibios_uninitialized_bridge_resource(struct pci_bus *bus, | 904 | static int pcibios_uninitialized_bridge_resource(struct pci_bus *bus, |
| 906 | struct resource *res) | 905 | struct resource *res) |
| 907 | { | 906 | { |
| 908 | struct pci_controller *hose = pci_bus_to_host(bus); | 907 | struct pci_controller *hose = pci_bus_to_host(bus); |
| 909 | struct pci_dev *dev = bus->self; | 908 | struct pci_dev *dev = bus->self; |
| @@ -967,7 +966,7 @@ static int __devinit pcibios_uninitialized_bridge_resource(struct pci_bus *bus, | |||
| 967 | } | 966 | } |
| 968 | 967 | ||
| 969 | /* Fixup resources of a PCI<->PCI bridge */ | 968 | /* Fixup resources of a PCI<->PCI bridge */ |
| 970 | static void __devinit pcibios_fixup_bridge(struct pci_bus *bus) | 969 | static void pcibios_fixup_bridge(struct pci_bus *bus) |
| 971 | { | 970 | { |
| 972 | struct resource *res; | 971 | struct resource *res; |
| 973 | int i; | 972 | int i; |
| @@ -1007,7 +1006,7 @@ static void __devinit pcibios_fixup_bridge(struct pci_bus *bus) | |||
| 1007 | } | 1006 | } |
| 1008 | } | 1007 | } |
| 1009 | 1008 | ||
| 1010 | void __devinit pcibios_setup_bus_self(struct pci_bus *bus) | 1009 | void pcibios_setup_bus_self(struct pci_bus *bus) |
| 1011 | { | 1010 | { |
| 1012 | /* Fix up the bus resources for P2P bridges */ | 1011 | /* Fix up the bus resources for P2P bridges */ |
| 1013 | if (bus->self != NULL) | 1012 | if (bus->self != NULL) |
| @@ -1024,7 +1023,7 @@ void __devinit pcibios_setup_bus_self(struct pci_bus *bus) | |||
| 1024 | ppc_md.pci_dma_bus_setup(bus); | 1023 | ppc_md.pci_dma_bus_setup(bus); |
| 1025 | } | 1024 | } |
| 1026 | 1025 | ||
| 1027 | void __devinit pcibios_setup_bus_devices(struct pci_bus *bus) | 1026 | void pcibios_setup_bus_devices(struct pci_bus *bus) |
| 1028 | { | 1027 | { |
| 1029 | struct pci_dev *dev; | 1028 | struct pci_dev *dev; |
| 1030 | 1029 | ||
| @@ -1063,7 +1062,7 @@ void pcibios_set_master(struct pci_dev *dev) | |||
| 1063 | /* No special bus mastering setup handling */ | 1062 | /* No special bus mastering setup handling */ |
| 1064 | } | 1063 | } |
| 1065 | 1064 | ||
| 1066 | void __devinit pcibios_fixup_bus(struct pci_bus *bus) | 1065 | void pcibios_fixup_bus(struct pci_bus *bus) |
| 1067 | { | 1066 | { |
| 1068 | /* When called from the generic PCI probe, read PCI<->PCI bridge | 1067 | /* When called from the generic PCI probe, read PCI<->PCI bridge |
| 1069 | * bases. This is -not- called when generating the PCI tree from | 1068 | * bases. This is -not- called when generating the PCI tree from |
| @@ -1080,7 +1079,7 @@ void __devinit pcibios_fixup_bus(struct pci_bus *bus) | |||
| 1080 | } | 1079 | } |
| 1081 | EXPORT_SYMBOL(pcibios_fixup_bus); | 1080 | EXPORT_SYMBOL(pcibios_fixup_bus); |
| 1082 | 1081 | ||
| 1083 | void __devinit pci_fixup_cardbus(struct pci_bus *bus) | 1082 | void pci_fixup_cardbus(struct pci_bus *bus) |
| 1084 | { | 1083 | { |
| 1085 | /* Now fixup devices on that bus */ | 1084 | /* Now fixup devices on that bus */ |
| 1086 | pcibios_setup_bus_devices(bus); | 1085 | pcibios_setup_bus_devices(bus); |
| @@ -1264,7 +1263,7 @@ void pcibios_allocate_bus_resources(struct pci_bus *bus) | |||
| 1264 | pcibios_allocate_bus_resources(b); | 1263 | pcibios_allocate_bus_resources(b); |
| 1265 | } | 1264 | } |
| 1266 | 1265 | ||
| 1267 | static inline void __devinit alloc_resource(struct pci_dev *dev, int idx) | 1266 | static inline void alloc_resource(struct pci_dev *dev, int idx) |
| 1268 | { | 1267 | { |
| 1269 | struct resource *pr, *r = &dev->resource[idx]; | 1268 | struct resource *pr, *r = &dev->resource[idx]; |
| 1270 | 1269 | ||
| @@ -1500,7 +1499,8 @@ resource_size_t pcibios_io_space_offset(struct pci_controller *hose) | |||
| 1500 | return (unsigned long) hose->io_base_virt - _IO_BASE; | 1499 | return (unsigned long) hose->io_base_virt - _IO_BASE; |
| 1501 | } | 1500 | } |
| 1502 | 1501 | ||
| 1503 | static void __devinit pcibios_setup_phb_resources(struct pci_controller *hose, struct list_head *resources) | 1502 | static void pcibios_setup_phb_resources(struct pci_controller *hose, |
| 1503 | struct list_head *resources) | ||
| 1504 | { | 1504 | { |
| 1505 | struct resource *res; | 1505 | struct resource *res; |
| 1506 | int i; | 1506 | int i; |
| @@ -1639,7 +1639,7 @@ struct device_node *pcibios_get_phb_of_node(struct pci_bus *bus) | |||
| 1639 | * pci_scan_phb - Given a pci_controller, setup and scan the PCI bus | 1639 | * pci_scan_phb - Given a pci_controller, setup and scan the PCI bus |
| 1640 | * @hose: Pointer to the PCI host controller instance structure | 1640 | * @hose: Pointer to the PCI host controller instance structure |
| 1641 | */ | 1641 | */ |
| 1642 | void __devinit pcibios_scan_phb(struct pci_controller *hose) | 1642 | void pcibios_scan_phb(struct pci_controller *hose) |
| 1643 | { | 1643 | { |
| 1644 | LIST_HEAD(resources); | 1644 | LIST_HEAD(resources); |
| 1645 | struct pci_bus *bus; | 1645 | struct pci_bus *bus; |
diff --git a/arch/powerpc/kernel/pci_32.c b/arch/powerpc/kernel/pci_32.c index 64f526a321f5..e37c2152acf4 100644 --- a/arch/powerpc/kernel/pci_32.c +++ b/arch/powerpc/kernel/pci_32.c | |||
| @@ -213,7 +213,7 @@ pci_create_OF_bus_map(void) | |||
| 213 | } | 213 | } |
| 214 | } | 214 | } |
| 215 | 215 | ||
| 216 | void __devinit pcibios_setup_phb_io_space(struct pci_controller *hose) | 216 | void pcibios_setup_phb_io_space(struct pci_controller *hose) |
| 217 | { | 217 | { |
| 218 | unsigned long io_offset; | 218 | unsigned long io_offset; |
| 219 | struct resource *res = &hose->io_resource; | 219 | struct resource *res = &hose->io_resource; |
diff --git a/arch/powerpc/kernel/pci_64.c b/arch/powerpc/kernel/pci_64.c index 2cbe6768fddd..51a133a78a09 100644 --- a/arch/powerpc/kernel/pci_64.c +++ b/arch/powerpc/kernel/pci_64.c | |||
| @@ -122,7 +122,7 @@ int pcibios_unmap_io_space(struct pci_bus *bus) | |||
| 122 | } | 122 | } |
| 123 | EXPORT_SYMBOL_GPL(pcibios_unmap_io_space); | 123 | EXPORT_SYMBOL_GPL(pcibios_unmap_io_space); |
| 124 | 124 | ||
| 125 | static int __devinit pcibios_map_phb_io_space(struct pci_controller *hose) | 125 | static int pcibios_map_phb_io_space(struct pci_controller *hose) |
| 126 | { | 126 | { |
| 127 | struct vm_struct *area; | 127 | struct vm_struct *area; |
| 128 | unsigned long phys_page; | 128 | unsigned long phys_page; |
| @@ -173,7 +173,7 @@ static int __devinit pcibios_map_phb_io_space(struct pci_controller *hose) | |||
| 173 | return 0; | 173 | return 0; |
| 174 | } | 174 | } |
| 175 | 175 | ||
| 176 | int __devinit pcibios_map_io_space(struct pci_bus *bus) | 176 | int pcibios_map_io_space(struct pci_bus *bus) |
| 177 | { | 177 | { |
| 178 | WARN_ON(bus == NULL); | 178 | WARN_ON(bus == NULL); |
| 179 | 179 | ||
| @@ -193,7 +193,7 @@ int __devinit pcibios_map_io_space(struct pci_bus *bus) | |||
| 193 | } | 193 | } |
| 194 | EXPORT_SYMBOL_GPL(pcibios_map_io_space); | 194 | EXPORT_SYMBOL_GPL(pcibios_map_io_space); |
| 195 | 195 | ||
| 196 | void __devinit pcibios_setup_phb_io_space(struct pci_controller *hose) | 196 | void pcibios_setup_phb_io_space(struct pci_controller *hose) |
| 197 | { | 197 | { |
| 198 | pcibios_map_phb_io_space(hose); | 198 | pcibios_map_phb_io_space(hose); |
| 199 | } | 199 | } |
diff --git a/arch/powerpc/kernel/pci_dn.c b/arch/powerpc/kernel/pci_dn.c index dd9e4a04bf79..e7af165f8b9d 100644 --- a/arch/powerpc/kernel/pci_dn.c +++ b/arch/powerpc/kernel/pci_dn.c | |||
| @@ -36,7 +36,7 @@ | |||
| 36 | * Traverse_func that inits the PCI fields of the device node. | 36 | * Traverse_func that inits the PCI fields of the device node. |
| 37 | * NOTE: this *must* be done before read/write config to the device. | 37 | * NOTE: this *must* be done before read/write config to the device. |
| 38 | */ | 38 | */ |
| 39 | void * __devinit update_dn_pci_info(struct device_node *dn, void *data) | 39 | void *update_dn_pci_info(struct device_node *dn, void *data) |
| 40 | { | 40 | { |
| 41 | struct pci_controller *phb = data; | 41 | struct pci_controller *phb = data; |
| 42 | const int *type = | 42 | const int *type = |
| @@ -129,7 +129,7 @@ void *traverse_pci_devices(struct device_node *start, traverse_func pre, | |||
| 129 | * subsystem is set up, before kmalloc is valid) and during the | 129 | * subsystem is set up, before kmalloc is valid) and during the |
| 130 | * dynamic lpar operation of adding a PHB to a running system. | 130 | * dynamic lpar operation of adding a PHB to a running system. |
| 131 | */ | 131 | */ |
| 132 | void __devinit pci_devs_phb_init_dynamic(struct pci_controller *phb) | 132 | void pci_devs_phb_init_dynamic(struct pci_controller *phb) |
| 133 | { | 133 | { |
| 134 | struct device_node *dn = phb->dn; | 134 | struct device_node *dn = phb->dn; |
| 135 | struct pci_dn *pdn; | 135 | struct pci_dn *pdn; |
diff --git a/arch/powerpc/kernel/pci_of_scan.c b/arch/powerpc/kernel/pci_of_scan.c index 30378a19f65d..2a67e9baa59f 100644 --- a/arch/powerpc/kernel/pci_of_scan.c +++ b/arch/powerpc/kernel/pci_of_scan.c | |||
| @@ -204,7 +204,7 @@ EXPORT_SYMBOL(of_create_pci_dev); | |||
| 204 | * this routine in turn call of_scan_bus() recusively to scan for more child | 204 | * this routine in turn call of_scan_bus() recusively to scan for more child |
| 205 | * devices. | 205 | * devices. |
| 206 | */ | 206 | */ |
| 207 | void __devinit of_scan_pci_bridge(struct pci_dev *dev) | 207 | void of_scan_pci_bridge(struct pci_dev *dev) |
| 208 | { | 208 | { |
| 209 | struct device_node *node = dev->dev.of_node; | 209 | struct device_node *node = dev->dev.of_node; |
| 210 | struct pci_bus *bus; | 210 | struct pci_bus *bus; |
| @@ -299,8 +299,8 @@ EXPORT_SYMBOL(of_scan_pci_bridge); | |||
| 299 | * @bus: pci_bus structure for the PCI bus | 299 | * @bus: pci_bus structure for the PCI bus |
| 300 | * @rescan_existing: Flag indicating bus has already been set up | 300 | * @rescan_existing: Flag indicating bus has already been set up |
| 301 | */ | 301 | */ |
| 302 | static void __devinit __of_scan_bus(struct device_node *node, | 302 | static void __of_scan_bus(struct device_node *node, struct pci_bus *bus, |
| 303 | struct pci_bus *bus, int rescan_existing) | 303 | int rescan_existing) |
| 304 | { | 304 | { |
| 305 | struct device_node *child; | 305 | struct device_node *child; |
| 306 | const u32 *reg; | 306 | const u32 *reg; |
| @@ -348,8 +348,7 @@ static void __devinit __of_scan_bus(struct device_node *node, | |||
| 348 | * @node: device tree node for the PCI bus | 348 | * @node: device tree node for the PCI bus |
| 349 | * @bus: pci_bus structure for the PCI bus | 349 | * @bus: pci_bus structure for the PCI bus |
| 350 | */ | 350 | */ |
| 351 | void __devinit of_scan_bus(struct device_node *node, | 351 | void of_scan_bus(struct device_node *node, struct pci_bus *bus) |
| 352 | struct pci_bus *bus) | ||
| 353 | { | 352 | { |
| 354 | __of_scan_bus(node, bus, 0); | 353 | __of_scan_bus(node, bus, 0); |
| 355 | } | 354 | } |
| @@ -363,8 +362,7 @@ EXPORT_SYMBOL_GPL(of_scan_bus); | |||
| 363 | * Same as of_scan_bus, but for a pci_bus structure that has already been | 362 | * Same as of_scan_bus, but for a pci_bus structure that has already been |
| 364 | * setup. | 363 | * setup. |
| 365 | */ | 364 | */ |
| 366 | void __devinit of_rescan_bus(struct device_node *node, | 365 | void of_rescan_bus(struct device_node *node, struct pci_bus *bus) |
| 367 | struct pci_bus *bus) | ||
| 368 | { | 366 | { |
| 369 | __of_scan_bus(node, bus, 1); | 367 | __of_scan_bus(node, bus, 1); |
| 370 | } | 368 | } |
diff --git a/arch/powerpc/kernel/rtas_pci.c b/arch/powerpc/kernel/rtas_pci.c index 6de63e3250bb..71cb20d6ec61 100644 --- a/arch/powerpc/kernel/rtas_pci.c +++ b/arch/powerpc/kernel/rtas_pci.c | |||
| @@ -209,7 +209,7 @@ void __init init_pci_config_tokens (void) | |||
| 209 | ibm_write_pci_config = rtas_token("ibm,write-pci-config"); | 209 | ibm_write_pci_config = rtas_token("ibm,write-pci-config"); |
| 210 | } | 210 | } |
| 211 | 211 | ||
| 212 | unsigned long __devinit get_phb_buid (struct device_node *phb) | 212 | unsigned long get_phb_buid (struct device_node *phb) |
| 213 | { | 213 | { |
| 214 | struct resource r; | 214 | struct resource r; |
| 215 | 215 | ||
| @@ -237,7 +237,7 @@ static int phb_set_bus_ranges(struct device_node *dev, | |||
| 237 | return 0; | 237 | return 0; |
| 238 | } | 238 | } |
| 239 | 239 | ||
| 240 | int __devinit rtas_setup_phb(struct pci_controller *phb) | 240 | int rtas_setup_phb(struct pci_controller *phb) |
| 241 | { | 241 | { |
| 242 | struct device_node *dev = phb->dn; | 242 | struct device_node *dev = phb->dn; |
| 243 | 243 | ||
diff --git a/arch/powerpc/kernel/smp-tbsync.c b/arch/powerpc/kernel/smp-tbsync.c index 640de836e466..e68fd1ae727a 100644 --- a/arch/powerpc/kernel/smp-tbsync.c +++ b/arch/powerpc/kernel/smp-tbsync.c | |||
| @@ -36,13 +36,13 @@ static struct { | |||
| 36 | 36 | ||
| 37 | static volatile int running; | 37 | static volatile int running; |
| 38 | 38 | ||
| 39 | static void __devinit enter_contest(u64 mark, long add) | 39 | static void enter_contest(u64 mark, long add) |
| 40 | { | 40 | { |
| 41 | while (get_tb() < mark) | 41 | while (get_tb() < mark) |
| 42 | tbsync->race_result = add; | 42 | tbsync->race_result = add; |
| 43 | } | 43 | } |
| 44 | 44 | ||
| 45 | void __devinit smp_generic_take_timebase(void) | 45 | void smp_generic_take_timebase(void) |
| 46 | { | 46 | { |
| 47 | int cmd; | 47 | int cmd; |
| 48 | u64 tb; | 48 | u64 tb; |
| @@ -75,7 +75,7 @@ void __devinit smp_generic_take_timebase(void) | |||
| 75 | local_irq_restore(flags); | 75 | local_irq_restore(flags); |
| 76 | } | 76 | } |
| 77 | 77 | ||
| 78 | static int __devinit start_contest(int cmd, long offset, int num) | 78 | static int start_contest(int cmd, long offset, int num) |
| 79 | { | 79 | { |
| 80 | int i, score=0; | 80 | int i, score=0; |
| 81 | u64 tb; | 81 | u64 tb; |
| @@ -110,7 +110,7 @@ static int __devinit start_contest(int cmd, long offset, int num) | |||
| 110 | return score; | 110 | return score; |
| 111 | } | 111 | } |
| 112 | 112 | ||
| 113 | void __devinit smp_generic_give_timebase(void) | 113 | void smp_generic_give_timebase(void) |
| 114 | { | 114 | { |
| 115 | int i, score, score2, old, min=0, max=5000, offset=1000; | 115 | int i, score, score2, old, min=0, max=5000, offset=1000; |
| 116 | 116 | ||
diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c index e5b133ebd8a5..793401e65088 100644 --- a/arch/powerpc/kernel/smp.c +++ b/arch/powerpc/kernel/smp.c | |||
| @@ -82,7 +82,7 @@ int smt_enabled_at_boot = 1; | |||
| 82 | static void (*crash_ipi_function_ptr)(struct pt_regs *) = NULL; | 82 | static void (*crash_ipi_function_ptr)(struct pt_regs *) = NULL; |
| 83 | 83 | ||
| 84 | #ifdef CONFIG_PPC64 | 84 | #ifdef CONFIG_PPC64 |
| 85 | int __devinit smp_generic_kick_cpu(int nr) | 85 | int smp_generic_kick_cpu(int nr) |
| 86 | { | 86 | { |
| 87 | BUG_ON(nr < 0 || nr >= NR_CPUS); | 87 | BUG_ON(nr < 0 || nr >= NR_CPUS); |
| 88 | 88 | ||
| @@ -311,7 +311,7 @@ void smp_send_stop(void) | |||
| 311 | 311 | ||
| 312 | struct thread_info *current_set[NR_CPUS]; | 312 | struct thread_info *current_set[NR_CPUS]; |
| 313 | 313 | ||
| 314 | static void __devinit smp_store_cpu_info(int id) | 314 | static void smp_store_cpu_info(int id) |
| 315 | { | 315 | { |
| 316 | per_cpu(cpu_pvr, id) = mfspr(SPRN_PVR); | 316 | per_cpu(cpu_pvr, id) = mfspr(SPRN_PVR); |
| 317 | #ifdef CONFIG_PPC_FSL_BOOK3E | 317 | #ifdef CONFIG_PPC_FSL_BOOK3E |
| @@ -355,7 +355,7 @@ void __init smp_prepare_cpus(unsigned int max_cpus) | |||
| 355 | max_cpus = 1; | 355 | max_cpus = 1; |
| 356 | } | 356 | } |
| 357 | 357 | ||
| 358 | void __devinit smp_prepare_boot_cpu(void) | 358 | void smp_prepare_boot_cpu(void) |
| 359 | { | 359 | { |
| 360 | BUG_ON(smp_processor_id() != boot_cpuid); | 360 | BUG_ON(smp_processor_id() != boot_cpuid); |
| 361 | #ifdef CONFIG_PPC64 | 361 | #ifdef CONFIG_PPC64 |
| @@ -610,7 +610,7 @@ static struct device_node *cpu_to_l2cache(int cpu) | |||
| 610 | } | 610 | } |
| 611 | 611 | ||
| 612 | /* Activate a secondary processor. */ | 612 | /* Activate a secondary processor. */ |
| 613 | void __devinit start_secondary(void *unused) | 613 | void start_secondary(void *unused) |
| 614 | { | 614 | { |
| 615 | unsigned int cpu = smp_processor_id(); | 615 | unsigned int cpu = smp_processor_id(); |
| 616 | struct device_node *l2_cache; | 616 | struct device_node *l2_cache; |
diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c index b3b14352b05e..127361e093f4 100644 --- a/arch/powerpc/kernel/time.c +++ b/arch/powerpc/kernel/time.c | |||
| @@ -494,10 +494,15 @@ void timer_interrupt(struct pt_regs * regs) | |||
| 494 | set_dec(DECREMENTER_MAX); | 494 | set_dec(DECREMENTER_MAX); |
| 495 | 495 | ||
| 496 | /* Some implementations of hotplug will get timer interrupts while | 496 | /* Some implementations of hotplug will get timer interrupts while |
| 497 | * offline, just ignore these | 497 | * offline, just ignore these and we also need to set |
| 498 | * decrementers_next_tb as MAX to make sure __check_irq_replay | ||
| 499 | * don't replay timer interrupt when return, otherwise we'll trap | ||
| 500 | * here infinitely :( | ||
| 498 | */ | 501 | */ |
| 499 | if (!cpu_online(smp_processor_id())) | 502 | if (!cpu_online(smp_processor_id())) { |
| 503 | *next_tb = ~(u64)0; | ||
| 500 | return; | 504 | return; |
| 505 | } | ||
| 501 | 506 | ||
| 502 | /* Conditionally hard-enable interrupts now that the DEC has been | 507 | /* Conditionally hard-enable interrupts now that the DEC has been |
| 503 | * bumped to its maximum value | 508 | * bumped to its maximum value |
| @@ -770,13 +775,8 @@ void update_vsyscall_old(struct timespec *wall_time, struct timespec *wtm, | |||
| 770 | 775 | ||
| 771 | void update_vsyscall_tz(void) | 776 | void update_vsyscall_tz(void) |
| 772 | { | 777 | { |
| 773 | /* Make userspace gettimeofday spin until we're done. */ | ||
| 774 | ++vdso_data->tb_update_count; | ||
| 775 | smp_mb(); | ||
| 776 | vdso_data->tz_minuteswest = sys_tz.tz_minuteswest; | 778 | vdso_data->tz_minuteswest = sys_tz.tz_minuteswest; |
| 777 | vdso_data->tz_dsttime = sys_tz.tz_dsttime; | 779 | vdso_data->tz_dsttime = sys_tz.tz_dsttime; |
| 778 | smp_mb(); | ||
| 779 | ++vdso_data->tb_update_count; | ||
| 780 | } | 780 | } |
| 781 | 781 | ||
| 782 | static void __init clocksource_init(void) | 782 | static void __init clocksource_init(void) |
diff --git a/arch/powerpc/kernel/vio.c b/arch/powerpc/kernel/vio.c index 201ba59738be..536016d792ba 100644 --- a/arch/powerpc/kernel/vio.c +++ b/arch/powerpc/kernel/vio.c | |||
| @@ -1289,7 +1289,7 @@ void vio_unregister_driver(struct vio_driver *viodrv) | |||
| 1289 | EXPORT_SYMBOL(vio_unregister_driver); | 1289 | EXPORT_SYMBOL(vio_unregister_driver); |
| 1290 | 1290 | ||
| 1291 | /* vio_dev refcount hit 0 */ | 1291 | /* vio_dev refcount hit 0 */ |
| 1292 | static void __devinit vio_dev_release(struct device *dev) | 1292 | static void vio_dev_release(struct device *dev) |
| 1293 | { | 1293 | { |
| 1294 | struct iommu_table *tbl = get_iommu_table_base(dev); | 1294 | struct iommu_table *tbl = get_iommu_table_base(dev); |
| 1295 | 1295 | ||
| @@ -1545,7 +1545,7 @@ static struct device_attribute vio_dev_attrs[] = { | |||
| 1545 | __ATTR_NULL | 1545 | __ATTR_NULL |
| 1546 | }; | 1546 | }; |
| 1547 | 1547 | ||
| 1548 | void __devinit vio_unregister_device(struct vio_dev *viodev) | 1548 | void vio_unregister_device(struct vio_dev *viodev) |
| 1549 | { | 1549 | { |
| 1550 | device_unregister(&viodev->dev); | 1550 | device_unregister(&viodev->dev); |
| 1551 | } | 1551 | } |
diff --git a/arch/powerpc/kvm/book3s_hv_ras.c b/arch/powerpc/kvm/book3s_hv_ras.c index 35f3cf0269b3..a353c485808c 100644 --- a/arch/powerpc/kvm/book3s_hv_ras.c +++ b/arch/powerpc/kvm/book3s_hv_ras.c | |||
| @@ -79,7 +79,9 @@ static void flush_tlb_power7(struct kvm_vcpu *vcpu) | |||
| 79 | static long kvmppc_realmode_mc_power7(struct kvm_vcpu *vcpu) | 79 | static long kvmppc_realmode_mc_power7(struct kvm_vcpu *vcpu) |
| 80 | { | 80 | { |
| 81 | unsigned long srr1 = vcpu->arch.shregs.msr; | 81 | unsigned long srr1 = vcpu->arch.shregs.msr; |
| 82 | #ifdef CONFIG_PPC_POWERNV | ||
| 82 | struct opal_machine_check_event *opal_evt; | 83 | struct opal_machine_check_event *opal_evt; |
| 84 | #endif | ||
| 83 | long handled = 1; | 85 | long handled = 1; |
| 84 | 86 | ||
| 85 | if (srr1 & SRR1_MC_LDSTERR) { | 87 | if (srr1 & SRR1_MC_LDSTERR) { |
| @@ -117,6 +119,7 @@ static long kvmppc_realmode_mc_power7(struct kvm_vcpu *vcpu) | |||
| 117 | handled = 0; | 119 | handled = 0; |
| 118 | } | 120 | } |
| 119 | 121 | ||
| 122 | #ifdef CONFIG_PPC_POWERNV | ||
| 120 | /* | 123 | /* |
| 121 | * See if OPAL has already handled the condition. | 124 | * See if OPAL has already handled the condition. |
| 122 | * We assume that if the condition is recovered then OPAL | 125 | * We assume that if the condition is recovered then OPAL |
| @@ -131,6 +134,7 @@ static long kvmppc_realmode_mc_power7(struct kvm_vcpu *vcpu) | |||
| 131 | 134 | ||
| 132 | if (handled) | 135 | if (handled) |
| 133 | opal_evt->in_use = 0; | 136 | opal_evt->in_use = 0; |
| 137 | #endif | ||
| 134 | 138 | ||
| 135 | return handled; | 139 | return handled; |
| 136 | } | 140 | } |
diff --git a/arch/powerpc/kvm/emulate.c b/arch/powerpc/kvm/emulate.c index b0855e5d8905..9d9cddc5b346 100644 --- a/arch/powerpc/kvm/emulate.c +++ b/arch/powerpc/kvm/emulate.c | |||
| @@ -39,6 +39,7 @@ | |||
| 39 | #define OP_31_XOP_TRAP 4 | 39 | #define OP_31_XOP_TRAP 4 |
| 40 | #define OP_31_XOP_LWZX 23 | 40 | #define OP_31_XOP_LWZX 23 |
| 41 | #define OP_31_XOP_TRAP_64 68 | 41 | #define OP_31_XOP_TRAP_64 68 |
| 42 | #define OP_31_XOP_DCBF 86 | ||
| 42 | #define OP_31_XOP_LBZX 87 | 43 | #define OP_31_XOP_LBZX 87 |
| 43 | #define OP_31_XOP_STWX 151 | 44 | #define OP_31_XOP_STWX 151 |
| 44 | #define OP_31_XOP_STBX 215 | 45 | #define OP_31_XOP_STBX 215 |
| @@ -374,6 +375,7 @@ int kvmppc_emulate_instruction(struct kvm_run *run, struct kvm_vcpu *vcpu) | |||
| 374 | emulated = kvmppc_emulate_mtspr(vcpu, sprn, rs); | 375 | emulated = kvmppc_emulate_mtspr(vcpu, sprn, rs); |
| 375 | break; | 376 | break; |
| 376 | 377 | ||
| 378 | case OP_31_XOP_DCBF: | ||
| 377 | case OP_31_XOP_DCBI: | 379 | case OP_31_XOP_DCBI: |
| 378 | /* Do nothing. The guest is performing dcbi because | 380 | /* Do nothing. The guest is performing dcbi because |
| 379 | * hardware DMA is not snooped by the dcache, but | 381 | * hardware DMA is not snooped by the dcache, but |
diff --git a/arch/powerpc/mm/tlb_hash64.c b/arch/powerpc/mm/tlb_hash64.c index ae758b3ff72c..0d82ef50dc3f 100644 --- a/arch/powerpc/mm/tlb_hash64.c +++ b/arch/powerpc/mm/tlb_hash64.c | |||
| @@ -186,8 +186,6 @@ void tlb_flush(struct mmu_gather *tlb) | |||
| 186 | * Because of that usage pattern, it's only available with CONFIG_HOTPLUG | 186 | * Because of that usage pattern, it's only available with CONFIG_HOTPLUG |
| 187 | * and is implemented for small size rather than speed. | 187 | * and is implemented for small size rather than speed. |
| 188 | */ | 188 | */ |
| 189 | #ifdef CONFIG_HOTPLUG | ||
| 190 | |||
| 191 | void __flush_hash_table_range(struct mm_struct *mm, unsigned long start, | 189 | void __flush_hash_table_range(struct mm_struct *mm, unsigned long start, |
| 192 | unsigned long end) | 190 | unsigned long end) |
| 193 | { | 191 | { |
| @@ -221,5 +219,3 @@ void __flush_hash_table_range(struct mm_struct *mm, unsigned long start, | |||
| 221 | arch_leave_lazy_mmu_mode(); | 219 | arch_leave_lazy_mmu_mode(); |
| 222 | local_irq_restore(flags); | 220 | local_irq_restore(flags); |
| 223 | } | 221 | } |
| 224 | |||
| 225 | #endif /* CONFIG_HOTPLUG */ | ||
diff --git a/arch/powerpc/oprofile/op_model_power4.c b/arch/powerpc/oprofile/op_model_power4.c index 315f9495e9b2..f444b94935f5 100644 --- a/arch/powerpc/oprofile/op_model_power4.c +++ b/arch/powerpc/oprofile/op_model_power4.c | |||
| @@ -52,7 +52,7 @@ static int power7_marked_instr_event(u64 mmcr1) | |||
| 52 | for (pmc = 0; pmc < 4; pmc++) { | 52 | for (pmc = 0; pmc < 4; pmc++) { |
| 53 | psel = mmcr1 & (OPROFILE_PM_PMCSEL_MSK | 53 | psel = mmcr1 & (OPROFILE_PM_PMCSEL_MSK |
| 54 | << (OPROFILE_MAX_PMC_NUM - pmc) | 54 | << (OPROFILE_MAX_PMC_NUM - pmc) |
| 55 | * OPROFILE_MAX_PMC_NUM); | 55 | * OPROFILE_PMSEL_FIELD_WIDTH); |
| 56 | psel = (psel >> ((OPROFILE_MAX_PMC_NUM - pmc) | 56 | psel = (psel >> ((OPROFILE_MAX_PMC_NUM - pmc) |
| 57 | * OPROFILE_PMSEL_FIELD_WIDTH)) & ~1ULL; | 57 | * OPROFILE_PMSEL_FIELD_WIDTH)) & ~1ULL; |
| 58 | unit = mmcr1 & (OPROFILE_PM_UNIT_MSK | 58 | unit = mmcr1 & (OPROFILE_PM_UNIT_MSK |
diff --git a/arch/powerpc/platforms/40x/ppc40x_simple.c b/arch/powerpc/platforms/40x/ppc40x_simple.c index 969dddcf3320..8f3920e5a046 100644 --- a/arch/powerpc/platforms/40x/ppc40x_simple.c +++ b/arch/powerpc/platforms/40x/ppc40x_simple.c | |||
| @@ -57,7 +57,8 @@ static const char * const board[] __initconst = { | |||
| 57 | "amcc,makalu", | 57 | "amcc,makalu", |
| 58 | "apm,klondike", | 58 | "apm,klondike", |
| 59 | "est,hotfoot", | 59 | "est,hotfoot", |
| 60 | "plathome,obs600" | 60 | "plathome,obs600", |
| 61 | NULL | ||
| 61 | }; | 62 | }; |
| 62 | 63 | ||
| 63 | static int __init ppc40x_probe(void) | 64 | static int __init ppc40x_probe(void) |
diff --git a/arch/powerpc/platforms/44x/currituck.c b/arch/powerpc/platforms/44x/currituck.c index 6bd89a0e0dea..ecd3890c40d7 100644 --- a/arch/powerpc/platforms/44x/currituck.c +++ b/arch/powerpc/platforms/44x/currituck.c | |||
| @@ -46,7 +46,7 @@ static __initdata struct of_device_id ppc47x_of_bus[] = { | |||
| 46 | 46 | ||
| 47 | /* The EEPROM is missing and the default values are bogus. This forces USB in | 47 | /* The EEPROM is missing and the default values are bogus. This forces USB in |
| 48 | * to EHCI mode */ | 48 | * to EHCI mode */ |
| 49 | static void __devinit quirk_ppc_currituck_usb_fixup(struct pci_dev *dev) | 49 | static void quirk_ppc_currituck_usb_fixup(struct pci_dev *dev) |
| 50 | { | 50 | { |
| 51 | if (of_machine_is_compatible("ibm,currituck")) { | 51 | if (of_machine_is_compatible("ibm,currituck")) { |
| 52 | pci_write_config_dword(dev, 0xe0, 0x0114231f); | 52 | pci_write_config_dword(dev, 0xe0, 0x0114231f); |
diff --git a/arch/powerpc/platforms/44x/virtex_ml510.c b/arch/powerpc/platforms/44x/virtex_ml510.c index ba4a6e388a46..1fdb8748638d 100644 --- a/arch/powerpc/platforms/44x/virtex_ml510.c +++ b/arch/powerpc/platforms/44x/virtex_ml510.c | |||
| @@ -5,7 +5,7 @@ | |||
| 5 | /** | 5 | /** |
| 6 | * ml510_ail_quirk | 6 | * ml510_ail_quirk |
| 7 | */ | 7 | */ |
| 8 | static void __devinit ml510_ali_quirk(struct pci_dev *dev) | 8 | static void ml510_ali_quirk(struct pci_dev *dev) |
| 9 | { | 9 | { |
| 10 | /* Enable the IDE controller */ | 10 | /* Enable the IDE controller */ |
| 11 | pci_write_config_byte(dev, 0x58, 0x4c); | 11 | pci_write_config_byte(dev, 0x58, 0x4c); |
diff --git a/arch/powerpc/platforms/52xx/mpc52xx_gpt.c b/arch/powerpc/platforms/52xx/mpc52xx_gpt.c index a51cb07bd663..692998244d2c 100644 --- a/arch/powerpc/platforms/52xx/mpc52xx_gpt.c +++ b/arch/powerpc/platforms/52xx/mpc52xx_gpt.c | |||
| @@ -669,7 +669,7 @@ static struct miscdevice mpc52xx_wdt_miscdev = { | |||
| 669 | .fops = &mpc52xx_wdt_fops, | 669 | .fops = &mpc52xx_wdt_fops, |
| 670 | }; | 670 | }; |
| 671 | 671 | ||
| 672 | static int __devinit mpc52xx_gpt_wdt_init(void) | 672 | static int mpc52xx_gpt_wdt_init(void) |
| 673 | { | 673 | { |
| 674 | int err; | 674 | int err; |
| 675 | 675 | ||
| @@ -704,7 +704,7 @@ static int mpc52xx_gpt_wdt_setup(struct mpc52xx_gpt_priv *gpt, | |||
| 704 | 704 | ||
| 705 | #else | 705 | #else |
| 706 | 706 | ||
| 707 | static int __devinit mpc52xx_gpt_wdt_init(void) | 707 | static int mpc52xx_gpt_wdt_init(void) |
| 708 | { | 708 | { |
| 709 | return 0; | 709 | return 0; |
| 710 | } | 710 | } |
| @@ -720,7 +720,7 @@ static inline int mpc52xx_gpt_wdt_setup(struct mpc52xx_gpt_priv *gpt, | |||
| 720 | /* --------------------------------------------------------------------- | 720 | /* --------------------------------------------------------------------- |
| 721 | * of_platform bus binding code | 721 | * of_platform bus binding code |
| 722 | */ | 722 | */ |
| 723 | static int __devinit mpc52xx_gpt_probe(struct platform_device *ofdev) | 723 | static int mpc52xx_gpt_probe(struct platform_device *ofdev) |
| 724 | { | 724 | { |
| 725 | struct mpc52xx_gpt_priv *gpt; | 725 | struct mpc52xx_gpt_priv *gpt; |
| 726 | 726 | ||
diff --git a/arch/powerpc/platforms/52xx/mpc52xx_lpbfifo.c b/arch/powerpc/platforms/52xx/mpc52xx_lpbfifo.c index 16150fa430f9..f9f4537f546d 100644 --- a/arch/powerpc/platforms/52xx/mpc52xx_lpbfifo.c +++ b/arch/powerpc/platforms/52xx/mpc52xx_lpbfifo.c | |||
| @@ -470,7 +470,7 @@ void mpc52xx_lpbfifo_abort(struct mpc52xx_lpbfifo_request *req) | |||
| 470 | } | 470 | } |
| 471 | EXPORT_SYMBOL(mpc52xx_lpbfifo_abort); | 471 | EXPORT_SYMBOL(mpc52xx_lpbfifo_abort); |
| 472 | 472 | ||
| 473 | static int __devinit mpc52xx_lpbfifo_probe(struct platform_device *op) | 473 | static int mpc52xx_lpbfifo_probe(struct platform_device *op) |
| 474 | { | 474 | { |
| 475 | struct resource res; | 475 | struct resource res; |
| 476 | int rc = -ENOMEM; | 476 | int rc = -ENOMEM; |
| @@ -540,7 +540,7 @@ static int __devinit mpc52xx_lpbfifo_probe(struct platform_device *op) | |||
| 540 | } | 540 | } |
| 541 | 541 | ||
| 542 | 542 | ||
| 543 | static int __devexit mpc52xx_lpbfifo_remove(struct platform_device *op) | 543 | static int mpc52xx_lpbfifo_remove(struct platform_device *op) |
| 544 | { | 544 | { |
| 545 | if (lpbfifo.dev != &op->dev) | 545 | if (lpbfifo.dev != &op->dev) |
| 546 | return 0; | 546 | return 0; |
| @@ -564,7 +564,7 @@ static int __devexit mpc52xx_lpbfifo_remove(struct platform_device *op) | |||
| 564 | return 0; | 564 | return 0; |
| 565 | } | 565 | } |
| 566 | 566 | ||
| 567 | static struct of_device_id mpc52xx_lpbfifo_match[] __devinitconst = { | 567 | static struct of_device_id mpc52xx_lpbfifo_match[] = { |
| 568 | { .compatible = "fsl,mpc5200-lpbfifo", }, | 568 | { .compatible = "fsl,mpc5200-lpbfifo", }, |
| 569 | {}, | 569 | {}, |
| 570 | }; | 570 | }; |
| @@ -576,6 +576,6 @@ static struct platform_driver mpc52xx_lpbfifo_driver = { | |||
| 576 | .of_match_table = mpc52xx_lpbfifo_match, | 576 | .of_match_table = mpc52xx_lpbfifo_match, |
| 577 | }, | 577 | }, |
| 578 | .probe = mpc52xx_lpbfifo_probe, | 578 | .probe = mpc52xx_lpbfifo_probe, |
| 579 | .remove = __devexit_p(mpc52xx_lpbfifo_remove), | 579 | .remove = mpc52xx_lpbfifo_remove, |
| 580 | }; | 580 | }; |
| 581 | module_platform_driver(mpc52xx_lpbfifo_driver); | 581 | module_platform_driver(mpc52xx_lpbfifo_driver); |
diff --git a/arch/powerpc/platforms/82xx/ep8248e.c b/arch/powerpc/platforms/82xx/ep8248e.c index 10ff526cd046..79799b29ffe2 100644 --- a/arch/powerpc/platforms/82xx/ep8248e.c +++ b/arch/powerpc/platforms/82xx/ep8248e.c | |||
| @@ -111,7 +111,7 @@ static struct mdiobb_ctrl ep8248e_mdio_ctrl = { | |||
| 111 | .ops = &ep8248e_mdio_ops, | 111 | .ops = &ep8248e_mdio_ops, |
| 112 | }; | 112 | }; |
| 113 | 113 | ||
| 114 | static int __devinit ep8248e_mdio_probe(struct platform_device *ofdev) | 114 | static int ep8248e_mdio_probe(struct platform_device *ofdev) |
| 115 | { | 115 | { |
| 116 | struct mii_bus *bus; | 116 | struct mii_bus *bus; |
| 117 | struct resource res; | 117 | struct resource res; |
diff --git a/arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c b/arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c index ef6537b8ed33..624cb51d19c9 100644 --- a/arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c +++ b/arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c | |||
| @@ -145,8 +145,7 @@ static int mcu_gpiochip_remove(struct mcu *mcu) | |||
| 145 | return gpiochip_remove(&mcu->gc); | 145 | return gpiochip_remove(&mcu->gc); |
| 146 | } | 146 | } |
| 147 | 147 | ||
| 148 | static int __devinit mcu_probe(struct i2c_client *client, | 148 | static int mcu_probe(struct i2c_client *client, const struct i2c_device_id *id) |
| 149 | const struct i2c_device_id *id) | ||
| 150 | { | 149 | { |
| 151 | struct mcu *mcu; | 150 | struct mcu *mcu; |
| 152 | int ret; | 151 | int ret; |
| @@ -188,7 +187,7 @@ err: | |||
| 188 | return ret; | 187 | return ret; |
| 189 | } | 188 | } |
| 190 | 189 | ||
| 191 | static int __devexit mcu_remove(struct i2c_client *client) | 190 | static int mcu_remove(struct i2c_client *client) |
| 192 | { | 191 | { |
| 193 | struct mcu *mcu = i2c_get_clientdata(client); | 192 | struct mcu *mcu = i2c_get_clientdata(client); |
| 194 | int ret; | 193 | int ret; |
| @@ -216,7 +215,7 @@ static const struct i2c_device_id mcu_ids[] = { | |||
| 216 | }; | 215 | }; |
| 217 | MODULE_DEVICE_TABLE(i2c, mcu_ids); | 216 | MODULE_DEVICE_TABLE(i2c, mcu_ids); |
| 218 | 217 | ||
| 219 | static struct of_device_id mcu_of_match_table[] __devinitdata = { | 218 | static struct of_device_id mcu_of_match_table[] = { |
| 220 | { .compatible = "fsl,mcu-mpc8349emitx", }, | 219 | { .compatible = "fsl,mcu-mpc8349emitx", }, |
| 221 | { }, | 220 | { }, |
| 222 | }; | 221 | }; |
| @@ -228,7 +227,7 @@ static struct i2c_driver mcu_driver = { | |||
| 228 | .of_match_table = mcu_of_match_table, | 227 | .of_match_table = mcu_of_match_table, |
| 229 | }, | 228 | }, |
| 230 | .probe = mcu_probe, | 229 | .probe = mcu_probe, |
| 231 | .remove = __devexit_p(mcu_remove), | 230 | .remove = mcu_remove, |
| 232 | .id_table = mcu_ids, | 231 | .id_table = mcu_ids, |
| 233 | }; | 232 | }; |
| 234 | 233 | ||
diff --git a/arch/powerpc/platforms/85xx/corenet_ds.c b/arch/powerpc/platforms/85xx/corenet_ds.c index ed69c9250717..6f355d8c92f6 100644 --- a/arch/powerpc/platforms/85xx/corenet_ds.c +++ b/arch/powerpc/platforms/85xx/corenet_ds.c | |||
| @@ -64,7 +64,7 @@ void __init corenet_ds_setup_arch(void) | |||
| 64 | pr_info("%s board from Freescale Semiconductor\n", ppc_md.name); | 64 | pr_info("%s board from Freescale Semiconductor\n", ppc_md.name); |
| 65 | } | 65 | } |
| 66 | 66 | ||
| 67 | static const struct of_device_id of_device_ids[] __devinitconst = { | 67 | static const struct of_device_id of_device_ids[] = { |
| 68 | { | 68 | { |
| 69 | .compatible = "simple-bus" | 69 | .compatible = "simple-bus" |
| 70 | }, | 70 | }, |
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_cds.c b/arch/powerpc/platforms/85xx/mpc85xx_cds.c index c474505ad0d0..7a31a0e1df29 100644 --- a/arch/powerpc/platforms/85xx/mpc85xx_cds.c +++ b/arch/powerpc/platforms/85xx/mpc85xx_cds.c | |||
| @@ -154,7 +154,7 @@ static void __init mpc85xx_cds_pci_irq_fixup(struct pci_dev *dev) | |||
| 154 | } | 154 | } |
| 155 | } | 155 | } |
| 156 | 156 | ||
| 157 | static void __devinit skip_fake_bridge(struct pci_dev *dev) | 157 | static void skip_fake_bridge(struct pci_dev *dev) |
| 158 | { | 158 | { |
| 159 | /* Make it an error to skip the fake bridge | 159 | /* Make it an error to skip the fake bridge |
| 160 | * in pci_setup_device() in probe.c */ | 160 | * in pci_setup_device() in probe.c */ |
diff --git a/arch/powerpc/platforms/85xx/tqm85xx.c b/arch/powerpc/platforms/85xx/tqm85xx.c index b4e58cdc09a5..ec0b7272fae2 100644 --- a/arch/powerpc/platforms/85xx/tqm85xx.c +++ b/arch/powerpc/platforms/85xx/tqm85xx.c | |||
| @@ -85,7 +85,7 @@ static void tqm85xx_show_cpuinfo(struct seq_file *m) | |||
| 85 | seq_printf(m, "PLL setting\t: 0x%x\n", ((phid1 >> 24) & 0x3f)); | 85 | seq_printf(m, "PLL setting\t: 0x%x\n", ((phid1 >> 24) & 0x3f)); |
| 86 | } | 86 | } |
| 87 | 87 | ||
| 88 | static void __devinit tqm85xx_ti1520_fixup(struct pci_dev *pdev) | 88 | static void tqm85xx_ti1520_fixup(struct pci_dev *pdev) |
| 89 | { | 89 | { |
| 90 | unsigned int val; | 90 | unsigned int val; |
| 91 | 91 | ||
diff --git a/arch/powerpc/platforms/86xx/gef_ppc9a.c b/arch/powerpc/platforms/86xx/gef_ppc9a.c index bf5338754c5a..c23f3443880a 100644 --- a/arch/powerpc/platforms/86xx/gef_ppc9a.c +++ b/arch/powerpc/platforms/86xx/gef_ppc9a.c | |||
| @@ -159,7 +159,7 @@ static void gef_ppc9a_show_cpuinfo(struct seq_file *m) | |||
| 159 | gef_ppc9a_get_vme_is_syscon() ? "yes" : "no"); | 159 | gef_ppc9a_get_vme_is_syscon() ? "yes" : "no"); |
| 160 | } | 160 | } |
| 161 | 161 | ||
| 162 | static void __devinit gef_ppc9a_nec_fixup(struct pci_dev *pdev) | 162 | static void gef_ppc9a_nec_fixup(struct pci_dev *pdev) |
| 163 | { | 163 | { |
| 164 | unsigned int val; | 164 | unsigned int val; |
| 165 | 165 | ||
diff --git a/arch/powerpc/platforms/86xx/gef_sbc310.c b/arch/powerpc/platforms/86xx/gef_sbc310.c index 0b7851330a07..8a6ac20686ea 100644 --- a/arch/powerpc/platforms/86xx/gef_sbc310.c +++ b/arch/powerpc/platforms/86xx/gef_sbc310.c | |||
| @@ -146,7 +146,7 @@ static void gef_sbc310_show_cpuinfo(struct seq_file *m) | |||
| 146 | 146 | ||
| 147 | } | 147 | } |
| 148 | 148 | ||
| 149 | static void __devinit gef_sbc310_nec_fixup(struct pci_dev *pdev) | 149 | static void gef_sbc310_nec_fixup(struct pci_dev *pdev) |
| 150 | { | 150 | { |
| 151 | unsigned int val; | 151 | unsigned int val; |
| 152 | 152 | ||
diff --git a/arch/powerpc/platforms/86xx/gef_sbc610.c b/arch/powerpc/platforms/86xx/gef_sbc610.c index b9eb174897b1..06c72636f299 100644 --- a/arch/powerpc/platforms/86xx/gef_sbc610.c +++ b/arch/powerpc/platforms/86xx/gef_sbc610.c | |||
| @@ -136,7 +136,7 @@ static void gef_sbc610_show_cpuinfo(struct seq_file *m) | |||
| 136 | seq_printf(m, "SVR\t\t: 0x%x\n", svid); | 136 | seq_printf(m, "SVR\t\t: 0x%x\n", svid); |
| 137 | } | 137 | } |
| 138 | 138 | ||
| 139 | static void __devinit gef_sbc610_nec_fixup(struct pci_dev *pdev) | 139 | static void gef_sbc610_nec_fixup(struct pci_dev *pdev) |
| 140 | { | 140 | { |
| 141 | unsigned int val; | 141 | unsigned int val; |
| 142 | 142 | ||
diff --git a/arch/powerpc/platforms/cell/setup.c b/arch/powerpc/platforms/cell/setup.c index 4ab087671185..6ae25fb62015 100644 --- a/arch/powerpc/platforms/cell/setup.c +++ b/arch/powerpc/platforms/cell/setup.c | |||
| @@ -117,7 +117,7 @@ static void cell_fixup_pcie_rootcomplex(struct pci_dev *dev) | |||
| 117 | } | 117 | } |
| 118 | DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, cell_fixup_pcie_rootcomplex); | 118 | DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, cell_fixup_pcie_rootcomplex); |
| 119 | 119 | ||
| 120 | static int __devinit cell_setup_phb(struct pci_controller *phb) | 120 | static int cell_setup_phb(struct pci_controller *phb) |
| 121 | { | 121 | { |
| 122 | const char *model; | 122 | const char *model; |
| 123 | struct device_node *np; | 123 | struct device_node *np; |
diff --git a/arch/powerpc/platforms/cell/smp.c b/arch/powerpc/platforms/cell/smp.c index 49a65e2dfc71..d35dbbc8ec79 100644 --- a/arch/powerpc/platforms/cell/smp.c +++ b/arch/powerpc/platforms/cell/smp.c | |||
| @@ -67,7 +67,7 @@ static cpumask_t of_spin_map; | |||
| 67 | * 0 - failure | 67 | * 0 - failure |
| 68 | * 1 - success | 68 | * 1 - success |
| 69 | */ | 69 | */ |
| 70 | static inline int __devinit smp_startup_cpu(unsigned int lcpu) | 70 | static inline int smp_startup_cpu(unsigned int lcpu) |
| 71 | { | 71 | { |
| 72 | int status; | 72 | int status; |
| 73 | unsigned long start_here = __pa((u32)*((unsigned long *) | 73 | unsigned long start_here = __pa((u32)*((unsigned long *) |
| @@ -108,7 +108,7 @@ static int __init smp_iic_probe(void) | |||
| 108 | return cpumask_weight(cpu_possible_mask); | 108 | return cpumask_weight(cpu_possible_mask); |
| 109 | } | 109 | } |
| 110 | 110 | ||
| 111 | static void __devinit smp_cell_setup_cpu(int cpu) | 111 | static void smp_cell_setup_cpu(int cpu) |
| 112 | { | 112 | { |
| 113 | if (cpu != boot_cpuid) | 113 | if (cpu != boot_cpuid) |
| 114 | iic_setup_cpu(); | 114 | iic_setup_cpu(); |
| @@ -119,7 +119,7 @@ static void __devinit smp_cell_setup_cpu(int cpu) | |||
| 119 | mtspr(SPRN_DABRX, DABRX_KERNEL | DABRX_USER); | 119 | mtspr(SPRN_DABRX, DABRX_KERNEL | DABRX_USER); |
| 120 | } | 120 | } |
| 121 | 121 | ||
| 122 | static int __devinit smp_cell_kick_cpu(int nr) | 122 | static int smp_cell_kick_cpu(int nr) |
| 123 | { | 123 | { |
| 124 | BUG_ON(nr < 0 || nr >= NR_CPUS); | 124 | BUG_ON(nr < 0 || nr >= NR_CPUS); |
| 125 | 125 | ||
diff --git a/arch/powerpc/platforms/chrp/pci.c b/arch/powerpc/platforms/chrp/pci.c index 83285c5a2049..1b87e198faa7 100644 --- a/arch/powerpc/platforms/chrp/pci.c +++ b/arch/powerpc/platforms/chrp/pci.c | |||
| @@ -323,7 +323,7 @@ chrp_find_bridges(void) | |||
| 323 | * ATA controller to be set to fully native mode or bad things | 323 | * ATA controller to be set to fully native mode or bad things |
| 324 | * will happen. | 324 | * will happen. |
| 325 | */ | 325 | */ |
| 326 | static void __devinit chrp_pci_fixup_winbond_ata(struct pci_dev *sl82c105) | 326 | static void chrp_pci_fixup_winbond_ata(struct pci_dev *sl82c105) |
| 327 | { | 327 | { |
| 328 | u8 progif; | 328 | u8 progif; |
| 329 | 329 | ||
diff --git a/arch/powerpc/platforms/chrp/smp.c b/arch/powerpc/platforms/chrp/smp.c index feab30bbae23..dead91b177b9 100644 --- a/arch/powerpc/platforms/chrp/smp.c +++ b/arch/powerpc/platforms/chrp/smp.c | |||
| @@ -30,7 +30,7 @@ | |||
| 30 | #include <asm/mpic.h> | 30 | #include <asm/mpic.h> |
| 31 | #include <asm/rtas.h> | 31 | #include <asm/rtas.h> |
| 32 | 32 | ||
| 33 | static int __devinit smp_chrp_kick_cpu(int nr) | 33 | static int smp_chrp_kick_cpu(int nr) |
| 34 | { | 34 | { |
| 35 | *(unsigned long *)KERNELBASE = nr; | 35 | *(unsigned long *)KERNELBASE = nr; |
| 36 | asm volatile("dcbf 0,%0"::"r"(KERNELBASE):"memory"); | 36 | asm volatile("dcbf 0,%0"::"r"(KERNELBASE):"memory"); |
| @@ -38,7 +38,7 @@ static int __devinit smp_chrp_kick_cpu(int nr) | |||
| 38 | return 0; | 38 | return 0; |
| 39 | } | 39 | } |
| 40 | 40 | ||
| 41 | static void __devinit smp_chrp_setup_cpu(int cpu_nr) | 41 | static void smp_chrp_setup_cpu(int cpu_nr) |
| 42 | { | 42 | { |
| 43 | mpic_setup_this_cpu(); | 43 | mpic_setup_this_cpu(); |
| 44 | } | 44 | } |
diff --git a/arch/powerpc/platforms/fsl_uli1575.c b/arch/powerpc/platforms/fsl_uli1575.c index 64fde058e545..92ac9b52b32d 100644 --- a/arch/powerpc/platforms/fsl_uli1575.c +++ b/arch/powerpc/platforms/fsl_uli1575.c | |||
| @@ -59,7 +59,7 @@ static inline bool is_quirk_valid(void) | |||
| 59 | } | 59 | } |
| 60 | 60 | ||
| 61 | /* Bridge */ | 61 | /* Bridge */ |
| 62 | static void __devinit early_uli5249(struct pci_dev *dev) | 62 | static void early_uli5249(struct pci_dev *dev) |
| 63 | { | 63 | { |
| 64 | unsigned char temp; | 64 | unsigned char temp; |
| 65 | 65 | ||
| @@ -82,7 +82,7 @@ static void __devinit early_uli5249(struct pci_dev *dev) | |||
| 82 | } | 82 | } |
| 83 | 83 | ||
| 84 | 84 | ||
| 85 | static void __devinit quirk_uli1575(struct pci_dev *dev) | 85 | static void quirk_uli1575(struct pci_dev *dev) |
| 86 | { | 86 | { |
| 87 | int i; | 87 | int i; |
| 88 | 88 | ||
| @@ -139,7 +139,7 @@ static void __devinit quirk_uli1575(struct pci_dev *dev) | |||
| 139 | pci_write_config_byte(dev, 0x75, ULI_8259_IRQ15); | 139 | pci_write_config_byte(dev, 0x75, ULI_8259_IRQ15); |
| 140 | } | 140 | } |
| 141 | 141 | ||
| 142 | static void __devinit quirk_final_uli1575(struct pci_dev *dev) | 142 | static void quirk_final_uli1575(struct pci_dev *dev) |
| 143 | { | 143 | { |
| 144 | /* Set i8259 interrupt trigger | 144 | /* Set i8259 interrupt trigger |
| 145 | * IRQ 3: Level | 145 | * IRQ 3: Level |
| @@ -175,7 +175,7 @@ static void __devinit quirk_final_uli1575(struct pci_dev *dev) | |||
| 175 | } | 175 | } |
| 176 | 176 | ||
| 177 | /* SATA */ | 177 | /* SATA */ |
| 178 | static void __devinit quirk_uli5288(struct pci_dev *dev) | 178 | static void quirk_uli5288(struct pci_dev *dev) |
| 179 | { | 179 | { |
| 180 | unsigned char c; | 180 | unsigned char c; |
| 181 | unsigned int d; | 181 | unsigned int d; |
| @@ -200,7 +200,7 @@ static void __devinit quirk_uli5288(struct pci_dev *dev) | |||
| 200 | } | 200 | } |
| 201 | 201 | ||
| 202 | /* PATA */ | 202 | /* PATA */ |
| 203 | static void __devinit quirk_uli5229(struct pci_dev *dev) | 203 | static void quirk_uli5229(struct pci_dev *dev) |
| 204 | { | 204 | { |
| 205 | unsigned short temp; | 205 | unsigned short temp; |
| 206 | 206 | ||
| @@ -216,7 +216,7 @@ static void __devinit quirk_uli5229(struct pci_dev *dev) | |||
| 216 | } | 216 | } |
| 217 | 217 | ||
| 218 | /* We have to do a dummy read on the P2P for the RTC to work, WTF */ | 218 | /* We have to do a dummy read on the P2P for the RTC to work, WTF */ |
| 219 | static void __devinit quirk_final_uli5249(struct pci_dev *dev) | 219 | static void quirk_final_uli5249(struct pci_dev *dev) |
| 220 | { | 220 | { |
| 221 | int i; | 221 | int i; |
| 222 | u8 *dummy; | 222 | u8 *dummy; |
| @@ -253,7 +253,7 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AL, 0x5249, quirk_final_uli5249); | |||
| 253 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AL, 0x1575, quirk_final_uli1575); | 253 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AL, 0x1575, quirk_final_uli1575); |
| 254 | DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_AL, 0x5229, quirk_uli5229); | 254 | DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_AL, 0x5229, quirk_uli5229); |
| 255 | 255 | ||
| 256 | static void __devinit hpcd_quirk_uli1575(struct pci_dev *dev) | 256 | static void hpcd_quirk_uli1575(struct pci_dev *dev) |
| 257 | { | 257 | { |
| 258 | u32 temp32; | 258 | u32 temp32; |
| 259 | 259 | ||
| @@ -269,7 +269,7 @@ static void __devinit hpcd_quirk_uli1575(struct pci_dev *dev) | |||
| 269 | pci_write_config_dword(dev, 0x90, (temp32 | 1<<22)); | 269 | pci_write_config_dword(dev, 0x90, (temp32 | 1<<22)); |
| 270 | } | 270 | } |
| 271 | 271 | ||
| 272 | static void __devinit hpcd_quirk_uli5288(struct pci_dev *dev) | 272 | static void hpcd_quirk_uli5288(struct pci_dev *dev) |
| 273 | { | 273 | { |
| 274 | unsigned char c; | 274 | unsigned char c; |
| 275 | 275 | ||
| @@ -295,7 +295,7 @@ static void __devinit hpcd_quirk_uli5288(struct pci_dev *dev) | |||
| 295 | * IRQ14 is a sideband interrupt from IDE device to CPU and we use this | 295 | * IRQ14 is a sideband interrupt from IDE device to CPU and we use this |
| 296 | * as the interrupt for IDE device. | 296 | * as the interrupt for IDE device. |
| 297 | */ | 297 | */ |
| 298 | static void __devinit hpcd_quirk_uli5229(struct pci_dev *dev) | 298 | static void hpcd_quirk_uli5229(struct pci_dev *dev) |
| 299 | { | 299 | { |
| 300 | unsigned char c; | 300 | unsigned char c; |
| 301 | 301 | ||
| @@ -317,7 +317,7 @@ static void __devinit hpcd_quirk_uli5229(struct pci_dev *dev) | |||
| 317 | * bug by re-assigning a correct irq to 5288. | 317 | * bug by re-assigning a correct irq to 5288. |
| 318 | * | 318 | * |
| 319 | */ | 319 | */ |
| 320 | static void __devinit hpcd_final_uli5288(struct pci_dev *dev) | 320 | static void hpcd_final_uli5288(struct pci_dev *dev) |
| 321 | { | 321 | { |
| 322 | struct pci_controller *hose = pci_bus_to_host(dev->bus); | 322 | struct pci_controller *hose = pci_bus_to_host(dev->bus); |
| 323 | struct device_node *hosenode = hose ? hose->dn : NULL; | 323 | struct device_node *hosenode = hose ? hose->dn : NULL; |
diff --git a/arch/powerpc/platforms/maple/pci.c b/arch/powerpc/platforms/maple/pci.c index 465ee8f5c086..f7136aae8bbf 100644 --- a/arch/powerpc/platforms/maple/pci.c +++ b/arch/powerpc/platforms/maple/pci.c | |||
| @@ -543,7 +543,7 @@ static int __init maple_add_bridge(struct device_node *dev) | |||
| 543 | } | 543 | } |
| 544 | 544 | ||
| 545 | 545 | ||
| 546 | void __devinit maple_pci_irq_fixup(struct pci_dev *dev) | 546 | void maple_pci_irq_fixup(struct pci_dev *dev) |
| 547 | { | 547 | { |
| 548 | DBG(" -> maple_pci_irq_fixup\n"); | 548 | DBG(" -> maple_pci_irq_fixup\n"); |
| 549 | 549 | ||
| @@ -648,7 +648,7 @@ int maple_pci_get_legacy_ide_irq(struct pci_dev *pdev, int channel) | |||
| 648 | return irq; | 648 | return irq; |
| 649 | } | 649 | } |
| 650 | 650 | ||
| 651 | static void __devinit quirk_ipr_msi(struct pci_dev *dev) | 651 | static void quirk_ipr_msi(struct pci_dev *dev) |
| 652 | { | 652 | { |
| 653 | /* Something prevents MSIs from the IPR from working on Bimini, | 653 | /* Something prevents MSIs from the IPR from working on Bimini, |
| 654 | * and the driver has no smarts to recover. So disable MSI | 654 | * and the driver has no smarts to recover. So disable MSI |
diff --git a/arch/powerpc/platforms/pasemi/cpufreq.c b/arch/powerpc/platforms/pasemi/cpufreq.c index 95d00173029f..890f30e70f98 100644 --- a/arch/powerpc/platforms/pasemi/cpufreq.c +++ b/arch/powerpc/platforms/pasemi/cpufreq.c | |||
| @@ -236,6 +236,13 @@ out: | |||
| 236 | 236 | ||
| 237 | static int pas_cpufreq_cpu_exit(struct cpufreq_policy *policy) | 237 | static int pas_cpufreq_cpu_exit(struct cpufreq_policy *policy) |
| 238 | { | 238 | { |
| 239 | /* | ||
| 240 | * We don't support CPU hotplug. Don't unmap after the system | ||
| 241 | * has already made it to a running state. | ||
| 242 | */ | ||
| 243 | if (system_state != SYSTEM_BOOTING) | ||
| 244 | return 0; | ||
| 245 | |||
| 239 | if (sdcasr_mapbase) | 246 | if (sdcasr_mapbase) |
| 240 | iounmap(sdcasr_mapbase); | 247 | iounmap(sdcasr_mapbase); |
| 241 | if (sdcpwr_mapbase) | 248 | if (sdcpwr_mapbase) |
diff --git a/arch/powerpc/platforms/pasemi/gpio_mdio.c b/arch/powerpc/platforms/pasemi/gpio_mdio.c index 9886296e08da..0237ab782fb8 100644 --- a/arch/powerpc/platforms/pasemi/gpio_mdio.c +++ b/arch/powerpc/platforms/pasemi/gpio_mdio.c | |||
| @@ -216,7 +216,7 @@ static int gpio_mdio_reset(struct mii_bus *bus) | |||
| 216 | } | 216 | } |
| 217 | 217 | ||
| 218 | 218 | ||
| 219 | static int __devinit gpio_mdio_probe(struct platform_device *ofdev) | 219 | static int gpio_mdio_probe(struct platform_device *ofdev) |
| 220 | { | 220 | { |
| 221 | struct device *dev = &ofdev->dev; | 221 | struct device *dev = &ofdev->dev; |
| 222 | struct device_node *np = ofdev->dev.of_node; | 222 | struct device_node *np = ofdev->dev.of_node; |
diff --git a/arch/powerpc/platforms/pasemi/pasemi.h b/arch/powerpc/platforms/pasemi/pasemi.h index b1e524f7489d..ea65bf0eb897 100644 --- a/arch/powerpc/platforms/pasemi/pasemi.h +++ b/arch/powerpc/platforms/pasemi/pasemi.h | |||
| @@ -3,8 +3,8 @@ | |||
| 3 | 3 | ||
| 4 | extern unsigned long pas_get_boot_time(void); | 4 | extern unsigned long pas_get_boot_time(void); |
| 5 | extern void pas_pci_init(void); | 5 | extern void pas_pci_init(void); |
| 6 | extern void __devinit pas_pci_irq_fixup(struct pci_dev *dev); | 6 | extern void pas_pci_irq_fixup(struct pci_dev *dev); |
| 7 | extern void __devinit pas_pci_dma_dev_setup(struct pci_dev *dev); | 7 | extern void pas_pci_dma_dev_setup(struct pci_dev *dev); |
| 8 | 8 | ||
| 9 | extern void __iomem *pasemi_pci_getcfgaddr(struct pci_dev *dev, int offset); | 9 | extern void __iomem *pasemi_pci_getcfgaddr(struct pci_dev *dev, int offset); |
| 10 | 10 | ||
diff --git a/arch/powerpc/platforms/pasemi/setup.c b/arch/powerpc/platforms/pasemi/setup.c index 2ed9212d7d59..8c54de6d8ec4 100644 --- a/arch/powerpc/platforms/pasemi/setup.c +++ b/arch/powerpc/platforms/pasemi/setup.c | |||
| @@ -76,7 +76,7 @@ static void pas_restart(char *cmd) | |||
| 76 | static arch_spinlock_t timebase_lock; | 76 | static arch_spinlock_t timebase_lock; |
| 77 | static unsigned long timebase; | 77 | static unsigned long timebase; |
| 78 | 78 | ||
| 79 | static void __devinit pas_give_timebase(void) | 79 | static void pas_give_timebase(void) |
| 80 | { | 80 | { |
| 81 | unsigned long flags; | 81 | unsigned long flags; |
| 82 | 82 | ||
| @@ -94,7 +94,7 @@ static void __devinit pas_give_timebase(void) | |||
| 94 | local_irq_restore(flags); | 94 | local_irq_restore(flags); |
| 95 | } | 95 | } |
| 96 | 96 | ||
| 97 | static void __devinit pas_take_timebase(void) | 97 | static void pas_take_timebase(void) |
| 98 | { | 98 | { |
| 99 | while (!timebase) | 99 | while (!timebase) |
| 100 | smp_rmb(); | 100 | smp_rmb(); |
diff --git a/arch/powerpc/platforms/powermac/pci.c b/arch/powerpc/platforms/powermac/pci.c index 43bbe1bda939..2b8af75abc23 100644 --- a/arch/powerpc/platforms/powermac/pci.c +++ b/arch/powerpc/platforms/powermac/pci.c | |||
| @@ -561,7 +561,7 @@ static struct pci_ops u4_pcie_pci_ops = | |||
| 561 | .write = u4_pcie_write_config, | 561 | .write = u4_pcie_write_config, |
| 562 | }; | 562 | }; |
| 563 | 563 | ||
| 564 | static void __devinit pmac_pci_fixup_u4_of_node(struct pci_dev *dev) | 564 | static void pmac_pci_fixup_u4_of_node(struct pci_dev *dev) |
| 565 | { | 565 | { |
| 566 | /* Apple's device-tree "hides" the root complex virtual P2P bridge | 566 | /* Apple's device-tree "hides" the root complex virtual P2P bridge |
| 567 | * on U4. However, Linux sees it, causing the PCI <-> OF matching | 567 | * on U4. However, Linux sees it, causing the PCI <-> OF matching |
| @@ -988,7 +988,7 @@ static int __init pmac_add_bridge(struct device_node *dev) | |||
| 988 | return 0; | 988 | return 0; |
| 989 | } | 989 | } |
| 990 | 990 | ||
| 991 | void __devinit pmac_pci_irq_fixup(struct pci_dev *dev) | 991 | void pmac_pci_irq_fixup(struct pci_dev *dev) |
| 992 | { | 992 | { |
| 993 | #ifdef CONFIG_PPC32 | 993 | #ifdef CONFIG_PPC32 |
| 994 | /* Fixup interrupt for the modem/ethernet combo controller. | 994 | /* Fixup interrupt for the modem/ethernet combo controller. |
| @@ -1138,7 +1138,7 @@ int pmac_pci_enable_device_hook(struct pci_dev *dev) | |||
| 1138 | return 0; | 1138 | return 0; |
| 1139 | } | 1139 | } |
| 1140 | 1140 | ||
| 1141 | void __devinit pmac_pci_fixup_ohci(struct pci_dev *dev) | 1141 | void pmac_pci_fixup_ohci(struct pci_dev *dev) |
| 1142 | { | 1142 | { |
| 1143 | struct device_node *node = pci_device_to_OF_node(dev); | 1143 | struct device_node *node = pci_device_to_OF_node(dev); |
| 1144 | 1144 | ||
diff --git a/arch/powerpc/platforms/powermac/smp.c b/arch/powerpc/platforms/powermac/smp.c index b4ddaa3fbb29..bdb738a69e41 100644 --- a/arch/powerpc/platforms/powermac/smp.c +++ b/arch/powerpc/platforms/powermac/smp.c | |||
| @@ -484,7 +484,7 @@ static void smp_core99_give_timebase(void) | |||
| 484 | } | 484 | } |
| 485 | 485 | ||
| 486 | 486 | ||
| 487 | static void __devinit smp_core99_take_timebase(void) | 487 | static void smp_core99_take_timebase(void) |
| 488 | { | 488 | { |
| 489 | unsigned long flags; | 489 | unsigned long flags; |
| 490 | 490 | ||
| @@ -669,7 +669,7 @@ static void smp_core99_gpio_tb_freeze(int freeze) | |||
| 669 | volatile static long int core99_l2_cache; | 669 | volatile static long int core99_l2_cache; |
| 670 | volatile static long int core99_l3_cache; | 670 | volatile static long int core99_l3_cache; |
| 671 | 671 | ||
| 672 | static void __devinit core99_init_caches(int cpu) | 672 | static void core99_init_caches(int cpu) |
| 673 | { | 673 | { |
| 674 | #ifndef CONFIG_PPC64 | 674 | #ifndef CONFIG_PPC64 |
| 675 | if (!cpu_has_feature(CPU_FTR_L2CR)) | 675 | if (!cpu_has_feature(CPU_FTR_L2CR)) |
| @@ -801,7 +801,7 @@ static int __init smp_core99_probe(void) | |||
| 801 | return ncpus; | 801 | return ncpus; |
| 802 | } | 802 | } |
| 803 | 803 | ||
| 804 | static int __devinit smp_core99_kick_cpu(int nr) | 804 | static int smp_core99_kick_cpu(int nr) |
| 805 | { | 805 | { |
| 806 | unsigned int save_vector; | 806 | unsigned int save_vector; |
| 807 | unsigned long target, flags; | 807 | unsigned long target, flags; |
| @@ -844,7 +844,7 @@ static int __devinit smp_core99_kick_cpu(int nr) | |||
| 844 | return 0; | 844 | return 0; |
| 845 | } | 845 | } |
| 846 | 846 | ||
| 847 | static void __devinit smp_core99_setup_cpu(int cpu_nr) | 847 | static void smp_core99_setup_cpu(int cpu_nr) |
| 848 | { | 848 | { |
| 849 | /* Setup L2/L3 */ | 849 | /* Setup L2/L3 */ |
| 850 | if (cpu_nr != 0) | 850 | if (cpu_nr != 0) |
diff --git a/arch/powerpc/platforms/powernv/pci-ioda.c b/arch/powerpc/platforms/powernv/pci-ioda.c index 53d052e95cfc..8e90e8906df3 100644 --- a/arch/powerpc/platforms/powernv/pci-ioda.c +++ b/arch/powerpc/platforms/powernv/pci-ioda.c | |||
| @@ -76,7 +76,7 @@ static struct pci_dn *pnv_ioda_get_pdn(struct pci_dev *dev) | |||
| 76 | return PCI_DN(np); | 76 | return PCI_DN(np); |
| 77 | } | 77 | } |
| 78 | 78 | ||
| 79 | static int __devinit pnv_ioda_alloc_pe(struct pnv_phb *phb) | 79 | static int pnv_ioda_alloc_pe(struct pnv_phb *phb) |
| 80 | { | 80 | { |
| 81 | unsigned long pe; | 81 | unsigned long pe; |
| 82 | 82 | ||
| @@ -91,7 +91,7 @@ static int __devinit pnv_ioda_alloc_pe(struct pnv_phb *phb) | |||
| 91 | return pe; | 91 | return pe; |
| 92 | } | 92 | } |
| 93 | 93 | ||
| 94 | static void __devinit pnv_ioda_free_pe(struct pnv_phb *phb, int pe) | 94 | static void pnv_ioda_free_pe(struct pnv_phb *phb, int pe) |
| 95 | { | 95 | { |
| 96 | WARN_ON(phb->ioda.pe_array[pe].pdev); | 96 | WARN_ON(phb->ioda.pe_array[pe].pdev); |
| 97 | 97 | ||
| @@ -103,7 +103,7 @@ static void __devinit pnv_ioda_free_pe(struct pnv_phb *phb, int pe) | |||
| 103 | * but in the meantime, we need to protect them to avoid warnings | 103 | * but in the meantime, we need to protect them to avoid warnings |
| 104 | */ | 104 | */ |
| 105 | #ifdef CONFIG_PCI_MSI | 105 | #ifdef CONFIG_PCI_MSI |
| 106 | static struct pnv_ioda_pe * __devinit pnv_ioda_get_pe(struct pci_dev *dev) | 106 | static struct pnv_ioda_pe *pnv_ioda_get_pe(struct pci_dev *dev) |
| 107 | { | 107 | { |
| 108 | struct pci_controller *hose = pci_bus_to_host(dev->bus); | 108 | struct pci_controller *hose = pci_bus_to_host(dev->bus); |
| 109 | struct pnv_phb *phb = hose->private_data; | 109 | struct pnv_phb *phb = hose->private_data; |
| @@ -117,8 +117,7 @@ static struct pnv_ioda_pe * __devinit pnv_ioda_get_pe(struct pci_dev *dev) | |||
| 117 | } | 117 | } |
| 118 | #endif /* CONFIG_PCI_MSI */ | 118 | #endif /* CONFIG_PCI_MSI */ |
| 119 | 119 | ||
| 120 | static int __devinit pnv_ioda_configure_pe(struct pnv_phb *phb, | 120 | static int pnv_ioda_configure_pe(struct pnv_phb *phb, struct pnv_ioda_pe *pe) |
| 121 | struct pnv_ioda_pe *pe) | ||
| 122 | { | 121 | { |
| 123 | struct pci_dev *parent; | 122 | struct pci_dev *parent; |
| 124 | uint8_t bcomp, dcomp, fcomp; | 123 | uint8_t bcomp, dcomp, fcomp; |
| @@ -207,8 +206,8 @@ static int __devinit pnv_ioda_configure_pe(struct pnv_phb *phb, | |||
| 207 | return 0; | 206 | return 0; |
| 208 | } | 207 | } |
| 209 | 208 | ||
| 210 | static void __devinit pnv_ioda_link_pe_by_weight(struct pnv_phb *phb, | 209 | static void pnv_ioda_link_pe_by_weight(struct pnv_phb *phb, |
| 211 | struct pnv_ioda_pe *pe) | 210 | struct pnv_ioda_pe *pe) |
| 212 | { | 211 | { |
| 213 | struct pnv_ioda_pe *lpe; | 212 | struct pnv_ioda_pe *lpe; |
| 214 | 213 | ||
| @@ -246,7 +245,7 @@ static unsigned int pnv_ioda_dma_weight(struct pci_dev *dev) | |||
| 246 | } | 245 | } |
| 247 | 246 | ||
| 248 | #if 0 | 247 | #if 0 |
| 249 | static struct pnv_ioda_pe * __devinit pnv_ioda_setup_dev_PE(struct pci_dev *dev) | 248 | static struct pnv_ioda_pe *pnv_ioda_setup_dev_PE(struct pci_dev *dev) |
| 250 | { | 249 | { |
| 251 | struct pci_controller *hose = pci_bus_to_host(dev->bus); | 250 | struct pci_controller *hose = pci_bus_to_host(dev->bus); |
| 252 | struct pnv_phb *phb = hose->private_data; | 251 | struct pnv_phb *phb = hose->private_data; |
| @@ -343,7 +342,7 @@ static void pnv_ioda_setup_same_PE(struct pci_bus *bus, struct pnv_ioda_pe *pe) | |||
| 343 | * subordinate PCI devices and buses. The second type of PE is normally | 342 | * subordinate PCI devices and buses. The second type of PE is normally |
| 344 | * orgiriated by PCIe-to-PCI bridge or PLX switch downstream ports. | 343 | * orgiriated by PCIe-to-PCI bridge or PLX switch downstream ports. |
| 345 | */ | 344 | */ |
| 346 | static void __devinit pnv_ioda_setup_bus_PE(struct pci_bus *bus, int all) | 345 | static void pnv_ioda_setup_bus_PE(struct pci_bus *bus, int all) |
| 347 | { | 346 | { |
| 348 | struct pci_controller *hose = pci_bus_to_host(bus); | 347 | struct pci_controller *hose = pci_bus_to_host(bus); |
| 349 | struct pnv_phb *phb = hose->private_data; | 348 | struct pnv_phb *phb = hose->private_data; |
| @@ -399,7 +398,7 @@ static void __devinit pnv_ioda_setup_bus_PE(struct pci_bus *bus, int all) | |||
| 399 | pnv_ioda_link_pe_by_weight(phb, pe); | 398 | pnv_ioda_link_pe_by_weight(phb, pe); |
| 400 | } | 399 | } |
| 401 | 400 | ||
| 402 | static void __devinit pnv_ioda_setup_PEs(struct pci_bus *bus) | 401 | static void pnv_ioda_setup_PEs(struct pci_bus *bus) |
| 403 | { | 402 | { |
| 404 | struct pci_dev *dev; | 403 | struct pci_dev *dev; |
| 405 | 404 | ||
| @@ -423,7 +422,7 @@ static void __devinit pnv_ioda_setup_PEs(struct pci_bus *bus) | |||
| 423 | * port to PE# here. The game rule here is expected to be changed | 422 | * port to PE# here. The game rule here is expected to be changed |
| 424 | * as soon as we can detected PLX bridge correctly. | 423 | * as soon as we can detected PLX bridge correctly. |
| 425 | */ | 424 | */ |
| 426 | static void __devinit pnv_pci_ioda_setup_PEs(void) | 425 | static void pnv_pci_ioda_setup_PEs(void) |
| 427 | { | 426 | { |
| 428 | struct pci_controller *hose, *tmp; | 427 | struct pci_controller *hose, *tmp; |
| 429 | 428 | ||
| @@ -432,14 +431,12 @@ static void __devinit pnv_pci_ioda_setup_PEs(void) | |||
| 432 | } | 431 | } |
| 433 | } | 432 | } |
| 434 | 433 | ||
| 435 | static void __devinit pnv_pci_ioda_dma_dev_setup(struct pnv_phb *phb, | 434 | static void pnv_pci_ioda_dma_dev_setup(struct pnv_phb *phb, struct pci_dev *dev) |
| 436 | struct pci_dev *dev) | ||
| 437 | { | 435 | { |
| 438 | /* We delay DMA setup after we have assigned all PE# */ | 436 | /* We delay DMA setup after we have assigned all PE# */ |
| 439 | } | 437 | } |
| 440 | 438 | ||
| 441 | static void __devinit pnv_ioda_setup_bus_dma(struct pnv_ioda_pe *pe, | 439 | static void pnv_ioda_setup_bus_dma(struct pnv_ioda_pe *pe, struct pci_bus *bus) |
| 442 | struct pci_bus *bus) | ||
| 443 | { | 440 | { |
| 444 | struct pci_dev *dev; | 441 | struct pci_dev *dev; |
| 445 | 442 | ||
| @@ -450,10 +447,9 @@ static void __devinit pnv_ioda_setup_bus_dma(struct pnv_ioda_pe *pe, | |||
| 450 | } | 447 | } |
| 451 | } | 448 | } |
| 452 | 449 | ||
| 453 | static void __devinit pnv_pci_ioda_setup_dma_pe(struct pnv_phb *phb, | 450 | static void pnv_pci_ioda_setup_dma_pe(struct pnv_phb *phb, |
| 454 | struct pnv_ioda_pe *pe, | 451 | struct pnv_ioda_pe *pe, unsigned int base, |
| 455 | unsigned int base, | 452 | unsigned int segs) |
| 456 | unsigned int segs) | ||
| 457 | { | 453 | { |
| 458 | 454 | ||
| 459 | struct page *tce_mem = NULL; | 455 | struct page *tce_mem = NULL; |
| @@ -541,7 +537,7 @@ static void __devinit pnv_pci_ioda_setup_dma_pe(struct pnv_phb *phb, | |||
| 541 | __free_pages(tce_mem, get_order(TCE32_TABLE_SIZE * segs)); | 537 | __free_pages(tce_mem, get_order(TCE32_TABLE_SIZE * segs)); |
| 542 | } | 538 | } |
| 543 | 539 | ||
| 544 | static void __devinit pnv_ioda_setup_dma(struct pnv_phb *phb) | 540 | static void pnv_ioda_setup_dma(struct pnv_phb *phb) |
| 545 | { | 541 | { |
| 546 | struct pci_controller *hose = phb->hose; | 542 | struct pci_controller *hose = phb->hose; |
| 547 | unsigned int residual, remaining, segs, tw, base; | 543 | unsigned int residual, remaining, segs, tw, base; |
| @@ -684,8 +680,8 @@ static void pnv_pci_init_ioda_msis(struct pnv_phb *phb) { } | |||
| 684 | * to bottom style. So the the I/O or MMIO segment assigned to | 680 | * to bottom style. So the the I/O or MMIO segment assigned to |
| 685 | * parent PE could be overrided by its child PEs if necessary. | 681 | * parent PE could be overrided by its child PEs if necessary. |
| 686 | */ | 682 | */ |
| 687 | static void __devinit pnv_ioda_setup_pe_seg(struct pci_controller *hose, | 683 | static void pnv_ioda_setup_pe_seg(struct pci_controller *hose, |
| 688 | struct pnv_ioda_pe *pe) | 684 | struct pnv_ioda_pe *pe) |
| 689 | { | 685 | { |
| 690 | struct pnv_phb *phb = hose->private_data; | 686 | struct pnv_phb *phb = hose->private_data; |
| 691 | struct pci_bus_region region; | 687 | struct pci_bus_region region; |
| @@ -753,7 +749,7 @@ static void __devinit pnv_ioda_setup_pe_seg(struct pci_controller *hose, | |||
| 753 | } | 749 | } |
| 754 | } | 750 | } |
| 755 | 751 | ||
| 756 | static void __devinit pnv_pci_ioda_setup_seg(void) | 752 | static void pnv_pci_ioda_setup_seg(void) |
| 757 | { | 753 | { |
| 758 | struct pci_controller *tmp, *hose; | 754 | struct pci_controller *tmp, *hose; |
| 759 | struct pnv_phb *phb; | 755 | struct pnv_phb *phb; |
| @@ -767,7 +763,7 @@ static void __devinit pnv_pci_ioda_setup_seg(void) | |||
| 767 | } | 763 | } |
| 768 | } | 764 | } |
| 769 | 765 | ||
| 770 | static void __devinit pnv_pci_ioda_setup_DMA(void) | 766 | static void pnv_pci_ioda_setup_DMA(void) |
| 771 | { | 767 | { |
| 772 | struct pci_controller *hose, *tmp; | 768 | struct pci_controller *hose, *tmp; |
| 773 | struct pnv_phb *phb; | 769 | struct pnv_phb *phb; |
| @@ -781,7 +777,7 @@ static void __devinit pnv_pci_ioda_setup_DMA(void) | |||
| 781 | } | 777 | } |
| 782 | } | 778 | } |
| 783 | 779 | ||
| 784 | static void __devinit pnv_pci_ioda_fixup(void) | 780 | static void pnv_pci_ioda_fixup(void) |
| 785 | { | 781 | { |
| 786 | pnv_pci_ioda_setup_PEs(); | 782 | pnv_pci_ioda_setup_PEs(); |
| 787 | pnv_pci_ioda_setup_seg(); | 783 | pnv_pci_ioda_setup_seg(); |
| @@ -829,7 +825,7 @@ static resource_size_t pnv_pci_window_alignment(struct pci_bus *bus, | |||
| 829 | /* Prevent enabling devices for which we couldn't properly | 825 | /* Prevent enabling devices for which we couldn't properly |
| 830 | * assign a PE | 826 | * assign a PE |
| 831 | */ | 827 | */ |
| 832 | static int __devinit pnv_pci_enable_device_hook(struct pci_dev *dev) | 828 | static int pnv_pci_enable_device_hook(struct pci_dev *dev) |
| 833 | { | 829 | { |
| 834 | struct pci_controller *hose = pci_bus_to_host(dev->bus); | 830 | struct pci_controller *hose = pci_bus_to_host(dev->bus); |
| 835 | struct pnv_phb *phb = hose->private_data; | 831 | struct pnv_phb *phb = hose->private_data; |
diff --git a/arch/powerpc/platforms/powernv/pci-p5ioc2.c b/arch/powerpc/platforms/powernv/pci-p5ioc2.c index 6b4bef4e9d82..7db8771a40f5 100644 --- a/arch/powerpc/platforms/powernv/pci-p5ioc2.c +++ b/arch/powerpc/platforms/powernv/pci-p5ioc2.c | |||
| @@ -84,8 +84,8 @@ static void pnv_pci_init_p5ioc2_msis(struct pnv_phb *phb) | |||
| 84 | static void pnv_pci_init_p5ioc2_msis(struct pnv_phb *phb) { } | 84 | static void pnv_pci_init_p5ioc2_msis(struct pnv_phb *phb) { } |
| 85 | #endif /* CONFIG_PCI_MSI */ | 85 | #endif /* CONFIG_PCI_MSI */ |
| 86 | 86 | ||
| 87 | static void __devinit pnv_pci_p5ioc2_dma_dev_setup(struct pnv_phb *phb, | 87 | static void pnv_pci_p5ioc2_dma_dev_setup(struct pnv_phb *phb, |
| 88 | struct pci_dev *pdev) | 88 | struct pci_dev *pdev) |
| 89 | { | 89 | { |
| 90 | if (phb->p5ioc2.iommu_table.it_map == NULL) | 90 | if (phb->p5ioc2.iommu_table.it_map == NULL) |
| 91 | iommu_init_table(&phb->p5ioc2.iommu_table, phb->hose->node); | 91 | iommu_init_table(&phb->p5ioc2.iommu_table, phb->hose->node); |
diff --git a/arch/powerpc/platforms/powernv/pci.c b/arch/powerpc/platforms/powernv/pci.c index c01688a1a741..b8b8e0bd9897 100644 --- a/arch/powerpc/platforms/powernv/pci.c +++ b/arch/powerpc/platforms/powernv/pci.c | |||
| @@ -464,8 +464,7 @@ void pnv_pci_setup_iommu_table(struct iommu_table *tbl, | |||
| 464 | tbl->it_type = TCE_PCI; | 464 | tbl->it_type = TCE_PCI; |
| 465 | } | 465 | } |
| 466 | 466 | ||
| 467 | static struct iommu_table * __devinit | 467 | static struct iommu_table *pnv_pci_setup_bml_iommu(struct pci_controller *hose) |
| 468 | pnv_pci_setup_bml_iommu(struct pci_controller *hose) | ||
| 469 | { | 468 | { |
| 470 | struct iommu_table *tbl; | 469 | struct iommu_table *tbl; |
| 471 | const __be64 *basep, *swinvp; | 470 | const __be64 *basep, *swinvp; |
| @@ -496,8 +495,8 @@ pnv_pci_setup_bml_iommu(struct pci_controller *hose) | |||
| 496 | return tbl; | 495 | return tbl; |
| 497 | } | 496 | } |
| 498 | 497 | ||
| 499 | static void __devinit pnv_pci_dma_fallback_setup(struct pci_controller *hose, | 498 | static void pnv_pci_dma_fallback_setup(struct pci_controller *hose, |
| 500 | struct pci_dev *pdev) | 499 | struct pci_dev *pdev) |
| 501 | { | 500 | { |
| 502 | struct device_node *np = pci_bus_to_OF_node(hose->bus); | 501 | struct device_node *np = pci_bus_to_OF_node(hose->bus); |
| 503 | struct pci_dn *pdn; | 502 | struct pci_dn *pdn; |
| @@ -512,7 +511,7 @@ static void __devinit pnv_pci_dma_fallback_setup(struct pci_controller *hose, | |||
| 512 | set_iommu_table_base(&pdev->dev, pdn->iommu_table); | 511 | set_iommu_table_base(&pdev->dev, pdn->iommu_table); |
| 513 | } | 512 | } |
| 514 | 513 | ||
| 515 | static void __devinit pnv_pci_dma_dev_setup(struct pci_dev *pdev) | 514 | static void pnv_pci_dma_dev_setup(struct pci_dev *pdev) |
| 516 | { | 515 | { |
| 517 | struct pci_controller *hose = pci_bus_to_host(pdev->bus); | 516 | struct pci_controller *hose = pci_bus_to_host(pdev->bus); |
| 518 | struct pnv_phb *phb = hose->private_data; | 517 | struct pnv_phb *phb = hose->private_data; |
| @@ -527,7 +526,7 @@ static void __devinit pnv_pci_dma_dev_setup(struct pci_dev *pdev) | |||
| 527 | } | 526 | } |
| 528 | 527 | ||
| 529 | /* Fixup wrong class code in p7ioc root complex */ | 528 | /* Fixup wrong class code in p7ioc root complex */ |
| 530 | static void __devinit pnv_p7ioc_rc_quirk(struct pci_dev *dev) | 529 | static void pnv_p7ioc_rc_quirk(struct pci_dev *dev) |
| 531 | { | 530 | { |
| 532 | dev->class = PCI_CLASS_BRIDGE_PCI << 8; | 531 | dev->class = PCI_CLASS_BRIDGE_PCI << 8; |
| 533 | } | 532 | } |
diff --git a/arch/powerpc/platforms/powernv/smp.c b/arch/powerpc/platforms/powernv/smp.c index 7698b6e13c57..0bdc735db16f 100644 --- a/arch/powerpc/platforms/powernv/smp.c +++ b/arch/powerpc/platforms/powernv/smp.c | |||
| @@ -62,7 +62,7 @@ static int pnv_smp_cpu_bootable(unsigned int nr) | |||
| 62 | return 1; | 62 | return 1; |
| 63 | } | 63 | } |
| 64 | 64 | ||
| 65 | int __devinit pnv_smp_kick_cpu(int nr) | 65 | int pnv_smp_kick_cpu(int nr) |
| 66 | { | 66 | { |
| 67 | unsigned int pcpu = get_hard_smp_processor_id(nr); | 67 | unsigned int pcpu = get_hard_smp_processor_id(nr); |
| 68 | unsigned long start_here = __pa(*((unsigned long *) | 68 | unsigned long start_here = __pa(*((unsigned long *) |
diff --git a/arch/powerpc/platforms/ps3/repository.c b/arch/powerpc/platforms/ps3/repository.c index 9b47ba7a5de7..bfccdc7cb85f 100644 --- a/arch/powerpc/platforms/ps3/repository.c +++ b/arch/powerpc/platforms/ps3/repository.c | |||
| @@ -437,7 +437,7 @@ found_dev: | |||
| 437 | return 0; | 437 | return 0; |
| 438 | } | 438 | } |
| 439 | 439 | ||
| 440 | int __devinit ps3_repository_find_devices(enum ps3_bus_type bus_type, | 440 | int ps3_repository_find_devices(enum ps3_bus_type bus_type, |
| 441 | int (*callback)(const struct ps3_repository_device *repo)) | 441 | int (*callback)(const struct ps3_repository_device *repo)) |
| 442 | { | 442 | { |
| 443 | int result = 0; | 443 | int result = 0; |
diff --git a/arch/powerpc/platforms/pseries/eeh_dev.c b/arch/powerpc/platforms/pseries/eeh_dev.c index 66442341d3a6..1efa28f5fc54 100644 --- a/arch/powerpc/platforms/pseries/eeh_dev.c +++ b/arch/powerpc/platforms/pseries/eeh_dev.c | |||
| @@ -49,7 +49,7 @@ | |||
| 49 | * It will create EEH device according to the given OF node. The function | 49 | * It will create EEH device according to the given OF node. The function |
| 50 | * might be called by PCI emunation, DR, PHB hotplug. | 50 | * might be called by PCI emunation, DR, PHB hotplug. |
| 51 | */ | 51 | */ |
| 52 | void * __devinit eeh_dev_init(struct device_node *dn, void *data) | 52 | void *eeh_dev_init(struct device_node *dn, void *data) |
| 53 | { | 53 | { |
| 54 | struct pci_controller *phb = data; | 54 | struct pci_controller *phb = data; |
| 55 | struct eeh_dev *edev; | 55 | struct eeh_dev *edev; |
| @@ -77,7 +77,7 @@ void * __devinit eeh_dev_init(struct device_node *dn, void *data) | |||
| 77 | * Scan the PHB OF node and its child association, then create the | 77 | * Scan the PHB OF node and its child association, then create the |
| 78 | * EEH devices accordingly | 78 | * EEH devices accordingly |
| 79 | */ | 79 | */ |
| 80 | void __devinit eeh_dev_phb_init_dynamic(struct pci_controller *phb) | 80 | void eeh_dev_phb_init_dynamic(struct pci_controller *phb) |
| 81 | { | 81 | { |
| 82 | struct device_node *dn = phb->dn; | 82 | struct device_node *dn = phb->dn; |
| 83 | 83 | ||
diff --git a/arch/powerpc/platforms/pseries/eeh_pe.c b/arch/powerpc/platforms/pseries/eeh_pe.c index d16c8ded1084..fe43d1aa2cf1 100644 --- a/arch/powerpc/platforms/pseries/eeh_pe.c +++ b/arch/powerpc/platforms/pseries/eeh_pe.c | |||
| @@ -66,7 +66,7 @@ static struct eeh_pe *eeh_pe_alloc(struct pci_controller *phb, int type) | |||
| 66 | * The function should be called while the PHB is detected during | 66 | * The function should be called while the PHB is detected during |
| 67 | * system boot or PCI hotplug in order to create PHB PE. | 67 | * system boot or PCI hotplug in order to create PHB PE. |
| 68 | */ | 68 | */ |
| 69 | int __devinit eeh_phb_pe_create(struct pci_controller *phb) | 69 | int eeh_phb_pe_create(struct pci_controller *phb) |
| 70 | { | 70 | { |
| 71 | struct eeh_pe *pe; | 71 | struct eeh_pe *pe; |
| 72 | 72 | ||
diff --git a/arch/powerpc/platforms/pseries/pci_dlpar.c b/arch/powerpc/platforms/pseries/pci_dlpar.c index 261a577a3dd2..c91b22be9288 100644 --- a/arch/powerpc/platforms/pseries/pci_dlpar.c +++ b/arch/powerpc/platforms/pseries/pci_dlpar.c | |||
| @@ -149,7 +149,7 @@ void pcibios_add_pci_devices(struct pci_bus * bus) | |||
| 149 | } | 149 | } |
| 150 | EXPORT_SYMBOL_GPL(pcibios_add_pci_devices); | 150 | EXPORT_SYMBOL_GPL(pcibios_add_pci_devices); |
| 151 | 151 | ||
| 152 | struct pci_controller * __devinit init_phb_dynamic(struct device_node *dn) | 152 | struct pci_controller *init_phb_dynamic(struct device_node *dn) |
| 153 | { | 153 | { |
| 154 | struct pci_controller *phb; | 154 | struct pci_controller *phb; |
| 155 | 155 | ||
diff --git a/arch/powerpc/platforms/pseries/smp.c b/arch/powerpc/platforms/pseries/smp.c index 9fc0a4941908..80cd0be71e06 100644 --- a/arch/powerpc/platforms/pseries/smp.c +++ b/arch/powerpc/platforms/pseries/smp.c | |||
| @@ -87,7 +87,7 @@ int smp_query_cpu_stopped(unsigned int pcpu) | |||
| 87 | * 0 - failure | 87 | * 0 - failure |
| 88 | * 1 - success | 88 | * 1 - success |
| 89 | */ | 89 | */ |
| 90 | static inline int __devinit smp_startup_cpu(unsigned int lcpu) | 90 | static inline int smp_startup_cpu(unsigned int lcpu) |
| 91 | { | 91 | { |
| 92 | int status; | 92 | int status; |
| 93 | unsigned long start_here = __pa((u32)*((unsigned long *) | 93 | unsigned long start_here = __pa((u32)*((unsigned long *) |
| @@ -133,7 +133,7 @@ out: | |||
| 133 | return 1; | 133 | return 1; |
| 134 | } | 134 | } |
| 135 | 135 | ||
| 136 | static void __devinit smp_xics_setup_cpu(int cpu) | 136 | static void smp_xics_setup_cpu(int cpu) |
| 137 | { | 137 | { |
| 138 | if (cpu != boot_cpuid) | 138 | if (cpu != boot_cpuid) |
| 139 | xics_setup_cpu(); | 139 | xics_setup_cpu(); |
| @@ -148,7 +148,7 @@ static void __devinit smp_xics_setup_cpu(int cpu) | |||
| 148 | #endif | 148 | #endif |
| 149 | } | 149 | } |
| 150 | 150 | ||
| 151 | static int __devinit smp_pSeries_kick_cpu(int nr) | 151 | static int smp_pSeries_kick_cpu(int nr) |
| 152 | { | 152 | { |
| 153 | BUG_ON(nr < 0 || nr >= NR_CPUS); | 153 | BUG_ON(nr < 0 || nr >= NR_CPUS); |
| 154 | 154 | ||
diff --git a/arch/powerpc/platforms/wsp/scom_smp.c b/arch/powerpc/platforms/wsp/scom_smp.c index 141e78032097..b56b70aeb497 100644 --- a/arch/powerpc/platforms/wsp/scom_smp.c +++ b/arch/powerpc/platforms/wsp/scom_smp.c | |||
| @@ -337,8 +337,7 @@ scom_fail: | |||
| 337 | return rc; | 337 | return rc; |
| 338 | } | 338 | } |
| 339 | 339 | ||
| 340 | int __devinit a2_scom_startup_cpu(unsigned int lcpu, int thr_idx, | 340 | int a2_scom_startup_cpu(unsigned int lcpu, int thr_idx, struct device_node *np) |
| 341 | struct device_node *np) | ||
| 342 | { | 341 | { |
| 343 | u64 init_iar, init_msr, init_ccr2; | 342 | u64 init_iar, init_msr, init_ccr2; |
| 344 | unsigned long start_here; | 343 | unsigned long start_here; |
diff --git a/arch/powerpc/platforms/wsp/smp.c b/arch/powerpc/platforms/wsp/smp.c index 0ba103ae83a5..332a18b81403 100644 --- a/arch/powerpc/platforms/wsp/smp.c +++ b/arch/powerpc/platforms/wsp/smp.c | |||
| @@ -23,7 +23,7 @@ | |||
| 23 | #include "ics.h" | 23 | #include "ics.h" |
| 24 | #include "wsp.h" | 24 | #include "wsp.h" |
| 25 | 25 | ||
| 26 | static void __devinit smp_a2_setup_cpu(int cpu) | 26 | static void smp_a2_setup_cpu(int cpu) |
| 27 | { | 27 | { |
| 28 | doorbell_setup_this_cpu(); | 28 | doorbell_setup_this_cpu(); |
| 29 | 29 | ||
| @@ -31,7 +31,7 @@ static void __devinit smp_a2_setup_cpu(int cpu) | |||
| 31 | xics_setup_cpu(); | 31 | xics_setup_cpu(); |
| 32 | } | 32 | } |
| 33 | 33 | ||
| 34 | int __devinit smp_a2_kick_cpu(int nr) | 34 | int smp_a2_kick_cpu(int nr) |
| 35 | { | 35 | { |
| 36 | const char *enable_method; | 36 | const char *enable_method; |
| 37 | struct device_node *np; | 37 | struct device_node *np; |
diff --git a/arch/powerpc/platforms/wsp/wsp.h b/arch/powerpc/platforms/wsp/wsp.h index 10c1d1fff362..62ef21afb89a 100644 --- a/arch/powerpc/platforms/wsp/wsp.h +++ b/arch/powerpc/platforms/wsp/wsp.h | |||
| @@ -18,7 +18,7 @@ extern void a2_setup_smp(void); | |||
| 18 | extern int a2_scom_startup_cpu(unsigned int lcpu, int thr_idx, | 18 | extern int a2_scom_startup_cpu(unsigned int lcpu, int thr_idx, |
| 19 | struct device_node *np); | 19 | struct device_node *np); |
| 20 | extern int smp_a2_cpu_bootable(unsigned int nr); | 20 | extern int smp_a2_cpu_bootable(unsigned int nr); |
| 21 | extern int __devinit smp_a2_kick_cpu(int nr); | 21 | extern int smp_a2_kick_cpu(int nr); |
| 22 | 22 | ||
| 23 | extern void opb_pic_init(void); | 23 | extern void opb_pic_init(void); |
| 24 | 24 | ||
diff --git a/arch/powerpc/platforms/wsp/wsp_pci.c b/arch/powerpc/platforms/wsp/wsp_pci.c index 1526551f9fe6..8e22f561d171 100644 --- a/arch/powerpc/platforms/wsp/wsp_pci.c +++ b/arch/powerpc/platforms/wsp/wsp_pci.c | |||
| @@ -402,7 +402,7 @@ static struct wsp_dma_table *wsp_pci_create_dma32_table(struct wsp_phb *phb, | |||
| 402 | return ERR_PTR(-ENOMEM); | 402 | return ERR_PTR(-ENOMEM); |
| 403 | } | 403 | } |
| 404 | 404 | ||
| 405 | static void __devinit wsp_pci_dma_dev_setup(struct pci_dev *pdev) | 405 | static void wsp_pci_dma_dev_setup(struct pci_dev *pdev) |
| 406 | { | 406 | { |
| 407 | struct dev_archdata *archdata = &pdev->dev.archdata; | 407 | struct dev_archdata *archdata = &pdev->dev.archdata; |
| 408 | struct pci_controller *hose = pci_bus_to_host(pdev->bus); | 408 | struct pci_controller *hose = pci_bus_to_host(pdev->bus); |
diff --git a/arch/powerpc/sysdev/bestcomm/bestcomm.c b/arch/powerpc/sysdev/bestcomm/bestcomm.c index b3fbb271be87..d9130630f7ef 100644 --- a/arch/powerpc/sysdev/bestcomm/bestcomm.c +++ b/arch/powerpc/sysdev/bestcomm/bestcomm.c | |||
| @@ -30,7 +30,7 @@ | |||
| 30 | #define DRIVER_NAME "bestcomm-core" | 30 | #define DRIVER_NAME "bestcomm-core" |
| 31 | 31 | ||
| 32 | /* MPC5200 device tree match tables */ | 32 | /* MPC5200 device tree match tables */ |
| 33 | static struct of_device_id mpc52xx_sram_ids[] __devinitdata = { | 33 | static struct of_device_id mpc52xx_sram_ids[] = { |
| 34 | { .compatible = "fsl,mpc5200-sram", }, | 34 | { .compatible = "fsl,mpc5200-sram", }, |
| 35 | { .compatible = "mpc5200-sram", }, | 35 | { .compatible = "mpc5200-sram", }, |
| 36 | {} | 36 | {} |
| @@ -273,8 +273,7 @@ static u32 fdt_ops[] = { | |||
| 273 | }; | 273 | }; |
| 274 | 274 | ||
| 275 | 275 | ||
| 276 | static int __devinit | 276 | static int bcom_engine_init(void) |
| 277 | bcom_engine_init(void) | ||
| 278 | { | 277 | { |
| 279 | int task; | 278 | int task; |
| 280 | phys_addr_t tdt_pa, ctx_pa, var_pa, fdt_pa; | 279 | phys_addr_t tdt_pa, ctx_pa, var_pa, fdt_pa; |
| @@ -365,7 +364,7 @@ bcom_engine_cleanup(void) | |||
| 365 | /* OF platform driver */ | 364 | /* OF platform driver */ |
| 366 | /* ======================================================================== */ | 365 | /* ======================================================================== */ |
| 367 | 366 | ||
| 368 | static int __devinit mpc52xx_bcom_probe(struct platform_device *op) | 367 | static int mpc52xx_bcom_probe(struct platform_device *op) |
| 369 | { | 368 | { |
| 370 | struct device_node *ofn_sram; | 369 | struct device_node *ofn_sram; |
| 371 | struct resource res_bcom; | 370 | struct resource res_bcom; |
diff --git a/arch/powerpc/sysdev/fsl_85xx_l2ctlr.c b/arch/powerpc/sysdev/fsl_85xx_l2ctlr.c index d131c8a1cb15..8cf93f029e17 100644 --- a/arch/powerpc/sysdev/fsl_85xx_l2ctlr.c +++ b/arch/powerpc/sysdev/fsl_85xx_l2ctlr.c | |||
| @@ -69,7 +69,7 @@ static int __init get_offset_from_cmdline(char *str) | |||
| 69 | __setup("cache-sram-size=", get_size_from_cmdline); | 69 | __setup("cache-sram-size=", get_size_from_cmdline); |
| 70 | __setup("cache-sram-offset=", get_offset_from_cmdline); | 70 | __setup("cache-sram-offset=", get_offset_from_cmdline); |
| 71 | 71 | ||
| 72 | static int __devinit mpc85xx_l2ctlr_of_probe(struct platform_device *dev) | 72 | static int mpc85xx_l2ctlr_of_probe(struct platform_device *dev) |
| 73 | { | 73 | { |
| 74 | long rval; | 74 | long rval; |
| 75 | unsigned int rem; | 75 | unsigned int rem; |
| @@ -160,7 +160,7 @@ static int __devinit mpc85xx_l2ctlr_of_probe(struct platform_device *dev) | |||
| 160 | return 0; | 160 | return 0; |
| 161 | } | 161 | } |
| 162 | 162 | ||
| 163 | static int __devexit mpc85xx_l2ctlr_of_remove(struct platform_device *dev) | 163 | static int mpc85xx_l2ctlr_of_remove(struct platform_device *dev) |
| 164 | { | 164 | { |
| 165 | BUG_ON(!l2ctlr); | 165 | BUG_ON(!l2ctlr); |
| 166 | 166 | ||
| @@ -213,7 +213,7 @@ static struct platform_driver mpc85xx_l2ctlr_of_platform_driver = { | |||
| 213 | .of_match_table = mpc85xx_l2ctlr_of_match, | 213 | .of_match_table = mpc85xx_l2ctlr_of_match, |
| 214 | }, | 214 | }, |
| 215 | .probe = mpc85xx_l2ctlr_of_probe, | 215 | .probe = mpc85xx_l2ctlr_of_probe, |
| 216 | .remove = __devexit_p(mpc85xx_l2ctlr_of_remove), | 216 | .remove = mpc85xx_l2ctlr_of_remove, |
| 217 | }; | 217 | }; |
| 218 | 218 | ||
| 219 | static __init int mpc85xx_l2ctlr_of_init(void) | 219 | static __init int mpc85xx_l2ctlr_of_init(void) |
diff --git a/arch/powerpc/sysdev/fsl_ifc.c b/arch/powerpc/sysdev/fsl_ifc.c index 097cc9d2585b..2a36fd6a9583 100644 --- a/arch/powerpc/sysdev/fsl_ifc.c +++ b/arch/powerpc/sysdev/fsl_ifc.c | |||
| @@ -73,7 +73,7 @@ int fsl_ifc_find(phys_addr_t addr_base) | |||
| 73 | } | 73 | } |
| 74 | EXPORT_SYMBOL(fsl_ifc_find); | 74 | EXPORT_SYMBOL(fsl_ifc_find); |
| 75 | 75 | ||
| 76 | static int __devinit fsl_ifc_ctrl_init(struct fsl_ifc_ctrl *ctrl) | 76 | static int fsl_ifc_ctrl_init(struct fsl_ifc_ctrl *ctrl) |
| 77 | { | 77 | { |
| 78 | struct fsl_ifc_regs __iomem *ifc = ctrl->regs; | 78 | struct fsl_ifc_regs __iomem *ifc = ctrl->regs; |
| 79 | 79 | ||
| @@ -211,7 +211,7 @@ static irqreturn_t fsl_ifc_ctrl_irq(int irqno, void *data) | |||
| 211 | * resources for the NAND banks themselves are allocated | 211 | * resources for the NAND banks themselves are allocated |
| 212 | * in the chip probe function. | 212 | * in the chip probe function. |
| 213 | */ | 213 | */ |
| 214 | static int __devinit fsl_ifc_ctrl_probe(struct platform_device *dev) | 214 | static int fsl_ifc_ctrl_probe(struct platform_device *dev) |
| 215 | { | 215 | { |
| 216 | int ret = 0; | 216 | int ret = 0; |
| 217 | 217 | ||
diff --git a/arch/powerpc/sysdev/fsl_lbc.c b/arch/powerpc/sysdev/fsl_lbc.c index 483126d7b3c0..300be2d06a26 100644 --- a/arch/powerpc/sysdev/fsl_lbc.c +++ b/arch/powerpc/sysdev/fsl_lbc.c | |||
| @@ -185,8 +185,8 @@ int fsl_upm_run_pattern(struct fsl_upm *upm, void __iomem *io_base, u32 mar) | |||
| 185 | } | 185 | } |
| 186 | EXPORT_SYMBOL(fsl_upm_run_pattern); | 186 | EXPORT_SYMBOL(fsl_upm_run_pattern); |
| 187 | 187 | ||
| 188 | static int __devinit fsl_lbc_ctrl_init(struct fsl_lbc_ctrl *ctrl, | 188 | static int fsl_lbc_ctrl_init(struct fsl_lbc_ctrl *ctrl, |
| 189 | struct device_node *node) | 189 | struct device_node *node) |
| 190 | { | 190 | { |
| 191 | struct fsl_lbc_regs __iomem *lbc = ctrl->regs; | 191 | struct fsl_lbc_regs __iomem *lbc = ctrl->regs; |
| 192 | 192 | ||
| @@ -273,7 +273,7 @@ static irqreturn_t fsl_lbc_ctrl_irq(int irqno, void *data) | |||
| 273 | * in the chip probe function. | 273 | * in the chip probe function. |
| 274 | */ | 274 | */ |
| 275 | 275 | ||
| 276 | static int __devinit fsl_lbc_ctrl_probe(struct platform_device *dev) | 276 | static int fsl_lbc_ctrl_probe(struct platform_device *dev) |
| 277 | { | 277 | { |
| 278 | int ret; | 278 | int ret; |
| 279 | 279 | ||
diff --git a/arch/powerpc/sysdev/fsl_msi.c b/arch/powerpc/sysdev/fsl_msi.c index 63c5f04ea580..6e53d97abd3f 100644 --- a/arch/powerpc/sysdev/fsl_msi.c +++ b/arch/powerpc/sysdev/fsl_msi.c | |||
| @@ -333,9 +333,8 @@ static int fsl_of_msi_remove(struct platform_device *ofdev) | |||
| 333 | return 0; | 333 | return 0; |
| 334 | } | 334 | } |
| 335 | 335 | ||
| 336 | static int __devinit fsl_msi_setup_hwirq(struct fsl_msi *msi, | 336 | static int fsl_msi_setup_hwirq(struct fsl_msi *msi, struct platform_device *dev, |
| 337 | struct platform_device *dev, | 337 | int offset, int irq_index) |
| 338 | int offset, int irq_index) | ||
| 339 | { | 338 | { |
| 340 | struct fsl_msi_cascade_data *cascade_data = NULL; | 339 | struct fsl_msi_cascade_data *cascade_data = NULL; |
| 341 | int virt_msir; | 340 | int virt_msir; |
| @@ -363,7 +362,7 @@ static int __devinit fsl_msi_setup_hwirq(struct fsl_msi *msi, | |||
| 363 | } | 362 | } |
| 364 | 363 | ||
| 365 | static const struct of_device_id fsl_of_msi_ids[]; | 364 | static const struct of_device_id fsl_of_msi_ids[]; |
| 366 | static int __devinit fsl_of_msi_probe(struct platform_device *dev) | 365 | static int fsl_of_msi_probe(struct platform_device *dev) |
| 367 | { | 366 | { |
| 368 | const struct of_device_id *match; | 367 | const struct of_device_id *match; |
| 369 | struct fsl_msi *msi; | 368 | struct fsl_msi *msi; |
diff --git a/arch/powerpc/sysdev/fsl_pci.c b/arch/powerpc/sysdev/fsl_pci.c index 5ba325bff3a2..92a5915b1827 100644 --- a/arch/powerpc/sysdev/fsl_pci.c +++ b/arch/powerpc/sysdev/fsl_pci.c | |||
| @@ -36,7 +36,7 @@ | |||
| 36 | 36 | ||
| 37 | static int fsl_pcie_bus_fixup, is_mpc83xx_pci; | 37 | static int fsl_pcie_bus_fixup, is_mpc83xx_pci; |
| 38 | 38 | ||
| 39 | static void __devinit quirk_fsl_pcie_header(struct pci_dev *dev) | 39 | static void quirk_fsl_pcie_header(struct pci_dev *dev) |
| 40 | { | 40 | { |
| 41 | u8 hdr_type; | 41 | u8 hdr_type; |
| 42 | 42 | ||
| @@ -871,7 +871,7 @@ void fsl_pci_assign_primary(void) | |||
| 871 | } | 871 | } |
| 872 | } | 872 | } |
| 873 | 873 | ||
| 874 | static int __devinit fsl_pci_probe(struct platform_device *pdev) | 874 | static int fsl_pci_probe(struct platform_device *pdev) |
| 875 | { | 875 | { |
| 876 | int ret; | 876 | int ret; |
| 877 | struct device_node *node; | 877 | struct device_node *node; |
diff --git a/arch/powerpc/sysdev/fsl_rio.c b/arch/powerpc/sysdev/fsl_rio.c index 5b6f556094dd..e2fb3171f41b 100644 --- a/arch/powerpc/sysdev/fsl_rio.c +++ b/arch/powerpc/sysdev/fsl_rio.c | |||
| @@ -644,7 +644,7 @@ err_rio_regs: | |||
| 644 | 644 | ||
| 645 | /* The probe function for RapidIO peer-to-peer network. | 645 | /* The probe function for RapidIO peer-to-peer network. |
| 646 | */ | 646 | */ |
| 647 | static int __devinit fsl_of_rio_rpn_probe(struct platform_device *dev) | 647 | static int fsl_of_rio_rpn_probe(struct platform_device *dev) |
| 648 | { | 648 | { |
| 649 | printk(KERN_INFO "Setting up RapidIO peer-to-peer network %s\n", | 649 | printk(KERN_INFO "Setting up RapidIO peer-to-peer network %s\n", |
| 650 | dev->dev.of_node->full_name); | 650 | dev->dev.of_node->full_name); |
diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c index 9c6e535daad2..3b2efd41abf2 100644 --- a/arch/powerpc/sysdev/mpic.c +++ b/arch/powerpc/sysdev/mpic.c | |||
| @@ -1864,7 +1864,7 @@ int __init smp_mpic_probe(void) | |||
| 1864 | return nr_cpus; | 1864 | return nr_cpus; |
| 1865 | } | 1865 | } |
| 1866 | 1866 | ||
| 1867 | void __devinit smp_mpic_setup_cpu(int cpu) | 1867 | void smp_mpic_setup_cpu(int cpu) |
| 1868 | { | 1868 | { |
| 1869 | mpic_setup_this_cpu(); | 1869 | mpic_setup_this_cpu(); |
| 1870 | } | 1870 | } |
diff --git a/arch/powerpc/sysdev/mpic_msgr.c b/arch/powerpc/sysdev/mpic_msgr.c index e961f8c4a8f0..c75325865a85 100644 --- a/arch/powerpc/sysdev/mpic_msgr.c +++ b/arch/powerpc/sysdev/mpic_msgr.c | |||
| @@ -160,7 +160,7 @@ static int mpic_msgr_block_number(struct device_node *node) | |||
| 160 | 160 | ||
| 161 | /* The probe function for a single message register block. | 161 | /* The probe function for a single message register block. |
| 162 | */ | 162 | */ |
| 163 | static __devinit int mpic_msgr_probe(struct platform_device *dev) | 163 | static int mpic_msgr_probe(struct platform_device *dev) |
| 164 | { | 164 | { |
| 165 | void __iomem *msgr_block_addr; | 165 | void __iomem *msgr_block_addr; |
| 166 | int block_number; | 166 | int block_number; |
diff --git a/arch/powerpc/sysdev/mv64x60_pci.c b/arch/powerpc/sysdev/mv64x60_pci.c index 364b14d4754b..330d56613c5a 100644 --- a/arch/powerpc/sysdev/mv64x60_pci.c +++ b/arch/powerpc/sysdev/mv64x60_pci.c | |||
| @@ -104,7 +104,7 @@ subsys_initcall(mv64x60_sysfs_init); | |||
| 104 | 104 | ||
| 105 | #endif /* CONFIG_SYSFS */ | 105 | #endif /* CONFIG_SYSFS */ |
| 106 | 106 | ||
| 107 | static void __devinit mv64x60_pci_fixup_early(struct pci_dev *dev) | 107 | static void mv64x60_pci_fixup_early(struct pci_dev *dev) |
| 108 | { | 108 | { |
| 109 | /* | 109 | /* |
| 110 | * Set the host bridge hdr_type to an invalid value so that | 110 | * Set the host bridge hdr_type to an invalid value so that |
diff --git a/arch/powerpc/sysdev/ppc4xx_msi.c b/arch/powerpc/sysdev/ppc4xx_msi.c index 82c6702dcbab..43948da837a7 100644 --- a/arch/powerpc/sysdev/ppc4xx_msi.c +++ b/arch/powerpc/sysdev/ppc4xx_msi.c | |||
| @@ -220,7 +220,7 @@ static int ppc4xx_of_msi_remove(struct platform_device *dev) | |||
| 220 | return 0; | 220 | return 0; |
| 221 | } | 221 | } |
| 222 | 222 | ||
| 223 | static int __devinit ppc4xx_msi_probe(struct platform_device *dev) | 223 | static int ppc4xx_msi_probe(struct platform_device *dev) |
| 224 | { | 224 | { |
| 225 | struct ppc4xx_msi *msi; | 225 | struct ppc4xx_msi *msi; |
| 226 | struct resource res; | 226 | struct resource res; |
diff --git a/arch/s390/Makefile b/arch/s390/Makefile index 4b8e08b56f49..7e3ce78d4290 100644 --- a/arch/s390/Makefile +++ b/arch/s390/Makefile | |||
| @@ -24,8 +24,8 @@ CHECKFLAGS += -D__s390__ -msize-long | |||
| 24 | else | 24 | else |
| 25 | LD_BFD := elf64-s390 | 25 | LD_BFD := elf64-s390 |
| 26 | LDFLAGS := -m elf64_s390 | 26 | LDFLAGS := -m elf64_s390 |
| 27 | KBUILD_AFLAGS_MODULE += -fpic -D__PIC__ | 27 | KBUILD_AFLAGS_MODULE += -fPIC |
| 28 | KBUILD_CFLAGS_MODULE += -fpic -D__PIC__ | 28 | KBUILD_CFLAGS_MODULE += -fPIC |
| 29 | KBUILD_CFLAGS += -m64 | 29 | KBUILD_CFLAGS += -m64 |
| 30 | KBUILD_AFLAGS += -m64 | 30 | KBUILD_AFLAGS += -m64 |
| 31 | UTS_MACHINE := s390x | 31 | UTS_MACHINE := s390x |
diff --git a/arch/s390/include/asm/dma.h b/arch/s390/include/asm/dma.h index de015d85e3e5..bb9bdcd20864 100644 --- a/arch/s390/include/asm/dma.h +++ b/arch/s390/include/asm/dma.h | |||
| @@ -10,4 +10,10 @@ | |||
| 10 | */ | 10 | */ |
| 11 | #define MAX_DMA_ADDRESS 0x80000000 | 11 | #define MAX_DMA_ADDRESS 0x80000000 |
| 12 | 12 | ||
| 13 | #ifdef CONFIG_PCI | ||
| 14 | extern int isa_dma_bridge_buggy; | ||
| 15 | #else | ||
| 16 | #define isa_dma_bridge_buggy (0) | ||
| 17 | #endif | ||
| 18 | |||
| 13 | #endif /* _ASM_S390_DMA_H */ | 19 | #endif /* _ASM_S390_DMA_H */ |
diff --git a/arch/s390/include/asm/io.h b/arch/s390/include/asm/io.h index 16c3eb164f4f..27cb32185ce1 100644 --- a/arch/s390/include/asm/io.h +++ b/arch/s390/include/asm/io.h | |||
| @@ -85,6 +85,11 @@ static inline void iounmap(volatile void __iomem *addr) | |||
| 85 | #define __raw_writel zpci_write_u32 | 85 | #define __raw_writel zpci_write_u32 |
| 86 | #define __raw_writeq zpci_write_u64 | 86 | #define __raw_writeq zpci_write_u64 |
| 87 | 87 | ||
| 88 | #define readb_relaxed readb | ||
| 89 | #define readw_relaxed readw | ||
| 90 | #define readl_relaxed readl | ||
| 91 | #define readq_relaxed readq | ||
| 92 | |||
| 88 | #endif /* CONFIG_PCI */ | 93 | #endif /* CONFIG_PCI */ |
| 89 | 94 | ||
| 90 | #include <asm-generic/io.h> | 95 | #include <asm-generic/io.h> |
diff --git a/arch/s390/include/asm/irq.h b/arch/s390/include/asm/irq.h index e6972f85d2b0..7def77302d63 100644 --- a/arch/s390/include/asm/irq.h +++ b/arch/s390/include/asm/irq.h | |||
| @@ -2,43 +2,61 @@ | |||
| 2 | #define _ASM_IRQ_H | 2 | #define _ASM_IRQ_H |
| 3 | 3 | ||
| 4 | #include <linux/hardirq.h> | 4 | #include <linux/hardirq.h> |
| 5 | #include <linux/percpu.h> | ||
| 6 | #include <linux/cache.h> | ||
| 5 | #include <linux/types.h> | 7 | #include <linux/types.h> |
| 6 | 8 | ||
| 7 | enum interruption_class { | 9 | enum interruption_main_class { |
| 8 | EXTERNAL_INTERRUPT, | 10 | EXTERNAL_INTERRUPT, |
| 9 | IO_INTERRUPT, | 11 | IO_INTERRUPT, |
| 10 | EXTINT_CLK, | 12 | NR_IRQS |
| 11 | EXTINT_EXC, | 13 | }; |
| 12 | EXTINT_EMS, | 14 | |
| 13 | EXTINT_TMR, | 15 | enum interruption_class { |
| 14 | EXTINT_TLA, | 16 | IRQEXT_CLK, |
| 15 | EXTINT_PFL, | 17 | IRQEXT_EXC, |
| 16 | EXTINT_DSD, | 18 | IRQEXT_EMS, |
| 17 | EXTINT_VRT, | 19 | IRQEXT_TMR, |
| 18 | EXTINT_SCP, | 20 | IRQEXT_TLA, |
| 19 | EXTINT_IUC, | 21 | IRQEXT_PFL, |
| 20 | EXTINT_CMS, | 22 | IRQEXT_DSD, |
| 21 | EXTINT_CMC, | 23 | IRQEXT_VRT, |
| 22 | EXTINT_CMR, | 24 | IRQEXT_SCP, |
| 23 | IOINT_CIO, | 25 | IRQEXT_IUC, |
| 24 | IOINT_QAI, | 26 | IRQEXT_CMS, |
| 25 | IOINT_DAS, | 27 | IRQEXT_CMC, |
| 26 | IOINT_C15, | 28 | IRQEXT_CMR, |
| 27 | IOINT_C70, | 29 | IRQIO_CIO, |
| 28 | IOINT_TAP, | 30 | IRQIO_QAI, |
| 29 | IOINT_VMR, | 31 | IRQIO_DAS, |
| 30 | IOINT_LCS, | 32 | IRQIO_C15, |
| 31 | IOINT_CLW, | 33 | IRQIO_C70, |
| 32 | IOINT_CTC, | 34 | IRQIO_TAP, |
| 33 | IOINT_APB, | 35 | IRQIO_VMR, |
| 34 | IOINT_ADM, | 36 | IRQIO_LCS, |
| 35 | IOINT_CSC, | 37 | IRQIO_CLW, |
| 36 | IOINT_PCI, | 38 | IRQIO_CTC, |
| 37 | IOINT_MSI, | 39 | IRQIO_APB, |
| 40 | IRQIO_ADM, | ||
| 41 | IRQIO_CSC, | ||
| 42 | IRQIO_PCI, | ||
| 43 | IRQIO_MSI, | ||
| 38 | NMI_NMI, | 44 | NMI_NMI, |
| 39 | NR_IRQS, | 45 | CPU_RST, |
| 46 | NR_ARCH_IRQS | ||
| 40 | }; | 47 | }; |
| 41 | 48 | ||
| 49 | struct irq_stat { | ||
| 50 | unsigned int irqs[NR_ARCH_IRQS]; | ||
| 51 | }; | ||
| 52 | |||
| 53 | DECLARE_PER_CPU_SHARED_ALIGNED(struct irq_stat, irq_stat); | ||
| 54 | |||
| 55 | static __always_inline void inc_irq_stat(enum interruption_class irq) | ||
| 56 | { | ||
| 57 | __get_cpu_var(irq_stat).irqs[irq]++; | ||
| 58 | } | ||
| 59 | |||
| 42 | struct ext_code { | 60 | struct ext_code { |
| 43 | unsigned short subcode; | 61 | unsigned short subcode; |
| 44 | unsigned short code; | 62 | unsigned short code; |
diff --git a/arch/s390/include/asm/pgtable.h b/arch/s390/include/asm/pgtable.h index c928dc1938f2..098adbb62660 100644 --- a/arch/s390/include/asm/pgtable.h +++ b/arch/s390/include/asm/pgtable.h | |||
| @@ -1365,6 +1365,18 @@ static inline void pmdp_invalidate(struct vm_area_struct *vma, | |||
| 1365 | __pmd_idte(address, pmdp); | 1365 | __pmd_idte(address, pmdp); |
| 1366 | } | 1366 | } |
| 1367 | 1367 | ||
| 1368 | #define __HAVE_ARCH_PMDP_SET_WRPROTECT | ||
| 1369 | static inline void pmdp_set_wrprotect(struct mm_struct *mm, | ||
| 1370 | unsigned long address, pmd_t *pmdp) | ||
| 1371 | { | ||
| 1372 | pmd_t pmd = *pmdp; | ||
| 1373 | |||
| 1374 | if (pmd_write(pmd)) { | ||
| 1375 | __pmd_idte(address, pmdp); | ||
| 1376 | set_pmd_at(mm, address, pmdp, pmd_wrprotect(pmd)); | ||
| 1377 | } | ||
| 1378 | } | ||
| 1379 | |||
| 1368 | static inline pmd_t mk_pmd_phys(unsigned long physpage, pgprot_t pgprot) | 1380 | static inline pmd_t mk_pmd_phys(unsigned long physpage, pgprot_t pgprot) |
| 1369 | { | 1381 | { |
| 1370 | pmd_t __pmd; | 1382 | pmd_t __pmd; |
| @@ -1387,10 +1399,7 @@ static inline int has_transparent_hugepage(void) | |||
| 1387 | 1399 | ||
| 1388 | static inline unsigned long pmd_pfn(pmd_t pmd) | 1400 | static inline unsigned long pmd_pfn(pmd_t pmd) |
| 1389 | { | 1401 | { |
| 1390 | if (pmd_trans_huge(pmd)) | 1402 | return pmd_val(pmd) >> PAGE_SHIFT; |
| 1391 | return pmd_val(pmd) >> HPAGE_SHIFT; | ||
| 1392 | else | ||
| 1393 | return pmd_val(pmd) >> PAGE_SHIFT; | ||
| 1394 | } | 1403 | } |
| 1395 | #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ | 1404 | #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ |
| 1396 | 1405 | ||
diff --git a/arch/s390/include/asm/timex.h b/arch/s390/include/asm/timex.h index fba4d66788a2..4c060bb5b8ea 100644 --- a/arch/s390/include/asm/timex.h +++ b/arch/s390/include/asm/timex.h | |||
| @@ -128,4 +128,32 @@ static inline unsigned long long get_clock_monotonic(void) | |||
| 128 | return get_clock_xt() - sched_clock_base_cc; | 128 | return get_clock_xt() - sched_clock_base_cc; |
| 129 | } | 129 | } |
| 130 | 130 | ||
| 131 | /** | ||
| 132 | * tod_to_ns - convert a TOD format value to nanoseconds | ||
| 133 | * @todval: to be converted TOD format value | ||
| 134 | * Returns: number of nanoseconds that correspond to the TOD format value | ||
| 135 | * | ||
| 136 | * Converting a 64 Bit TOD format value to nanoseconds means that the value | ||
| 137 | * must be divided by 4.096. In order to achieve that we multiply with 125 | ||
| 138 | * and divide by 512: | ||
| 139 | * | ||
| 140 | * ns = (todval * 125) >> 9; | ||
| 141 | * | ||
| 142 | * In order to avoid an overflow with the multiplication we can rewrite this. | ||
| 143 | * With a split todval == 2^32 * th + tl (th upper 32 bits, tl lower 32 bits) | ||
| 144 | * we end up with | ||
| 145 | * | ||
| 146 | * ns = ((2^32 * th + tl) * 125 ) >> 9; | ||
| 147 | * -> ns = (2^23 * th * 125) + ((tl * 125) >> 9); | ||
| 148 | * | ||
| 149 | */ | ||
| 150 | static inline unsigned long long tod_to_ns(unsigned long long todval) | ||
| 151 | { | ||
| 152 | unsigned long long ns; | ||
| 153 | |||
| 154 | ns = ((todval >> 32) << 23) * 125; | ||
| 155 | ns += ((todval & 0xffffffff) * 125) >> 9; | ||
| 156 | return ns; | ||
| 157 | } | ||
| 158 | |||
| 131 | #endif | 159 | #endif |
diff --git a/arch/s390/include/uapi/asm/unistd.h b/arch/s390/include/uapi/asm/unistd.h index 63e6078699f1..864f693c237f 100644 --- a/arch/s390/include/uapi/asm/unistd.h +++ b/arch/s390/include/uapi/asm/unistd.h | |||
| @@ -279,7 +279,8 @@ | |||
| 279 | #define __NR_process_vm_writev 341 | 279 | #define __NR_process_vm_writev 341 |
| 280 | #define __NR_s390_runtime_instr 342 | 280 | #define __NR_s390_runtime_instr 342 |
| 281 | #define __NR_kcmp 343 | 281 | #define __NR_kcmp 343 |
| 282 | #define NR_syscalls 344 | 282 | #define __NR_finit_module 344 |
| 283 | #define NR_syscalls 345 | ||
| 283 | 284 | ||
| 284 | /* | 285 | /* |
| 285 | * There are some system calls that are not present on 64 bit, some | 286 | * There are some system calls that are not present on 64 bit, some |
diff --git a/arch/s390/kernel/compat_wrapper.S b/arch/s390/kernel/compat_wrapper.S index 827e094a2f49..9b9a805656b5 100644 --- a/arch/s390/kernel/compat_wrapper.S +++ b/arch/s390/kernel/compat_wrapper.S | |||
| @@ -1659,3 +1659,9 @@ ENTRY(sys_kcmp_wrapper) | |||
| 1659 | llgfr %r5,%r5 # unsigned long | 1659 | llgfr %r5,%r5 # unsigned long |
| 1660 | llgfr %r6,%r6 # unsigned long | 1660 | llgfr %r6,%r6 # unsigned long |
| 1661 | jg sys_kcmp | 1661 | jg sys_kcmp |
| 1662 | |||
| 1663 | ENTRY(sys_finit_module_wrapper) | ||
| 1664 | lgfr %r2,%r2 # int | ||
| 1665 | llgtr %r3,%r3 # const char __user * | ||
| 1666 | lgfr %r4,%r4 # int | ||
| 1667 | jg sys_finit_module | ||
diff --git a/arch/s390/kernel/debug.c b/arch/s390/kernel/debug.c index ba500d8dc392..4e8215e0d4b6 100644 --- a/arch/s390/kernel/debug.c +++ b/arch/s390/kernel/debug.c | |||
| @@ -1127,13 +1127,14 @@ debug_register_view(debug_info_t * id, struct debug_view *view) | |||
| 1127 | if (i == DEBUG_MAX_VIEWS) { | 1127 | if (i == DEBUG_MAX_VIEWS) { |
| 1128 | pr_err("Registering view %s/%s would exceed the maximum " | 1128 | pr_err("Registering view %s/%s would exceed the maximum " |
| 1129 | "number of views %i\n", id->name, view->name, i); | 1129 | "number of views %i\n", id->name, view->name, i); |
| 1130 | debugfs_remove(pde); | ||
| 1131 | rc = -1; | 1130 | rc = -1; |
| 1132 | } else { | 1131 | } else { |
| 1133 | id->views[i] = view; | 1132 | id->views[i] = view; |
| 1134 | id->debugfs_entries[i] = pde; | 1133 | id->debugfs_entries[i] = pde; |
| 1135 | } | 1134 | } |
| 1136 | spin_unlock_irqrestore(&id->lock, flags); | 1135 | spin_unlock_irqrestore(&id->lock, flags); |
| 1136 | if (rc) | ||
| 1137 | debugfs_remove(pde); | ||
| 1137 | out: | 1138 | out: |
| 1138 | return rc; | 1139 | return rc; |
| 1139 | } | 1140 | } |
| @@ -1146,9 +1147,9 @@ EXPORT_SYMBOL(debug_register_view); | |||
| 1146 | int | 1147 | int |
| 1147 | debug_unregister_view(debug_info_t * id, struct debug_view *view) | 1148 | debug_unregister_view(debug_info_t * id, struct debug_view *view) |
| 1148 | { | 1149 | { |
| 1149 | int rc = 0; | 1150 | struct dentry *dentry = NULL; |
| 1150 | int i; | ||
| 1151 | unsigned long flags; | 1151 | unsigned long flags; |
| 1152 | int i, rc = 0; | ||
| 1152 | 1153 | ||
| 1153 | if (!id) | 1154 | if (!id) |
| 1154 | goto out; | 1155 | goto out; |
| @@ -1160,10 +1161,12 @@ debug_unregister_view(debug_info_t * id, struct debug_view *view) | |||
| 1160 | if (i == DEBUG_MAX_VIEWS) | 1161 | if (i == DEBUG_MAX_VIEWS) |
| 1161 | rc = -1; | 1162 | rc = -1; |
| 1162 | else { | 1163 | else { |
| 1163 | debugfs_remove(id->debugfs_entries[i]); | 1164 | dentry = id->debugfs_entries[i]; |
| 1164 | id->views[i] = NULL; | 1165 | id->views[i] = NULL; |
| 1166 | id->debugfs_entries[i] = NULL; | ||
| 1165 | } | 1167 | } |
| 1166 | spin_unlock_irqrestore(&id->lock, flags); | 1168 | spin_unlock_irqrestore(&id->lock, flags); |
| 1169 | debugfs_remove(dentry); | ||
| 1167 | out: | 1170 | out: |
| 1168 | return rc; | 1171 | return rc; |
| 1169 | } | 1172 | } |
diff --git a/arch/s390/kernel/irq.c b/arch/s390/kernel/irq.c index bf24293970ce..9df824ea1667 100644 --- a/arch/s390/kernel/irq.c +++ b/arch/s390/kernel/irq.c | |||
| @@ -24,43 +24,65 @@ | |||
| 24 | #include <asm/irq.h> | 24 | #include <asm/irq.h> |
| 25 | #include "entry.h" | 25 | #include "entry.h" |
| 26 | 26 | ||
| 27 | DEFINE_PER_CPU_SHARED_ALIGNED(struct irq_stat, irq_stat); | ||
| 28 | EXPORT_PER_CPU_SYMBOL_GPL(irq_stat); | ||
| 29 | |||
| 27 | struct irq_class { | 30 | struct irq_class { |
| 28 | char *name; | 31 | char *name; |
| 29 | char *desc; | 32 | char *desc; |
| 30 | }; | 33 | }; |
| 31 | 34 | ||
| 32 | static const struct irq_class intrclass_names[] = { | 35 | /* |
| 36 | * The list of "main" irq classes on s390. This is the list of interrrupts | ||
| 37 | * that appear both in /proc/stat ("intr" line) and /proc/interrupts. | ||
| 38 | * Historically only external and I/O interrupts have been part of /proc/stat. | ||
| 39 | * We can't add the split external and I/O sub classes since the first field | ||
| 40 | * in the "intr" line in /proc/stat is supposed to be the sum of all other | ||
| 41 | * fields. | ||
| 42 | * Since the external and I/O interrupt fields are already sums we would end | ||
| 43 | * up with having a sum which accounts each interrupt twice. | ||
| 44 | */ | ||
| 45 | static const struct irq_class irqclass_main_desc[NR_IRQS] = { | ||
| 33 | [EXTERNAL_INTERRUPT] = {.name = "EXT"}, | 46 | [EXTERNAL_INTERRUPT] = {.name = "EXT"}, |
| 34 | [IO_INTERRUPT] = {.name = "I/O"}, | 47 | [IO_INTERRUPT] = {.name = "I/O"} |
| 35 | [EXTINT_CLK] = {.name = "CLK", .desc = "[EXT] Clock Comparator"}, | 48 | }; |
| 36 | [EXTINT_EXC] = {.name = "EXC", .desc = "[EXT] External Call"}, | 49 | |
| 37 | [EXTINT_EMS] = {.name = "EMS", .desc = "[EXT] Emergency Signal"}, | 50 | /* |
| 38 | [EXTINT_TMR] = {.name = "TMR", .desc = "[EXT] CPU Timer"}, | 51 | * The list of split external and I/O interrupts that appear only in |
| 39 | [EXTINT_TLA] = {.name = "TAL", .desc = "[EXT] Timing Alert"}, | 52 | * /proc/interrupts. |
| 40 | [EXTINT_PFL] = {.name = "PFL", .desc = "[EXT] Pseudo Page Fault"}, | 53 | * In addition this list contains non external / I/O events like NMIs. |
| 41 | [EXTINT_DSD] = {.name = "DSD", .desc = "[EXT] DASD Diag"}, | 54 | */ |
| 42 | [EXTINT_VRT] = {.name = "VRT", .desc = "[EXT] Virtio"}, | 55 | static const struct irq_class irqclass_sub_desc[NR_ARCH_IRQS] = { |
| 43 | [EXTINT_SCP] = {.name = "SCP", .desc = "[EXT] Service Call"}, | 56 | [IRQEXT_CLK] = {.name = "CLK", .desc = "[EXT] Clock Comparator"}, |
| 44 | [EXTINT_IUC] = {.name = "IUC", .desc = "[EXT] IUCV"}, | 57 | [IRQEXT_EXC] = {.name = "EXC", .desc = "[EXT] External Call"}, |
| 45 | [EXTINT_CMS] = {.name = "CMS", .desc = "[EXT] CPU-Measurement: Sampling"}, | 58 | [IRQEXT_EMS] = {.name = "EMS", .desc = "[EXT] Emergency Signal"}, |
| 46 | [EXTINT_CMC] = {.name = "CMC", .desc = "[EXT] CPU-Measurement: Counter"}, | 59 | [IRQEXT_TMR] = {.name = "TMR", .desc = "[EXT] CPU Timer"}, |
| 47 | [EXTINT_CMR] = {.name = "CMR", .desc = "[EXT] CPU-Measurement: RI"}, | 60 | [IRQEXT_TLA] = {.name = "TAL", .desc = "[EXT] Timing Alert"}, |
| 48 | [IOINT_CIO] = {.name = "CIO", .desc = "[I/O] Common I/O Layer Interrupt"}, | 61 | [IRQEXT_PFL] = {.name = "PFL", .desc = "[EXT] Pseudo Page Fault"}, |
| 49 | [IOINT_QAI] = {.name = "QAI", .desc = "[I/O] QDIO Adapter Interrupt"}, | 62 | [IRQEXT_DSD] = {.name = "DSD", .desc = "[EXT] DASD Diag"}, |
| 50 | [IOINT_DAS] = {.name = "DAS", .desc = "[I/O] DASD"}, | 63 | [IRQEXT_VRT] = {.name = "VRT", .desc = "[EXT] Virtio"}, |
| 51 | [IOINT_C15] = {.name = "C15", .desc = "[I/O] 3215"}, | 64 | [IRQEXT_SCP] = {.name = "SCP", .desc = "[EXT] Service Call"}, |
| 52 | [IOINT_C70] = {.name = "C70", .desc = "[I/O] 3270"}, | 65 | [IRQEXT_IUC] = {.name = "IUC", .desc = "[EXT] IUCV"}, |
| 53 | [IOINT_TAP] = {.name = "TAP", .desc = "[I/O] Tape"}, | 66 | [IRQEXT_CMS] = {.name = "CMS", .desc = "[EXT] CPU-Measurement: Sampling"}, |
| 54 | [IOINT_VMR] = {.name = "VMR", .desc = "[I/O] Unit Record Devices"}, | 67 | [IRQEXT_CMC] = {.name = "CMC", .desc = "[EXT] CPU-Measurement: Counter"}, |
| 55 | [IOINT_LCS] = {.name = "LCS", .desc = "[I/O] LCS"}, | 68 | [IRQEXT_CMR] = {.name = "CMR", .desc = "[EXT] CPU-Measurement: RI"}, |
| 56 | [IOINT_CLW] = {.name = "CLW", .desc = "[I/O] CLAW"}, | 69 | [IRQIO_CIO] = {.name = "CIO", .desc = "[I/O] Common I/O Layer Interrupt"}, |
| 57 | [IOINT_CTC] = {.name = "CTC", .desc = "[I/O] CTC"}, | 70 | [IRQIO_QAI] = {.name = "QAI", .desc = "[I/O] QDIO Adapter Interrupt"}, |
| 58 | [IOINT_APB] = {.name = "APB", .desc = "[I/O] AP Bus"}, | 71 | [IRQIO_DAS] = {.name = "DAS", .desc = "[I/O] DASD"}, |
| 59 | [IOINT_ADM] = {.name = "ADM", .desc = "[I/O] EADM Subchannel"}, | 72 | [IRQIO_C15] = {.name = "C15", .desc = "[I/O] 3215"}, |
| 60 | [IOINT_CSC] = {.name = "CSC", .desc = "[I/O] CHSC Subchannel"}, | 73 | [IRQIO_C70] = {.name = "C70", .desc = "[I/O] 3270"}, |
| 61 | [IOINT_PCI] = {.name = "PCI", .desc = "[I/O] PCI Interrupt" }, | 74 | [IRQIO_TAP] = {.name = "TAP", .desc = "[I/O] Tape"}, |
| 62 | [IOINT_MSI] = {.name = "MSI", .desc = "[I/O] MSI Interrupt" }, | 75 | [IRQIO_VMR] = {.name = "VMR", .desc = "[I/O] Unit Record Devices"}, |
| 76 | [IRQIO_LCS] = {.name = "LCS", .desc = "[I/O] LCS"}, | ||
| 77 | [IRQIO_CLW] = {.name = "CLW", .desc = "[I/O] CLAW"}, | ||
| 78 | [IRQIO_CTC] = {.name = "CTC", .desc = "[I/O] CTC"}, | ||
| 79 | [IRQIO_APB] = {.name = "APB", .desc = "[I/O] AP Bus"}, | ||
| 80 | [IRQIO_ADM] = {.name = "ADM", .desc = "[I/O] EADM Subchannel"}, | ||
| 81 | [IRQIO_CSC] = {.name = "CSC", .desc = "[I/O] CHSC Subchannel"}, | ||
| 82 | [IRQIO_PCI] = {.name = "PCI", .desc = "[I/O] PCI Interrupt" }, | ||
| 83 | [IRQIO_MSI] = {.name = "MSI", .desc = "[I/O] MSI Interrupt" }, | ||
| 63 | [NMI_NMI] = {.name = "NMI", .desc = "[NMI] Machine Check"}, | 84 | [NMI_NMI] = {.name = "NMI", .desc = "[NMI] Machine Check"}, |
| 85 | [CPU_RST] = {.name = "RST", .desc = "[CPU] CPU Restart"}, | ||
| 64 | }; | 86 | }; |
| 65 | 87 | ||
| 66 | /* | 88 | /* |
| @@ -68,30 +90,34 @@ static const struct irq_class intrclass_names[] = { | |||
| 68 | */ | 90 | */ |
| 69 | int show_interrupts(struct seq_file *p, void *v) | 91 | int show_interrupts(struct seq_file *p, void *v) |
| 70 | { | 92 | { |
| 71 | int i = *(loff_t *) v, j; | 93 | int irq = *(loff_t *) v; |
| 94 | int cpu; | ||
| 72 | 95 | ||
| 73 | get_online_cpus(); | 96 | get_online_cpus(); |
| 74 | if (i == 0) { | 97 | if (irq == 0) { |
| 75 | seq_puts(p, " "); | 98 | seq_puts(p, " "); |
| 76 | for_each_online_cpu(j) | 99 | for_each_online_cpu(cpu) |
| 77 | seq_printf(p, "CPU%d ",j); | 100 | seq_printf(p, "CPU%d ", cpu); |
| 78 | seq_putc(p, '\n'); | 101 | seq_putc(p, '\n'); |
| 79 | } | 102 | } |
| 80 | 103 | if (irq < NR_IRQS) { | |
| 81 | if (i < NR_IRQS) { | 104 | seq_printf(p, "%s: ", irqclass_main_desc[irq].name); |
| 82 | seq_printf(p, "%s: ", intrclass_names[i].name); | 105 | for_each_online_cpu(cpu) |
| 83 | #ifndef CONFIG_SMP | 106 | seq_printf(p, "%10u ", kstat_cpu(cpu).irqs[irq]); |
| 84 | seq_printf(p, "%10u ", kstat_irqs(i)); | 107 | seq_putc(p, '\n'); |
| 85 | #else | 108 | goto skip_arch_irqs; |
| 86 | for_each_online_cpu(j) | 109 | } |
| 87 | seq_printf(p, "%10u ", kstat_cpu(j).irqs[i]); | 110 | for (irq = 0; irq < NR_ARCH_IRQS; irq++) { |
| 88 | #endif | 111 | seq_printf(p, "%s: ", irqclass_sub_desc[irq].name); |
| 89 | if (intrclass_names[i].desc) | 112 | for_each_online_cpu(cpu) |
| 90 | seq_printf(p, " %s", intrclass_names[i].desc); | 113 | seq_printf(p, "%10u ", per_cpu(irq_stat, cpu).irqs[irq]); |
| 91 | seq_putc(p, '\n'); | 114 | if (irqclass_sub_desc[irq].desc) |
| 92 | } | 115 | seq_printf(p, " %s", irqclass_sub_desc[irq].desc); |
| 116 | seq_putc(p, '\n'); | ||
| 117 | } | ||
| 118 | skip_arch_irqs: | ||
| 93 | put_online_cpus(); | 119 | put_online_cpus(); |
| 94 | return 0; | 120 | return 0; |
| 95 | } | 121 | } |
| 96 | 122 | ||
| 97 | /* | 123 | /* |
| @@ -222,7 +248,7 @@ void __irq_entry do_extint(struct pt_regs *regs, struct ext_code ext_code, | |||
| 222 | /* Serve timer interrupts first. */ | 248 | /* Serve timer interrupts first. */ |
| 223 | clock_comparator_work(); | 249 | clock_comparator_work(); |
| 224 | } | 250 | } |
| 225 | kstat_cpu(smp_processor_id()).irqs[EXTERNAL_INTERRUPT]++; | 251 | kstat_incr_irqs_this_cpu(EXTERNAL_INTERRUPT, NULL); |
| 226 | if (ext_code.code != 0x1004) | 252 | if (ext_code.code != 0x1004) |
| 227 | __get_cpu_var(s390_idle).nohz_delay = 1; | 253 | __get_cpu_var(s390_idle).nohz_delay = 1; |
| 228 | 254 | ||
diff --git a/arch/s390/kernel/nmi.c b/arch/s390/kernel/nmi.c index a6daa5c5cdb0..7918fbea36bb 100644 --- a/arch/s390/kernel/nmi.c +++ b/arch/s390/kernel/nmi.c | |||
| @@ -254,7 +254,7 @@ void notrace s390_do_machine_check(struct pt_regs *regs) | |||
| 254 | int umode; | 254 | int umode; |
| 255 | 255 | ||
| 256 | nmi_enter(); | 256 | nmi_enter(); |
| 257 | kstat_cpu(smp_processor_id()).irqs[NMI_NMI]++; | 257 | inc_irq_stat(NMI_NMI); |
| 258 | mci = (struct mci *) &S390_lowcore.mcck_interruption_code; | 258 | mci = (struct mci *) &S390_lowcore.mcck_interruption_code; |
| 259 | mcck = &__get_cpu_var(cpu_mcck); | 259 | mcck = &__get_cpu_var(cpu_mcck); |
| 260 | umode = user_mode(regs); | 260 | umode = user_mode(regs); |
diff --git a/arch/s390/kernel/perf_cpum_cf.c b/arch/s390/kernel/perf_cpum_cf.c index c4e7269d4a09..86ec7447e1f5 100644 --- a/arch/s390/kernel/perf_cpum_cf.c +++ b/arch/s390/kernel/perf_cpum_cf.c | |||
| @@ -229,7 +229,7 @@ static void cpumf_measurement_alert(struct ext_code ext_code, | |||
| 229 | if (!(alert & CPU_MF_INT_CF_MASK)) | 229 | if (!(alert & CPU_MF_INT_CF_MASK)) |
| 230 | return; | 230 | return; |
| 231 | 231 | ||
| 232 | kstat_cpu(smp_processor_id()).irqs[EXTINT_CMC]++; | 232 | inc_irq_stat(IRQEXT_CMC); |
| 233 | cpuhw = &__get_cpu_var(cpu_hw_events); | 233 | cpuhw = &__get_cpu_var(cpu_hw_events); |
| 234 | 234 | ||
| 235 | /* Measurement alerts are shared and might happen when the PMU | 235 | /* Measurement alerts are shared and might happen when the PMU |
diff --git a/arch/s390/kernel/runtime_instr.c b/arch/s390/kernel/runtime_instr.c index 61066f6f71a5..077a99389b07 100644 --- a/arch/s390/kernel/runtime_instr.c +++ b/arch/s390/kernel/runtime_instr.c | |||
| @@ -71,7 +71,7 @@ static void runtime_instr_int_handler(struct ext_code ext_code, | |||
| 71 | if (!(param32 & CPU_MF_INT_RI_MASK)) | 71 | if (!(param32 & CPU_MF_INT_RI_MASK)) |
| 72 | return; | 72 | return; |
| 73 | 73 | ||
| 74 | kstat_cpu(smp_processor_id()).irqs[EXTINT_CMR]++; | 74 | inc_irq_stat(IRQEXT_CMR); |
| 75 | 75 | ||
| 76 | if (!current->thread.ri_cb) | 76 | if (!current->thread.ri_cb) |
| 77 | return; | 77 | return; |
diff --git a/arch/s390/kernel/setup.c b/arch/s390/kernel/setup.c index 2568590973ad..a5360de85ec7 100644 --- a/arch/s390/kernel/setup.c +++ b/arch/s390/kernel/setup.c | |||
| @@ -16,7 +16,7 @@ | |||
| 16 | #define pr_fmt(fmt) KMSG_COMPONENT ": " fmt | 16 | #define pr_fmt(fmt) KMSG_COMPONENT ": " fmt |
| 17 | 17 | ||
| 18 | #include <linux/errno.h> | 18 | #include <linux/errno.h> |
| 19 | #include <linux/module.h> | 19 | #include <linux/export.h> |
| 20 | #include <linux/sched.h> | 20 | #include <linux/sched.h> |
| 21 | #include <linux/kernel.h> | 21 | #include <linux/kernel.h> |
| 22 | #include <linux/memblock.h> | 22 | #include <linux/memblock.h> |
| @@ -289,6 +289,7 @@ void machine_power_off(void) | |||
| 289 | * Dummy power off function. | 289 | * Dummy power off function. |
| 290 | */ | 290 | */ |
| 291 | void (*pm_power_off)(void) = machine_power_off; | 291 | void (*pm_power_off)(void) = machine_power_off; |
| 292 | EXPORT_SYMBOL_GPL(pm_power_off); | ||
| 292 | 293 | ||
| 293 | static int __init early_parse_mem(char *p) | 294 | static int __init early_parse_mem(char *p) |
| 294 | { | 295 | { |
diff --git a/arch/s390/kernel/smp.c b/arch/s390/kernel/smp.c index ea431e551c6b..7433a2f9e5cc 100644 --- a/arch/s390/kernel/smp.c +++ b/arch/s390/kernel/smp.c | |||
| @@ -433,9 +433,9 @@ static void do_ext_call_interrupt(struct ext_code ext_code, | |||
| 433 | 433 | ||
| 434 | cpu = smp_processor_id(); | 434 | cpu = smp_processor_id(); |
| 435 | if (ext_code.code == 0x1202) | 435 | if (ext_code.code == 0x1202) |
| 436 | kstat_cpu(cpu).irqs[EXTINT_EXC]++; | 436 | inc_irq_stat(IRQEXT_EXC); |
| 437 | else | 437 | else |
| 438 | kstat_cpu(cpu).irqs[EXTINT_EMS]++; | 438 | inc_irq_stat(IRQEXT_EMS); |
| 439 | /* | 439 | /* |
| 440 | * handle bit signal external calls | 440 | * handle bit signal external calls |
| 441 | */ | 441 | */ |
| @@ -623,9 +623,9 @@ static struct sclp_cpu_info *smp_get_cpu_info(void) | |||
| 623 | return info; | 623 | return info; |
| 624 | } | 624 | } |
| 625 | 625 | ||
| 626 | static int __devinit smp_add_present_cpu(int cpu); | 626 | static int __cpuinit smp_add_present_cpu(int cpu); |
| 627 | 627 | ||
| 628 | static int __devinit __smp_rescan_cpus(struct sclp_cpu_info *info, | 628 | static int __cpuinit __smp_rescan_cpus(struct sclp_cpu_info *info, |
| 629 | int sysfs_add) | 629 | int sysfs_add) |
| 630 | { | 630 | { |
| 631 | struct pcpu *pcpu; | 631 | struct pcpu *pcpu; |
| @@ -709,6 +709,7 @@ static void __cpuinit smp_start_secondary(void *cpuvoid) | |||
| 709 | pfault_init(); | 709 | pfault_init(); |
| 710 | notify_cpu_starting(smp_processor_id()); | 710 | notify_cpu_starting(smp_processor_id()); |
| 711 | set_cpu_online(smp_processor_id(), true); | 711 | set_cpu_online(smp_processor_id(), true); |
| 712 | inc_irq_stat(CPU_RST); | ||
| 712 | local_irq_enable(); | 713 | local_irq_enable(); |
| 713 | /* cpu_idle will call schedule for us */ | 714 | /* cpu_idle will call schedule for us */ |
| 714 | cpu_idle(); | 715 | cpu_idle(); |
| @@ -986,7 +987,7 @@ static int __cpuinit smp_cpu_notify(struct notifier_block *self, | |||
| 986 | return notifier_from_errno(err); | 987 | return notifier_from_errno(err); |
| 987 | } | 988 | } |
| 988 | 989 | ||
| 989 | static int __devinit smp_add_present_cpu(int cpu) | 990 | static int __cpuinit smp_add_present_cpu(int cpu) |
| 990 | { | 991 | { |
| 991 | struct cpu *c = &pcpu_devices[cpu].cpu; | 992 | struct cpu *c = &pcpu_devices[cpu].cpu; |
| 992 | struct device *s = &c->dev; | 993 | struct device *s = &c->dev; |
diff --git a/arch/s390/kernel/syscalls.S b/arch/s390/kernel/syscalls.S index 48174850f3b0..6a6c61f94dd3 100644 --- a/arch/s390/kernel/syscalls.S +++ b/arch/s390/kernel/syscalls.S | |||
| @@ -352,3 +352,4 @@ SYSCALL(sys_process_vm_readv,sys_process_vm_readv,compat_sys_process_vm_readv_wr | |||
| 352 | SYSCALL(sys_process_vm_writev,sys_process_vm_writev,compat_sys_process_vm_writev_wrapper) | 352 | SYSCALL(sys_process_vm_writev,sys_process_vm_writev,compat_sys_process_vm_writev_wrapper) |
| 353 | SYSCALL(sys_ni_syscall,sys_s390_runtime_instr,sys_s390_runtime_instr_wrapper) | 353 | SYSCALL(sys_ni_syscall,sys_s390_runtime_instr,sys_s390_runtime_instr_wrapper) |
| 354 | SYSCALL(sys_kcmp,sys_kcmp,sys_kcmp_wrapper) | 354 | SYSCALL(sys_kcmp,sys_kcmp,sys_kcmp_wrapper) |
| 355 | SYSCALL(sys_finit_module,sys_finit_module,sys_finit_module_wrapper) | ||
diff --git a/arch/s390/kernel/time.c b/arch/s390/kernel/time.c index 7fcd690d42c7..a5f4f5a1d24b 100644 --- a/arch/s390/kernel/time.c +++ b/arch/s390/kernel/time.c | |||
| @@ -63,7 +63,7 @@ static DEFINE_PER_CPU(struct clock_event_device, comparators); | |||
| 63 | */ | 63 | */ |
| 64 | unsigned long long notrace __kprobes sched_clock(void) | 64 | unsigned long long notrace __kprobes sched_clock(void) |
| 65 | { | 65 | { |
| 66 | return (get_clock_monotonic() * 125) >> 9; | 66 | return tod_to_ns(get_clock_monotonic()); |
| 67 | } | 67 | } |
| 68 | 68 | ||
| 69 | /* | 69 | /* |
| @@ -168,7 +168,7 @@ static void clock_comparator_interrupt(struct ext_code ext_code, | |||
| 168 | unsigned int param32, | 168 | unsigned int param32, |
| 169 | unsigned long param64) | 169 | unsigned long param64) |
| 170 | { | 170 | { |
| 171 | kstat_cpu(smp_processor_id()).irqs[EXTINT_CLK]++; | 171 | inc_irq_stat(IRQEXT_CLK); |
| 172 | if (S390_lowcore.clock_comparator == -1ULL) | 172 | if (S390_lowcore.clock_comparator == -1ULL) |
| 173 | set_clock_comparator(S390_lowcore.clock_comparator); | 173 | set_clock_comparator(S390_lowcore.clock_comparator); |
| 174 | } | 174 | } |
| @@ -179,7 +179,7 @@ static void stp_timing_alert(struct stp_irq_parm *); | |||
| 179 | static void timing_alert_interrupt(struct ext_code ext_code, | 179 | static void timing_alert_interrupt(struct ext_code ext_code, |
| 180 | unsigned int param32, unsigned long param64) | 180 | unsigned int param32, unsigned long param64) |
| 181 | { | 181 | { |
| 182 | kstat_cpu(smp_processor_id()).irqs[EXTINT_TLA]++; | 182 | inc_irq_stat(IRQEXT_TLA); |
| 183 | if (param32 & 0x00c40000) | 183 | if (param32 & 0x00c40000) |
| 184 | etr_timing_alert((struct etr_irq_parm *) ¶m32); | 184 | etr_timing_alert((struct etr_irq_parm *) ¶m32); |
| 185 | if (param32 & 0x00038000) | 185 | if (param32 & 0x00038000) |
diff --git a/arch/s390/kernel/topology.c b/arch/s390/kernel/topology.c index f1aba87cceb8..4b2e3e317004 100644 --- a/arch/s390/kernel/topology.c +++ b/arch/s390/kernel/topology.c | |||
| @@ -10,6 +10,7 @@ | |||
| 10 | #include <linux/bootmem.h> | 10 | #include <linux/bootmem.h> |
| 11 | #include <linux/cpuset.h> | 11 | #include <linux/cpuset.h> |
| 12 | #include <linux/device.h> | 12 | #include <linux/device.h> |
| 13 | #include <linux/export.h> | ||
| 13 | #include <linux/kernel.h> | 14 | #include <linux/kernel.h> |
| 14 | #include <linux/sched.h> | 15 | #include <linux/sched.h> |
| 15 | #include <linux/init.h> | 16 | #include <linux/init.h> |
| @@ -42,6 +43,7 @@ static struct mask_info socket_info; | |||
| 42 | static struct mask_info book_info; | 43 | static struct mask_info book_info; |
| 43 | 44 | ||
| 44 | struct cpu_topology_s390 cpu_topology[NR_CPUS]; | 45 | struct cpu_topology_s390 cpu_topology[NR_CPUS]; |
| 46 | EXPORT_SYMBOL_GPL(cpu_topology); | ||
| 45 | 47 | ||
| 46 | static cpumask_t cpu_group_map(struct mask_info *info, unsigned int cpu) | 48 | static cpumask_t cpu_group_map(struct mask_info *info, unsigned int cpu) |
| 47 | { | 49 | { |
diff --git a/arch/s390/kvm/interrupt.c b/arch/s390/kvm/interrupt.c index c30615e605ac..82c481ddef76 100644 --- a/arch/s390/kvm/interrupt.c +++ b/arch/s390/kvm/interrupt.c | |||
| @@ -408,7 +408,7 @@ int kvm_s390_handle_wait(struct kvm_vcpu *vcpu) | |||
| 408 | return 0; | 408 | return 0; |
| 409 | } | 409 | } |
| 410 | 410 | ||
| 411 | sltime = ((vcpu->arch.sie_block->ckc - now)*125)>>9; | 411 | sltime = tod_to_ns(vcpu->arch.sie_block->ckc - now); |
| 412 | 412 | ||
| 413 | hrtimer_start(&vcpu->arch.ckc_timer, ktime_set (0, sltime) , HRTIMER_MODE_REL); | 413 | hrtimer_start(&vcpu->arch.ckc_timer, ktime_set (0, sltime) , HRTIMER_MODE_REL); |
| 414 | VCPU_EVENT(vcpu, 5, "enabled wait via clock comparator: %llx ns", sltime); | 414 | VCPU_EVENT(vcpu, 5, "enabled wait via clock comparator: %llx ns", sltime); |
diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c index c9011bfaabbe..f090e819bf71 100644 --- a/arch/s390/kvm/kvm-s390.c +++ b/arch/s390/kvm/kvm-s390.c | |||
| @@ -613,7 +613,9 @@ static int __vcpu_run(struct kvm_vcpu *vcpu) | |||
| 613 | kvm_s390_deliver_pending_interrupts(vcpu); | 613 | kvm_s390_deliver_pending_interrupts(vcpu); |
| 614 | 614 | ||
| 615 | vcpu->arch.sie_block->icptcode = 0; | 615 | vcpu->arch.sie_block->icptcode = 0; |
| 616 | preempt_disable(); | ||
| 616 | kvm_guest_enter(); | 617 | kvm_guest_enter(); |
| 618 | preempt_enable(); | ||
| 617 | VCPU_EVENT(vcpu, 6, "entering sie flags %x", | 619 | VCPU_EVENT(vcpu, 6, "entering sie flags %x", |
| 618 | atomic_read(&vcpu->arch.sie_block->cpuflags)); | 620 | atomic_read(&vcpu->arch.sie_block->cpuflags)); |
| 619 | trace_kvm_s390_sie_enter(vcpu, | 621 | trace_kvm_s390_sie_enter(vcpu, |
diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c index 42601d6e166f..2fb9e63b8fc4 100644 --- a/arch/s390/mm/fault.c +++ b/arch/s390/mm/fault.c | |||
| @@ -569,7 +569,7 @@ static void pfault_interrupt(struct ext_code ext_code, | |||
| 569 | subcode = ext_code.subcode; | 569 | subcode = ext_code.subcode; |
| 570 | if ((subcode & 0xff00) != __SUBCODE_MASK) | 570 | if ((subcode & 0xff00) != __SUBCODE_MASK) |
| 571 | return; | 571 | return; |
| 572 | kstat_cpu(smp_processor_id()).irqs[EXTINT_PFL]++; | 572 | inc_irq_stat(IRQEXT_PFL); |
| 573 | /* Get the token (= pid of the affected task). */ | 573 | /* Get the token (= pid of the affected task). */ |
| 574 | pid = sizeof(void *) == 4 ? param32 : param64; | 574 | pid = sizeof(void *) == 4 ? param32 : param64; |
| 575 | rcu_read_lock(); | 575 | rcu_read_lock(); |
diff --git a/arch/s390/oprofile/hwsampler.c b/arch/s390/oprofile/hwsampler.c index 0cb385da202c..b5b2916895e0 100644 --- a/arch/s390/oprofile/hwsampler.c +++ b/arch/s390/oprofile/hwsampler.c | |||
| @@ -233,7 +233,7 @@ static void hws_ext_handler(struct ext_code ext_code, | |||
| 233 | if (!(param32 & CPU_MF_INT_SF_MASK)) | 233 | if (!(param32 & CPU_MF_INT_SF_MASK)) |
| 234 | return; | 234 | return; |
| 235 | 235 | ||
| 236 | kstat_cpu(smp_processor_id()).irqs[EXTINT_CMS]++; | 236 | inc_irq_stat(IRQEXT_CMS); |
| 237 | atomic_xchg(&cb->ext_params, atomic_read(&cb->ext_params) | param32); | 237 | atomic_xchg(&cb->ext_params, atomic_read(&cb->ext_params) | param32); |
| 238 | 238 | ||
| 239 | if (hws_wq) | 239 | if (hws_wq) |
diff --git a/arch/s390/pci/pci.c b/arch/s390/pci/pci.c index 8fa416b8775f..60e0372545d2 100644 --- a/arch/s390/pci/pci.c +++ b/arch/s390/pci/pci.c | |||
| @@ -160,35 +160,6 @@ int pci_proc_domain(struct pci_bus *bus) | |||
| 160 | } | 160 | } |
| 161 | EXPORT_SYMBOL_GPL(pci_proc_domain); | 161 | EXPORT_SYMBOL_GPL(pci_proc_domain); |
| 162 | 162 | ||
| 163 | /* Store PCI function information block */ | ||
| 164 | static int zpci_store_fib(struct zpci_dev *zdev, u8 *fc) | ||
| 165 | { | ||
| 166 | struct zpci_fib *fib; | ||
| 167 | u8 status, cc; | ||
| 168 | |||
| 169 | fib = (void *) get_zeroed_page(GFP_KERNEL); | ||
| 170 | if (!fib) | ||
| 171 | return -ENOMEM; | ||
| 172 | |||
| 173 | do { | ||
| 174 | cc = __stpcifc(zdev->fh, 0, fib, &status); | ||
| 175 | if (cc == 2) { | ||
| 176 | msleep(ZPCI_INSN_BUSY_DELAY); | ||
| 177 | memset(fib, 0, PAGE_SIZE); | ||
| 178 | } | ||
| 179 | } while (cc == 2); | ||
| 180 | |||
| 181 | if (cc) | ||
| 182 | pr_err_once("%s: cc: %u status: %u\n", | ||
| 183 | __func__, cc, status); | ||
| 184 | |||
| 185 | /* Return PCI function controls */ | ||
| 186 | *fc = fib->fc; | ||
| 187 | |||
| 188 | free_page((unsigned long) fib); | ||
| 189 | return (cc) ? -EIO : 0; | ||
| 190 | } | ||
| 191 | |||
| 192 | /* Modify PCI: Register adapter interruptions */ | 163 | /* Modify PCI: Register adapter interruptions */ |
| 193 | static int zpci_register_airq(struct zpci_dev *zdev, unsigned int aisb, | 164 | static int zpci_register_airq(struct zpci_dev *zdev, unsigned int aisb, |
| 194 | u64 aibv) | 165 | u64 aibv) |
| @@ -385,7 +356,7 @@ unsigned int probe_irq_mask(unsigned long val) | |||
| 385 | } | 356 | } |
| 386 | EXPORT_SYMBOL_GPL(probe_irq_mask); | 357 | EXPORT_SYMBOL_GPL(probe_irq_mask); |
| 387 | 358 | ||
| 388 | void __devinit pcibios_fixup_bus(struct pci_bus *bus) | 359 | void pcibios_fixup_bus(struct pci_bus *bus) |
| 389 | { | 360 | { |
| 390 | } | 361 | } |
| 391 | 362 | ||
| @@ -469,7 +440,7 @@ static void zpci_irq_handler(void *dont, void *need) | |||
| 469 | int rescan = 0, max = aisb_max; | 440 | int rescan = 0, max = aisb_max; |
| 470 | struct zdev_irq_map *imap; | 441 | struct zdev_irq_map *imap; |
| 471 | 442 | ||
| 472 | kstat_cpu(smp_processor_id()).irqs[IOINT_PCI]++; | 443 | inc_irq_stat(IRQIO_PCI); |
| 473 | sbit = start; | 444 | sbit = start; |
| 474 | 445 | ||
| 475 | scan: | 446 | scan: |
| @@ -481,7 +452,7 @@ scan: | |||
| 481 | /* find vector bit */ | 452 | /* find vector bit */ |
| 482 | imap = bucket->imap[sbit]; | 453 | imap = bucket->imap[sbit]; |
| 483 | for_each_set_bit_left(mbit, &imap->aibv, imap->msi_vecs) { | 454 | for_each_set_bit_left(mbit, &imap->aibv, imap->msi_vecs) { |
| 484 | kstat_cpu(smp_processor_id()).irqs[IOINT_MSI]++; | 455 | inc_irq_stat(IRQIO_MSI); |
| 485 | clear_bit(63 - mbit, &imap->aibv); | 456 | clear_bit(63 - mbit, &imap->aibv); |
| 486 | 457 | ||
| 487 | spin_lock(&imap->lock); | 458 | spin_lock(&imap->lock); |
diff --git a/arch/s390/pci/pci_dma.c b/arch/s390/pci/pci_dma.c index 6138468b420f..a547419907c3 100644 --- a/arch/s390/pci/pci_dma.c +++ b/arch/s390/pci/pci_dma.c | |||
| @@ -13,8 +13,6 @@ | |||
| 13 | #include <linux/pci.h> | 13 | #include <linux/pci.h> |
| 14 | #include <asm/pci_dma.h> | 14 | #include <asm/pci_dma.h> |
| 15 | 15 | ||
| 16 | static enum zpci_ioat_dtype zpci_ioat_dt = ZPCI_IOTA_RTTO; | ||
| 17 | |||
| 18 | static struct kmem_cache *dma_region_table_cache; | 16 | static struct kmem_cache *dma_region_table_cache; |
| 19 | static struct kmem_cache *dma_page_table_cache; | 17 | static struct kmem_cache *dma_page_table_cache; |
| 20 | 18 | ||
diff --git a/arch/score/mm/cache.c b/arch/score/mm/cache.c index b25e95743600..f85ec1a7c88e 100644 --- a/arch/score/mm/cache.c +++ b/arch/score/mm/cache.c | |||
| @@ -113,7 +113,7 @@ static inline void setup_protection_map(void) | |||
| 113 | protection_map[15] = PAGE_SHARED; | 113 | protection_map[15] = PAGE_SHARED; |
| 114 | } | 114 | } |
| 115 | 115 | ||
| 116 | void __devinit cpu_cache_init(void) | 116 | void cpu_cache_init(void) |
| 117 | { | 117 | { |
| 118 | setup_protection_map(); | 118 | setup_protection_map(); |
| 119 | } | 119 | } |
diff --git a/arch/sh/boards/mach-ecovec24/setup.c b/arch/sh/boards/mach-ecovec24/setup.c index 3fede4556c91..a0fa5791cd44 100644 --- a/arch/sh/boards/mach-ecovec24/setup.c +++ b/arch/sh/boards/mach-ecovec24/setup.c | |||
| @@ -70,6 +70,16 @@ | |||
| 70 | * OFF-ON : MMC | 70 | * OFF-ON : MMC |
| 71 | */ | 71 | */ |
| 72 | 72 | ||
| 73 | /* | ||
| 74 | * FSI - DA7210 | ||
| 75 | * | ||
| 76 | * it needs amixer settings for playing | ||
| 77 | * | ||
| 78 | * amixer set 'HeadPhone' 80 | ||
| 79 | * amixer set 'Out Mixer Left DAC Left' on | ||
| 80 | * amixer set 'Out Mixer Right DAC Right' on | ||
| 81 | */ | ||
| 82 | |||
| 73 | /* Heartbeat */ | 83 | /* Heartbeat */ |
| 74 | static unsigned char led_pos[] = { 0, 1, 2, 3 }; | 84 | static unsigned char led_pos[] = { 0, 1, 2, 3 }; |
| 75 | 85 | ||
diff --git a/arch/sh/drivers/pci/fixups-dreamcast.c b/arch/sh/drivers/pci/fixups-dreamcast.c index a5fe1b54c952..d6cde700e316 100644 --- a/arch/sh/drivers/pci/fixups-dreamcast.c +++ b/arch/sh/drivers/pci/fixups-dreamcast.c | |||
| @@ -28,7 +28,7 @@ | |||
| 28 | #include <asm/irq.h> | 28 | #include <asm/irq.h> |
| 29 | #include <mach/pci.h> | 29 | #include <mach/pci.h> |
| 30 | 30 | ||
| 31 | static void __devinit gapspci_fixup_resources(struct pci_dev *dev) | 31 | static void gapspci_fixup_resources(struct pci_dev *dev) |
| 32 | { | 32 | { |
| 33 | struct pci_channel *p = dev->sysdata; | 33 | struct pci_channel *p = dev->sysdata; |
| 34 | 34 | ||
diff --git a/arch/sh/drivers/pci/pci.c b/arch/sh/drivers/pci/pci.c index 81e5dafed3e4..102f5d58b037 100644 --- a/arch/sh/drivers/pci/pci.c +++ b/arch/sh/drivers/pci/pci.c | |||
| @@ -32,7 +32,7 @@ static struct pci_channel *hose_head, **hose_tail = &hose_head; | |||
| 32 | 32 | ||
| 33 | static int pci_initialized; | 33 | static int pci_initialized; |
| 34 | 34 | ||
| 35 | static void __devinit pcibios_scanbus(struct pci_channel *hose) | 35 | static void pcibios_scanbus(struct pci_channel *hose) |
| 36 | { | 36 | { |
| 37 | static int next_busno; | 37 | static int next_busno; |
| 38 | static int need_domain_info; | 38 | static int need_domain_info; |
| @@ -82,7 +82,7 @@ static void __devinit pcibios_scanbus(struct pci_channel *hose) | |||
| 82 | DEFINE_RAW_SPINLOCK(pci_config_lock); | 82 | DEFINE_RAW_SPINLOCK(pci_config_lock); |
| 83 | static DEFINE_MUTEX(pci_scan_mutex); | 83 | static DEFINE_MUTEX(pci_scan_mutex); |
| 84 | 84 | ||
| 85 | int __devinit register_pci_controller(struct pci_channel *hose) | 85 | int register_pci_controller(struct pci_channel *hose) |
| 86 | { | 86 | { |
| 87 | int i; | 87 | int i; |
| 88 | 88 | ||
| @@ -156,7 +156,7 @@ subsys_initcall(pcibios_init); | |||
| 156 | * Called after each bus is probed, but before its children | 156 | * Called after each bus is probed, but before its children |
| 157 | * are examined. | 157 | * are examined. |
| 158 | */ | 158 | */ |
| 159 | void __devinit pcibios_fixup_bus(struct pci_bus *bus) | 159 | void pcibios_fixup_bus(struct pci_bus *bus) |
| 160 | { | 160 | { |
| 161 | } | 161 | } |
| 162 | 162 | ||
diff --git a/arch/sh/drivers/pci/pcie-sh7786.c b/arch/sh/drivers/pci/pcie-sh7786.c index 9e702f2f8045..c2c85f6cd738 100644 --- a/arch/sh/drivers/pci/pcie-sh7786.c +++ b/arch/sh/drivers/pci/pcie-sh7786.c | |||
| @@ -132,7 +132,7 @@ static struct clk fixed_pciexclkp = { | |||
| 132 | .rate = 100000000, /* 100 MHz reference clock */ | 132 | .rate = 100000000, /* 100 MHz reference clock */ |
| 133 | }; | 133 | }; |
| 134 | 134 | ||
| 135 | static void __devinit sh7786_pci_fixup(struct pci_dev *dev) | 135 | static void sh7786_pci_fixup(struct pci_dev *dev) |
| 136 | { | 136 | { |
| 137 | /* | 137 | /* |
| 138 | * Prevent enumeration of root complex resources. | 138 | * Prevent enumeration of root complex resources. |
diff --git a/arch/sh/include/asm/elf.h b/arch/sh/include/asm/elf.h index 37924afa8d8a..bf9f44f17c29 100644 --- a/arch/sh/include/asm/elf.h +++ b/arch/sh/include/asm/elf.h | |||
| @@ -203,9 +203,9 @@ extern void __kernel_vsyscall; | |||
| 203 | if (vdso_enabled) \ | 203 | if (vdso_enabled) \ |
| 204 | NEW_AUX_ENT(AT_SYSINFO_EHDR, VDSO_BASE); \ | 204 | NEW_AUX_ENT(AT_SYSINFO_EHDR, VDSO_BASE); \ |
| 205 | else \ | 205 | else \ |
| 206 | NEW_AUX_ENT(AT_IGNORE, 0); | 206 | NEW_AUX_ENT(AT_IGNORE, 0) |
| 207 | #else | 207 | #else |
| 208 | #define VSYSCALL_AUX_ENT | 208 | #define VSYSCALL_AUX_ENT NEW_AUX_ENT(AT_IGNORE, 0) |
| 209 | #endif /* CONFIG_VSYSCALL */ | 209 | #endif /* CONFIG_VSYSCALL */ |
| 210 | 210 | ||
| 211 | #ifdef CONFIG_SH_FPU | 211 | #ifdef CONFIG_SH_FPU |
diff --git a/arch/sh/include/asm/processor_32.h b/arch/sh/include/asm/processor_32.h index b1320d55ca30..e699a12cdcca 100644 --- a/arch/sh/include/asm/processor_32.h +++ b/arch/sh/include/asm/processor_32.h | |||
| @@ -39,7 +39,7 @@ | |||
| 39 | /* This decides where the kernel will search for a free chunk of vm | 39 | /* This decides where the kernel will search for a free chunk of vm |
| 40 | * space during mmap's. | 40 | * space during mmap's. |
| 41 | */ | 41 | */ |
| 42 | #define TASK_UNMAPPED_BASE (TASK_SIZE / 3) | 42 | #define TASK_UNMAPPED_BASE PAGE_ALIGN(TASK_SIZE / 3) |
| 43 | 43 | ||
| 44 | /* | 44 | /* |
| 45 | * Bit of SR register | 45 | * Bit of SR register |
diff --git a/arch/sh/include/asm/processor_64.h b/arch/sh/include/asm/processor_64.h index 1ee8946f0952..1cc7d3197143 100644 --- a/arch/sh/include/asm/processor_64.h +++ b/arch/sh/include/asm/processor_64.h | |||
| @@ -47,7 +47,7 @@ pc; }) | |||
| 47 | /* This decides where the kernel will search for a free chunk of vm | 47 | /* This decides where the kernel will search for a free chunk of vm |
| 48 | * space during mmap's. | 48 | * space during mmap's. |
| 49 | */ | 49 | */ |
| 50 | #define TASK_UNMAPPED_BASE (TASK_SIZE / 3) | 50 | #define TASK_UNMAPPED_BASE PAGE_ALIGN(TASK_SIZE / 3) |
| 51 | 51 | ||
| 52 | /* | 52 | /* |
| 53 | * Bit of SR register | 53 | * Bit of SR register |
diff --git a/arch/sh/include/uapi/asm/unistd_32.h b/arch/sh/include/uapi/asm/unistd_32.h index 9e465f246dc1..d13a1d623736 100644 --- a/arch/sh/include/uapi/asm/unistd_32.h +++ b/arch/sh/include/uapi/asm/unistd_32.h | |||
| @@ -379,7 +379,8 @@ | |||
| 379 | #define __NR_process_vm_readv 365 | 379 | #define __NR_process_vm_readv 365 |
| 380 | #define __NR_process_vm_writev 366 | 380 | #define __NR_process_vm_writev 366 |
| 381 | #define __NR_kcmp 367 | 381 | #define __NR_kcmp 367 |
| 382 | #define __NR_finit_module 368 | ||
| 382 | 383 | ||
| 383 | #define NR_syscalls 368 | 384 | #define NR_syscalls 369 |
| 384 | 385 | ||
| 385 | #endif /* __ASM_SH_UNISTD_32_H */ | 386 | #endif /* __ASM_SH_UNISTD_32_H */ |
diff --git a/arch/sh/include/uapi/asm/unistd_64.h b/arch/sh/include/uapi/asm/unistd_64.h index 8e3a2edd284e..e6820c86e8c7 100644 --- a/arch/sh/include/uapi/asm/unistd_64.h +++ b/arch/sh/include/uapi/asm/unistd_64.h | |||
| @@ -399,7 +399,8 @@ | |||
| 399 | #define __NR_process_vm_readv 376 | 399 | #define __NR_process_vm_readv 376 |
| 400 | #define __NR_process_vm_writev 377 | 400 | #define __NR_process_vm_writev 377 |
| 401 | #define __NR_kcmp 378 | 401 | #define __NR_kcmp 378 |
| 402 | #define __NR_finit_module 379 | ||
| 402 | 403 | ||
| 403 | #define NR_syscalls 379 | 404 | #define NR_syscalls 380 |
| 404 | 405 | ||
| 405 | #endif /* __ASM_SH_UNISTD_64_H */ | 406 | #endif /* __ASM_SH_UNISTD_64_H */ |
diff --git a/arch/sh/kernel/syscalls_32.S b/arch/sh/kernel/syscalls_32.S index fe97ae5e56f1..734234be2f01 100644 --- a/arch/sh/kernel/syscalls_32.S +++ b/arch/sh/kernel/syscalls_32.S | |||
| @@ -385,3 +385,4 @@ ENTRY(sys_call_table) | |||
| 385 | .long sys_process_vm_readv /* 365 */ | 385 | .long sys_process_vm_readv /* 365 */ |
| 386 | .long sys_process_vm_writev | 386 | .long sys_process_vm_writev |
| 387 | .long sys_kcmp | 387 | .long sys_kcmp |
| 388 | .long sys_finit_module | ||
diff --git a/arch/sh/kernel/syscalls_64.S b/arch/sh/kernel/syscalls_64.S index 5c7b1c67bdc1..579fcb9a896b 100644 --- a/arch/sh/kernel/syscalls_64.S +++ b/arch/sh/kernel/syscalls_64.S | |||
| @@ -405,3 +405,4 @@ sys_call_table: | |||
| 405 | .long sys_process_vm_readv | 405 | .long sys_process_vm_readv |
| 406 | .long sys_process_vm_writev | 406 | .long sys_process_vm_writev |
| 407 | .long sys_kcmp | 407 | .long sys_kcmp |
| 408 | .long sys_finit_module | ||
diff --git a/arch/sh/lib/mcount.S b/arch/sh/lib/mcount.S index 60164e65d665..52aa2011d753 100644 --- a/arch/sh/lib/mcount.S +++ b/arch/sh/lib/mcount.S | |||
| @@ -294,6 +294,8 @@ stack_panic: | |||
| 294 | .align 2 | 294 | .align 2 |
| 295 | .L_init_thread_union: | 295 | .L_init_thread_union: |
| 296 | .long init_thread_union | 296 | .long init_thread_union |
| 297 | .L_ebss: | ||
| 298 | .long __bss_stop | ||
| 297 | .Lpanic: | 299 | .Lpanic: |
| 298 | .long panic | 300 | .long panic |
| 299 | .Lpanic_s: | 301 | .Lpanic_s: |
diff --git a/arch/sparc/include/asm/parport.h b/arch/sparc/include/asm/parport.h index cb33608cc68f..c55291e5b83e 100644 --- a/arch/sparc/include/asm/parport.h +++ b/arch/sparc/include/asm/parport.h | |||
| @@ -103,7 +103,7 @@ static inline unsigned int get_dma_residue(unsigned int dmanr) | |||
| 103 | return ebus_dma_residue(&sparc_ebus_dmas[dmanr].info); | 103 | return ebus_dma_residue(&sparc_ebus_dmas[dmanr].info); |
| 104 | } | 104 | } |
| 105 | 105 | ||
| 106 | static int __devinit ecpp_probe(struct platform_device *op) | 106 | static int ecpp_probe(struct platform_device *op) |
| 107 | { | 107 | { |
| 108 | unsigned long base = op->resource[0].start; | 108 | unsigned long base = op->resource[0].start; |
| 109 | unsigned long config = op->resource[1].start; | 109 | unsigned long config = op->resource[1].start; |
| @@ -192,7 +192,7 @@ out_err: | |||
| 192 | return err; | 192 | return err; |
| 193 | } | 193 | } |
| 194 | 194 | ||
| 195 | static int __devexit ecpp_remove(struct platform_device *op) | 195 | static int ecpp_remove(struct platform_device *op) |
| 196 | { | 196 | { |
| 197 | struct parport *p = dev_get_drvdata(&op->dev); | 197 | struct parport *p = dev_get_drvdata(&op->dev); |
| 198 | int slot = p->dma; | 198 | int slot = p->dma; |
| @@ -242,7 +242,7 @@ static struct platform_driver ecpp_driver = { | |||
| 242 | .of_match_table = ecpp_match, | 242 | .of_match_table = ecpp_match, |
| 243 | }, | 243 | }, |
| 244 | .probe = ecpp_probe, | 244 | .probe = ecpp_probe, |
| 245 | .remove = __devexit_p(ecpp_remove), | 245 | .remove = ecpp_remove, |
| 246 | }; | 246 | }; |
| 247 | 247 | ||
| 248 | static int parport_pc_find_nonpci_ports(int autoirq, int autodma) | 248 | static int parport_pc_find_nonpci_ports(int autoirq, int autodma) |
diff --git a/arch/sparc/include/asm/timer_64.h b/arch/sparc/include/asm/timer_64.h index ef3c3682debf..01197d8215c4 100644 --- a/arch/sparc/include/asm/timer_64.h +++ b/arch/sparc/include/asm/timer_64.h | |||
| @@ -24,7 +24,7 @@ struct sparc64_tick_ops { | |||
| 24 | extern struct sparc64_tick_ops *tick_ops; | 24 | extern struct sparc64_tick_ops *tick_ops; |
| 25 | 25 | ||
| 26 | extern unsigned long sparc64_get_clock_tick(unsigned int cpu); | 26 | extern unsigned long sparc64_get_clock_tick(unsigned int cpu); |
| 27 | extern void __devinit setup_sparc64_timer(void); | 27 | extern void setup_sparc64_timer(void); |
| 28 | extern void __init time_init(void); | 28 | extern void __init time_init(void); |
| 29 | 29 | ||
| 30 | #endif /* _SPARC64_TIMER_H */ | 30 | #endif /* _SPARC64_TIMER_H */ |
diff --git a/arch/sparc/include/uapi/asm/unistd.h b/arch/sparc/include/uapi/asm/unistd.h index cac719d1bc5c..62ced589bcf7 100644 --- a/arch/sparc/include/uapi/asm/unistd.h +++ b/arch/sparc/include/uapi/asm/unistd.h | |||
| @@ -407,8 +407,9 @@ | |||
| 407 | #define __NR_process_vm_writev 339 | 407 | #define __NR_process_vm_writev 339 |
| 408 | #define __NR_kern_features 340 | 408 | #define __NR_kern_features 340 |
| 409 | #define __NR_kcmp 341 | 409 | #define __NR_kcmp 341 |
| 410 | #define __NR_finit_module 342 | ||
| 410 | 411 | ||
| 411 | #define NR_syscalls 342 | 412 | #define NR_syscalls 343 |
| 412 | 413 | ||
| 413 | /* Bitmask values returned from kern_features system call. */ | 414 | /* Bitmask values returned from kern_features system call. */ |
| 414 | #define KERN_FEATURE_MIXED_MODE_STACK 0x00000001 | 415 | #define KERN_FEATURE_MIXED_MODE_STACK 0x00000001 |
diff --git a/arch/sparc/kernel/apc.c b/arch/sparc/kernel/apc.c index 812e10bbb0b3..348fa1aeabce 100644 --- a/arch/sparc/kernel/apc.c +++ b/arch/sparc/kernel/apc.c | |||
| @@ -31,7 +31,7 @@ | |||
| 31 | #define APC_DEVNAME "apc" | 31 | #define APC_DEVNAME "apc" |
| 32 | 32 | ||
| 33 | static u8 __iomem *regs; | 33 | static u8 __iomem *regs; |
| 34 | static int apc_no_idle __devinitdata = 0; | 34 | static int apc_no_idle = 0; |
| 35 | 35 | ||
| 36 | #define apc_readb(offs) (sbus_readb(regs+offs)) | 36 | #define apc_readb(offs) (sbus_readb(regs+offs)) |
| 37 | #define apc_writeb(val, offs) (sbus_writeb(val, regs+offs)) | 37 | #define apc_writeb(val, offs) (sbus_writeb(val, regs+offs)) |
| @@ -138,7 +138,7 @@ static const struct file_operations apc_fops = { | |||
| 138 | 138 | ||
| 139 | static struct miscdevice apc_miscdev = { APC_MINOR, APC_DEVNAME, &apc_fops }; | 139 | static struct miscdevice apc_miscdev = { APC_MINOR, APC_DEVNAME, &apc_fops }; |
| 140 | 140 | ||
| 141 | static int __devinit apc_probe(struct platform_device *op) | 141 | static int apc_probe(struct platform_device *op) |
| 142 | { | 142 | { |
| 143 | int err; | 143 | int err; |
| 144 | 144 | ||
diff --git a/arch/sparc/kernel/auxio_64.c b/arch/sparc/kernel/auxio_64.c index 773091ac71a3..86e55778e4af 100644 --- a/arch/sparc/kernel/auxio_64.c +++ b/arch/sparc/kernel/auxio_64.c | |||
| @@ -102,7 +102,7 @@ static const struct of_device_id auxio_match[] = { | |||
| 102 | 102 | ||
| 103 | MODULE_DEVICE_TABLE(of, auxio_match); | 103 | MODULE_DEVICE_TABLE(of, auxio_match); |
| 104 | 104 | ||
| 105 | static int __devinit auxio_probe(struct platform_device *dev) | 105 | static int auxio_probe(struct platform_device *dev) |
| 106 | { | 106 | { |
| 107 | struct device_node *dp = dev->dev.of_node; | 107 | struct device_node *dp = dev->dev.of_node; |
| 108 | unsigned long size; | 108 | unsigned long size; |
diff --git a/arch/sparc/kernel/central.c b/arch/sparc/kernel/central.c index 9708851a8b9f..052b5a44318f 100644 --- a/arch/sparc/kernel/central.c +++ b/arch/sparc/kernel/central.c | |||
| @@ -33,7 +33,7 @@ struct fhc { | |||
| 33 | struct platform_device leds_pdev; | 33 | struct platform_device leds_pdev; |
| 34 | }; | 34 | }; |
| 35 | 35 | ||
| 36 | static int __devinit clock_board_calc_nslots(struct clock_board *p) | 36 | static int clock_board_calc_nslots(struct clock_board *p) |
| 37 | { | 37 | { |
| 38 | u8 reg = upa_readb(p->clock_regs + CLOCK_STAT1) & 0xc0; | 38 | u8 reg = upa_readb(p->clock_regs + CLOCK_STAT1) & 0xc0; |
| 39 | 39 | ||
| @@ -60,7 +60,7 @@ static int __devinit clock_board_calc_nslots(struct clock_board *p) | |||
| 60 | } | 60 | } |
| 61 | } | 61 | } |
| 62 | 62 | ||
| 63 | static int __devinit clock_board_probe(struct platform_device *op) | 63 | static int clock_board_probe(struct platform_device *op) |
| 64 | { | 64 | { |
| 65 | struct clock_board *p = kzalloc(sizeof(*p), GFP_KERNEL); | 65 | struct clock_board *p = kzalloc(sizeof(*p), GFP_KERNEL); |
| 66 | int err = -ENOMEM; | 66 | int err = -ENOMEM; |
| @@ -157,7 +157,7 @@ static struct platform_driver clock_board_driver = { | |||
| 157 | }, | 157 | }, |
| 158 | }; | 158 | }; |
| 159 | 159 | ||
| 160 | static int __devinit fhc_probe(struct platform_device *op) | 160 | static int fhc_probe(struct platform_device *op) |
| 161 | { | 161 | { |
| 162 | struct fhc *p = kzalloc(sizeof(*p), GFP_KERNEL); | 162 | struct fhc *p = kzalloc(sizeof(*p), GFP_KERNEL); |
| 163 | int err = -ENOMEM; | 163 | int err = -ENOMEM; |
diff --git a/arch/sparc/kernel/chmc.c b/arch/sparc/kernel/chmc.c index 5f450260981d..dbb210d74e21 100644 --- a/arch/sparc/kernel/chmc.c +++ b/arch/sparc/kernel/chmc.c | |||
| @@ -336,9 +336,9 @@ static int jbusmc_print_dimm(int syndrome_code, | |||
| 336 | return 0; | 336 | return 0; |
| 337 | } | 337 | } |
| 338 | 338 | ||
| 339 | static u64 __devinit jbusmc_dimm_group_size(u64 base, | 339 | static u64 jbusmc_dimm_group_size(u64 base, |
| 340 | const struct linux_prom64_registers *mem_regs, | 340 | const struct linux_prom64_registers *mem_regs, |
| 341 | int num_mem_regs) | 341 | int num_mem_regs) |
| 342 | { | 342 | { |
| 343 | u64 max = base + (8UL * 1024 * 1024 * 1024); | 343 | u64 max = base + (8UL * 1024 * 1024 * 1024); |
| 344 | u64 max_seen = base; | 344 | u64 max_seen = base; |
| @@ -363,10 +363,10 @@ static u64 __devinit jbusmc_dimm_group_size(u64 base, | |||
| 363 | return max_seen - base; | 363 | return max_seen - base; |
| 364 | } | 364 | } |
| 365 | 365 | ||
| 366 | static void __devinit jbusmc_construct_one_dimm_group(struct jbusmc *p, | 366 | static void jbusmc_construct_one_dimm_group(struct jbusmc *p, |
| 367 | unsigned long index, | 367 | unsigned long index, |
| 368 | const struct linux_prom64_registers *mem_regs, | 368 | const struct linux_prom64_registers *mem_regs, |
| 369 | int num_mem_regs) | 369 | int num_mem_regs) |
| 370 | { | 370 | { |
| 371 | struct jbusmc_dimm_group *dp = &p->dimm_groups[index]; | 371 | struct jbusmc_dimm_group *dp = &p->dimm_groups[index]; |
| 372 | 372 | ||
| @@ -378,9 +378,9 @@ static void __devinit jbusmc_construct_one_dimm_group(struct jbusmc *p, | |||
| 378 | dp->size = jbusmc_dimm_group_size(dp->base_addr, mem_regs, num_mem_regs); | 378 | dp->size = jbusmc_dimm_group_size(dp->base_addr, mem_regs, num_mem_regs); |
| 379 | } | 379 | } |
| 380 | 380 | ||
| 381 | static void __devinit jbusmc_construct_dimm_groups(struct jbusmc *p, | 381 | static void jbusmc_construct_dimm_groups(struct jbusmc *p, |
| 382 | const struct linux_prom64_registers *mem_regs, | 382 | const struct linux_prom64_registers *mem_regs, |
| 383 | int num_mem_regs) | 383 | int num_mem_regs) |
| 384 | { | 384 | { |
| 385 | if (p->mc_reg_1 & JB_MC_REG1_DIMM1_BANK0) { | 385 | if (p->mc_reg_1 & JB_MC_REG1_DIMM1_BANK0) { |
| 386 | jbusmc_construct_one_dimm_group(p, 0, mem_regs, num_mem_regs); | 386 | jbusmc_construct_one_dimm_group(p, 0, mem_regs, num_mem_regs); |
| @@ -392,7 +392,7 @@ static void __devinit jbusmc_construct_dimm_groups(struct jbusmc *p, | |||
| 392 | } | 392 | } |
| 393 | } | 393 | } |
| 394 | 394 | ||
| 395 | static int __devinit jbusmc_probe(struct platform_device *op) | 395 | static int jbusmc_probe(struct platform_device *op) |
| 396 | { | 396 | { |
| 397 | const struct linux_prom64_registers *mem_regs; | 397 | const struct linux_prom64_registers *mem_regs; |
| 398 | struct device_node *mem_node; | 398 | struct device_node *mem_node; |
| @@ -689,7 +689,7 @@ static void chmc_fetch_decode_regs(struct chmc *p) | |||
| 689 | chmc_read_mcreg(p, CHMCTRL_DECODE4)); | 689 | chmc_read_mcreg(p, CHMCTRL_DECODE4)); |
| 690 | } | 690 | } |
| 691 | 691 | ||
| 692 | static int __devinit chmc_probe(struct platform_device *op) | 692 | static int chmc_probe(struct platform_device *op) |
| 693 | { | 693 | { |
| 694 | struct device_node *dp = op->dev.of_node; | 694 | struct device_node *dp = op->dev.of_node; |
| 695 | unsigned long ver; | 695 | unsigned long ver; |
| @@ -763,7 +763,7 @@ out_free: | |||
| 763 | goto out; | 763 | goto out; |
| 764 | } | 764 | } |
| 765 | 765 | ||
| 766 | static int __devinit us3mc_probe(struct platform_device *op) | 766 | static int us3mc_probe(struct platform_device *op) |
| 767 | { | 767 | { |
| 768 | if (mc_type == MC_TYPE_SAFARI) | 768 | if (mc_type == MC_TYPE_SAFARI) |
| 769 | return chmc_probe(op); | 769 | return chmc_probe(op); |
| @@ -772,21 +772,21 @@ static int __devinit us3mc_probe(struct platform_device *op) | |||
| 772 | return -ENODEV; | 772 | return -ENODEV; |
| 773 | } | 773 | } |
| 774 | 774 | ||
| 775 | static void __devexit chmc_destroy(struct platform_device *op, struct chmc *p) | 775 | static void chmc_destroy(struct platform_device *op, struct chmc *p) |
| 776 | { | 776 | { |
| 777 | list_del(&p->list); | 777 | list_del(&p->list); |
| 778 | of_iounmap(&op->resource[0], p->regs, 0x48); | 778 | of_iounmap(&op->resource[0], p->regs, 0x48); |
| 779 | kfree(p); | 779 | kfree(p); |
| 780 | } | 780 | } |
| 781 | 781 | ||
| 782 | static void __devexit jbusmc_destroy(struct platform_device *op, struct jbusmc *p) | 782 | static void jbusmc_destroy(struct platform_device *op, struct jbusmc *p) |
| 783 | { | 783 | { |
| 784 | mc_list_del(&p->list); | 784 | mc_list_del(&p->list); |
| 785 | of_iounmap(&op->resource[0], p->regs, JBUSMC_REGS_SIZE); | 785 | of_iounmap(&op->resource[0], p->regs, JBUSMC_REGS_SIZE); |
| 786 | kfree(p); | 786 | kfree(p); |
| 787 | } | 787 | } |
| 788 | 788 | ||
| 789 | static int __devexit us3mc_remove(struct platform_device *op) | 789 | static int us3mc_remove(struct platform_device *op) |
| 790 | { | 790 | { |
| 791 | void *p = dev_get_drvdata(&op->dev); | 791 | void *p = dev_get_drvdata(&op->dev); |
| 792 | 792 | ||
| @@ -814,7 +814,7 @@ static struct platform_driver us3mc_driver = { | |||
| 814 | .of_match_table = us3mc_match, | 814 | .of_match_table = us3mc_match, |
| 815 | }, | 815 | }, |
| 816 | .probe = us3mc_probe, | 816 | .probe = us3mc_probe, |
| 817 | .remove = __devexit_p(us3mc_remove), | 817 | .remove = us3mc_remove, |
| 818 | }; | 818 | }; |
| 819 | 819 | ||
| 820 | static inline bool us3mc_platform(void) | 820 | static inline bool us3mc_platform(void) |
diff --git a/arch/sparc/kernel/ds.c b/arch/sparc/kernel/ds.c index f09257c86107..75bb608c423e 100644 --- a/arch/sparc/kernel/ds.c +++ b/arch/sparc/kernel/ds.c | |||
| @@ -29,7 +29,7 @@ | |||
| 29 | #define DRV_MODULE_VERSION "1.0" | 29 | #define DRV_MODULE_VERSION "1.0" |
| 30 | #define DRV_MODULE_RELDATE "Jul 11, 2007" | 30 | #define DRV_MODULE_RELDATE "Jul 11, 2007" |
| 31 | 31 | ||
| 32 | static char version[] __devinitdata = | 32 | static char version[] = |
| 33 | DRV_MODULE_NAME ".c:v" DRV_MODULE_VERSION " (" DRV_MODULE_RELDATE ")\n"; | 33 | DRV_MODULE_NAME ".c:v" DRV_MODULE_VERSION " (" DRV_MODULE_RELDATE ")\n"; |
| 34 | MODULE_AUTHOR("David S. Miller (davem@davemloft.net)"); | 34 | MODULE_AUTHOR("David S. Miller (davem@davemloft.net)"); |
| 35 | MODULE_DESCRIPTION("Sun LDOM domain services driver"); | 35 | MODULE_DESCRIPTION("Sun LDOM domain services driver"); |
| @@ -1146,8 +1146,7 @@ static void ds_event(void *arg, int event) | |||
| 1146 | spin_unlock_irqrestore(&ds_lock, flags); | 1146 | spin_unlock_irqrestore(&ds_lock, flags); |
| 1147 | } | 1147 | } |
| 1148 | 1148 | ||
| 1149 | static int __devinit ds_probe(struct vio_dev *vdev, | 1149 | static int ds_probe(struct vio_dev *vdev, const struct vio_device_id *id) |
| 1150 | const struct vio_device_id *id) | ||
| 1151 | { | 1150 | { |
| 1152 | static int ds_version_printed; | 1151 | static int ds_version_printed; |
| 1153 | struct ldc_channel_config ds_cfg = { | 1152 | struct ldc_channel_config ds_cfg = { |
diff --git a/arch/sparc/kernel/ldc.c b/arch/sparc/kernel/ldc.c index 81d92fc9983b..9fcc6b4e93b3 100644 --- a/arch/sparc/kernel/ldc.c +++ b/arch/sparc/kernel/ldc.c | |||
| @@ -27,7 +27,7 @@ | |||
| 27 | #define DRV_MODULE_VERSION "1.1" | 27 | #define DRV_MODULE_VERSION "1.1" |
| 28 | #define DRV_MODULE_RELDATE "July 22, 2008" | 28 | #define DRV_MODULE_RELDATE "July 22, 2008" |
| 29 | 29 | ||
| 30 | static char version[] __devinitdata = | 30 | static char version[] = |
| 31 | DRV_MODULE_NAME ".c:v" DRV_MODULE_VERSION " (" DRV_MODULE_RELDATE ")\n"; | 31 | DRV_MODULE_NAME ".c:v" DRV_MODULE_VERSION " (" DRV_MODULE_RELDATE ")\n"; |
| 32 | #define LDC_PACKET_SIZE 64 | 32 | #define LDC_PACKET_SIZE 64 |
| 33 | 33 | ||
diff --git a/arch/sparc/kernel/leon_pci.c b/arch/sparc/kernel/leon_pci.c index fc0521161568..852dc8430528 100644 --- a/arch/sparc/kernel/leon_pci.c +++ b/arch/sparc/kernel/leon_pci.c | |||
| @@ -43,7 +43,7 @@ void leon_pci_init(struct platform_device *ofdev, struct leon_pci_info *info) | |||
| 43 | } | 43 | } |
| 44 | } | 44 | } |
| 45 | 45 | ||
| 46 | void __devinit pcibios_fixup_bus(struct pci_bus *pbus) | 46 | void pcibios_fixup_bus(struct pci_bus *pbus) |
| 47 | { | 47 | { |
| 48 | struct pci_dev *dev; | 48 | struct pci_dev *dev; |
| 49 | int i, has_io, has_mem; | 49 | int i, has_io, has_mem; |
diff --git a/arch/sparc/kernel/leon_pci_grpci2.c b/arch/sparc/kernel/leon_pci_grpci2.c index b1bc38853a3d..fc4320886a3a 100644 --- a/arch/sparc/kernel/leon_pci_grpci2.c +++ b/arch/sparc/kernel/leon_pci_grpci2.c | |||
| @@ -668,7 +668,7 @@ static irqreturn_t grpci2_err_interrupt(int irq, void *arg) | |||
| 668 | return IRQ_HANDLED; | 668 | return IRQ_HANDLED; |
| 669 | } | 669 | } |
| 670 | 670 | ||
| 671 | static int __devinit grpci2_of_probe(struct platform_device *ofdev) | 671 | static int grpci2_of_probe(struct platform_device *ofdev) |
| 672 | { | 672 | { |
| 673 | struct grpci2_regs *regs; | 673 | struct grpci2_regs *regs; |
| 674 | struct grpci2_priv *priv; | 674 | struct grpci2_priv *priv; |
diff --git a/arch/sparc/kernel/pci.c b/arch/sparc/kernel/pci.c index 75b31bcdeadf..baf4366e2d6a 100644 --- a/arch/sparc/kernel/pci.c +++ b/arch/sparc/kernel/pci.c | |||
| @@ -356,7 +356,7 @@ static struct pci_dev *of_create_pci_dev(struct pci_pbm_info *pbm, | |||
| 356 | return dev; | 356 | return dev; |
| 357 | } | 357 | } |
| 358 | 358 | ||
| 359 | static void __devinit apb_calc_first_last(u8 map, u32 *first_p, u32 *last_p) | 359 | static void apb_calc_first_last(u8 map, u32 *first_p, u32 *last_p) |
| 360 | { | 360 | { |
| 361 | u32 idx, first, last; | 361 | u32 idx, first, last; |
| 362 | 362 | ||
| @@ -378,9 +378,9 @@ static void __devinit apb_calc_first_last(u8 map, u32 *first_p, u32 *last_p) | |||
| 378 | /* Cook up fake bus resources for SUNW,simba PCI bridges which lack | 378 | /* Cook up fake bus resources for SUNW,simba PCI bridges which lack |
| 379 | * a proper 'ranges' property. | 379 | * a proper 'ranges' property. |
| 380 | */ | 380 | */ |
| 381 | static void __devinit apb_fake_ranges(struct pci_dev *dev, | 381 | static void apb_fake_ranges(struct pci_dev *dev, |
| 382 | struct pci_bus *bus, | 382 | struct pci_bus *bus, |
| 383 | struct pci_pbm_info *pbm) | 383 | struct pci_pbm_info *pbm) |
| 384 | { | 384 | { |
| 385 | struct pci_bus_region region; | 385 | struct pci_bus_region region; |
| 386 | struct resource *res; | 386 | struct resource *res; |
| @@ -404,15 +404,15 @@ static void __devinit apb_fake_ranges(struct pci_dev *dev, | |||
| 404 | pcibios_bus_to_resource(dev, res, ®ion); | 404 | pcibios_bus_to_resource(dev, res, ®ion); |
| 405 | } | 405 | } |
| 406 | 406 | ||
| 407 | static void __devinit pci_of_scan_bus(struct pci_pbm_info *pbm, | 407 | static void pci_of_scan_bus(struct pci_pbm_info *pbm, |
| 408 | struct device_node *node, | 408 | struct device_node *node, |
| 409 | struct pci_bus *bus); | 409 | struct pci_bus *bus); |
| 410 | 410 | ||
| 411 | #define GET_64BIT(prop, i) ((((u64) (prop)[(i)]) << 32) | (prop)[(i)+1]) | 411 | #define GET_64BIT(prop, i) ((((u64) (prop)[(i)]) << 32) | (prop)[(i)+1]) |
| 412 | 412 | ||
| 413 | static void __devinit of_scan_pci_bridge(struct pci_pbm_info *pbm, | 413 | static void of_scan_pci_bridge(struct pci_pbm_info *pbm, |
| 414 | struct device_node *node, | 414 | struct device_node *node, |
| 415 | struct pci_dev *dev) | 415 | struct pci_dev *dev) |
| 416 | { | 416 | { |
| 417 | struct pci_bus *bus; | 417 | struct pci_bus *bus; |
| 418 | const u32 *busrange, *ranges; | 418 | const u32 *busrange, *ranges; |
| @@ -503,9 +503,9 @@ after_ranges: | |||
| 503 | pci_of_scan_bus(pbm, node, bus); | 503 | pci_of_scan_bus(pbm, node, bus); |
| 504 | } | 504 | } |
| 505 | 505 | ||
| 506 | static void __devinit pci_of_scan_bus(struct pci_pbm_info *pbm, | 506 | static void pci_of_scan_bus(struct pci_pbm_info *pbm, |
| 507 | struct device_node *node, | 507 | struct device_node *node, |
| 508 | struct pci_bus *bus) | 508 | struct pci_bus *bus) |
| 509 | { | 509 | { |
| 510 | struct device_node *child; | 510 | struct device_node *child; |
| 511 | const u32 *reg; | 511 | const u32 *reg; |
| @@ -564,7 +564,7 @@ show_pciobppath_attr(struct device * dev, struct device_attribute * attr, char * | |||
| 564 | 564 | ||
| 565 | static DEVICE_ATTR(obppath, S_IRUSR | S_IRGRP | S_IROTH, show_pciobppath_attr, NULL); | 565 | static DEVICE_ATTR(obppath, S_IRUSR | S_IRGRP | S_IROTH, show_pciobppath_attr, NULL); |
| 566 | 566 | ||
| 567 | static void __devinit pci_bus_register_of_sysfs(struct pci_bus *bus) | 567 | static void pci_bus_register_of_sysfs(struct pci_bus *bus) |
| 568 | { | 568 | { |
| 569 | struct pci_dev *dev; | 569 | struct pci_dev *dev; |
| 570 | struct pci_bus *child_bus; | 570 | struct pci_bus *child_bus; |
| @@ -585,8 +585,8 @@ static void __devinit pci_bus_register_of_sysfs(struct pci_bus *bus) | |||
| 585 | pci_bus_register_of_sysfs(child_bus); | 585 | pci_bus_register_of_sysfs(child_bus); |
| 586 | } | 586 | } |
| 587 | 587 | ||
| 588 | struct pci_bus * __devinit pci_scan_one_pbm(struct pci_pbm_info *pbm, | 588 | struct pci_bus *pci_scan_one_pbm(struct pci_pbm_info *pbm, |
| 589 | struct device *parent) | 589 | struct device *parent) |
| 590 | { | 590 | { |
| 591 | LIST_HEAD(resources); | 591 | LIST_HEAD(resources); |
| 592 | struct device_node *node = pbm->op->dev.of_node; | 592 | struct device_node *node = pbm->op->dev.of_node; |
| @@ -618,7 +618,7 @@ struct pci_bus * __devinit pci_scan_one_pbm(struct pci_pbm_info *pbm, | |||
| 618 | return bus; | 618 | return bus; |
| 619 | } | 619 | } |
| 620 | 620 | ||
| 621 | void __devinit pcibios_fixup_bus(struct pci_bus *pbus) | 621 | void pcibios_fixup_bus(struct pci_bus *pbus) |
| 622 | { | 622 | { |
| 623 | } | 623 | } |
| 624 | 624 | ||
| @@ -949,8 +949,7 @@ static int __init pcibios_init(void) | |||
| 949 | subsys_initcall(pcibios_init); | 949 | subsys_initcall(pcibios_init); |
| 950 | 950 | ||
| 951 | #ifdef CONFIG_SYSFS | 951 | #ifdef CONFIG_SYSFS |
| 952 | static void __devinit pci_bus_slot_names(struct device_node *node, | 952 | static void pci_bus_slot_names(struct device_node *node, struct pci_bus *bus) |
| 953 | struct pci_bus *bus) | ||
| 954 | { | 953 | { |
| 955 | const struct pci_slot_names { | 954 | const struct pci_slot_names { |
| 956 | u32 slot_mask; | 955 | u32 slot_mask; |
diff --git a/arch/sparc/kernel/pci_fire.c b/arch/sparc/kernel/pci_fire.c index 188f935276fd..e60fc6a67e9b 100644 --- a/arch/sparc/kernel/pci_fire.c +++ b/arch/sparc/kernel/pci_fire.c | |||
| @@ -408,8 +408,8 @@ static void pci_fire_hw_init(struct pci_pbm_info *pbm) | |||
| 408 | upa_writeq(~(u64)0, pbm->pbm_regs + FIRE_PEC_IENAB); | 408 | upa_writeq(~(u64)0, pbm->pbm_regs + FIRE_PEC_IENAB); |
| 409 | } | 409 | } |
| 410 | 410 | ||
| 411 | static int __devinit pci_fire_pbm_init(struct pci_pbm_info *pbm, | 411 | static int pci_fire_pbm_init(struct pci_pbm_info *pbm, |
| 412 | struct platform_device *op, u32 portid) | 412 | struct platform_device *op, u32 portid) |
| 413 | { | 413 | { |
| 414 | const struct linux_prom64_registers *regs; | 414 | const struct linux_prom64_registers *regs; |
| 415 | struct device_node *dp = op->dev.of_node; | 415 | struct device_node *dp = op->dev.of_node; |
| @@ -454,7 +454,7 @@ static int __devinit pci_fire_pbm_init(struct pci_pbm_info *pbm, | |||
| 454 | return 0; | 454 | return 0; |
| 455 | } | 455 | } |
| 456 | 456 | ||
| 457 | static int __devinit fire_probe(struct platform_device *op) | 457 | static int fire_probe(struct platform_device *op) |
| 458 | { | 458 | { |
| 459 | struct device_node *dp = op->dev.of_node; | 459 | struct device_node *dp = op->dev.of_node; |
| 460 | struct pci_pbm_info *pbm; | 460 | struct pci_pbm_info *pbm; |
diff --git a/arch/sparc/kernel/pci_psycho.c b/arch/sparc/kernel/pci_psycho.c index f4d29e15ce71..c647634ead2b 100644 --- a/arch/sparc/kernel/pci_psycho.c +++ b/arch/sparc/kernel/pci_psycho.c | |||
| @@ -366,8 +366,8 @@ static void pbm_config_busmastering(struct pci_pbm_info *pbm) | |||
| 366 | pci_config_write8(addr, 64); | 366 | pci_config_write8(addr, 64); |
| 367 | } | 367 | } |
| 368 | 368 | ||
| 369 | static void __devinit psycho_scan_bus(struct pci_pbm_info *pbm, | 369 | static void psycho_scan_bus(struct pci_pbm_info *pbm, |
| 370 | struct device *parent) | 370 | struct device *parent) |
| 371 | { | 371 | { |
| 372 | pbm_config_busmastering(pbm); | 372 | pbm_config_busmastering(pbm); |
| 373 | pbm->is_66mhz_capable = 0; | 373 | pbm->is_66mhz_capable = 0; |
| @@ -483,15 +483,15 @@ static void psycho_pbm_strbuf_init(struct pci_pbm_info *pbm, | |||
| 483 | #define PSYCHO_MEMSPACE_B 0x180000000UL | 483 | #define PSYCHO_MEMSPACE_B 0x180000000UL |
| 484 | #define PSYCHO_MEMSPACE_SIZE 0x07fffffffUL | 484 | #define PSYCHO_MEMSPACE_SIZE 0x07fffffffUL |
| 485 | 485 | ||
| 486 | static void __devinit psycho_pbm_init(struct pci_pbm_info *pbm, | 486 | static void psycho_pbm_init(struct pci_pbm_info *pbm, |
| 487 | struct platform_device *op, int is_pbm_a) | 487 | struct platform_device *op, int is_pbm_a) |
| 488 | { | 488 | { |
| 489 | psycho_pbm_init_common(pbm, op, "PSYCHO", PBM_CHIP_TYPE_PSYCHO); | 489 | psycho_pbm_init_common(pbm, op, "PSYCHO", PBM_CHIP_TYPE_PSYCHO); |
| 490 | psycho_pbm_strbuf_init(pbm, is_pbm_a); | 490 | psycho_pbm_strbuf_init(pbm, is_pbm_a); |
| 491 | psycho_scan_bus(pbm, &op->dev); | 491 | psycho_scan_bus(pbm, &op->dev); |
| 492 | } | 492 | } |
| 493 | 493 | ||
| 494 | static struct pci_pbm_info * __devinit psycho_find_sibling(u32 upa_portid) | 494 | static struct pci_pbm_info *psycho_find_sibling(u32 upa_portid) |
| 495 | { | 495 | { |
| 496 | struct pci_pbm_info *pbm; | 496 | struct pci_pbm_info *pbm; |
| 497 | 497 | ||
| @@ -504,7 +504,7 @@ static struct pci_pbm_info * __devinit psycho_find_sibling(u32 upa_portid) | |||
| 504 | 504 | ||
| 505 | #define PSYCHO_CONFIGSPACE 0x001000000UL | 505 | #define PSYCHO_CONFIGSPACE 0x001000000UL |
| 506 | 506 | ||
| 507 | static int __devinit psycho_probe(struct platform_device *op) | 507 | static int psycho_probe(struct platform_device *op) |
| 508 | { | 508 | { |
| 509 | const struct linux_prom64_registers *pr_regs; | 509 | const struct linux_prom64_registers *pr_regs; |
| 510 | struct device_node *dp = op->dev.of_node; | 510 | struct device_node *dp = op->dev.of_node; |
diff --git a/arch/sparc/kernel/pci_sabre.c b/arch/sparc/kernel/pci_sabre.c index 3efaa4644d60..6f00d27e8dac 100644 --- a/arch/sparc/kernel/pci_sabre.c +++ b/arch/sparc/kernel/pci_sabre.c | |||
| @@ -403,8 +403,7 @@ static void apb_init(struct pci_bus *sabre_bus) | |||
| 403 | } | 403 | } |
| 404 | } | 404 | } |
| 405 | 405 | ||
| 406 | static void __devinit sabre_scan_bus(struct pci_pbm_info *pbm, | 406 | static void sabre_scan_bus(struct pci_pbm_info *pbm, struct device *parent) |
| 407 | struct device *parent) | ||
| 408 | { | 407 | { |
| 409 | static int once; | 408 | static int once; |
| 410 | 409 | ||
| @@ -443,8 +442,8 @@ static void __devinit sabre_scan_bus(struct pci_pbm_info *pbm, | |||
| 443 | sabre_register_error_handlers(pbm); | 442 | sabre_register_error_handlers(pbm); |
| 444 | } | 443 | } |
| 445 | 444 | ||
| 446 | static void __devinit sabre_pbm_init(struct pci_pbm_info *pbm, | 445 | static void sabre_pbm_init(struct pci_pbm_info *pbm, |
| 447 | struct platform_device *op) | 446 | struct platform_device *op) |
| 448 | { | 447 | { |
| 449 | psycho_pbm_init_common(pbm, op, "SABRE", PBM_CHIP_TYPE_SABRE); | 448 | psycho_pbm_init_common(pbm, op, "SABRE", PBM_CHIP_TYPE_SABRE); |
| 450 | pbm->pci_afsr = pbm->controller_regs + SABRE_PIOAFSR; | 449 | pbm->pci_afsr = pbm->controller_regs + SABRE_PIOAFSR; |
| @@ -454,7 +453,7 @@ static void __devinit sabre_pbm_init(struct pci_pbm_info *pbm, | |||
| 454 | } | 453 | } |
| 455 | 454 | ||
| 456 | static const struct of_device_id sabre_match[]; | 455 | static const struct of_device_id sabre_match[]; |
| 457 | static int __devinit sabre_probe(struct platform_device *op) | 456 | static int sabre_probe(struct platform_device *op) |
| 458 | { | 457 | { |
| 459 | const struct of_device_id *match; | 458 | const struct of_device_id *match; |
| 460 | const struct linux_prom64_registers *pr_regs; | 459 | const struct linux_prom64_registers *pr_regs; |
diff --git a/arch/sparc/kernel/pci_schizo.c b/arch/sparc/kernel/pci_schizo.c index 13d4aa20b5a5..8f76f23dac38 100644 --- a/arch/sparc/kernel/pci_schizo.c +++ b/arch/sparc/kernel/pci_schizo.c | |||
| @@ -1064,8 +1064,7 @@ static void pbm_config_busmastering(struct pci_pbm_info *pbm) | |||
| 1064 | pci_config_write8(addr, 64); | 1064 | pci_config_write8(addr, 64); |
| 1065 | } | 1065 | } |
| 1066 | 1066 | ||
| 1067 | static void __devinit schizo_scan_bus(struct pci_pbm_info *pbm, | 1067 | static void schizo_scan_bus(struct pci_pbm_info *pbm, struct device *parent) |
| 1068 | struct device *parent) | ||
| 1069 | { | 1068 | { |
| 1070 | pbm_config_busmastering(pbm); | 1069 | pbm_config_busmastering(pbm); |
| 1071 | pbm->is_66mhz_capable = | 1070 | pbm->is_66mhz_capable = |
| @@ -1307,9 +1306,9 @@ static void schizo_pbm_hw_init(struct pci_pbm_info *pbm) | |||
| 1307 | } | 1306 | } |
| 1308 | } | 1307 | } |
| 1309 | 1308 | ||
| 1310 | static int __devinit schizo_pbm_init(struct pci_pbm_info *pbm, | 1309 | static int schizo_pbm_init(struct pci_pbm_info *pbm, |
| 1311 | struct platform_device *op, u32 portid, | 1310 | struct platform_device *op, u32 portid, |
| 1312 | int chip_type) | 1311 | int chip_type) |
| 1313 | { | 1312 | { |
| 1314 | const struct linux_prom64_registers *regs; | 1313 | const struct linux_prom64_registers *regs; |
| 1315 | struct device_node *dp = op->dev.of_node; | 1314 | struct device_node *dp = op->dev.of_node; |
| @@ -1400,8 +1399,7 @@ static inline int portid_compare(u32 x, u32 y, int chip_type) | |||
| 1400 | return (x == y); | 1399 | return (x == y); |
| 1401 | } | 1400 | } |
| 1402 | 1401 | ||
| 1403 | static struct pci_pbm_info * __devinit schizo_find_sibling(u32 portid, | 1402 | static struct pci_pbm_info *schizo_find_sibling(u32 portid, int chip_type) |
| 1404 | int chip_type) | ||
| 1405 | { | 1403 | { |
| 1406 | struct pci_pbm_info *pbm; | 1404 | struct pci_pbm_info *pbm; |
| 1407 | 1405 | ||
| @@ -1412,7 +1410,7 @@ static struct pci_pbm_info * __devinit schizo_find_sibling(u32 portid, | |||
| 1412 | return NULL; | 1410 | return NULL; |
| 1413 | } | 1411 | } |
| 1414 | 1412 | ||
| 1415 | static int __devinit __schizo_init(struct platform_device *op, unsigned long chip_type) | 1413 | static int __schizo_init(struct platform_device *op, unsigned long chip_type) |
| 1416 | { | 1414 | { |
| 1417 | struct device_node *dp = op->dev.of_node; | 1415 | struct device_node *dp = op->dev.of_node; |
| 1418 | struct pci_pbm_info *pbm; | 1416 | struct pci_pbm_info *pbm; |
| @@ -1460,7 +1458,7 @@ out_err: | |||
| 1460 | } | 1458 | } |
| 1461 | 1459 | ||
| 1462 | static const struct of_device_id schizo_match[]; | 1460 | static const struct of_device_id schizo_match[]; |
| 1463 | static int __devinit schizo_probe(struct platform_device *op) | 1461 | static int schizo_probe(struct platform_device *op) |
| 1464 | { | 1462 | { |
| 1465 | const struct of_device_id *match; | 1463 | const struct of_device_id *match; |
| 1466 | 1464 | ||
diff --git a/arch/sparc/kernel/pci_sun4v.c b/arch/sparc/kernel/pci_sun4v.c index 051b69caeffd..d07f6b29aed8 100644 --- a/arch/sparc/kernel/pci_sun4v.c +++ b/arch/sparc/kernel/pci_sun4v.c | |||
| @@ -536,8 +536,7 @@ static struct dma_map_ops sun4v_dma_ops = { | |||
| 536 | .unmap_sg = dma_4v_unmap_sg, | 536 | .unmap_sg = dma_4v_unmap_sg, |
| 537 | }; | 537 | }; |
| 538 | 538 | ||
| 539 | static void __devinit pci_sun4v_scan_bus(struct pci_pbm_info *pbm, | 539 | static void pci_sun4v_scan_bus(struct pci_pbm_info *pbm, struct device *parent) |
| 540 | struct device *parent) | ||
| 541 | { | 540 | { |
| 542 | struct property *prop; | 541 | struct property *prop; |
| 543 | struct device_node *dp; | 542 | struct device_node *dp; |
| @@ -550,8 +549,8 @@ static void __devinit pci_sun4v_scan_bus(struct pci_pbm_info *pbm, | |||
| 550 | /* XXX register error interrupt handlers XXX */ | 549 | /* XXX register error interrupt handlers XXX */ |
| 551 | } | 550 | } |
| 552 | 551 | ||
| 553 | static unsigned long __devinit probe_existing_entries(struct pci_pbm_info *pbm, | 552 | static unsigned long probe_existing_entries(struct pci_pbm_info *pbm, |
| 554 | struct iommu *iommu) | 553 | struct iommu *iommu) |
| 555 | { | 554 | { |
| 556 | struct iommu_arena *arena = &iommu->arena; | 555 | struct iommu_arena *arena = &iommu->arena; |
| 557 | unsigned long i, cnt = 0; | 556 | unsigned long i, cnt = 0; |
| @@ -578,7 +577,7 @@ static unsigned long __devinit probe_existing_entries(struct pci_pbm_info *pbm, | |||
| 578 | return cnt; | 577 | return cnt; |
| 579 | } | 578 | } |
| 580 | 579 | ||
| 581 | static int __devinit pci_sun4v_iommu_init(struct pci_pbm_info *pbm) | 580 | static int pci_sun4v_iommu_init(struct pci_pbm_info *pbm) |
| 582 | { | 581 | { |
| 583 | static const u32 vdma_default[] = { 0x80000000, 0x80000000 }; | 582 | static const u32 vdma_default[] = { 0x80000000, 0x80000000 }; |
| 584 | struct iommu *iommu = pbm->iommu; | 583 | struct iommu *iommu = pbm->iommu; |
| @@ -879,8 +878,8 @@ static void pci_sun4v_msi_init(struct pci_pbm_info *pbm) | |||
| 879 | } | 878 | } |
| 880 | #endif /* !(CONFIG_PCI_MSI) */ | 879 | #endif /* !(CONFIG_PCI_MSI) */ |
| 881 | 880 | ||
| 882 | static int __devinit pci_sun4v_pbm_init(struct pci_pbm_info *pbm, | 881 | static int pci_sun4v_pbm_init(struct pci_pbm_info *pbm, |
| 883 | struct platform_device *op, u32 devhandle) | 882 | struct platform_device *op, u32 devhandle) |
| 884 | { | 883 | { |
| 885 | struct device_node *dp = op->dev.of_node; | 884 | struct device_node *dp = op->dev.of_node; |
| 886 | int err; | 885 | int err; |
| @@ -919,7 +918,7 @@ static int __devinit pci_sun4v_pbm_init(struct pci_pbm_info *pbm, | |||
| 919 | return 0; | 918 | return 0; |
| 920 | } | 919 | } |
| 921 | 920 | ||
| 922 | static int __devinit pci_sun4v_probe(struct platform_device *op) | 921 | static int pci_sun4v_probe(struct platform_device *op) |
| 923 | { | 922 | { |
| 924 | const struct linux_prom64_registers *regs; | 923 | const struct linux_prom64_registers *regs; |
| 925 | static int hvapi_negotiated = 0; | 924 | static int hvapi_negotiated = 0; |
diff --git a/arch/sparc/kernel/pcic.c b/arch/sparc/kernel/pcic.c index 521fdf1b20e5..09f4fdd8d808 100644 --- a/arch/sparc/kernel/pcic.c +++ b/arch/sparc/kernel/pcic.c | |||
| @@ -439,8 +439,7 @@ int pcic_present(void) | |||
| 439 | return pcic0_up; | 439 | return pcic0_up; |
| 440 | } | 440 | } |
| 441 | 441 | ||
| 442 | static int __devinit pdev_to_pnode(struct linux_pbm_info *pbm, | 442 | static int pdev_to_pnode(struct linux_pbm_info *pbm, struct pci_dev *pdev) |
| 443 | struct pci_dev *pdev) | ||
| 444 | { | 443 | { |
| 445 | struct linux_prom_pci_registers regs[PROMREG_MAX]; | 444 | struct linux_prom_pci_registers regs[PROMREG_MAX]; |
| 446 | int err; | 445 | int err; |
| @@ -595,7 +594,7 @@ pcic_fill_irq(struct linux_pcic *pcic, struct pci_dev *dev, int node) | |||
| 595 | /* | 594 | /* |
| 596 | * Normally called from {do_}pci_scan_bus... | 595 | * Normally called from {do_}pci_scan_bus... |
| 597 | */ | 596 | */ |
| 598 | void __devinit pcibios_fixup_bus(struct pci_bus *bus) | 597 | void pcibios_fixup_bus(struct pci_bus *bus) |
| 599 | { | 598 | { |
| 600 | struct pci_dev *dev; | 599 | struct pci_dev *dev; |
| 601 | int i, has_io, has_mem; | 600 | int i, has_io, has_mem; |
diff --git a/arch/sparc/kernel/pmc.c b/arch/sparc/kernel/pmc.c index 0e3202239ff5..dcbb62f63068 100644 --- a/arch/sparc/kernel/pmc.c +++ b/arch/sparc/kernel/pmc.c | |||
| @@ -52,7 +52,7 @@ static void pmc_swift_idle(void) | |||
| 52 | #endif | 52 | #endif |
| 53 | } | 53 | } |
| 54 | 54 | ||
| 55 | static int __devinit pmc_probe(struct platform_device *op) | 55 | static int pmc_probe(struct platform_device *op) |
| 56 | { | 56 | { |
| 57 | regs = of_ioremap(&op->resource[0], 0, | 57 | regs = of_ioremap(&op->resource[0], 0, |
| 58 | resource_size(&op->resource[0]), PMC_OBPNAME); | 58 | resource_size(&op->resource[0]), PMC_OBPNAME); |
diff --git a/arch/sparc/kernel/power.c b/arch/sparc/kernel/power.c index 0d39075063b2..4cb23c41553f 100644 --- a/arch/sparc/kernel/power.c +++ b/arch/sparc/kernel/power.c | |||
| @@ -23,7 +23,7 @@ static irqreturn_t power_handler(int irq, void *dev_id) | |||
| 23 | return IRQ_HANDLED; | 23 | return IRQ_HANDLED; |
| 24 | } | 24 | } |
| 25 | 25 | ||
| 26 | static int __devinit has_button_interrupt(unsigned int irq, struct device_node *dp) | 26 | static int has_button_interrupt(unsigned int irq, struct device_node *dp) |
| 27 | { | 27 | { |
| 28 | if (irq == 0xffffffff) | 28 | if (irq == 0xffffffff) |
| 29 | return 0; | 29 | return 0; |
| @@ -33,7 +33,7 @@ static int __devinit has_button_interrupt(unsigned int irq, struct device_node * | |||
| 33 | return 1; | 33 | return 1; |
| 34 | } | 34 | } |
| 35 | 35 | ||
| 36 | static int __devinit power_probe(struct platform_device *op) | 36 | static int power_probe(struct platform_device *op) |
| 37 | { | 37 | { |
| 38 | struct resource *res = &op->resource[0]; | 38 | struct resource *res = &op->resource[0]; |
| 39 | unsigned int irq = op->archdata.irqs[0]; | 39 | unsigned int irq = op->archdata.irqs[0]; |
diff --git a/arch/sparc/kernel/smp_64.c b/arch/sparc/kernel/smp_64.c index d94b878577b7..537eb66abd06 100644 --- a/arch/sparc/kernel/smp_64.c +++ b/arch/sparc/kernel/smp_64.c | |||
| @@ -1180,7 +1180,7 @@ void __init smp_prepare_cpus(unsigned int max_cpus) | |||
| 1180 | { | 1180 | { |
| 1181 | } | 1181 | } |
| 1182 | 1182 | ||
| 1183 | void __devinit smp_prepare_boot_cpu(void) | 1183 | void smp_prepare_boot_cpu(void) |
| 1184 | { | 1184 | { |
| 1185 | } | 1185 | } |
| 1186 | 1186 | ||
| @@ -1194,7 +1194,7 @@ void __init smp_setup_processor_id(void) | |||
| 1194 | xcall_deliver_impl = hypervisor_xcall_deliver; | 1194 | xcall_deliver_impl = hypervisor_xcall_deliver; |
| 1195 | } | 1195 | } |
| 1196 | 1196 | ||
| 1197 | void __devinit smp_fill_in_sib_core_maps(void) | 1197 | void smp_fill_in_sib_core_maps(void) |
| 1198 | { | 1198 | { |
| 1199 | unsigned int i; | 1199 | unsigned int i; |
| 1200 | 1200 | ||
diff --git a/arch/sparc/kernel/systbls_32.S b/arch/sparc/kernel/systbls_32.S index 5147f574f125..6ac43c36bbbf 100644 --- a/arch/sparc/kernel/systbls_32.S +++ b/arch/sparc/kernel/systbls_32.S | |||
| @@ -85,4 +85,4 @@ sys_call_table: | |||
| 85 | /*325*/ .long sys_pwritev, sys_rt_tgsigqueueinfo, sys_perf_event_open, sys_recvmmsg, sys_fanotify_init | 85 | /*325*/ .long sys_pwritev, sys_rt_tgsigqueueinfo, sys_perf_event_open, sys_recvmmsg, sys_fanotify_init |
| 86 | /*330*/ .long sys_fanotify_mark, sys_prlimit64, sys_name_to_handle_at, sys_open_by_handle_at, sys_clock_adjtime | 86 | /*330*/ .long sys_fanotify_mark, sys_prlimit64, sys_name_to_handle_at, sys_open_by_handle_at, sys_clock_adjtime |
| 87 | /*335*/ .long sys_syncfs, sys_sendmmsg, sys_setns, sys_process_vm_readv, sys_process_vm_writev | 87 | /*335*/ .long sys_syncfs, sys_sendmmsg, sys_setns, sys_process_vm_readv, sys_process_vm_writev |
| 88 | /*340*/ .long sys_ni_syscall, sys_kcmp | 88 | /*340*/ .long sys_ni_syscall, sys_kcmp, sys_finit_module |
diff --git a/arch/sparc/kernel/systbls_64.S b/arch/sparc/kernel/systbls_64.S index cdbd9b817751..1009ecb92678 100644 --- a/arch/sparc/kernel/systbls_64.S +++ b/arch/sparc/kernel/systbls_64.S | |||
| @@ -86,7 +86,7 @@ sys_call_table32: | |||
| 86 | .word compat_sys_pwritev, compat_sys_rt_tgsigqueueinfo, sys_perf_event_open, compat_sys_recvmmsg, sys_fanotify_init | 86 | .word compat_sys_pwritev, compat_sys_rt_tgsigqueueinfo, sys_perf_event_open, compat_sys_recvmmsg, sys_fanotify_init |
| 87 | /*330*/ .word sys32_fanotify_mark, sys_prlimit64, sys_name_to_handle_at, compat_sys_open_by_handle_at, compat_sys_clock_adjtime | 87 | /*330*/ .word sys32_fanotify_mark, sys_prlimit64, sys_name_to_handle_at, compat_sys_open_by_handle_at, compat_sys_clock_adjtime |
| 88 | .word sys_syncfs, compat_sys_sendmmsg, sys_setns, compat_sys_process_vm_readv, compat_sys_process_vm_writev | 88 | .word sys_syncfs, compat_sys_sendmmsg, sys_setns, compat_sys_process_vm_readv, compat_sys_process_vm_writev |
| 89 | /*340*/ .word sys_kern_features, sys_kcmp | 89 | /*340*/ .word sys_kern_features, sys_kcmp, sys_finit_module |
| 90 | 90 | ||
| 91 | #endif /* CONFIG_COMPAT */ | 91 | #endif /* CONFIG_COMPAT */ |
| 92 | 92 | ||
| @@ -164,4 +164,4 @@ sys_call_table: | |||
| 164 | .word sys_pwritev, sys_rt_tgsigqueueinfo, sys_perf_event_open, sys_recvmmsg, sys_fanotify_init | 164 | .word sys_pwritev, sys_rt_tgsigqueueinfo, sys_perf_event_open, sys_recvmmsg, sys_fanotify_init |
| 165 | /*330*/ .word sys_fanotify_mark, sys_prlimit64, sys_name_to_handle_at, sys_open_by_handle_at, sys_clock_adjtime | 165 | /*330*/ .word sys_fanotify_mark, sys_prlimit64, sys_name_to_handle_at, sys_open_by_handle_at, sys_clock_adjtime |
| 166 | .word sys_syncfs, sys_sendmmsg, sys_setns, sys_process_vm_readv, sys_process_vm_writev | 166 | .word sys_syncfs, sys_sendmmsg, sys_setns, sys_process_vm_readv, sys_process_vm_writev |
| 167 | /*340*/ .word sys_kern_features, sys_kcmp | 167 | /*340*/ .word sys_kern_features, sys_kcmp, sys_finit_module |
diff --git a/arch/sparc/kernel/time_32.c b/arch/sparc/kernel/time_32.c index 953641549e82..c4c27b0f9063 100644 --- a/arch/sparc/kernel/time_32.c +++ b/arch/sparc/kernel/time_32.c | |||
| @@ -278,7 +278,7 @@ static struct platform_device m48t59_rtc = { | |||
| 278 | }, | 278 | }, |
| 279 | }; | 279 | }; |
| 280 | 280 | ||
| 281 | static int __devinit clock_probe(struct platform_device *op) | 281 | static int clock_probe(struct platform_device *op) |
| 282 | { | 282 | { |
| 283 | struct device_node *dp = op->dev.of_node; | 283 | struct device_node *dp = op->dev.of_node; |
| 284 | const char *model = of_get_property(dp, "model", NULL); | 284 | const char *model = of_get_property(dp, "model", NULL); |
diff --git a/arch/sparc/kernel/time_64.c b/arch/sparc/kernel/time_64.c index e861072b9c52..c3d82b5f54ca 100644 --- a/arch/sparc/kernel/time_64.c +++ b/arch/sparc/kernel/time_64.c | |||
| @@ -419,7 +419,7 @@ static struct platform_device rtc_cmos_device = { | |||
| 419 | .num_resources = 1, | 419 | .num_resources = 1, |
| 420 | }; | 420 | }; |
| 421 | 421 | ||
| 422 | static int __devinit rtc_probe(struct platform_device *op) | 422 | static int rtc_probe(struct platform_device *op) |
| 423 | { | 423 | { |
| 424 | struct resource *r; | 424 | struct resource *r; |
| 425 | 425 | ||
| @@ -477,7 +477,7 @@ static struct platform_device rtc_bq4802_device = { | |||
| 477 | .num_resources = 1, | 477 | .num_resources = 1, |
| 478 | }; | 478 | }; |
| 479 | 479 | ||
| 480 | static int __devinit bq4802_probe(struct platform_device *op) | 480 | static int bq4802_probe(struct platform_device *op) |
| 481 | { | 481 | { |
| 482 | 482 | ||
| 483 | printk(KERN_INFO "%s: BQ4802 regs at 0x%llx\n", | 483 | printk(KERN_INFO "%s: BQ4802 regs at 0x%llx\n", |
| @@ -534,7 +534,7 @@ static struct platform_device m48t59_rtc = { | |||
| 534 | }, | 534 | }, |
| 535 | }; | 535 | }; |
| 536 | 536 | ||
| 537 | static int __devinit mostek_probe(struct platform_device *op) | 537 | static int mostek_probe(struct platform_device *op) |
| 538 | { | 538 | { |
| 539 | struct device_node *dp = op->dev.of_node; | 539 | struct device_node *dp = op->dev.of_node; |
| 540 | 540 | ||
| @@ -746,7 +746,7 @@ void __irq_entry timer_interrupt(int irq, struct pt_regs *regs) | |||
| 746 | set_irq_regs(old_regs); | 746 | set_irq_regs(old_regs); |
| 747 | } | 747 | } |
| 748 | 748 | ||
| 749 | void __devinit setup_sparc64_timer(void) | 749 | void setup_sparc64_timer(void) |
| 750 | { | 750 | { |
| 751 | struct clock_event_device *sevt; | 751 | struct clock_event_device *sevt; |
| 752 | unsigned long pstate; | 752 | unsigned long pstate; |
| @@ -844,7 +844,7 @@ unsigned long long sched_clock(void) | |||
| 844 | >> SPARC64_NSEC_PER_CYC_SHIFT; | 844 | >> SPARC64_NSEC_PER_CYC_SHIFT; |
| 845 | } | 845 | } |
| 846 | 846 | ||
| 847 | int __devinit read_current_timer(unsigned long *timer_val) | 847 | int read_current_timer(unsigned long *timer_val) |
| 848 | { | 848 | { |
| 849 | *timer_val = tick_ops->get_tick(); | 849 | *timer_val = tick_ops->get_tick(); |
| 850 | return 0; | 850 | return 0; |
diff --git a/arch/sparc/mm/init_64.c b/arch/sparc/mm/init_64.c index 85be1ca539b2..c3b72423c846 100644 --- a/arch/sparc/mm/init_64.c +++ b/arch/sparc/mm/init_64.c | |||
| @@ -87,8 +87,8 @@ static unsigned long cpu_pgsz_mask; | |||
| 87 | 87 | ||
| 88 | #define MAX_BANKS 32 | 88 | #define MAX_BANKS 32 |
| 89 | 89 | ||
| 90 | static struct linux_prom64_registers pavail[MAX_BANKS] __devinitdata; | 90 | static struct linux_prom64_registers pavail[MAX_BANKS]; |
| 91 | static int pavail_ents __devinitdata; | 91 | static int pavail_ents; |
| 92 | 92 | ||
| 93 | static int cmp_p64(const void *a, const void *b) | 93 | static int cmp_p64(const void *a, const void *b) |
| 94 | { | 94 | { |
| @@ -1931,7 +1931,7 @@ void __init paging_init(void) | |||
| 1931 | printk("Booting Linux...\n"); | 1931 | printk("Booting Linux...\n"); |
| 1932 | } | 1932 | } |
| 1933 | 1933 | ||
| 1934 | int __devinit page_in_phys_avail(unsigned long paddr) | 1934 | int page_in_phys_avail(unsigned long paddr) |
| 1935 | { | 1935 | { |
| 1936 | int i; | 1936 | int i; |
| 1937 | 1937 | ||
diff --git a/arch/tile/include/asm/pci.h b/arch/tile/include/asm/pci.h index 302cdf71ceed..54a924208d3c 100644 --- a/arch/tile/include/asm/pci.h +++ b/arch/tile/include/asm/pci.h | |||
| @@ -188,7 +188,7 @@ extern void pci_iounmap(struct pci_dev *dev, void __iomem *); | |||
| 188 | int __init tile_pci_init(void); | 188 | int __init tile_pci_init(void); |
| 189 | int __init pcibios_init(void); | 189 | int __init pcibios_init(void); |
| 190 | 190 | ||
| 191 | void __devinit pcibios_fixup_bus(struct pci_bus *bus); | 191 | void pcibios_fixup_bus(struct pci_bus *bus); |
| 192 | 192 | ||
| 193 | #define pci_domain_nr(bus) (((struct pci_controller *)(bus)->sysdata)->index) | 193 | #define pci_domain_nr(bus) (((struct pci_controller *)(bus)->sysdata)->index) |
| 194 | 194 | ||
diff --git a/arch/tile/kernel/pci.c b/arch/tile/kernel/pci.c index aac1cd586966..67237d34c2e2 100644 --- a/arch/tile/kernel/pci.c +++ b/arch/tile/kernel/pci.c | |||
| @@ -81,7 +81,7 @@ EXPORT_SYMBOL(pcibios_align_resource); | |||
| 81 | * controller_id is the controller number, config type is 0 or 1 for | 81 | * controller_id is the controller number, config type is 0 or 1 for |
| 82 | * config0 or config1 operations. | 82 | * config0 or config1 operations. |
| 83 | */ | 83 | */ |
| 84 | static int __devinit tile_pcie_open(int controller_id, int config_type) | 84 | static int tile_pcie_open(int controller_id, int config_type) |
| 85 | { | 85 | { |
| 86 | char filename[32]; | 86 | char filename[32]; |
| 87 | int fd; | 87 | int fd; |
| @@ -97,8 +97,7 @@ static int __devinit tile_pcie_open(int controller_id, int config_type) | |||
| 97 | /* | 97 | /* |
| 98 | * Get the IRQ numbers from the HV and set up the handlers for them. | 98 | * Get the IRQ numbers from the HV and set up the handlers for them. |
| 99 | */ | 99 | */ |
| 100 | static int __devinit tile_init_irqs(int controller_id, | 100 | static int tile_init_irqs(int controller_id, struct pci_controller *controller) |
| 101 | struct pci_controller *controller) | ||
| 102 | { | 101 | { |
| 103 | char filename[32]; | 102 | char filename[32]; |
| 104 | int fd; | 103 | int fd; |
| @@ -237,7 +236,7 @@ static int tile_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) | |||
| 237 | } | 236 | } |
| 238 | 237 | ||
| 239 | 238 | ||
| 240 | static void __devinit fixup_read_and_payload_sizes(void) | 239 | static void fixup_read_and_payload_sizes(void) |
| 241 | { | 240 | { |
| 242 | struct pci_dev *dev = NULL; | 241 | struct pci_dev *dev = NULL; |
| 243 | int smallest_max_payload = 0x1; /* Tile maxes out at 256 bytes. */ | 242 | int smallest_max_payload = 0x1; /* Tile maxes out at 256 bytes. */ |
| @@ -379,7 +378,7 @@ subsys_initcall(pcibios_init); | |||
| 379 | /* | 378 | /* |
| 380 | * No bus fixups needed. | 379 | * No bus fixups needed. |
| 381 | */ | 380 | */ |
| 382 | void __devinit pcibios_fixup_bus(struct pci_bus *bus) | 381 | void pcibios_fixup_bus(struct pci_bus *bus) |
| 383 | { | 382 | { |
| 384 | /* Nothing needs to be done. */ | 383 | /* Nothing needs to be done. */ |
| 385 | } | 384 | } |
| @@ -458,11 +457,8 @@ int pcibios_enable_device(struct pci_dev *dev, int mask) | |||
| 458 | * specified bus & slot. | 457 | * specified bus & slot. |
| 459 | */ | 458 | */ |
| 460 | 459 | ||
| 461 | static int __devinit tile_cfg_read(struct pci_bus *bus, | 460 | static int tile_cfg_read(struct pci_bus *bus, unsigned int devfn, int offset, |
| 462 | unsigned int devfn, | 461 | int size, u32 *val) |
| 463 | int offset, | ||
| 464 | int size, | ||
| 465 | u32 *val) | ||
| 466 | { | 462 | { |
| 467 | struct pci_controller *controller = bus->sysdata; | 463 | struct pci_controller *controller = bus->sysdata; |
| 468 | int busnum = bus->number & 0xff; | 464 | int busnum = bus->number & 0xff; |
| @@ -504,11 +500,8 @@ static int __devinit tile_cfg_read(struct pci_bus *bus, | |||
| 504 | * See tile_cfg_read() for relevant comments. | 500 | * See tile_cfg_read() for relevant comments. |
| 505 | * Note that "val" is the value to write, not a pointer to that value. | 501 | * Note that "val" is the value to write, not a pointer to that value. |
| 506 | */ | 502 | */ |
| 507 | static int __devinit tile_cfg_write(struct pci_bus *bus, | 503 | static int tile_cfg_write(struct pci_bus *bus, unsigned int devfn, int offset, |
| 508 | unsigned int devfn, | 504 | int size, u32 val) |
| 509 | int offset, | ||
| 510 | int size, | ||
| 511 | u32 val) | ||
| 512 | { | 505 | { |
| 513 | struct pci_controller *controller = bus->sysdata; | 506 | struct pci_controller *controller = bus->sysdata; |
| 514 | int busnum = bus->number & 0xff; | 507 | int busnum = bus->number & 0xff; |
diff --git a/arch/tile/kernel/pci_gx.c b/arch/tile/kernel/pci_gx.c index 94810d4a6332..11425633b2d7 100644 --- a/arch/tile/kernel/pci_gx.c +++ b/arch/tile/kernel/pci_gx.c | |||
| @@ -58,10 +58,10 @@ | |||
| 58 | #define TRACE_CFG_RD(...) | 58 | #define TRACE_CFG_RD(...) |
| 59 | #endif | 59 | #endif |
| 60 | 60 | ||
| 61 | static int __devinitdata pci_probe = 1; | 61 | static int pci_probe = 1; |
| 62 | 62 | ||
| 63 | /* Information on the PCIe RC ports configuration. */ | 63 | /* Information on the PCIe RC ports configuration. */ |
| 64 | static int __devinitdata pcie_rc[TILEGX_NUM_TRIO][TILEGX_TRIO_PCIES]; | 64 | static int pcie_rc[TILEGX_NUM_TRIO][TILEGX_TRIO_PCIES]; |
| 65 | 65 | ||
| 66 | /* | 66 | /* |
| 67 | * On some platforms with one or more Gx endpoint ports, we need to | 67 | * On some platforms with one or more Gx endpoint ports, we need to |
| @@ -72,7 +72,7 @@ static int __devinitdata pcie_rc[TILEGX_NUM_TRIO][TILEGX_TRIO_PCIES]; | |||
| 72 | * the delay in seconds. If the delay is not provided, the value | 72 | * the delay in seconds. If the delay is not provided, the value |
| 73 | * will be DEFAULT_RC_DELAY. | 73 | * will be DEFAULT_RC_DELAY. |
| 74 | */ | 74 | */ |
| 75 | static int __devinitdata rc_delay[TILEGX_NUM_TRIO][TILEGX_TRIO_PCIES]; | 75 | static int rc_delay[TILEGX_NUM_TRIO][TILEGX_TRIO_PCIES]; |
| 76 | 76 | ||
| 77 | /* Default number of seconds that the PCIe RC port probe can be delayed. */ | 77 | /* Default number of seconds that the PCIe RC port probe can be delayed. */ |
| 78 | #define DEFAULT_RC_DELAY 10 | 78 | #define DEFAULT_RC_DELAY 10 |
| @@ -137,7 +137,7 @@ static int tile_irq_cpu(int irq) | |||
| 137 | /* | 137 | /* |
| 138 | * Open a file descriptor to the TRIO shim. | 138 | * Open a file descriptor to the TRIO shim. |
| 139 | */ | 139 | */ |
| 140 | static int __devinit tile_pcie_open(int trio_index) | 140 | static int tile_pcie_open(int trio_index) |
| 141 | { | 141 | { |
| 142 | gxio_trio_context_t *context = &trio_contexts[trio_index]; | 142 | gxio_trio_context_t *context = &trio_contexts[trio_index]; |
| 143 | int ret; | 143 | int ret; |
| @@ -265,7 +265,7 @@ trio_handle_level_irq(unsigned int irq, struct irq_desc *desc) | |||
| 265 | * Create kernel irqs and set up the handlers for the legacy interrupts. | 265 | * Create kernel irqs and set up the handlers for the legacy interrupts. |
| 266 | * Also some minimum initialization for the MSI support. | 266 | * Also some minimum initialization for the MSI support. |
| 267 | */ | 267 | */ |
| 268 | static int __devinit tile_init_irqs(struct pci_controller *controller) | 268 | static int tile_init_irqs(struct pci_controller *controller) |
| 269 | { | 269 | { |
| 270 | int i; | 270 | int i; |
| 271 | int j; | 271 | int j; |
| @@ -459,8 +459,7 @@ static int tile_map_irq(const struct pci_dev *dev, u8 device, u8 pin) | |||
| 459 | } | 459 | } |
| 460 | 460 | ||
| 461 | 461 | ||
| 462 | static void __devinit fixup_read_and_payload_sizes(struct pci_controller * | 462 | static void fixup_read_and_payload_sizes(struct pci_controller *controller) |
| 463 | controller) | ||
| 464 | { | 463 | { |
| 465 | gxio_trio_context_t *trio_context = controller->trio; | 464 | gxio_trio_context_t *trio_context = controller->trio; |
| 466 | struct pci_bus *root_bus = controller->root_bus; | 465 | struct pci_bus *root_bus = controller->root_bus; |
| @@ -541,7 +540,7 @@ static void __devinit fixup_read_and_payload_sizes(struct pci_controller * | |||
| 541 | } | 540 | } |
| 542 | } | 541 | } |
| 543 | 542 | ||
| 544 | static int __devinit setup_pcie_rc_delay(char *str) | 543 | static int setup_pcie_rc_delay(char *str) |
| 545 | { | 544 | { |
| 546 | unsigned long delay = 0; | 545 | unsigned long delay = 0; |
| 547 | unsigned long trio_index; | 546 | unsigned long trio_index; |
| @@ -1016,7 +1015,7 @@ alloc_mem_map_failed: | |||
| 1016 | subsys_initcall(pcibios_init); | 1015 | subsys_initcall(pcibios_init); |
| 1017 | 1016 | ||
| 1018 | /* Note: to be deleted after Linux 3.6 merge. */ | 1017 | /* Note: to be deleted after Linux 3.6 merge. */ |
| 1019 | void __devinit pcibios_fixup_bus(struct pci_bus *bus) | 1018 | void pcibios_fixup_bus(struct pci_bus *bus) |
| 1020 | { | 1019 | { |
| 1021 | } | 1020 | } |
| 1022 | 1021 | ||
| @@ -1024,7 +1023,7 @@ void __devinit pcibios_fixup_bus(struct pci_bus *bus) | |||
| 1024 | * This can be called from the generic PCI layer, but doesn't need to | 1023 | * This can be called from the generic PCI layer, but doesn't need to |
| 1025 | * do anything. | 1024 | * do anything. |
| 1026 | */ | 1025 | */ |
| 1027 | char __devinit *pcibios_setup(char *str) | 1026 | char *pcibios_setup(char *str) |
| 1028 | { | 1027 | { |
| 1029 | if (!strcmp(str, "off")) { | 1028 | if (!strcmp(str, "off")) { |
| 1030 | pci_probe = 0; | 1029 | pci_probe = 0; |
| @@ -1143,11 +1142,8 @@ EXPORT_SYMBOL(pci_iounmap); | |||
| 1143 | * specified bus & device. | 1142 | * specified bus & device. |
| 1144 | */ | 1143 | */ |
| 1145 | 1144 | ||
| 1146 | static int __devinit tile_cfg_read(struct pci_bus *bus, | 1145 | static int tile_cfg_read(struct pci_bus *bus, unsigned int devfn, int offset, |
| 1147 | unsigned int devfn, | 1146 | int size, u32 *val) |
| 1148 | int offset, | ||
| 1149 | int size, | ||
| 1150 | u32 *val) | ||
| 1151 | { | 1147 | { |
| 1152 | struct pci_controller *controller = bus->sysdata; | 1148 | struct pci_controller *controller = bus->sysdata; |
| 1153 | gxio_trio_context_t *trio_context = controller->trio; | 1149 | gxio_trio_context_t *trio_context = controller->trio; |
| @@ -1271,11 +1267,8 @@ invalid_device: | |||
| 1271 | * See tile_cfg_read() for relevent comments. | 1267 | * See tile_cfg_read() for relevent comments. |
| 1272 | * Note that "val" is the value to write, not a pointer to that value. | 1268 | * Note that "val" is the value to write, not a pointer to that value. |
| 1273 | */ | 1269 | */ |
| 1274 | static int __devinit tile_cfg_write(struct pci_bus *bus, | 1270 | static int tile_cfg_write(struct pci_bus *bus, unsigned int devfn, int offset, |
| 1275 | unsigned int devfn, | 1271 | int size, u32 val) |
| 1276 | int offset, | ||
| 1277 | int size, | ||
| 1278 | u32 val) | ||
| 1279 | { | 1272 | { |
| 1280 | struct pci_controller *controller = bus->sysdata; | 1273 | struct pci_controller *controller = bus->sysdata; |
| 1281 | gxio_trio_context_t *trio_context = controller->trio; | 1274 | gxio_trio_context_t *trio_context = controller->trio; |
diff --git a/arch/unicore32/kernel/pci.c b/arch/unicore32/kernel/pci.c index 7c4359240b81..ef69c0c82825 100644 --- a/arch/unicore32/kernel/pci.c +++ b/arch/unicore32/kernel/pci.c | |||
| @@ -167,7 +167,7 @@ static inline int pdev_bad_for_parity(struct pci_dev *dev) | |||
| 167 | * pcibios_fixup_bus - Called after each bus is probed, | 167 | * pcibios_fixup_bus - Called after each bus is probed, |
| 168 | * but before its children are examined. | 168 | * but before its children are examined. |
| 169 | */ | 169 | */ |
| 170 | void __devinit pcibios_fixup_bus(struct pci_bus *bus) | 170 | void pcibios_fixup_bus(struct pci_bus *bus) |
| 171 | { | 171 | { |
| 172 | struct pci_dev *dev; | 172 | struct pci_dev *dev; |
| 173 | u16 features = PCI_COMMAND_SERR | 173 | u16 features = PCI_COMMAND_SERR |
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 79795af59810..225543bf45a5 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig | |||
| @@ -2138,6 +2138,7 @@ config OLPC_XO1_RTC | |||
| 2138 | config OLPC_XO1_SCI | 2138 | config OLPC_XO1_SCI |
| 2139 | bool "OLPC XO-1 SCI extras" | 2139 | bool "OLPC XO-1 SCI extras" |
| 2140 | depends on OLPC && OLPC_XO1_PM | 2140 | depends on OLPC && OLPC_XO1_PM |
| 2141 | depends on INPUT=y | ||
| 2141 | select POWER_SUPPLY | 2142 | select POWER_SUPPLY |
| 2142 | select GPIO_CS5535 | 2143 | select GPIO_CS5535 |
| 2143 | select MFD_CORE | 2144 | select MFD_CORE |
diff --git a/arch/x86/boot/Makefile b/arch/x86/boot/Makefile index ccce0ed67dde..379814bc41e3 100644 --- a/arch/x86/boot/Makefile +++ b/arch/x86/boot/Makefile | |||
| @@ -71,7 +71,7 @@ GCOV_PROFILE := n | |||
| 71 | $(obj)/bzImage: asflags-y := $(SVGA_MODE) | 71 | $(obj)/bzImage: asflags-y := $(SVGA_MODE) |
| 72 | 72 | ||
| 73 | quiet_cmd_image = BUILD $@ | 73 | quiet_cmd_image = BUILD $@ |
| 74 | cmd_image = $(obj)/tools/build $(obj)/setup.bin $(obj)/vmlinux.bin > $@ | 74 | cmd_image = $(obj)/tools/build $(obj)/setup.bin $(obj)/vmlinux.bin $(obj)/zoffset.h > $@ |
| 75 | 75 | ||
| 76 | $(obj)/bzImage: $(obj)/setup.bin $(obj)/vmlinux.bin $(obj)/tools/build FORCE | 76 | $(obj)/bzImage: $(obj)/setup.bin $(obj)/vmlinux.bin $(obj)/tools/build FORCE |
| 77 | $(call if_changed,image) | 77 | $(call if_changed,image) |
| @@ -92,7 +92,7 @@ targets += voffset.h | |||
| 92 | $(obj)/voffset.h: vmlinux FORCE | 92 | $(obj)/voffset.h: vmlinux FORCE |
| 93 | $(call if_changed,voffset) | 93 | $(call if_changed,voffset) |
| 94 | 94 | ||
| 95 | sed-zoffset := -e 's/^\([0-9a-fA-F]*\) . \(startup_32\|input_data\|_end\|z_.*\)$$/\#define ZO_\2 0x\1/p' | 95 | sed-zoffset := -e 's/^\([0-9a-fA-F]*\) . \(startup_32\|startup_64\|efi_pe_entry\|efi_stub_entry\|input_data\|_end\|z_.*\)$$/\#define ZO_\2 0x\1/p' |
| 96 | 96 | ||
| 97 | quiet_cmd_zoffset = ZOFFSET $@ | 97 | quiet_cmd_zoffset = ZOFFSET $@ |
| 98 | cmd_zoffset = $(NM) $< | sed -n $(sed-zoffset) > $@ | 98 | cmd_zoffset = $(NM) $< | sed -n $(sed-zoffset) > $@ |
diff --git a/arch/x86/boot/compressed/eboot.c b/arch/x86/boot/compressed/eboot.c index b1942e222768..f8fa41190c35 100644 --- a/arch/x86/boot/compressed/eboot.c +++ b/arch/x86/boot/compressed/eboot.c | |||
| @@ -256,10 +256,10 @@ static efi_status_t setup_efi_pci(struct boot_params *params) | |||
| 256 | int i; | 256 | int i; |
| 257 | struct setup_data *data; | 257 | struct setup_data *data; |
| 258 | 258 | ||
| 259 | data = (struct setup_data *)params->hdr.setup_data; | 259 | data = (struct setup_data *)(unsigned long)params->hdr.setup_data; |
| 260 | 260 | ||
| 261 | while (data && data->next) | 261 | while (data && data->next) |
| 262 | data = (struct setup_data *)data->next; | 262 | data = (struct setup_data *)(unsigned long)data->next; |
| 263 | 263 | ||
| 264 | status = efi_call_phys5(sys_table->boottime->locate_handle, | 264 | status = efi_call_phys5(sys_table->boottime->locate_handle, |
| 265 | EFI_LOCATE_BY_PROTOCOL, &pci_proto, | 265 | EFI_LOCATE_BY_PROTOCOL, &pci_proto, |
| @@ -295,16 +295,18 @@ static efi_status_t setup_efi_pci(struct boot_params *params) | |||
| 295 | if (!pci) | 295 | if (!pci) |
| 296 | continue; | 296 | continue; |
| 297 | 297 | ||
| 298 | #ifdef CONFIG_X86_64 | ||
| 298 | status = efi_call_phys4(pci->attributes, pci, | 299 | status = efi_call_phys4(pci->attributes, pci, |
| 299 | EfiPciIoAttributeOperationGet, 0, | 300 | EfiPciIoAttributeOperationGet, 0, |
| 300 | &attributes); | 301 | &attributes); |
| 301 | 302 | #else | |
| 303 | status = efi_call_phys5(pci->attributes, pci, | ||
| 304 | EfiPciIoAttributeOperationGet, 0, 0, | ||
| 305 | &attributes); | ||
| 306 | #endif | ||
| 302 | if (status != EFI_SUCCESS) | 307 | if (status != EFI_SUCCESS) |
| 303 | continue; | 308 | continue; |
| 304 | 309 | ||
| 305 | if (!attributes & EFI_PCI_IO_ATTRIBUTE_EMBEDDED_ROM) | ||
| 306 | continue; | ||
| 307 | |||
| 308 | if (!pci->romimage || !pci->romsize) | 310 | if (!pci->romimage || !pci->romsize) |
| 309 | continue; | 311 | continue; |
| 310 | 312 | ||
| @@ -345,9 +347,9 @@ static efi_status_t setup_efi_pci(struct boot_params *params) | |||
| 345 | memcpy(rom->romdata, pci->romimage, pci->romsize); | 347 | memcpy(rom->romdata, pci->romimage, pci->romsize); |
| 346 | 348 | ||
| 347 | if (data) | 349 | if (data) |
| 348 | data->next = (uint64_t)rom; | 350 | data->next = (unsigned long)rom; |
| 349 | else | 351 | else |
| 350 | params->hdr.setup_data = (uint64_t)rom; | 352 | params->hdr.setup_data = (unsigned long)rom; |
| 351 | 353 | ||
| 352 | data = (struct setup_data *)rom; | 354 | data = (struct setup_data *)rom; |
| 353 | 355 | ||
| @@ -432,10 +434,9 @@ static efi_status_t setup_gop(struct screen_info *si, efi_guid_t *proto, | |||
| 432 | * Once we've found a GOP supporting ConOut, | 434 | * Once we've found a GOP supporting ConOut, |
| 433 | * don't bother looking any further. | 435 | * don't bother looking any further. |
| 434 | */ | 436 | */ |
| 437 | first_gop = gop; | ||
| 435 | if (conout_found) | 438 | if (conout_found) |
| 436 | break; | 439 | break; |
| 437 | |||
| 438 | first_gop = gop; | ||
| 439 | } | 440 | } |
| 440 | } | 441 | } |
| 441 | 442 | ||
diff --git a/arch/x86/boot/compressed/head_32.S b/arch/x86/boot/compressed/head_32.S index aa4aaf1b2380..1e3184f6072f 100644 --- a/arch/x86/boot/compressed/head_32.S +++ b/arch/x86/boot/compressed/head_32.S | |||
| @@ -35,11 +35,11 @@ ENTRY(startup_32) | |||
| 35 | #ifdef CONFIG_EFI_STUB | 35 | #ifdef CONFIG_EFI_STUB |
| 36 | jmp preferred_addr | 36 | jmp preferred_addr |
| 37 | 37 | ||
| 38 | .balign 0x10 | ||
| 39 | /* | 38 | /* |
| 40 | * We don't need the return address, so set up the stack so | 39 | * We don't need the return address, so set up the stack so |
| 41 | * efi_main() can find its arugments. | 40 | * efi_main() can find its arguments. |
| 42 | */ | 41 | */ |
| 42 | ENTRY(efi_pe_entry) | ||
| 43 | add $0x4, %esp | 43 | add $0x4, %esp |
| 44 | 44 | ||
| 45 | call make_boot_params | 45 | call make_boot_params |
| @@ -50,8 +50,10 @@ ENTRY(startup_32) | |||
| 50 | pushl %eax | 50 | pushl %eax |
| 51 | pushl %esi | 51 | pushl %esi |
| 52 | pushl %ecx | 52 | pushl %ecx |
| 53 | sub $0x4, %esp | ||
| 53 | 54 | ||
| 54 | .org 0x30,0x90 | 55 | ENTRY(efi_stub_entry) |
| 56 | add $0x4, %esp | ||
| 55 | call efi_main | 57 | call efi_main |
| 56 | cmpl $0, %eax | 58 | cmpl $0, %eax |
| 57 | movl %eax, %esi | 59 | movl %eax, %esi |
diff --git a/arch/x86/boot/compressed/head_64.S b/arch/x86/boot/compressed/head_64.S index 2c4b171eec33..f5d1aaa0dec8 100644 --- a/arch/x86/boot/compressed/head_64.S +++ b/arch/x86/boot/compressed/head_64.S | |||
| @@ -201,12 +201,12 @@ ENTRY(startup_64) | |||
| 201 | */ | 201 | */ |
| 202 | #ifdef CONFIG_EFI_STUB | 202 | #ifdef CONFIG_EFI_STUB |
| 203 | /* | 203 | /* |
| 204 | * The entry point for the PE/COFF executable is 0x210, so only | 204 | * The entry point for the PE/COFF executable is efi_pe_entry, so |
| 205 | * legacy boot loaders will execute this jmp. | 205 | * only legacy boot loaders will execute this jmp. |
| 206 | */ | 206 | */ |
| 207 | jmp preferred_addr | 207 | jmp preferred_addr |
| 208 | 208 | ||
| 209 | .org 0x210 | 209 | ENTRY(efi_pe_entry) |
| 210 | mov %rcx, %rdi | 210 | mov %rcx, %rdi |
| 211 | mov %rdx, %rsi | 211 | mov %rdx, %rsi |
| 212 | pushq %rdi | 212 | pushq %rdi |
| @@ -218,7 +218,7 @@ ENTRY(startup_64) | |||
| 218 | popq %rsi | 218 | popq %rsi |
| 219 | popq %rdi | 219 | popq %rdi |
| 220 | 220 | ||
| 221 | .org 0x230,0x90 | 221 | ENTRY(efi_stub_entry) |
| 222 | call efi_main | 222 | call efi_main |
| 223 | movq %rax,%rsi | 223 | movq %rax,%rsi |
| 224 | cmpq $0,%rax | 224 | cmpq $0,%rax |
diff --git a/arch/x86/boot/header.S b/arch/x86/boot/header.S index 8c132a625b94..944ce595f767 100644 --- a/arch/x86/boot/header.S +++ b/arch/x86/boot/header.S | |||
| @@ -21,6 +21,7 @@ | |||
| 21 | #include <asm/e820.h> | 21 | #include <asm/e820.h> |
| 22 | #include <asm/page_types.h> | 22 | #include <asm/page_types.h> |
| 23 | #include <asm/setup.h> | 23 | #include <asm/setup.h> |
| 24 | #include <asm/bootparam.h> | ||
| 24 | #include "boot.h" | 25 | #include "boot.h" |
| 25 | #include "voffset.h" | 26 | #include "voffset.h" |
| 26 | #include "zoffset.h" | 27 | #include "zoffset.h" |
| @@ -255,6 +256,9 @@ section_table: | |||
| 255 | # header, from the old boot sector. | 256 | # header, from the old boot sector. |
| 256 | 257 | ||
| 257 | .section ".header", "a" | 258 | .section ".header", "a" |
| 259 | .globl sentinel | ||
| 260 | sentinel: .byte 0xff, 0xff /* Used to detect broken loaders */ | ||
| 261 | |||
| 258 | .globl hdr | 262 | .globl hdr |
| 259 | hdr: | 263 | hdr: |
| 260 | setup_sects: .byte 0 /* Filled in by build.c */ | 264 | setup_sects: .byte 0 /* Filled in by build.c */ |
| @@ -279,7 +283,7 @@ _start: | |||
| 279 | # Part 2 of the header, from the old setup.S | 283 | # Part 2 of the header, from the old setup.S |
| 280 | 284 | ||
| 281 | .ascii "HdrS" # header signature | 285 | .ascii "HdrS" # header signature |
| 282 | .word 0x020b # header version number (>= 0x0105) | 286 | .word 0x020c # header version number (>= 0x0105) |
| 283 | # or else old loadlin-1.5 will fail) | 287 | # or else old loadlin-1.5 will fail) |
| 284 | .globl realmode_swtch | 288 | .globl realmode_swtch |
| 285 | realmode_swtch: .word 0, 0 # default_switch, SETUPSEG | 289 | realmode_swtch: .word 0, 0 # default_switch, SETUPSEG |
| @@ -297,13 +301,7 @@ type_of_loader: .byte 0 # 0 means ancient bootloader, newer | |||
| 297 | 301 | ||
| 298 | # flags, unused bits must be zero (RFU) bit within loadflags | 302 | # flags, unused bits must be zero (RFU) bit within loadflags |
| 299 | loadflags: | 303 | loadflags: |
| 300 | LOADED_HIGH = 1 # If set, the kernel is loaded high | 304 | .byte LOADED_HIGH # The kernel is to be loaded high |
| 301 | CAN_USE_HEAP = 0x80 # If set, the loader also has set | ||
| 302 | # heap_end_ptr to tell how much | ||
| 303 | # space behind setup.S can be used for | ||
| 304 | # heap purposes. | ||
| 305 | # Only the loader knows what is free | ||
| 306 | .byte LOADED_HIGH | ||
| 307 | 305 | ||
| 308 | setup_move_size: .word 0x8000 # size to move, when setup is not | 306 | setup_move_size: .word 0x8000 # size to move, when setup is not |
| 309 | # loaded at 0x90000. We will move setup | 307 | # loaded at 0x90000. We will move setup |
| @@ -369,7 +367,23 @@ relocatable_kernel: .byte 1 | |||
| 369 | relocatable_kernel: .byte 0 | 367 | relocatable_kernel: .byte 0 |
| 370 | #endif | 368 | #endif |
| 371 | min_alignment: .byte MIN_KERNEL_ALIGN_LG2 # minimum alignment | 369 | min_alignment: .byte MIN_KERNEL_ALIGN_LG2 # minimum alignment |
| 372 | pad3: .word 0 | 370 | |
| 371 | xloadflags: | ||
| 372 | #ifdef CONFIG_X86_64 | ||
| 373 | # define XLF0 XLF_KERNEL_64 /* 64-bit kernel */ | ||
| 374 | #else | ||
| 375 | # define XLF0 0 | ||
| 376 | #endif | ||
| 377 | #ifdef CONFIG_EFI_STUB | ||
| 378 | # ifdef CONFIG_X86_64 | ||
| 379 | # define XLF23 XLF_EFI_HANDOVER_64 /* 64-bit EFI handover ok */ | ||
| 380 | # else | ||
| 381 | # define XLF23 XLF_EFI_HANDOVER_32 /* 32-bit EFI handover ok */ | ||
| 382 | # endif | ||
| 383 | #else | ||
| 384 | # define XLF23 0 | ||
| 385 | #endif | ||
| 386 | .word XLF0 | XLF23 | ||
| 373 | 387 | ||
| 374 | cmdline_size: .long COMMAND_LINE_SIZE-1 #length of the command line, | 388 | cmdline_size: .long COMMAND_LINE_SIZE-1 #length of the command line, |
| 375 | #added with boot protocol | 389 | #added with boot protocol |
| @@ -397,8 +411,13 @@ pref_address: .quad LOAD_PHYSICAL_ADDR # preferred load addr | |||
| 397 | #define INIT_SIZE VO_INIT_SIZE | 411 | #define INIT_SIZE VO_INIT_SIZE |
| 398 | #endif | 412 | #endif |
| 399 | init_size: .long INIT_SIZE # kernel initialization size | 413 | init_size: .long INIT_SIZE # kernel initialization size |
| 400 | handover_offset: .long 0x30 # offset to the handover | 414 | handover_offset: |
| 415 | #ifdef CONFIG_EFI_STUB | ||
| 416 | .long 0x30 # offset to the handover | ||
| 401 | # protocol entry point | 417 | # protocol entry point |
| 418 | #else | ||
| 419 | .long 0 | ||
| 420 | #endif | ||
| 402 | 421 | ||
| 403 | # End of setup header ##################################################### | 422 | # End of setup header ##################################################### |
| 404 | 423 | ||
diff --git a/arch/x86/boot/setup.ld b/arch/x86/boot/setup.ld index 03c0683636b6..96a6c7563538 100644 --- a/arch/x86/boot/setup.ld +++ b/arch/x86/boot/setup.ld | |||
| @@ -13,7 +13,7 @@ SECTIONS | |||
| 13 | .bstext : { *(.bstext) } | 13 | .bstext : { *(.bstext) } |
| 14 | .bsdata : { *(.bsdata) } | 14 | .bsdata : { *(.bsdata) } |
| 15 | 15 | ||
| 16 | . = 497; | 16 | . = 495; |
| 17 | .header : { *(.header) } | 17 | .header : { *(.header) } |
| 18 | .entrytext : { *(.entrytext) } | 18 | .entrytext : { *(.entrytext) } |
| 19 | .inittext : { *(.inittext) } | 19 | .inittext : { *(.inittext) } |
diff --git a/arch/x86/boot/tools/build.c b/arch/x86/boot/tools/build.c index 4b8e165ee572..94c544650020 100644 --- a/arch/x86/boot/tools/build.c +++ b/arch/x86/boot/tools/build.c | |||
| @@ -52,6 +52,10 @@ int is_big_kernel; | |||
| 52 | 52 | ||
| 53 | #define PECOFF_RELOC_RESERVE 0x20 | 53 | #define PECOFF_RELOC_RESERVE 0x20 |
| 54 | 54 | ||
| 55 | unsigned long efi_stub_entry; | ||
| 56 | unsigned long efi_pe_entry; | ||
| 57 | unsigned long startup_64; | ||
| 58 | |||
| 55 | /*----------------------------------------------------------------------*/ | 59 | /*----------------------------------------------------------------------*/ |
| 56 | 60 | ||
| 57 | static const u32 crctab32[] = { | 61 | static const u32 crctab32[] = { |
| @@ -132,7 +136,7 @@ static void die(const char * str, ...) | |||
| 132 | 136 | ||
| 133 | static void usage(void) | 137 | static void usage(void) |
| 134 | { | 138 | { |
| 135 | die("Usage: build setup system [> image]"); | 139 | die("Usage: build setup system [zoffset.h] [> image]"); |
| 136 | } | 140 | } |
| 137 | 141 | ||
| 138 | #ifdef CONFIG_EFI_STUB | 142 | #ifdef CONFIG_EFI_STUB |
| @@ -206,30 +210,54 @@ static void update_pecoff_text(unsigned int text_start, unsigned int file_sz) | |||
| 206 | */ | 210 | */ |
| 207 | put_unaligned_le32(file_sz - 512, &buf[pe_header + 0x1c]); | 211 | put_unaligned_le32(file_sz - 512, &buf[pe_header + 0x1c]); |
| 208 | 212 | ||
| 209 | #ifdef CONFIG_X86_32 | ||
| 210 | /* | 213 | /* |
| 211 | * Address of entry point. | 214 | * Address of entry point for PE/COFF executable |
| 212 | * | ||
| 213 | * The EFI stub entry point is +16 bytes from the start of | ||
| 214 | * the .text section. | ||
| 215 | */ | 215 | */ |
| 216 | put_unaligned_le32(text_start + 16, &buf[pe_header + 0x28]); | 216 | put_unaligned_le32(text_start + efi_pe_entry, &buf[pe_header + 0x28]); |
| 217 | #else | ||
| 218 | /* | ||
| 219 | * Address of entry point. startup_32 is at the beginning and | ||
| 220 | * the 64-bit entry point (startup_64) is always 512 bytes | ||
| 221 | * after. The EFI stub entry point is 16 bytes after that, as | ||
| 222 | * the first instruction allows legacy loaders to jump over | ||
| 223 | * the EFI stub initialisation | ||
| 224 | */ | ||
| 225 | put_unaligned_le32(text_start + 528, &buf[pe_header + 0x28]); | ||
| 226 | #endif /* CONFIG_X86_32 */ | ||
| 227 | 217 | ||
| 228 | update_pecoff_section_header(".text", text_start, text_sz); | 218 | update_pecoff_section_header(".text", text_start, text_sz); |
| 229 | } | 219 | } |
| 230 | 220 | ||
| 231 | #endif /* CONFIG_EFI_STUB */ | 221 | #endif /* CONFIG_EFI_STUB */ |
| 232 | 222 | ||
| 223 | |||
| 224 | /* | ||
| 225 | * Parse zoffset.h and find the entry points. We could just #include zoffset.h | ||
| 226 | * but that would mean tools/build would have to be rebuilt every time. It's | ||
| 227 | * not as if parsing it is hard... | ||
| 228 | */ | ||
| 229 | #define PARSE_ZOFS(p, sym) do { \ | ||
| 230 | if (!strncmp(p, "#define ZO_" #sym " ", 11+sizeof(#sym))) \ | ||
| 231 | sym = strtoul(p + 11 + sizeof(#sym), NULL, 16); \ | ||
| 232 | } while (0) | ||
| 233 | |||
| 234 | static void parse_zoffset(char *fname) | ||
| 235 | { | ||
| 236 | FILE *file; | ||
| 237 | char *p; | ||
| 238 | int c; | ||
| 239 | |||
| 240 | file = fopen(fname, "r"); | ||
| 241 | if (!file) | ||
| 242 | die("Unable to open `%s': %m", fname); | ||
| 243 | c = fread(buf, 1, sizeof(buf) - 1, file); | ||
| 244 | if (ferror(file)) | ||
| 245 | die("read-error on `zoffset.h'"); | ||
| 246 | buf[c] = 0; | ||
| 247 | |||
| 248 | p = (char *)buf; | ||
| 249 | |||
| 250 | while (p && *p) { | ||
| 251 | PARSE_ZOFS(p, efi_stub_entry); | ||
| 252 | PARSE_ZOFS(p, efi_pe_entry); | ||
| 253 | PARSE_ZOFS(p, startup_64); | ||
| 254 | |||
| 255 | p = strchr(p, '\n'); | ||
| 256 | while (p && (*p == '\r' || *p == '\n')) | ||
| 257 | p++; | ||
| 258 | } | ||
| 259 | } | ||
| 260 | |||
| 233 | int main(int argc, char ** argv) | 261 | int main(int argc, char ** argv) |
| 234 | { | 262 | { |
| 235 | unsigned int i, sz, setup_sectors; | 263 | unsigned int i, sz, setup_sectors; |
| @@ -241,7 +269,19 @@ int main(int argc, char ** argv) | |||
| 241 | void *kernel; | 269 | void *kernel; |
| 242 | u32 crc = 0xffffffffUL; | 270 | u32 crc = 0xffffffffUL; |
| 243 | 271 | ||
| 244 | if (argc != 3) | 272 | /* Defaults for old kernel */ |
| 273 | #ifdef CONFIG_X86_32 | ||
| 274 | efi_pe_entry = 0x10; | ||
| 275 | efi_stub_entry = 0x30; | ||
| 276 | #else | ||
| 277 | efi_pe_entry = 0x210; | ||
| 278 | efi_stub_entry = 0x230; | ||
| 279 | startup_64 = 0x200; | ||
| 280 | #endif | ||
| 281 | |||
| 282 | if (argc == 4) | ||
| 283 | parse_zoffset(argv[3]); | ||
| 284 | else if (argc != 3) | ||
| 245 | usage(); | 285 | usage(); |
| 246 | 286 | ||
| 247 | /* Copy the setup code */ | 287 | /* Copy the setup code */ |
| @@ -299,6 +339,11 @@ int main(int argc, char ** argv) | |||
| 299 | 339 | ||
| 300 | #ifdef CONFIG_EFI_STUB | 340 | #ifdef CONFIG_EFI_STUB |
| 301 | update_pecoff_text(setup_sectors * 512, sz + i + ((sys_size * 16) - sz)); | 341 | update_pecoff_text(setup_sectors * 512, sz + i + ((sys_size * 16) - sz)); |
| 342 | |||
| 343 | #ifdef CONFIG_X86_64 /* Yes, this is really how we defined it :( */ | ||
| 344 | efi_stub_entry -= 0x200; | ||
| 345 | #endif | ||
| 346 | put_unaligned_le32(efi_stub_entry, &buf[0x264]); | ||
| 302 | #endif | 347 | #endif |
| 303 | 348 | ||
| 304 | crc = partial_crc32(buf, i, crc); | 349 | crc = partial_crc32(buf, i, crc); |
diff --git a/arch/x86/include/asm/efi.h b/arch/x86/include/asm/efi.h index 6e8fdf5ad113..28677c55113f 100644 --- a/arch/x86/include/asm/efi.h +++ b/arch/x86/include/asm/efi.h | |||
| @@ -94,6 +94,7 @@ extern void __iomem *efi_ioremap(unsigned long addr, unsigned long size, | |||
| 94 | #endif /* CONFIG_X86_32 */ | 94 | #endif /* CONFIG_X86_32 */ |
| 95 | 95 | ||
| 96 | extern int add_efi_memmap; | 96 | extern int add_efi_memmap; |
| 97 | extern unsigned long x86_efi_facility; | ||
| 97 | extern void efi_set_executable(efi_memory_desc_t *md, bool executable); | 98 | extern void efi_set_executable(efi_memory_desc_t *md, bool executable); |
| 98 | extern int efi_memblock_x86_reserve_range(void); | 99 | extern int efi_memblock_x86_reserve_range(void); |
| 99 | extern void efi_call_phys_prelog(void); | 100 | extern void efi_call_phys_prelog(void); |
diff --git a/arch/x86/include/asm/parport.h b/arch/x86/include/asm/parport.h index 3c4ffeb467e9..0d2d3b29118f 100644 --- a/arch/x86/include/asm/parport.h +++ b/arch/x86/include/asm/parport.h | |||
| @@ -1,8 +1,8 @@ | |||
| 1 | #ifndef _ASM_X86_PARPORT_H | 1 | #ifndef _ASM_X86_PARPORT_H |
| 2 | #define _ASM_X86_PARPORT_H | 2 | #define _ASM_X86_PARPORT_H |
| 3 | 3 | ||
| 4 | static int __devinit parport_pc_find_isa_ports(int autoirq, int autodma); | 4 | static int parport_pc_find_isa_ports(int autoirq, int autodma); |
| 5 | static int __devinit parport_pc_find_nonpci_ports(int autoirq, int autodma) | 5 | static int parport_pc_find_nonpci_ports(int autoirq, int autodma) |
| 6 | { | 6 | { |
| 7 | return parport_pc_find_isa_ports(autoirq, autodma); | 7 | return parport_pc_find_isa_ports(autoirq, autodma); |
| 8 | } | 8 | } |
diff --git a/arch/x86/include/asm/pci_x86.h b/arch/x86/include/asm/pci_x86.h index 73e8eeff22ee..747e5a38b590 100644 --- a/arch/x86/include/asm/pci_x86.h +++ b/arch/x86/include/asm/pci_x86.h | |||
| @@ -140,11 +140,10 @@ struct pci_mmcfg_region { | |||
| 140 | 140 | ||
| 141 | extern int __init pci_mmcfg_arch_init(void); | 141 | extern int __init pci_mmcfg_arch_init(void); |
| 142 | extern void __init pci_mmcfg_arch_free(void); | 142 | extern void __init pci_mmcfg_arch_free(void); |
| 143 | extern int __devinit pci_mmcfg_arch_map(struct pci_mmcfg_region *cfg); | 143 | extern int pci_mmcfg_arch_map(struct pci_mmcfg_region *cfg); |
| 144 | extern void pci_mmcfg_arch_unmap(struct pci_mmcfg_region *cfg); | 144 | extern void pci_mmcfg_arch_unmap(struct pci_mmcfg_region *cfg); |
| 145 | extern int __devinit pci_mmconfig_insert(struct device *dev, | 145 | extern int pci_mmconfig_insert(struct device *dev, u16 seg, u8 start, u8 end, |
| 146 | u16 seg, u8 start, | 146 | phys_addr_t addr); |
| 147 | u8 end, phys_addr_t addr); | ||
| 148 | extern int pci_mmconfig_delete(u16 seg, u8 start, u8 end); | 147 | extern int pci_mmconfig_delete(u16 seg, u8 start, u8 end); |
| 149 | extern struct pci_mmcfg_region *pci_mmconfig_lookup(int segment, int bus); | 148 | extern struct pci_mmcfg_region *pci_mmconfig_lookup(int segment, int bus); |
| 150 | 149 | ||
diff --git a/arch/x86/include/asm/uv/uv.h b/arch/x86/include/asm/uv/uv.h index b47c2a82ff15..062921ef34e9 100644 --- a/arch/x86/include/asm/uv/uv.h +++ b/arch/x86/include/asm/uv/uv.h | |||
| @@ -16,7 +16,7 @@ extern void uv_system_init(void); | |||
| 16 | extern const struct cpumask *uv_flush_tlb_others(const struct cpumask *cpumask, | 16 | extern const struct cpumask *uv_flush_tlb_others(const struct cpumask *cpumask, |
| 17 | struct mm_struct *mm, | 17 | struct mm_struct *mm, |
| 18 | unsigned long start, | 18 | unsigned long start, |
| 19 | unsigned end, | 19 | unsigned long end, |
| 20 | unsigned int cpu); | 20 | unsigned int cpu); |
| 21 | 21 | ||
| 22 | #else /* X86_UV */ | 22 | #else /* X86_UV */ |
diff --git a/arch/x86/include/uapi/asm/bootparam.h b/arch/x86/include/uapi/asm/bootparam.h index 92862cd90201..c15ddaf90710 100644 --- a/arch/x86/include/uapi/asm/bootparam.h +++ b/arch/x86/include/uapi/asm/bootparam.h | |||
| @@ -1,6 +1,31 @@ | |||
| 1 | #ifndef _ASM_X86_BOOTPARAM_H | 1 | #ifndef _ASM_X86_BOOTPARAM_H |
| 2 | #define _ASM_X86_BOOTPARAM_H | 2 | #define _ASM_X86_BOOTPARAM_H |
| 3 | 3 | ||
| 4 | /* setup_data types */ | ||
| 5 | #define SETUP_NONE 0 | ||
| 6 | #define SETUP_E820_EXT 1 | ||
| 7 | #define SETUP_DTB 2 | ||
| 8 | #define SETUP_PCI 3 | ||
| 9 | |||
| 10 | /* ram_size flags */ | ||
| 11 | #define RAMDISK_IMAGE_START_MASK 0x07FF | ||
| 12 | #define RAMDISK_PROMPT_FLAG 0x8000 | ||
| 13 | #define RAMDISK_LOAD_FLAG 0x4000 | ||
| 14 | |||
| 15 | /* loadflags */ | ||
| 16 | #define LOADED_HIGH (1<<0) | ||
| 17 | #define QUIET_FLAG (1<<5) | ||
| 18 | #define KEEP_SEGMENTS (1<<6) | ||
| 19 | #define CAN_USE_HEAP (1<<7) | ||
| 20 | |||
| 21 | /* xloadflags */ | ||
| 22 | #define XLF_KERNEL_64 (1<<0) | ||
| 23 | #define XLF_CAN_BE_LOADED_ABOVE_4G (1<<1) | ||
| 24 | #define XLF_EFI_HANDOVER_32 (1<<2) | ||
| 25 | #define XLF_EFI_HANDOVER_64 (1<<3) | ||
| 26 | |||
| 27 | #ifndef __ASSEMBLY__ | ||
| 28 | |||
| 4 | #include <linux/types.h> | 29 | #include <linux/types.h> |
| 5 | #include <linux/screen_info.h> | 30 | #include <linux/screen_info.h> |
| 6 | #include <linux/apm_bios.h> | 31 | #include <linux/apm_bios.h> |
| @@ -9,12 +34,6 @@ | |||
| 9 | #include <asm/ist.h> | 34 | #include <asm/ist.h> |
| 10 | #include <video/edid.h> | 35 | #include <video/edid.h> |
| 11 | 36 | ||
| 12 | /* setup data types */ | ||
| 13 | #define SETUP_NONE 0 | ||
| 14 | #define SETUP_E820_EXT 1 | ||
| 15 | #define SETUP_DTB 2 | ||
| 16 | #define SETUP_PCI 3 | ||
| 17 | |||
| 18 | /* extensible setup data list node */ | 37 | /* extensible setup data list node */ |
| 19 | struct setup_data { | 38 | struct setup_data { |
| 20 | __u64 next; | 39 | __u64 next; |
| @@ -28,9 +47,6 @@ struct setup_header { | |||
| 28 | __u16 root_flags; | 47 | __u16 root_flags; |
| 29 | __u32 syssize; | 48 | __u32 syssize; |
| 30 | __u16 ram_size; | 49 | __u16 ram_size; |
| 31 | #define RAMDISK_IMAGE_START_MASK 0x07FF | ||
| 32 | #define RAMDISK_PROMPT_FLAG 0x8000 | ||
| 33 | #define RAMDISK_LOAD_FLAG 0x4000 | ||
| 34 | __u16 vid_mode; | 50 | __u16 vid_mode; |
| 35 | __u16 root_dev; | 51 | __u16 root_dev; |
| 36 | __u16 boot_flag; | 52 | __u16 boot_flag; |
| @@ -42,10 +58,6 @@ struct setup_header { | |||
| 42 | __u16 kernel_version; | 58 | __u16 kernel_version; |
| 43 | __u8 type_of_loader; | 59 | __u8 type_of_loader; |
| 44 | __u8 loadflags; | 60 | __u8 loadflags; |
| 45 | #define LOADED_HIGH (1<<0) | ||
| 46 | #define QUIET_FLAG (1<<5) | ||
| 47 | #define KEEP_SEGMENTS (1<<6) | ||
| 48 | #define CAN_USE_HEAP (1<<7) | ||
| 49 | __u16 setup_move_size; | 61 | __u16 setup_move_size; |
| 50 | __u32 code32_start; | 62 | __u32 code32_start; |
| 51 | __u32 ramdisk_image; | 63 | __u32 ramdisk_image; |
| @@ -58,7 +70,8 @@ struct setup_header { | |||
| 58 | __u32 initrd_addr_max; | 70 | __u32 initrd_addr_max; |
| 59 | __u32 kernel_alignment; | 71 | __u32 kernel_alignment; |
| 60 | __u8 relocatable_kernel; | 72 | __u8 relocatable_kernel; |
| 61 | __u8 _pad2[3]; | 73 | __u8 min_alignment; |
| 74 | __u16 xloadflags; | ||
| 62 | __u32 cmdline_size; | 75 | __u32 cmdline_size; |
| 63 | __u32 hardware_subarch; | 76 | __u32 hardware_subarch; |
| 64 | __u64 hardware_subarch_data; | 77 | __u64 hardware_subarch_data; |
| @@ -106,7 +119,10 @@ struct boot_params { | |||
| 106 | __u8 hd1_info[16]; /* obsolete! */ /* 0x090 */ | 119 | __u8 hd1_info[16]; /* obsolete! */ /* 0x090 */ |
| 107 | struct sys_desc_table sys_desc_table; /* 0x0a0 */ | 120 | struct sys_desc_table sys_desc_table; /* 0x0a0 */ |
| 108 | struct olpc_ofw_header olpc_ofw_header; /* 0x0b0 */ | 121 | struct olpc_ofw_header olpc_ofw_header; /* 0x0b0 */ |
| 109 | __u8 _pad4[128]; /* 0x0c0 */ | 122 | __u32 ext_ramdisk_image; /* 0x0c0 */ |
| 123 | __u32 ext_ramdisk_size; /* 0x0c4 */ | ||
| 124 | __u32 ext_cmd_line_ptr; /* 0x0c8 */ | ||
| 125 | __u8 _pad4[116]; /* 0x0cc */ | ||
| 110 | struct edid_info edid_info; /* 0x140 */ | 126 | struct edid_info edid_info; /* 0x140 */ |
| 111 | struct efi_info efi_info; /* 0x1c0 */ | 127 | struct efi_info efi_info; /* 0x1c0 */ |
| 112 | __u32 alt_mem_k; /* 0x1e0 */ | 128 | __u32 alt_mem_k; /* 0x1e0 */ |
| @@ -115,7 +131,20 @@ struct boot_params { | |||
| 115 | __u8 eddbuf_entries; /* 0x1e9 */ | 131 | __u8 eddbuf_entries; /* 0x1e9 */ |
| 116 | __u8 edd_mbr_sig_buf_entries; /* 0x1ea */ | 132 | __u8 edd_mbr_sig_buf_entries; /* 0x1ea */ |
| 117 | __u8 kbd_status; /* 0x1eb */ | 133 | __u8 kbd_status; /* 0x1eb */ |
| 118 | __u8 _pad6[5]; /* 0x1ec */ | 134 | __u8 _pad5[3]; /* 0x1ec */ |
| 135 | /* | ||
| 136 | * The sentinel is set to a nonzero value (0xff) in header.S. | ||
| 137 | * | ||
| 138 | * A bootloader is supposed to only take setup_header and put | ||
| 139 | * it into a clean boot_params buffer. If it turns out that | ||
| 140 | * it is clumsy or too generous with the buffer, it most | ||
| 141 | * probably will pick up the sentinel variable too. The fact | ||
| 142 | * that this variable then is still 0xff will let kernel | ||
| 143 | * know that some variables in boot_params are invalid and | ||
| 144 | * kernel should zero out certain portions of boot_params. | ||
| 145 | */ | ||
| 146 | __u8 sentinel; /* 0x1ef */ | ||
| 147 | __u8 _pad6[1]; /* 0x1f0 */ | ||
| 119 | struct setup_header hdr; /* setup header */ /* 0x1f1 */ | 148 | struct setup_header hdr; /* setup header */ /* 0x1f1 */ |
| 120 | __u8 _pad7[0x290-0x1f1-sizeof(struct setup_header)]; | 149 | __u8 _pad7[0x290-0x1f1-sizeof(struct setup_header)]; |
| 121 | __u32 edd_mbr_sig_buffer[EDD_MBR_SIG_MAX]; /* 0x290 */ | 150 | __u32 edd_mbr_sig_buffer[EDD_MBR_SIG_MAX]; /* 0x290 */ |
| @@ -134,6 +163,6 @@ enum { | |||
| 134 | X86_NR_SUBARCHS, | 163 | X86_NR_SUBARCHS, |
| 135 | }; | 164 | }; |
| 136 | 165 | ||
| 137 | 166 | #endif /* __ASSEMBLY__ */ | |
| 138 | 167 | ||
| 139 | #endif /* _ASM_X86_BOOTPARAM_H */ | 168 | #endif /* _ASM_X86_BOOTPARAM_H */ |
diff --git a/arch/x86/kernel/cpu/perf_event.c b/arch/x86/kernel/cpu/perf_event.c index 4428fd178bce..6774c17a5576 100644 --- a/arch/x86/kernel/cpu/perf_event.c +++ b/arch/x86/kernel/cpu/perf_event.c | |||
| @@ -340,9 +340,6 @@ int x86_setup_perfctr(struct perf_event *event) | |||
| 340 | /* BTS is currently only allowed for user-mode. */ | 340 | /* BTS is currently only allowed for user-mode. */ |
| 341 | if (!attr->exclude_kernel) | 341 | if (!attr->exclude_kernel) |
| 342 | return -EOPNOTSUPP; | 342 | return -EOPNOTSUPP; |
| 343 | |||
| 344 | if (!attr->exclude_guest) | ||
| 345 | return -EOPNOTSUPP; | ||
| 346 | } | 343 | } |
| 347 | 344 | ||
| 348 | hwc->config |= config; | 345 | hwc->config |= config; |
| @@ -385,9 +382,6 @@ int x86_pmu_hw_config(struct perf_event *event) | |||
| 385 | if (event->attr.precise_ip) { | 382 | if (event->attr.precise_ip) { |
| 386 | int precise = 0; | 383 | int precise = 0; |
| 387 | 384 | ||
| 388 | if (!event->attr.exclude_guest) | ||
| 389 | return -EOPNOTSUPP; | ||
| 390 | |||
| 391 | /* Support for constant skid */ | 385 | /* Support for constant skid */ |
| 392 | if (x86_pmu.pebs_active && !x86_pmu.pebs_broken) { | 386 | if (x86_pmu.pebs_active && !x86_pmu.pebs_broken) { |
| 393 | precise++; | 387 | precise++; |
diff --git a/arch/x86/kernel/cpu/perf_event_intel_uncore.c b/arch/x86/kernel/cpu/perf_event_intel_uncore.c index 3cf3d97cce3a..b43200dbfe7e 100644 --- a/arch/x86/kernel/cpu/perf_event_intel_uncore.c +++ b/arch/x86/kernel/cpu/perf_event_intel_uncore.c | |||
| @@ -2500,7 +2500,7 @@ static bool pcidrv_registered; | |||
| 2500 | /* | 2500 | /* |
| 2501 | * add a pci uncore device | 2501 | * add a pci uncore device |
| 2502 | */ | 2502 | */ |
| 2503 | static int __devinit uncore_pci_add(struct intel_uncore_type *type, struct pci_dev *pdev) | 2503 | static int uncore_pci_add(struct intel_uncore_type *type, struct pci_dev *pdev) |
| 2504 | { | 2504 | { |
| 2505 | struct intel_uncore_pmu *pmu; | 2505 | struct intel_uncore_pmu *pmu; |
| 2506 | struct intel_uncore_box *box; | 2506 | struct intel_uncore_box *box; |
| @@ -2571,8 +2571,8 @@ static void uncore_pci_remove(struct pci_dev *pdev) | |||
| 2571 | kfree(box); | 2571 | kfree(box); |
| 2572 | } | 2572 | } |
| 2573 | 2573 | ||
| 2574 | static int __devinit uncore_pci_probe(struct pci_dev *pdev, | 2574 | static int uncore_pci_probe(struct pci_dev *pdev, |
| 2575 | const struct pci_device_id *id) | 2575 | const struct pci_device_id *id) |
| 2576 | { | 2576 | { |
| 2577 | struct intel_uncore_type *type; | 2577 | struct intel_uncore_type *type; |
| 2578 | 2578 | ||
diff --git a/arch/x86/kernel/entry_32.S b/arch/x86/kernel/entry_32.S index ff84d5469d77..6ed91d9980e2 100644 --- a/arch/x86/kernel/entry_32.S +++ b/arch/x86/kernel/entry_32.S | |||
| @@ -1065,7 +1065,6 @@ ENTRY(xen_failsafe_callback) | |||
| 1065 | lea 16(%esp),%esp | 1065 | lea 16(%esp),%esp |
| 1066 | CFI_ADJUST_CFA_OFFSET -16 | 1066 | CFI_ADJUST_CFA_OFFSET -16 |
| 1067 | jz 5f | 1067 | jz 5f |
| 1068 | addl $16,%esp | ||
| 1069 | jmp iret_exc | 1068 | jmp iret_exc |
| 1070 | 5: pushl_cfi $-1 /* orig_ax = -1 => not a system call */ | 1069 | 5: pushl_cfi $-1 /* orig_ax = -1 => not a system call */ |
| 1071 | SAVE_ALL | 1070 | SAVE_ALL |
diff --git a/arch/x86/kernel/entry_64.S b/arch/x86/kernel/entry_64.S index 07a7a04529bc..cb3c591339aa 100644 --- a/arch/x86/kernel/entry_64.S +++ b/arch/x86/kernel/entry_64.S | |||
| @@ -1781,6 +1781,7 @@ first_nmi: | |||
| 1781 | * Leave room for the "copied" frame | 1781 | * Leave room for the "copied" frame |
| 1782 | */ | 1782 | */ |
| 1783 | subq $(5*8), %rsp | 1783 | subq $(5*8), %rsp |
| 1784 | CFI_ADJUST_CFA_OFFSET 5*8 | ||
| 1784 | 1785 | ||
| 1785 | /* Copy the stack frame to the Saved frame */ | 1786 | /* Copy the stack frame to the Saved frame */ |
| 1786 | .rept 5 | 1787 | .rept 5 |
| @@ -1863,10 +1864,8 @@ end_repeat_nmi: | |||
| 1863 | nmi_swapgs: | 1864 | nmi_swapgs: |
| 1864 | SWAPGS_UNSAFE_STACK | 1865 | SWAPGS_UNSAFE_STACK |
| 1865 | nmi_restore: | 1866 | nmi_restore: |
| 1866 | RESTORE_ALL 8 | 1867 | /* Pop the extra iret frame at once */ |
| 1867 | 1868 | RESTORE_ALL 6*8 | |
| 1868 | /* Pop the extra iret frame */ | ||
| 1869 | addq $(5*8), %rsp | ||
| 1870 | 1869 | ||
| 1871 | /* Clear the NMI executing stack variable */ | 1870 | /* Clear the NMI executing stack variable */ |
| 1872 | movq $0, 5*8(%rsp) | 1871 | movq $0, 5*8(%rsp) |
diff --git a/arch/x86/kernel/head_32.S b/arch/x86/kernel/head_32.S index 8e7f6556028f..c8932c79e78b 100644 --- a/arch/x86/kernel/head_32.S +++ b/arch/x86/kernel/head_32.S | |||
| @@ -300,6 +300,12 @@ ENTRY(startup_32_smp) | |||
| 300 | leal -__PAGE_OFFSET(%ecx),%esp | 300 | leal -__PAGE_OFFSET(%ecx),%esp |
| 301 | 301 | ||
| 302 | default_entry: | 302 | default_entry: |
| 303 | #define CR0_STATE (X86_CR0_PE | X86_CR0_MP | X86_CR0_ET | \ | ||
| 304 | X86_CR0_NE | X86_CR0_WP | X86_CR0_AM | \ | ||
| 305 | X86_CR0_PG) | ||
| 306 | movl $(CR0_STATE & ~X86_CR0_PG),%eax | ||
| 307 | movl %eax,%cr0 | ||
| 308 | |||
| 303 | /* | 309 | /* |
| 304 | * New page tables may be in 4Mbyte page mode and may | 310 | * New page tables may be in 4Mbyte page mode and may |
| 305 | * be using the global pages. | 311 | * be using the global pages. |
| @@ -364,8 +370,7 @@ default_entry: | |||
| 364 | */ | 370 | */ |
| 365 | movl $pa(initial_page_table), %eax | 371 | movl $pa(initial_page_table), %eax |
| 366 | movl %eax,%cr3 /* set the page table pointer.. */ | 372 | movl %eax,%cr3 /* set the page table pointer.. */ |
| 367 | movl %cr0,%eax | 373 | movl $CR0_STATE,%eax |
| 368 | orl $X86_CR0_PG,%eax | ||
| 369 | movl %eax,%cr0 /* ..and set paging (PG) bit */ | 374 | movl %eax,%cr0 /* ..and set paging (PG) bit */ |
| 370 | ljmp $__BOOT_CS,$1f /* Clear prefetch and normalize %eip */ | 375 | ljmp $__BOOT_CS,$1f /* Clear prefetch and normalize %eip */ |
| 371 | 1: | 376 | 1: |
diff --git a/arch/x86/kernel/kvm.c b/arch/x86/kernel/kvm.c index 08b973f64032..9c2bd8bd4b4c 100644 --- a/arch/x86/kernel/kvm.c +++ b/arch/x86/kernel/kvm.c | |||
| @@ -43,6 +43,7 @@ | |||
| 43 | #include <asm/apicdef.h> | 43 | #include <asm/apicdef.h> |
| 44 | #include <asm/hypervisor.h> | 44 | #include <asm/hypervisor.h> |
| 45 | #include <asm/kvm_guest.h> | 45 | #include <asm/kvm_guest.h> |
| 46 | #include <asm/context_tracking.h> | ||
| 46 | 47 | ||
| 47 | static int kvmapf = 1; | 48 | static int kvmapf = 1; |
| 48 | 49 | ||
| @@ -121,6 +122,8 @@ void kvm_async_pf_task_wait(u32 token) | |||
| 121 | struct kvm_task_sleep_node n, *e; | 122 | struct kvm_task_sleep_node n, *e; |
| 122 | DEFINE_WAIT(wait); | 123 | DEFINE_WAIT(wait); |
| 123 | 124 | ||
| 125 | rcu_irq_enter(); | ||
| 126 | |||
| 124 | spin_lock(&b->lock); | 127 | spin_lock(&b->lock); |
| 125 | e = _find_apf_task(b, token); | 128 | e = _find_apf_task(b, token); |
| 126 | if (e) { | 129 | if (e) { |
| @@ -128,6 +131,8 @@ void kvm_async_pf_task_wait(u32 token) | |||
| 128 | hlist_del(&e->link); | 131 | hlist_del(&e->link); |
| 129 | kfree(e); | 132 | kfree(e); |
| 130 | spin_unlock(&b->lock); | 133 | spin_unlock(&b->lock); |
| 134 | |||
| 135 | rcu_irq_exit(); | ||
| 131 | return; | 136 | return; |
| 132 | } | 137 | } |
| 133 | 138 | ||
| @@ -152,13 +157,16 @@ void kvm_async_pf_task_wait(u32 token) | |||
| 152 | /* | 157 | /* |
| 153 | * We cannot reschedule. So halt. | 158 | * We cannot reschedule. So halt. |
| 154 | */ | 159 | */ |
| 160 | rcu_irq_exit(); | ||
| 155 | native_safe_halt(); | 161 | native_safe_halt(); |
| 162 | rcu_irq_enter(); | ||
| 156 | local_irq_disable(); | 163 | local_irq_disable(); |
| 157 | } | 164 | } |
| 158 | } | 165 | } |
| 159 | if (!n.halted) | 166 | if (!n.halted) |
| 160 | finish_wait(&n.wq, &wait); | 167 | finish_wait(&n.wq, &wait); |
| 161 | 168 | ||
| 169 | rcu_irq_exit(); | ||
| 162 | return; | 170 | return; |
| 163 | } | 171 | } |
| 164 | EXPORT_SYMBOL_GPL(kvm_async_pf_task_wait); | 172 | EXPORT_SYMBOL_GPL(kvm_async_pf_task_wait); |
| @@ -252,10 +260,10 @@ do_async_page_fault(struct pt_regs *regs, unsigned long error_code) | |||
| 252 | break; | 260 | break; |
| 253 | case KVM_PV_REASON_PAGE_NOT_PRESENT: | 261 | case KVM_PV_REASON_PAGE_NOT_PRESENT: |
| 254 | /* page is swapped out by the host. */ | 262 | /* page is swapped out by the host. */ |
| 255 | rcu_irq_enter(); | 263 | exception_enter(regs); |
| 256 | exit_idle(); | 264 | exit_idle(); |
| 257 | kvm_async_pf_task_wait((u32)read_cr2()); | 265 | kvm_async_pf_task_wait((u32)read_cr2()); |
| 258 | rcu_irq_exit(); | 266 | exception_exit(regs); |
| 259 | break; | 267 | break; |
| 260 | case KVM_PV_REASON_PAGE_READY: | 268 | case KVM_PV_REASON_PAGE_READY: |
| 261 | rcu_irq_enter(); | 269 | rcu_irq_enter(); |
diff --git a/arch/x86/kernel/msr.c b/arch/x86/kernel/msr.c index a7c5661f8496..4929502c1372 100644 --- a/arch/x86/kernel/msr.c +++ b/arch/x86/kernel/msr.c | |||
| @@ -174,6 +174,9 @@ static int msr_open(struct inode *inode, struct file *file) | |||
| 174 | unsigned int cpu; | 174 | unsigned int cpu; |
| 175 | struct cpuinfo_x86 *c; | 175 | struct cpuinfo_x86 *c; |
| 176 | 176 | ||
| 177 | if (!capable(CAP_SYS_RAWIO)) | ||
| 178 | return -EPERM; | ||
| 179 | |||
| 177 | cpu = iminor(file->f_path.dentry->d_inode); | 180 | cpu = iminor(file->f_path.dentry->d_inode); |
| 178 | if (cpu >= nr_cpu_ids || !cpu_online(cpu)) | 181 | if (cpu >= nr_cpu_ids || !cpu_online(cpu)) |
| 179 | return -ENXIO; /* No such CPU */ | 182 | return -ENXIO; /* No such CPU */ |
diff --git a/arch/x86/kernel/pci-dma.c b/arch/x86/kernel/pci-dma.c index de2b7ad70273..872079a67e4d 100644 --- a/arch/x86/kernel/pci-dma.c +++ b/arch/x86/kernel/pci-dma.c | |||
| @@ -56,7 +56,7 @@ struct device x86_dma_fallback_dev = { | |||
| 56 | EXPORT_SYMBOL(x86_dma_fallback_dev); | 56 | EXPORT_SYMBOL(x86_dma_fallback_dev); |
| 57 | 57 | ||
| 58 | /* Number of entries preallocated for DMA-API debugging */ | 58 | /* Number of entries preallocated for DMA-API debugging */ |
| 59 | #define PREALLOC_DMA_DEBUG_ENTRIES 32768 | 59 | #define PREALLOC_DMA_DEBUG_ENTRIES 65536 |
| 60 | 60 | ||
| 61 | int dma_set_mask(struct device *dev, u64 mask) | 61 | int dma_set_mask(struct device *dev, u64 mask) |
| 62 | { | 62 | { |
| @@ -265,7 +265,7 @@ rootfs_initcall(pci_iommu_init); | |||
| 265 | #ifdef CONFIG_PCI | 265 | #ifdef CONFIG_PCI |
| 266 | /* Many VIA bridges seem to corrupt data for DAC. Disable it here */ | 266 | /* Many VIA bridges seem to corrupt data for DAC. Disable it here */ |
| 267 | 267 | ||
| 268 | static __devinit void via_no_dac(struct pci_dev *dev) | 268 | static void via_no_dac(struct pci_dev *dev) |
| 269 | { | 269 | { |
| 270 | if (forbid_dac == 0) { | 270 | if (forbid_dac == 0) { |
| 271 | dev_info(&dev->dev, "disabling DAC on VIA PCI bridge\n"); | 271 | dev_info(&dev->dev, "disabling DAC on VIA PCI bridge\n"); |
diff --git a/arch/x86/kernel/quirks.c b/arch/x86/kernel/quirks.c index 1b27de563561..26ee48a33dc4 100644 --- a/arch/x86/kernel/quirks.c +++ b/arch/x86/kernel/quirks.c | |||
| @@ -8,7 +8,7 @@ | |||
| 8 | 8 | ||
| 9 | #if defined(CONFIG_X86_IO_APIC) && defined(CONFIG_SMP) && defined(CONFIG_PCI) | 9 | #if defined(CONFIG_X86_IO_APIC) && defined(CONFIG_SMP) && defined(CONFIG_PCI) |
| 10 | 10 | ||
| 11 | static void __devinit quirk_intel_irqbalance(struct pci_dev *dev) | 11 | static void quirk_intel_irqbalance(struct pci_dev *dev) |
| 12 | { | 12 | { |
| 13 | u8 config; | 13 | u8 config; |
| 14 | u16 word; | 14 | u16 word; |
| @@ -512,7 +512,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_SBX00_SMBUS, | |||
| 512 | 512 | ||
| 513 | #if defined(CONFIG_PCI) && defined(CONFIG_NUMA) | 513 | #if defined(CONFIG_PCI) && defined(CONFIG_NUMA) |
| 514 | /* Set correct numa_node information for AMD NB functions */ | 514 | /* Set correct numa_node information for AMD NB functions */ |
| 515 | static void __devinit quirk_amd_nb_node(struct pci_dev *dev) | 515 | static void quirk_amd_nb_node(struct pci_dev *dev) |
| 516 | { | 516 | { |
| 517 | struct pci_dev *nb_ht; | 517 | struct pci_dev *nb_ht; |
| 518 | unsigned int devfn; | 518 | unsigned int devfn; |
diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c index 4e8ba39eaf0f..76fa1e9a2b39 100644 --- a/arch/x86/kernel/reboot.c +++ b/arch/x86/kernel/reboot.c | |||
| @@ -584,7 +584,7 @@ static void native_machine_emergency_restart(void) | |||
| 584 | break; | 584 | break; |
| 585 | 585 | ||
| 586 | case BOOT_EFI: | 586 | case BOOT_EFI: |
| 587 | if (efi_enabled) | 587 | if (efi_enabled(EFI_RUNTIME_SERVICES)) |
| 588 | efi.reset_system(reboot_mode ? | 588 | efi.reset_system(reboot_mode ? |
| 589 | EFI_RESET_WARM : | 589 | EFI_RESET_WARM : |
| 590 | EFI_RESET_COLD, | 590 | EFI_RESET_COLD, |
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c index 23ddd558fbd5..8b24289cc10c 100644 --- a/arch/x86/kernel/setup.c +++ b/arch/x86/kernel/setup.c | |||
| @@ -610,6 +610,83 @@ static __init void reserve_ibft_region(void) | |||
| 610 | 610 | ||
| 611 | static unsigned reserve_low = CONFIG_X86_RESERVE_LOW << 10; | 611 | static unsigned reserve_low = CONFIG_X86_RESERVE_LOW << 10; |
| 612 | 612 | ||
| 613 | static bool __init snb_gfx_workaround_needed(void) | ||
| 614 | { | ||
| 615 | #ifdef CONFIG_PCI | ||
| 616 | int i; | ||
| 617 | u16 vendor, devid; | ||
| 618 | static const __initconst u16 snb_ids[] = { | ||
| 619 | 0x0102, | ||
| 620 | 0x0112, | ||
| 621 | 0x0122, | ||
| 622 | 0x0106, | ||
| 623 | 0x0116, | ||
| 624 | 0x0126, | ||
| 625 | 0x010a, | ||
| 626 | }; | ||
| 627 | |||
| 628 | /* Assume no if something weird is going on with PCI */ | ||
| 629 | if (!early_pci_allowed()) | ||
| 630 | return false; | ||
| 631 | |||
| 632 | vendor = read_pci_config_16(0, 2, 0, PCI_VENDOR_ID); | ||
| 633 | if (vendor != 0x8086) | ||
| 634 | return false; | ||
| 635 | |||
| 636 | devid = read_pci_config_16(0, 2, 0, PCI_DEVICE_ID); | ||
| 637 | for (i = 0; i < ARRAY_SIZE(snb_ids); i++) | ||
| 638 | if (devid == snb_ids[i]) | ||
| 639 | return true; | ||
| 640 | #endif | ||
| 641 | |||
| 642 | return false; | ||
| 643 | } | ||
| 644 | |||
| 645 | /* | ||
| 646 | * Sandy Bridge graphics has trouble with certain ranges, exclude | ||
| 647 | * them from allocation. | ||
| 648 | */ | ||
| 649 | static void __init trim_snb_memory(void) | ||
| 650 | { | ||
| 651 | static const __initconst unsigned long bad_pages[] = { | ||
| 652 | 0x20050000, | ||
| 653 | 0x20110000, | ||
| 654 | 0x20130000, | ||
| 655 | 0x20138000, | ||
| 656 | 0x40004000, | ||
| 657 | }; | ||
| 658 | int i; | ||
| 659 | |||
| 660 | if (!snb_gfx_workaround_needed()) | ||
| 661 | return; | ||
| 662 | |||
| 663 | printk(KERN_DEBUG "reserving inaccessible SNB gfx pages\n"); | ||
| 664 | |||
| 665 | /* | ||
| 666 | * Reserve all memory below the 1 MB mark that has not | ||
| 667 | * already been reserved. | ||
| 668 | */ | ||
| 669 | memblock_reserve(0, 1<<20); | ||
| 670 | |||
| 671 | for (i = 0; i < ARRAY_SIZE(bad_pages); i++) { | ||
| 672 | if (memblock_reserve(bad_pages[i], PAGE_SIZE)) | ||
| 673 | printk(KERN_WARNING "failed to reserve 0x%08lx\n", | ||
| 674 | bad_pages[i]); | ||
| 675 | } | ||
| 676 | } | ||
| 677 | |||
| 678 | /* | ||
| 679 | * Here we put platform-specific memory range workarounds, i.e. | ||
| 680 | * memory known to be corrupt or otherwise in need to be reserved on | ||
| 681 | * specific platforms. | ||
| 682 | * | ||
| 683 | * If this gets used more widely it could use a real dispatch mechanism. | ||
| 684 | */ | ||
| 685 | static void __init trim_platform_memory_ranges(void) | ||
| 686 | { | ||
| 687 | trim_snb_memory(); | ||
| 688 | } | ||
| 689 | |||
| 613 | static void __init trim_bios_range(void) | 690 | static void __init trim_bios_range(void) |
| 614 | { | 691 | { |
| 615 | /* | 692 | /* |
| @@ -630,6 +707,7 @@ static void __init trim_bios_range(void) | |||
| 630 | * take them out. | 707 | * take them out. |
| 631 | */ | 708 | */ |
| 632 | e820_remove_range(BIOS_BEGIN, BIOS_END - BIOS_BEGIN, E820_RAM, 1); | 709 | e820_remove_range(BIOS_BEGIN, BIOS_END - BIOS_BEGIN, E820_RAM, 1); |
| 710 | |||
| 633 | sanitize_e820_map(e820.map, ARRAY_SIZE(e820.map), &e820.nr_map); | 711 | sanitize_e820_map(e820.map, ARRAY_SIZE(e820.map), &e820.nr_map); |
| 634 | } | 712 | } |
| 635 | 713 | ||
| @@ -729,15 +807,15 @@ void __init setup_arch(char **cmdline_p) | |||
| 729 | #ifdef CONFIG_EFI | 807 | #ifdef CONFIG_EFI |
| 730 | if (!strncmp((char *)&boot_params.efi_info.efi_loader_signature, | 808 | if (!strncmp((char *)&boot_params.efi_info.efi_loader_signature, |
| 731 | "EL32", 4)) { | 809 | "EL32", 4)) { |
| 732 | efi_enabled = 1; | 810 | set_bit(EFI_BOOT, &x86_efi_facility); |
| 733 | efi_64bit = false; | ||
| 734 | } else if (!strncmp((char *)&boot_params.efi_info.efi_loader_signature, | 811 | } else if (!strncmp((char *)&boot_params.efi_info.efi_loader_signature, |
| 735 | "EL64", 4)) { | 812 | "EL64", 4)) { |
| 736 | efi_enabled = 1; | 813 | set_bit(EFI_BOOT, &x86_efi_facility); |
| 737 | efi_64bit = true; | 814 | set_bit(EFI_64BIT, &x86_efi_facility); |
| 738 | } | 815 | } |
| 739 | if (efi_enabled && efi_memblock_x86_reserve_range()) | 816 | |
| 740 | efi_enabled = 0; | 817 | if (efi_enabled(EFI_BOOT)) |
| 818 | efi_memblock_x86_reserve_range(); | ||
| 741 | #endif | 819 | #endif |
| 742 | 820 | ||
| 743 | x86_init.oem.arch_setup(); | 821 | x86_init.oem.arch_setup(); |
| @@ -810,7 +888,7 @@ void __init setup_arch(char **cmdline_p) | |||
| 810 | 888 | ||
| 811 | finish_e820_parsing(); | 889 | finish_e820_parsing(); |
| 812 | 890 | ||
| 813 | if (efi_enabled) | 891 | if (efi_enabled(EFI_BOOT)) |
| 814 | efi_init(); | 892 | efi_init(); |
| 815 | 893 | ||
| 816 | dmi_scan_machine(); | 894 | dmi_scan_machine(); |
| @@ -893,7 +971,7 @@ void __init setup_arch(char **cmdline_p) | |||
| 893 | * The EFI specification says that boot service code won't be called | 971 | * The EFI specification says that boot service code won't be called |
| 894 | * after ExitBootServices(). This is, in fact, a lie. | 972 | * after ExitBootServices(). This is, in fact, a lie. |
| 895 | */ | 973 | */ |
| 896 | if (efi_enabled) | 974 | if (efi_enabled(EFI_MEMMAP)) |
| 897 | efi_reserve_boot_services(); | 975 | efi_reserve_boot_services(); |
| 898 | 976 | ||
| 899 | /* preallocate 4k for mptable mpc */ | 977 | /* preallocate 4k for mptable mpc */ |
| @@ -908,6 +986,8 @@ void __init setup_arch(char **cmdline_p) | |||
| 908 | 986 | ||
| 909 | setup_real_mode(); | 987 | setup_real_mode(); |
| 910 | 988 | ||
| 989 | trim_platform_memory_ranges(); | ||
| 990 | |||
| 911 | init_gbpages(); | 991 | init_gbpages(); |
| 912 | 992 | ||
| 913 | /* max_pfn_mapped is updated here */ | 993 | /* max_pfn_mapped is updated here */ |
| @@ -1034,7 +1114,7 @@ void __init setup_arch(char **cmdline_p) | |||
| 1034 | 1114 | ||
| 1035 | #ifdef CONFIG_VT | 1115 | #ifdef CONFIG_VT |
| 1036 | #if defined(CONFIG_VGA_CONSOLE) | 1116 | #if defined(CONFIG_VGA_CONSOLE) |
| 1037 | if (!efi_enabled || (efi_mem_type(0xa0000) != EFI_CONVENTIONAL_MEMORY)) | 1117 | if (!efi_enabled(EFI_BOOT) || (efi_mem_type(0xa0000) != EFI_CONVENTIONAL_MEMORY)) |
| 1038 | conswitchp = &vga_con; | 1118 | conswitchp = &vga_con; |
| 1039 | #elif defined(CONFIG_DUMMY_CONSOLE) | 1119 | #elif defined(CONFIG_DUMMY_CONSOLE) |
| 1040 | conswitchp = &dummy_con; | 1120 | conswitchp = &dummy_con; |
| @@ -1051,14 +1131,14 @@ void __init setup_arch(char **cmdline_p) | |||
| 1051 | register_refined_jiffies(CLOCK_TICK_RATE); | 1131 | register_refined_jiffies(CLOCK_TICK_RATE); |
| 1052 | 1132 | ||
| 1053 | #ifdef CONFIG_EFI | 1133 | #ifdef CONFIG_EFI |
| 1054 | /* Once setup is done above, disable efi_enabled on mismatched | 1134 | /* Once setup is done above, unmap the EFI memory map on |
| 1055 | * firmware/kernel archtectures since there is no support for | 1135 | * mismatched firmware/kernel archtectures since there is no |
| 1056 | * runtime services. | 1136 | * support for runtime services. |
| 1057 | */ | 1137 | */ |
| 1058 | if (efi_enabled && IS_ENABLED(CONFIG_X86_64) != efi_64bit) { | 1138 | if (efi_enabled(EFI_BOOT) && |
| 1139 | IS_ENABLED(CONFIG_X86_64) != efi_enabled(EFI_64BIT)) { | ||
| 1059 | pr_info("efi: Setup done, disabling due to 32/64-bit mismatch\n"); | 1140 | pr_info("efi: Setup done, disabling due to 32/64-bit mismatch\n"); |
| 1060 | efi_unmap_memmap(); | 1141 | efi_unmap_memmap(); |
| 1061 | efi_enabled = 0; | ||
| 1062 | } | 1142 | } |
| 1063 | #endif | 1143 | #endif |
| 1064 | } | 1144 | } |
diff --git a/arch/x86/kernel/step.c b/arch/x86/kernel/step.c index cd3b2438a980..9b4d51d0c0d0 100644 --- a/arch/x86/kernel/step.c +++ b/arch/x86/kernel/step.c | |||
| @@ -165,10 +165,11 @@ void set_task_blockstep(struct task_struct *task, bool on) | |||
| 165 | * Ensure irq/preemption can't change debugctl in between. | 165 | * Ensure irq/preemption can't change debugctl in between. |
| 166 | * Note also that both TIF_BLOCKSTEP and debugctl should | 166 | * Note also that both TIF_BLOCKSTEP and debugctl should |
| 167 | * be changed atomically wrt preemption. | 167 | * be changed atomically wrt preemption. |
| 168 | * FIXME: this means that set/clear TIF_BLOCKSTEP is simply | 168 | * |
| 169 | * wrong if task != current, SIGKILL can wakeup the stopped | 169 | * NOTE: this means that set/clear TIF_BLOCKSTEP is only safe if |
| 170 | * tracee and set/clear can play with the running task, this | 170 | * task is current or it can't be running, otherwise we can race |
| 171 | * can confuse the next __switch_to_xtra(). | 171 | * with __switch_to_xtra(). We rely on ptrace_freeze_traced() but |
| 172 | * PTRACE_KILL is not safe. | ||
| 172 | */ | 173 | */ |
| 173 | local_irq_disable(); | 174 | local_irq_disable(); |
| 174 | debugctl = get_debugctlmsr(); | 175 | debugctl = get_debugctlmsr(); |
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 76f54461f7cb..c243b81e3c74 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c | |||
| @@ -120,7 +120,7 @@ struct kvm_shared_msrs { | |||
| 120 | }; | 120 | }; |
| 121 | 121 | ||
| 122 | static struct kvm_shared_msrs_global __read_mostly shared_msrs_global; | 122 | static struct kvm_shared_msrs_global __read_mostly shared_msrs_global; |
| 123 | static DEFINE_PER_CPU(struct kvm_shared_msrs, shared_msrs); | 123 | static struct kvm_shared_msrs __percpu *shared_msrs; |
| 124 | 124 | ||
| 125 | struct kvm_stats_debugfs_item debugfs_entries[] = { | 125 | struct kvm_stats_debugfs_item debugfs_entries[] = { |
| 126 | { "pf_fixed", VCPU_STAT(pf_fixed) }, | 126 | { "pf_fixed", VCPU_STAT(pf_fixed) }, |
| @@ -191,10 +191,10 @@ static void kvm_on_user_return(struct user_return_notifier *urn) | |||
| 191 | 191 | ||
| 192 | static void shared_msr_update(unsigned slot, u32 msr) | 192 | static void shared_msr_update(unsigned slot, u32 msr) |
| 193 | { | 193 | { |
| 194 | struct kvm_shared_msrs *smsr; | ||
| 195 | u64 value; | 194 | u64 value; |
| 195 | unsigned int cpu = smp_processor_id(); | ||
| 196 | struct kvm_shared_msrs *smsr = per_cpu_ptr(shared_msrs, cpu); | ||
| 196 | 197 | ||
| 197 | smsr = &__get_cpu_var(shared_msrs); | ||
| 198 | /* only read, and nobody should modify it at this time, | 198 | /* only read, and nobody should modify it at this time, |
| 199 | * so don't need lock */ | 199 | * so don't need lock */ |
| 200 | if (slot >= shared_msrs_global.nr) { | 200 | if (slot >= shared_msrs_global.nr) { |
| @@ -226,7 +226,8 @@ static void kvm_shared_msr_cpu_online(void) | |||
| 226 | 226 | ||
| 227 | void kvm_set_shared_msr(unsigned slot, u64 value, u64 mask) | 227 | void kvm_set_shared_msr(unsigned slot, u64 value, u64 mask) |
| 228 | { | 228 | { |
| 229 | struct kvm_shared_msrs *smsr = &__get_cpu_var(shared_msrs); | 229 | unsigned int cpu = smp_processor_id(); |
| 230 | struct kvm_shared_msrs *smsr = per_cpu_ptr(shared_msrs, cpu); | ||
| 230 | 231 | ||
| 231 | if (((value ^ smsr->values[slot].curr) & mask) == 0) | 232 | if (((value ^ smsr->values[slot].curr) & mask) == 0) |
| 232 | return; | 233 | return; |
| @@ -242,7 +243,8 @@ EXPORT_SYMBOL_GPL(kvm_set_shared_msr); | |||
| 242 | 243 | ||
| 243 | static void drop_user_return_notifiers(void *ignore) | 244 | static void drop_user_return_notifiers(void *ignore) |
| 244 | { | 245 | { |
| 245 | struct kvm_shared_msrs *smsr = &__get_cpu_var(shared_msrs); | 246 | unsigned int cpu = smp_processor_id(); |
| 247 | struct kvm_shared_msrs *smsr = per_cpu_ptr(shared_msrs, cpu); | ||
| 246 | 248 | ||
| 247 | if (smsr->registered) | 249 | if (smsr->registered) |
| 248 | kvm_on_user_return(&smsr->urn); | 250 | kvm_on_user_return(&smsr->urn); |
| @@ -5233,9 +5235,16 @@ int kvm_arch_init(void *opaque) | |||
| 5233 | goto out; | 5235 | goto out; |
| 5234 | } | 5236 | } |
| 5235 | 5237 | ||
| 5238 | r = -ENOMEM; | ||
| 5239 | shared_msrs = alloc_percpu(struct kvm_shared_msrs); | ||
| 5240 | if (!shared_msrs) { | ||
| 5241 | printk(KERN_ERR "kvm: failed to allocate percpu kvm_shared_msrs\n"); | ||
| 5242 | goto out; | ||
| 5243 | } | ||
| 5244 | |||
| 5236 | r = kvm_mmu_module_init(); | 5245 | r = kvm_mmu_module_init(); |
| 5237 | if (r) | 5246 | if (r) |
| 5238 | goto out; | 5247 | goto out_free_percpu; |
| 5239 | 5248 | ||
| 5240 | kvm_set_mmio_spte_mask(); | 5249 | kvm_set_mmio_spte_mask(); |
| 5241 | kvm_init_msr_list(); | 5250 | kvm_init_msr_list(); |
| @@ -5258,6 +5267,8 @@ int kvm_arch_init(void *opaque) | |||
| 5258 | 5267 | ||
| 5259 | return 0; | 5268 | return 0; |
| 5260 | 5269 | ||
| 5270 | out_free_percpu: | ||
| 5271 | free_percpu(shared_msrs); | ||
| 5261 | out: | 5272 | out: |
| 5262 | return r; | 5273 | return r; |
| 5263 | } | 5274 | } |
| @@ -5275,6 +5286,7 @@ void kvm_arch_exit(void) | |||
| 5275 | #endif | 5286 | #endif |
| 5276 | kvm_x86_ops = NULL; | 5287 | kvm_x86_ops = NULL; |
| 5277 | kvm_mmu_module_exit(); | 5288 | kvm_mmu_module_exit(); |
| 5289 | free_percpu(shared_msrs); | ||
| 5278 | } | 5290 | } |
| 5279 | 5291 | ||
| 5280 | int kvm_emulate_halt(struct kvm_vcpu *vcpu) | 5292 | int kvm_emulate_halt(struct kvm_vcpu *vcpu) |
diff --git a/arch/x86/lib/delay.c b/arch/x86/lib/delay.c index e395693abdb1..7c3bee636e2f 100644 --- a/arch/x86/lib/delay.c +++ b/arch/x86/lib/delay.c | |||
| @@ -98,7 +98,7 @@ void use_tsc_delay(void) | |||
| 98 | delay_fn = delay_tsc; | 98 | delay_fn = delay_tsc; |
| 99 | } | 99 | } |
| 100 | 100 | ||
| 101 | int __devinit read_current_timer(unsigned long *timer_val) | 101 | int read_current_timer(unsigned long *timer_val) |
| 102 | { | 102 | { |
| 103 | if (delay_fn == delay_tsc) { | 103 | if (delay_fn == delay_tsc) { |
| 104 | rdtscll(*timer_val); | 104 | rdtscll(*timer_val); |
diff --git a/arch/x86/pci/acpi.c b/arch/x86/pci/acpi.c index 0c01261fe5a8..53ea60458e01 100644 --- a/arch/x86/pci/acpi.c +++ b/arch/x86/pci/acpi.c | |||
| @@ -145,7 +145,7 @@ void __init pci_acpi_crs_quirks(void) | |||
| 145 | } | 145 | } |
| 146 | 146 | ||
| 147 | #ifdef CONFIG_PCI_MMCONFIG | 147 | #ifdef CONFIG_PCI_MMCONFIG |
| 148 | static int __devinit check_segment(u16 seg, struct device *dev, char *estr) | 148 | static int check_segment(u16 seg, struct device *dev, char *estr) |
| 149 | { | 149 | { |
| 150 | if (seg) { | 150 | if (seg) { |
| 151 | dev_err(dev, | 151 | dev_err(dev, |
| @@ -168,9 +168,8 @@ static int __devinit check_segment(u16 seg, struct device *dev, char *estr) | |||
| 168 | return 0; | 168 | return 0; |
| 169 | } | 169 | } |
| 170 | 170 | ||
| 171 | static int __devinit setup_mcfg_map(struct pci_root_info *info, | 171 | static int setup_mcfg_map(struct pci_root_info *info, u16 seg, u8 start, |
| 172 | u16 seg, u8 start, u8 end, | 172 | u8 end, phys_addr_t addr) |
| 173 | phys_addr_t addr) | ||
| 174 | { | 173 | { |
| 175 | int result; | 174 | int result; |
| 176 | struct device *dev = &info->bridge->dev; | 175 | struct device *dev = &info->bridge->dev; |
| @@ -208,7 +207,7 @@ static void teardown_mcfg_map(struct pci_root_info *info) | |||
| 208 | } | 207 | } |
| 209 | } | 208 | } |
| 210 | #else | 209 | #else |
| 211 | static int __devinit setup_mcfg_map(struct pci_root_info *info, | 210 | static int setup_mcfg_map(struct pci_root_info *info, |
| 212 | u16 seg, u8 start, u8 end, | 211 | u16 seg, u8 start, u8 end, |
| 213 | phys_addr_t addr) | 212 | phys_addr_t addr) |
| 214 | { | 213 | { |
| @@ -474,7 +473,7 @@ probe_pci_root_info(struct pci_root_info *info, struct acpi_device *device, | |||
| 474 | info); | 473 | info); |
| 475 | } | 474 | } |
| 476 | 475 | ||
| 477 | struct pci_bus * __devinit pci_acpi_scan_root(struct acpi_pci_root *root) | 476 | struct pci_bus *pci_acpi_scan_root(struct acpi_pci_root *root) |
| 478 | { | 477 | { |
| 479 | struct acpi_device *device = root->device; | 478 | struct acpi_device *device = root->device; |
| 480 | struct pci_root_info *info = NULL; | 479 | struct pci_root_info *info = NULL; |
diff --git a/arch/x86/pci/bus_numa.c b/arch/x86/pci/bus_numa.c index d37e2fec97e5..c2735feb2508 100644 --- a/arch/x86/pci/bus_numa.c +++ b/arch/x86/pci/bus_numa.c | |||
| @@ -93,8 +93,8 @@ struct pci_root_info __init *alloc_pci_root_info(int bus_min, int bus_max, | |||
| 93 | return info; | 93 | return info; |
| 94 | } | 94 | } |
| 95 | 95 | ||
| 96 | void __devinit update_res(struct pci_root_info *info, resource_size_t start, | 96 | void update_res(struct pci_root_info *info, resource_size_t start, |
| 97 | resource_size_t end, unsigned long flags, int merge) | 97 | resource_size_t end, unsigned long flags, int merge) |
| 98 | { | 98 | { |
| 99 | struct resource *res; | 99 | struct resource *res; |
| 100 | struct pci_root_res *root_res; | 100 | struct pci_root_res *root_res; |
diff --git a/arch/x86/pci/common.c b/arch/x86/pci/common.c index 412e1286d1fc..ccd0ab3ab899 100644 --- a/arch/x86/pci/common.c +++ b/arch/x86/pci/common.c | |||
| @@ -81,14 +81,14 @@ struct pci_ops pci_root_ops = { | |||
| 81 | */ | 81 | */ |
| 82 | DEFINE_RAW_SPINLOCK(pci_config_lock); | 82 | DEFINE_RAW_SPINLOCK(pci_config_lock); |
| 83 | 83 | ||
| 84 | static int __devinit can_skip_ioresource_align(const struct dmi_system_id *d) | 84 | static int can_skip_ioresource_align(const struct dmi_system_id *d) |
| 85 | { | 85 | { |
| 86 | pci_probe |= PCI_CAN_SKIP_ISA_ALIGN; | 86 | pci_probe |= PCI_CAN_SKIP_ISA_ALIGN; |
| 87 | printk(KERN_INFO "PCI: %s detected, can skip ISA alignment\n", d->ident); | 87 | printk(KERN_INFO "PCI: %s detected, can skip ISA alignment\n", d->ident); |
| 88 | return 0; | 88 | return 0; |
| 89 | } | 89 | } |
| 90 | 90 | ||
| 91 | static const struct dmi_system_id can_skip_pciprobe_dmi_table[] __devinitconst = { | 91 | static const struct dmi_system_id can_skip_pciprobe_dmi_table[] = { |
| 92 | /* | 92 | /* |
| 93 | * Systems where PCI IO resource ISA alignment can be skipped | 93 | * Systems where PCI IO resource ISA alignment can be skipped |
| 94 | * when the ISA enable bit in the bridge control is not set | 94 | * when the ISA enable bit in the bridge control is not set |
| @@ -125,7 +125,7 @@ void __init dmi_check_skip_isa_align(void) | |||
| 125 | dmi_check_system(can_skip_pciprobe_dmi_table); | 125 | dmi_check_system(can_skip_pciprobe_dmi_table); |
| 126 | } | 126 | } |
| 127 | 127 | ||
| 128 | static void __devinit pcibios_fixup_device_resources(struct pci_dev *dev) | 128 | static void pcibios_fixup_device_resources(struct pci_dev *dev) |
| 129 | { | 129 | { |
| 130 | struct resource *rom_r = &dev->resource[PCI_ROM_RESOURCE]; | 130 | struct resource *rom_r = &dev->resource[PCI_ROM_RESOURCE]; |
| 131 | struct resource *bar_r; | 131 | struct resource *bar_r; |
| @@ -162,7 +162,7 @@ static void __devinit pcibios_fixup_device_resources(struct pci_dev *dev) | |||
| 162 | * are examined. | 162 | * are examined. |
| 163 | */ | 163 | */ |
| 164 | 164 | ||
| 165 | void __devinit pcibios_fixup_bus(struct pci_bus *b) | 165 | void pcibios_fixup_bus(struct pci_bus *b) |
| 166 | { | 166 | { |
| 167 | struct pci_dev *dev; | 167 | struct pci_dev *dev; |
| 168 | 168 | ||
| @@ -176,7 +176,7 @@ void __devinit pcibios_fixup_bus(struct pci_bus *b) | |||
| 176 | * on the kernel command line (which was parsed earlier). | 176 | * on the kernel command line (which was parsed earlier). |
| 177 | */ | 177 | */ |
| 178 | 178 | ||
| 179 | static int __devinit set_bf_sort(const struct dmi_system_id *d) | 179 | static int set_bf_sort(const struct dmi_system_id *d) |
| 180 | { | 180 | { |
| 181 | if (pci_bf_sort == pci_bf_sort_default) { | 181 | if (pci_bf_sort == pci_bf_sort_default) { |
| 182 | pci_bf_sort = pci_dmi_bf; | 182 | pci_bf_sort = pci_dmi_bf; |
| @@ -185,7 +185,7 @@ static int __devinit set_bf_sort(const struct dmi_system_id *d) | |||
| 185 | return 0; | 185 | return 0; |
| 186 | } | 186 | } |
| 187 | 187 | ||
| 188 | static void __devinit read_dmi_type_b1(const struct dmi_header *dm, | 188 | static void read_dmi_type_b1(const struct dmi_header *dm, |
| 189 | void *private_data) | 189 | void *private_data) |
| 190 | { | 190 | { |
| 191 | u8 *d = (u8 *)dm + 4; | 191 | u8 *d = (u8 *)dm + 4; |
| @@ -207,7 +207,7 @@ static void __devinit read_dmi_type_b1(const struct dmi_header *dm, | |||
| 207 | } | 207 | } |
| 208 | } | 208 | } |
| 209 | 209 | ||
| 210 | static int __devinit find_sort_method(const struct dmi_system_id *d) | 210 | static int find_sort_method(const struct dmi_system_id *d) |
| 211 | { | 211 | { |
| 212 | dmi_walk(read_dmi_type_b1, NULL); | 212 | dmi_walk(read_dmi_type_b1, NULL); |
| 213 | 213 | ||
| @@ -222,7 +222,7 @@ static int __devinit find_sort_method(const struct dmi_system_id *d) | |||
| 222 | * Enable renumbering of PCI bus# ranges to reach all PCI busses (Cardbus) | 222 | * Enable renumbering of PCI bus# ranges to reach all PCI busses (Cardbus) |
| 223 | */ | 223 | */ |
| 224 | #ifdef __i386__ | 224 | #ifdef __i386__ |
| 225 | static int __devinit assign_all_busses(const struct dmi_system_id *d) | 225 | static int assign_all_busses(const struct dmi_system_id *d) |
| 226 | { | 226 | { |
| 227 | pci_probe |= PCI_ASSIGN_ALL_BUSSES; | 227 | pci_probe |= PCI_ASSIGN_ALL_BUSSES; |
| 228 | printk(KERN_INFO "%s detected: enabling PCI bus# renumbering" | 228 | printk(KERN_INFO "%s detected: enabling PCI bus# renumbering" |
| @@ -231,7 +231,7 @@ static int __devinit assign_all_busses(const struct dmi_system_id *d) | |||
| 231 | } | 231 | } |
| 232 | #endif | 232 | #endif |
| 233 | 233 | ||
| 234 | static int __devinit set_scan_all(const struct dmi_system_id *d) | 234 | static int set_scan_all(const struct dmi_system_id *d) |
| 235 | { | 235 | { |
| 236 | printk(KERN_INFO "PCI: %s detected, enabling pci=pcie_scan_all\n", | 236 | printk(KERN_INFO "PCI: %s detected, enabling pci=pcie_scan_all\n", |
| 237 | d->ident); | 237 | d->ident); |
| @@ -239,7 +239,7 @@ static int __devinit set_scan_all(const struct dmi_system_id *d) | |||
| 239 | return 0; | 239 | return 0; |
| 240 | } | 240 | } |
| 241 | 241 | ||
| 242 | static const struct dmi_system_id __devinitconst pciprobe_dmi_table[] = { | 242 | static const struct dmi_system_id pciprobe_dmi_table[] = { |
| 243 | #ifdef __i386__ | 243 | #ifdef __i386__ |
| 244 | /* | 244 | /* |
| 245 | * Laptops which need pci=assign-busses to see Cardbus cards | 245 | * Laptops which need pci=assign-busses to see Cardbus cards |
| @@ -446,7 +446,7 @@ void __init dmi_check_pciprobe(void) | |||
| 446 | dmi_check_system(pciprobe_dmi_table); | 446 | dmi_check_system(pciprobe_dmi_table); |
| 447 | } | 447 | } |
| 448 | 448 | ||
| 449 | struct pci_bus * __devinit pcibios_scan_root(int busnum) | 449 | struct pci_bus *pcibios_scan_root(int busnum) |
| 450 | { | 450 | { |
| 451 | struct pci_bus *bus = NULL; | 451 | struct pci_bus *bus = NULL; |
| 452 | 452 | ||
| @@ -665,7 +665,7 @@ int pci_ext_cfg_avail(void) | |||
| 665 | return 0; | 665 | return 0; |
| 666 | } | 666 | } |
| 667 | 667 | ||
| 668 | struct pci_bus * __devinit pci_scan_bus_on_node(int busno, struct pci_ops *ops, int node) | 668 | struct pci_bus *pci_scan_bus_on_node(int busno, struct pci_ops *ops, int node) |
| 669 | { | 669 | { |
| 670 | LIST_HEAD(resources); | 670 | LIST_HEAD(resources); |
| 671 | struct pci_bus *bus = NULL; | 671 | struct pci_bus *bus = NULL; |
| @@ -693,7 +693,7 @@ struct pci_bus * __devinit pci_scan_bus_on_node(int busno, struct pci_ops *ops, | |||
| 693 | return bus; | 693 | return bus; |
| 694 | } | 694 | } |
| 695 | 695 | ||
| 696 | struct pci_bus * __devinit pci_scan_bus_with_sysdata(int busno) | 696 | struct pci_bus *pci_scan_bus_with_sysdata(int busno) |
| 697 | { | 697 | { |
| 698 | return pci_scan_bus_on_node(busno, &pci_root_ops, -1); | 698 | return pci_scan_bus_on_node(busno, &pci_root_ops, -1); |
| 699 | } | 699 | } |
diff --git a/arch/x86/pci/fixup.c b/arch/x86/pci/fixup.c index af8a224db216..f5809fa2753e 100644 --- a/arch/x86/pci/fixup.c +++ b/arch/x86/pci/fixup.c | |||
| @@ -9,7 +9,7 @@ | |||
| 9 | #include <linux/vgaarb.h> | 9 | #include <linux/vgaarb.h> |
| 10 | #include <asm/pci_x86.h> | 10 | #include <asm/pci_x86.h> |
| 11 | 11 | ||
| 12 | static void __devinit pci_fixup_i450nx(struct pci_dev *d) | 12 | static void pci_fixup_i450nx(struct pci_dev *d) |
| 13 | { | 13 | { |
| 14 | /* | 14 | /* |
| 15 | * i450NX -- Find and scan all secondary buses on all PXB's. | 15 | * i450NX -- Find and scan all secondary buses on all PXB's. |
| @@ -34,7 +34,7 @@ static void __devinit pci_fixup_i450nx(struct pci_dev *d) | |||
| 34 | } | 34 | } |
| 35 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82451NX, pci_fixup_i450nx); | 35 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82451NX, pci_fixup_i450nx); |
| 36 | 36 | ||
| 37 | static void __devinit pci_fixup_i450gx(struct pci_dev *d) | 37 | static void pci_fixup_i450gx(struct pci_dev *d) |
| 38 | { | 38 | { |
| 39 | /* | 39 | /* |
| 40 | * i450GX and i450KX -- Find and scan all secondary buses. | 40 | * i450GX and i450KX -- Find and scan all secondary buses. |
| @@ -48,7 +48,7 @@ static void __devinit pci_fixup_i450gx(struct pci_dev *d) | |||
| 48 | } | 48 | } |
| 49 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82454GX, pci_fixup_i450gx); | 49 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82454GX, pci_fixup_i450gx); |
| 50 | 50 | ||
| 51 | static void __devinit pci_fixup_umc_ide(struct pci_dev *d) | 51 | static void pci_fixup_umc_ide(struct pci_dev *d) |
| 52 | { | 52 | { |
| 53 | /* | 53 | /* |
| 54 | * UM8886BF IDE controller sets region type bits incorrectly, | 54 | * UM8886BF IDE controller sets region type bits incorrectly, |
| @@ -62,7 +62,7 @@ static void __devinit pci_fixup_umc_ide(struct pci_dev *d) | |||
| 62 | } | 62 | } |
| 63 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_UMC, PCI_DEVICE_ID_UMC_UM8886BF, pci_fixup_umc_ide); | 63 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_UMC, PCI_DEVICE_ID_UMC_UM8886BF, pci_fixup_umc_ide); |
| 64 | 64 | ||
| 65 | static void __devinit pci_fixup_ncr53c810(struct pci_dev *d) | 65 | static void pci_fixup_ncr53c810(struct pci_dev *d) |
| 66 | { | 66 | { |
| 67 | /* | 67 | /* |
| 68 | * NCR 53C810 returns class code 0 (at least on some systems). | 68 | * NCR 53C810 returns class code 0 (at least on some systems). |
| @@ -75,7 +75,7 @@ static void __devinit pci_fixup_ncr53c810(struct pci_dev *d) | |||
| 75 | } | 75 | } |
| 76 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_NCR, PCI_DEVICE_ID_NCR_53C810, pci_fixup_ncr53c810); | 76 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_NCR, PCI_DEVICE_ID_NCR_53C810, pci_fixup_ncr53c810); |
| 77 | 77 | ||
| 78 | static void __devinit pci_fixup_latency(struct pci_dev *d) | 78 | static void pci_fixup_latency(struct pci_dev *d) |
| 79 | { | 79 | { |
| 80 | /* | 80 | /* |
| 81 | * SiS 5597 and 5598 chipsets require latency timer set to | 81 | * SiS 5597 and 5598 chipsets require latency timer set to |
| @@ -87,7 +87,7 @@ static void __devinit pci_fixup_latency(struct pci_dev *d) | |||
| 87 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_5597, pci_fixup_latency); | 87 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_5597, pci_fixup_latency); |
| 88 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_5598, pci_fixup_latency); | 88 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_5598, pci_fixup_latency); |
| 89 | 89 | ||
| 90 | static void __devinit pci_fixup_piix4_acpi(struct pci_dev *d) | 90 | static void pci_fixup_piix4_acpi(struct pci_dev *d) |
| 91 | { | 91 | { |
| 92 | /* | 92 | /* |
| 93 | * PIIX4 ACPI device: hardwired IRQ9 | 93 | * PIIX4 ACPI device: hardwired IRQ9 |
| @@ -163,7 +163,7 @@ DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8367_0, pci_fixup_ | |||
| 163 | * system to PCI bus no matter what are their window settings, so they are | 163 | * system to PCI bus no matter what are their window settings, so they are |
| 164 | * "transparent" (or subtractive decoding) from programmers point of view. | 164 | * "transparent" (or subtractive decoding) from programmers point of view. |
| 165 | */ | 165 | */ |
| 166 | static void __devinit pci_fixup_transparent_bridge(struct pci_dev *dev) | 166 | static void pci_fixup_transparent_bridge(struct pci_dev *dev) |
| 167 | { | 167 | { |
| 168 | if ((dev->device & 0xff00) == 0x2400) | 168 | if ((dev->device & 0xff00) == 0x2400) |
| 169 | dev->transparent = 1; | 169 | dev->transparent = 1; |
| @@ -317,7 +317,7 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_MCH_PC1, pcie_r | |||
| 317 | * video device at this point. | 317 | * video device at this point. |
| 318 | */ | 318 | */ |
| 319 | 319 | ||
| 320 | static void __devinit pci_fixup_video(struct pci_dev *pdev) | 320 | static void pci_fixup_video(struct pci_dev *pdev) |
| 321 | { | 321 | { |
| 322 | struct pci_dev *bridge; | 322 | struct pci_dev *bridge; |
| 323 | struct pci_bus *bus; | 323 | struct pci_bus *bus; |
| @@ -357,7 +357,7 @@ DECLARE_PCI_FIXUP_CLASS_FINAL(PCI_ANY_ID, PCI_ANY_ID, | |||
| 357 | PCI_CLASS_DISPLAY_VGA, 8, pci_fixup_video); | 357 | PCI_CLASS_DISPLAY_VGA, 8, pci_fixup_video); |
| 358 | 358 | ||
| 359 | 359 | ||
| 360 | static const struct dmi_system_id __devinitconst msi_k8t_dmi_table[] = { | 360 | static const struct dmi_system_id msi_k8t_dmi_table[] = { |
| 361 | { | 361 | { |
| 362 | .ident = "MSI-K8T-Neo2Fir", | 362 | .ident = "MSI-K8T-Neo2Fir", |
| 363 | .matches = { | 363 | .matches = { |
| @@ -378,7 +378,7 @@ static const struct dmi_system_id __devinitconst msi_k8t_dmi_table[] = { | |||
| 378 | * The soundcard is only enabled, if the mainborad is identified | 378 | * The soundcard is only enabled, if the mainborad is identified |
| 379 | * via DMI-tables and the soundcard is detected to be off. | 379 | * via DMI-tables and the soundcard is detected to be off. |
| 380 | */ | 380 | */ |
| 381 | static void __devinit pci_fixup_msi_k8t_onboard_sound(struct pci_dev *dev) | 381 | static void pci_fixup_msi_k8t_onboard_sound(struct pci_dev *dev) |
| 382 | { | 382 | { |
| 383 | unsigned char val; | 383 | unsigned char val; |
| 384 | if (!dmi_check_system(msi_k8t_dmi_table)) | 384 | if (!dmi_check_system(msi_k8t_dmi_table)) |
| @@ -414,7 +414,7 @@ DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8237, | |||
| 414 | */ | 414 | */ |
| 415 | static u16 toshiba_line_size; | 415 | static u16 toshiba_line_size; |
| 416 | 416 | ||
| 417 | static const struct dmi_system_id __devinitconst toshiba_ohci1394_dmi_table[] = { | 417 | static const struct dmi_system_id toshiba_ohci1394_dmi_table[] = { |
| 418 | { | 418 | { |
| 419 | .ident = "Toshiba PS5 based laptop", | 419 | .ident = "Toshiba PS5 based laptop", |
| 420 | .matches = { | 420 | .matches = { |
| @@ -439,7 +439,7 @@ static const struct dmi_system_id __devinitconst toshiba_ohci1394_dmi_table[] = | |||
| 439 | { } | 439 | { } |
| 440 | }; | 440 | }; |
| 441 | 441 | ||
| 442 | static void __devinit pci_pre_fixup_toshiba_ohci1394(struct pci_dev *dev) | 442 | static void pci_pre_fixup_toshiba_ohci1394(struct pci_dev *dev) |
| 443 | { | 443 | { |
| 444 | if (!dmi_check_system(toshiba_ohci1394_dmi_table)) | 444 | if (!dmi_check_system(toshiba_ohci1394_dmi_table)) |
| 445 | return; /* only applies to certain Toshibas (so far) */ | 445 | return; /* only applies to certain Toshibas (so far) */ |
| @@ -450,7 +450,7 @@ static void __devinit pci_pre_fixup_toshiba_ohci1394(struct pci_dev *dev) | |||
| 450 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_TI, 0x8032, | 450 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_TI, 0x8032, |
| 451 | pci_pre_fixup_toshiba_ohci1394); | 451 | pci_pre_fixup_toshiba_ohci1394); |
| 452 | 452 | ||
| 453 | static void __devinit pci_post_fixup_toshiba_ohci1394(struct pci_dev *dev) | 453 | static void pci_post_fixup_toshiba_ohci1394(struct pci_dev *dev) |
| 454 | { | 454 | { |
| 455 | if (!dmi_check_system(toshiba_ohci1394_dmi_table)) | 455 | if (!dmi_check_system(toshiba_ohci1394_dmi_table)) |
| 456 | return; /* only applies to certain Toshibas (so far) */ | 456 | return; /* only applies to certain Toshibas (so far) */ |
| @@ -488,7 +488,7 @@ DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_CYRIX, PCI_DEVICE_ID_CYRIX_5530_LEGACY, | |||
| 488 | * Siemens Nixdorf AG FSC Multiprocessor Interrupt Controller: | 488 | * Siemens Nixdorf AG FSC Multiprocessor Interrupt Controller: |
| 489 | * prevent update of the BAR0, which doesn't look like a normal BAR. | 489 | * prevent update of the BAR0, which doesn't look like a normal BAR. |
| 490 | */ | 490 | */ |
| 491 | static void __devinit pci_siemens_interrupt_controller(struct pci_dev *dev) | 491 | static void pci_siemens_interrupt_controller(struct pci_dev *dev) |
| 492 | { | 492 | { |
| 493 | dev->resource[0].flags |= IORESOURCE_PCI_FIXED; | 493 | dev->resource[0].flags |= IORESOURCE_PCI_FIXED; |
| 494 | } | 494 | } |
| @@ -531,7 +531,7 @@ DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_ATI, 0x4385, sb600_disable_hpet_bar); | |||
| 531 | * | 531 | * |
| 532 | * Match off the LPC and svid/sdid (older kernels lose the bridge subvendor) | 532 | * Match off the LPC and svid/sdid (older kernels lose the bridge subvendor) |
| 533 | */ | 533 | */ |
| 534 | static void __devinit twinhead_reserve_killing_zone(struct pci_dev *dev) | 534 | static void twinhead_reserve_killing_zone(struct pci_dev *dev) |
| 535 | { | 535 | { |
| 536 | if (dev->subsystem_vendor == 0x14FF && dev->subsystem_device == 0xA003) { | 536 | if (dev->subsystem_vendor == 0x14FF && dev->subsystem_device == 0xA003) { |
| 537 | pr_info("Reserving memory on Twinhead H12Y\n"); | 537 | pr_info("Reserving memory on Twinhead H12Y\n"); |
diff --git a/arch/x86/pci/legacy.c b/arch/x86/pci/legacy.c index a1df191129d3..4a2ab9cb3659 100644 --- a/arch/x86/pci/legacy.c +++ b/arch/x86/pci/legacy.c | |||
| @@ -10,7 +10,7 @@ | |||
| 10 | * Discover remaining PCI buses in case there are peer host bridges. | 10 | * Discover remaining PCI buses in case there are peer host bridges. |
| 11 | * We use the number of last PCI bus provided by the PCI BIOS. | 11 | * We use the number of last PCI bus provided by the PCI BIOS. |
| 12 | */ | 12 | */ |
| 13 | static void __devinit pcibios_fixup_peer_bridges(void) | 13 | static void pcibios_fixup_peer_bridges(void) |
| 14 | { | 14 | { |
| 15 | int n; | 15 | int n; |
| 16 | 16 | ||
| @@ -34,7 +34,7 @@ int __init pci_legacy_init(void) | |||
| 34 | return 0; | 34 | return 0; |
| 35 | } | 35 | } |
| 36 | 36 | ||
| 37 | void __devinit pcibios_scan_specific_bus(int busn) | 37 | void pcibios_scan_specific_bus(int busn) |
| 38 | { | 38 | { |
| 39 | int devfn; | 39 | int devfn; |
| 40 | long node; | 40 | long node; |
diff --git a/arch/x86/pci/mmconfig-shared.c b/arch/x86/pci/mmconfig-shared.c index 704b9ec043d7..fb29968a7cd5 100644 --- a/arch/x86/pci/mmconfig-shared.c +++ b/arch/x86/pci/mmconfig-shared.c | |||
| @@ -49,7 +49,7 @@ static __init void free_all_mmcfg(void) | |||
| 49 | pci_mmconfig_remove(cfg); | 49 | pci_mmconfig_remove(cfg); |
| 50 | } | 50 | } |
| 51 | 51 | ||
| 52 | static __devinit void list_add_sorted(struct pci_mmcfg_region *new) | 52 | static void list_add_sorted(struct pci_mmcfg_region *new) |
| 53 | { | 53 | { |
| 54 | struct pci_mmcfg_region *cfg; | 54 | struct pci_mmcfg_region *cfg; |
| 55 | 55 | ||
| @@ -65,9 +65,8 @@ static __devinit void list_add_sorted(struct pci_mmcfg_region *new) | |||
| 65 | list_add_tail_rcu(&new->list, &pci_mmcfg_list); | 65 | list_add_tail_rcu(&new->list, &pci_mmcfg_list); |
| 66 | } | 66 | } |
| 67 | 67 | ||
| 68 | static __devinit struct pci_mmcfg_region *pci_mmconfig_alloc(int segment, | 68 | static struct pci_mmcfg_region *pci_mmconfig_alloc(int segment, int start, |
| 69 | int start, | 69 | int end, u64 addr) |
| 70 | int end, u64 addr) | ||
| 71 | { | 70 | { |
| 72 | struct pci_mmcfg_region *new; | 71 | struct pci_mmcfg_region *new; |
| 73 | struct resource *res; | 72 | struct resource *res; |
| @@ -371,8 +370,7 @@ static int __init pci_mmcfg_check_hostbridge(void) | |||
| 371 | return !list_empty(&pci_mmcfg_list); | 370 | return !list_empty(&pci_mmcfg_list); |
| 372 | } | 371 | } |
| 373 | 372 | ||
| 374 | static acpi_status __devinit check_mcfg_resource(struct acpi_resource *res, | 373 | static acpi_status check_mcfg_resource(struct acpi_resource *res, void *data) |
| 375 | void *data) | ||
| 376 | { | 374 | { |
| 377 | struct resource *mcfg_res = data; | 375 | struct resource *mcfg_res = data; |
| 378 | struct acpi_resource_address64 address; | 376 | struct acpi_resource_address64 address; |
| @@ -408,8 +406,8 @@ static acpi_status __devinit check_mcfg_resource(struct acpi_resource *res, | |||
| 408 | return AE_OK; | 406 | return AE_OK; |
| 409 | } | 407 | } |
| 410 | 408 | ||
| 411 | static acpi_status __devinit find_mboard_resource(acpi_handle handle, u32 lvl, | 409 | static acpi_status find_mboard_resource(acpi_handle handle, u32 lvl, |
| 412 | void *context, void **rv) | 410 | void *context, void **rv) |
| 413 | { | 411 | { |
| 414 | struct resource *mcfg_res = context; | 412 | struct resource *mcfg_res = context; |
| 415 | 413 | ||
| @@ -422,7 +420,7 @@ static acpi_status __devinit find_mboard_resource(acpi_handle handle, u32 lvl, | |||
| 422 | return AE_OK; | 420 | return AE_OK; |
| 423 | } | 421 | } |
| 424 | 422 | ||
| 425 | static int __devinit is_acpi_reserved(u64 start, u64 end, unsigned not_used) | 423 | static int is_acpi_reserved(u64 start, u64 end, unsigned not_used) |
| 426 | { | 424 | { |
| 427 | struct resource mcfg_res; | 425 | struct resource mcfg_res; |
| 428 | 426 | ||
| @@ -693,9 +691,8 @@ static int __init pci_mmcfg_late_insert_resources(void) | |||
| 693 | late_initcall(pci_mmcfg_late_insert_resources); | 691 | late_initcall(pci_mmcfg_late_insert_resources); |
| 694 | 692 | ||
| 695 | /* Add MMCFG information for host bridges */ | 693 | /* Add MMCFG information for host bridges */ |
| 696 | int __devinit pci_mmconfig_insert(struct device *dev, | 694 | int pci_mmconfig_insert(struct device *dev, u16 seg, u8 start, u8 end, |
| 697 | u16 seg, u8 start, u8 end, | 695 | phys_addr_t addr) |
| 698 | phys_addr_t addr) | ||
| 699 | { | 696 | { |
| 700 | int rc; | 697 | int rc; |
| 701 | struct resource *tmp = NULL; | 698 | struct resource *tmp = NULL; |
diff --git a/arch/x86/pci/mmconfig_32.c b/arch/x86/pci/mmconfig_32.c index db63ac23e3d9..5c90975cdf0f 100644 --- a/arch/x86/pci/mmconfig_32.c +++ b/arch/x86/pci/mmconfig_32.c | |||
| @@ -142,7 +142,7 @@ void __init pci_mmcfg_arch_free(void) | |||
| 142 | { | 142 | { |
| 143 | } | 143 | } |
| 144 | 144 | ||
| 145 | int __devinit pci_mmcfg_arch_map(struct pci_mmcfg_region *cfg) | 145 | int pci_mmcfg_arch_map(struct pci_mmcfg_region *cfg) |
| 146 | { | 146 | { |
| 147 | return 0; | 147 | return 0; |
| 148 | } | 148 | } |
diff --git a/arch/x86/pci/mmconfig_64.c b/arch/x86/pci/mmconfig_64.c index d4ebd07c306d..bea52496aea6 100644 --- a/arch/x86/pci/mmconfig_64.c +++ b/arch/x86/pci/mmconfig_64.c | |||
| @@ -95,7 +95,7 @@ const struct pci_raw_ops pci_mmcfg = { | |||
| 95 | .write = pci_mmcfg_write, | 95 | .write = pci_mmcfg_write, |
| 96 | }; | 96 | }; |
| 97 | 97 | ||
| 98 | static void __iomem * __devinit mcfg_ioremap(struct pci_mmcfg_region *cfg) | 98 | static void __iomem *mcfg_ioremap(struct pci_mmcfg_region *cfg) |
| 99 | { | 99 | { |
| 100 | void __iomem *addr; | 100 | void __iomem *addr; |
| 101 | u64 start, size; | 101 | u64 start, size; |
| @@ -133,7 +133,7 @@ void __init pci_mmcfg_arch_free(void) | |||
| 133 | pci_mmcfg_arch_unmap(cfg); | 133 | pci_mmcfg_arch_unmap(cfg); |
| 134 | } | 134 | } |
| 135 | 135 | ||
| 136 | int __devinit pci_mmcfg_arch_map(struct pci_mmcfg_region *cfg) | 136 | int pci_mmcfg_arch_map(struct pci_mmcfg_region *cfg) |
| 137 | { | 137 | { |
| 138 | cfg->virt = mcfg_ioremap(cfg); | 138 | cfg->virt = mcfg_ioremap(cfg); |
| 139 | if (!cfg->virt) { | 139 | if (!cfg->virt) { |
diff --git a/arch/x86/pci/mrst.c b/arch/x86/pci/mrst.c index e14a2ff708b5..6eb18c42a28a 100644 --- a/arch/x86/pci/mrst.c +++ b/arch/x86/pci/mrst.c | |||
| @@ -247,7 +247,7 @@ int __init pci_mrst_init(void) | |||
| 247 | /* Langwell devices are not true pci devices, they are not subject to 10 ms | 247 | /* Langwell devices are not true pci devices, they are not subject to 10 ms |
| 248 | * d3 to d0 delay required by pci spec. | 248 | * d3 to d0 delay required by pci spec. |
| 249 | */ | 249 | */ |
| 250 | static void __devinit pci_d3delay_fixup(struct pci_dev *dev) | 250 | static void pci_d3delay_fixup(struct pci_dev *dev) |
| 251 | { | 251 | { |
| 252 | /* PCI fixups are effectively decided compile time. If we have a dual | 252 | /* PCI fixups are effectively decided compile time. If we have a dual |
| 253 | SoC/non-SoC kernel we don't want to mangle d3 on non SoC devices */ | 253 | SoC/non-SoC kernel we don't want to mangle d3 on non SoC devices */ |
| @@ -262,7 +262,7 @@ static void __devinit pci_d3delay_fixup(struct pci_dev *dev) | |||
| 262 | } | 262 | } |
| 263 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_ANY_ID, pci_d3delay_fixup); | 263 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_ANY_ID, pci_d3delay_fixup); |
| 264 | 264 | ||
| 265 | static void __devinit mrst_power_off_unused_dev(struct pci_dev *dev) | 265 | static void mrst_power_off_unused_dev(struct pci_dev *dev) |
| 266 | { | 266 | { |
| 267 | pci_set_power_state(dev, PCI_D3hot); | 267 | pci_set_power_state(dev, PCI_D3hot); |
| 268 | } | 268 | } |
| @@ -275,7 +275,7 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0815, mrst_power_off_unused_dev); | |||
| 275 | /* | 275 | /* |
| 276 | * Langwell devices reside at fixed offsets, don't try to move them. | 276 | * Langwell devices reside at fixed offsets, don't try to move them. |
| 277 | */ | 277 | */ |
| 278 | static void __devinit pci_fixed_bar_fixup(struct pci_dev *dev) | 278 | static void pci_fixed_bar_fixup(struct pci_dev *dev) |
| 279 | { | 279 | { |
| 280 | unsigned long offset; | 280 | unsigned long offset; |
| 281 | u32 size; | 281 | u32 size; |
diff --git a/arch/x86/pci/numaq_32.c b/arch/x86/pci/numaq_32.c index 83e125b95ca6..b96b14c250b6 100644 --- a/arch/x86/pci/numaq_32.c +++ b/arch/x86/pci/numaq_32.c | |||
| @@ -116,7 +116,7 @@ static const struct pci_raw_ops pci_direct_conf1_mq = { | |||
| 116 | }; | 116 | }; |
| 117 | 117 | ||
| 118 | 118 | ||
| 119 | static void __devinit pci_fixup_i450nx(struct pci_dev *d) | 119 | static void pci_fixup_i450nx(struct pci_dev *d) |
| 120 | { | 120 | { |
| 121 | /* | 121 | /* |
| 122 | * i450NX -- Find and scan all secondary buses on all PXB's. | 122 | * i450NX -- Find and scan all secondary buses on all PXB's. |
diff --git a/arch/x86/pci/pcbios.c b/arch/x86/pci/pcbios.c index da8fe0535ff4..c77b24a8b2da 100644 --- a/arch/x86/pci/pcbios.c +++ b/arch/x86/pci/pcbios.c | |||
| @@ -124,7 +124,7 @@ static struct { | |||
| 124 | 124 | ||
| 125 | static int pci_bios_present; | 125 | static int pci_bios_present; |
| 126 | 126 | ||
| 127 | static int __devinit check_pcibios(void) | 127 | static int check_pcibios(void) |
| 128 | { | 128 | { |
| 129 | u32 signature, eax, ebx, ecx; | 129 | u32 signature, eax, ebx, ecx; |
| 130 | u8 status, major_ver, minor_ver, hw_mech; | 130 | u8 status, major_ver, minor_ver, hw_mech; |
| @@ -312,7 +312,7 @@ static const struct pci_raw_ops pci_bios_access = { | |||
| 312 | * Try to find PCI BIOS. | 312 | * Try to find PCI BIOS. |
| 313 | */ | 313 | */ |
| 314 | 314 | ||
| 315 | static const struct pci_raw_ops * __devinit pci_find_bios(void) | 315 | static const struct pci_raw_ops *pci_find_bios(void) |
| 316 | { | 316 | { |
| 317 | union bios32 *check; | 317 | union bios32 *check; |
| 318 | unsigned char sum; | 318 | unsigned char sum; |
diff --git a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c index ad4439145f85..77cf0090c0a3 100644 --- a/arch/x86/platform/efi/efi.c +++ b/arch/x86/platform/efi/efi.c | |||
| @@ -51,9 +51,6 @@ | |||
| 51 | 51 | ||
| 52 | #define EFI_DEBUG 1 | 52 | #define EFI_DEBUG 1 |
| 53 | 53 | ||
| 54 | int efi_enabled; | ||
| 55 | EXPORT_SYMBOL(efi_enabled); | ||
| 56 | |||
| 57 | struct efi __read_mostly efi = { | 54 | struct efi __read_mostly efi = { |
| 58 | .mps = EFI_INVALID_TABLE_ADDR, | 55 | .mps = EFI_INVALID_TABLE_ADDR, |
| 59 | .acpi = EFI_INVALID_TABLE_ADDR, | 56 | .acpi = EFI_INVALID_TABLE_ADDR, |
| @@ -69,19 +66,28 @@ EXPORT_SYMBOL(efi); | |||
| 69 | 66 | ||
| 70 | struct efi_memory_map memmap; | 67 | struct efi_memory_map memmap; |
| 71 | 68 | ||
| 72 | bool efi_64bit; | ||
| 73 | |||
| 74 | static struct efi efi_phys __initdata; | 69 | static struct efi efi_phys __initdata; |
| 75 | static efi_system_table_t efi_systab __initdata; | 70 | static efi_system_table_t efi_systab __initdata; |
| 76 | 71 | ||
| 77 | static inline bool efi_is_native(void) | 72 | static inline bool efi_is_native(void) |
| 78 | { | 73 | { |
| 79 | return IS_ENABLED(CONFIG_X86_64) == efi_64bit; | 74 | return IS_ENABLED(CONFIG_X86_64) == efi_enabled(EFI_64BIT); |
| 75 | } | ||
| 76 | |||
| 77 | unsigned long x86_efi_facility; | ||
| 78 | |||
| 79 | /* | ||
| 80 | * Returns 1 if 'facility' is enabled, 0 otherwise. | ||
| 81 | */ | ||
| 82 | int efi_enabled(int facility) | ||
| 83 | { | ||
| 84 | return test_bit(facility, &x86_efi_facility) != 0; | ||
| 80 | } | 85 | } |
| 86 | EXPORT_SYMBOL(efi_enabled); | ||
| 81 | 87 | ||
| 82 | static int __init setup_noefi(char *arg) | 88 | static int __init setup_noefi(char *arg) |
| 83 | { | 89 | { |
| 84 | efi_enabled = 0; | 90 | clear_bit(EFI_BOOT, &x86_efi_facility); |
| 85 | return 0; | 91 | return 0; |
| 86 | } | 92 | } |
| 87 | early_param("noefi", setup_noefi); | 93 | early_param("noefi", setup_noefi); |
| @@ -426,6 +432,7 @@ void __init efi_reserve_boot_services(void) | |||
| 426 | 432 | ||
| 427 | void __init efi_unmap_memmap(void) | 433 | void __init efi_unmap_memmap(void) |
| 428 | { | 434 | { |
| 435 | clear_bit(EFI_MEMMAP, &x86_efi_facility); | ||
| 429 | if (memmap.map) { | 436 | if (memmap.map) { |
| 430 | early_iounmap(memmap.map, memmap.nr_map * memmap.desc_size); | 437 | early_iounmap(memmap.map, memmap.nr_map * memmap.desc_size); |
| 431 | memmap.map = NULL; | 438 | memmap.map = NULL; |
| @@ -460,7 +467,7 @@ void __init efi_free_boot_services(void) | |||
| 460 | 467 | ||
| 461 | static int __init efi_systab_init(void *phys) | 468 | static int __init efi_systab_init(void *phys) |
| 462 | { | 469 | { |
| 463 | if (efi_64bit) { | 470 | if (efi_enabled(EFI_64BIT)) { |
| 464 | efi_system_table_64_t *systab64; | 471 | efi_system_table_64_t *systab64; |
| 465 | u64 tmp = 0; | 472 | u64 tmp = 0; |
| 466 | 473 | ||
| @@ -552,7 +559,7 @@ static int __init efi_config_init(u64 tables, int nr_tables) | |||
| 552 | void *config_tables, *tablep; | 559 | void *config_tables, *tablep; |
| 553 | int i, sz; | 560 | int i, sz; |
| 554 | 561 | ||
| 555 | if (efi_64bit) | 562 | if (efi_enabled(EFI_64BIT)) |
| 556 | sz = sizeof(efi_config_table_64_t); | 563 | sz = sizeof(efi_config_table_64_t); |
| 557 | else | 564 | else |
| 558 | sz = sizeof(efi_config_table_32_t); | 565 | sz = sizeof(efi_config_table_32_t); |
| @@ -572,7 +579,7 @@ static int __init efi_config_init(u64 tables, int nr_tables) | |||
| 572 | efi_guid_t guid; | 579 | efi_guid_t guid; |
| 573 | unsigned long table; | 580 | unsigned long table; |
| 574 | 581 | ||
| 575 | if (efi_64bit) { | 582 | if (efi_enabled(EFI_64BIT)) { |
| 576 | u64 table64; | 583 | u64 table64; |
| 577 | guid = ((efi_config_table_64_t *)tablep)->guid; | 584 | guid = ((efi_config_table_64_t *)tablep)->guid; |
| 578 | table64 = ((efi_config_table_64_t *)tablep)->table; | 585 | table64 = ((efi_config_table_64_t *)tablep)->table; |
| @@ -684,7 +691,6 @@ void __init efi_init(void) | |||
| 684 | if (boot_params.efi_info.efi_systab_hi || | 691 | if (boot_params.efi_info.efi_systab_hi || |
| 685 | boot_params.efi_info.efi_memmap_hi) { | 692 | boot_params.efi_info.efi_memmap_hi) { |
| 686 | pr_info("Table located above 4GB, disabling EFI.\n"); | 693 | pr_info("Table located above 4GB, disabling EFI.\n"); |
| 687 | efi_enabled = 0; | ||
| 688 | return; | 694 | return; |
| 689 | } | 695 | } |
| 690 | efi_phys.systab = (efi_system_table_t *)boot_params.efi_info.efi_systab; | 696 | efi_phys.systab = (efi_system_table_t *)boot_params.efi_info.efi_systab; |
| @@ -694,10 +700,10 @@ void __init efi_init(void) | |||
| 694 | ((__u64)boot_params.efi_info.efi_systab_hi<<32)); | 700 | ((__u64)boot_params.efi_info.efi_systab_hi<<32)); |
| 695 | #endif | 701 | #endif |
| 696 | 702 | ||
| 697 | if (efi_systab_init(efi_phys.systab)) { | 703 | if (efi_systab_init(efi_phys.systab)) |
| 698 | efi_enabled = 0; | ||
| 699 | return; | 704 | return; |
| 700 | } | 705 | |
| 706 | set_bit(EFI_SYSTEM_TABLES, &x86_efi_facility); | ||
| 701 | 707 | ||
| 702 | /* | 708 | /* |
| 703 | * Show what we know for posterity | 709 | * Show what we know for posterity |
| @@ -715,10 +721,10 @@ void __init efi_init(void) | |||
| 715 | efi.systab->hdr.revision >> 16, | 721 | efi.systab->hdr.revision >> 16, |
| 716 | efi.systab->hdr.revision & 0xffff, vendor); | 722 | efi.systab->hdr.revision & 0xffff, vendor); |
| 717 | 723 | ||
| 718 | if (efi_config_init(efi.systab->tables, efi.systab->nr_tables)) { | 724 | if (efi_config_init(efi.systab->tables, efi.systab->nr_tables)) |
| 719 | efi_enabled = 0; | ||
| 720 | return; | 725 | return; |
| 721 | } | 726 | |
| 727 | set_bit(EFI_CONFIG_TABLES, &x86_efi_facility); | ||
| 722 | 728 | ||
| 723 | /* | 729 | /* |
| 724 | * Note: We currently don't support runtime services on an EFI | 730 | * Note: We currently don't support runtime services on an EFI |
| @@ -727,15 +733,17 @@ void __init efi_init(void) | |||
| 727 | 733 | ||
| 728 | if (!efi_is_native()) | 734 | if (!efi_is_native()) |
| 729 | pr_info("No EFI runtime due to 32/64-bit mismatch with kernel\n"); | 735 | pr_info("No EFI runtime due to 32/64-bit mismatch with kernel\n"); |
| 730 | else if (efi_runtime_init()) { | 736 | else { |
| 731 | efi_enabled = 0; | 737 | if (efi_runtime_init()) |
| 732 | return; | 738 | return; |
| 739 | set_bit(EFI_RUNTIME_SERVICES, &x86_efi_facility); | ||
| 733 | } | 740 | } |
| 734 | 741 | ||
| 735 | if (efi_memmap_init()) { | 742 | if (efi_memmap_init()) |
| 736 | efi_enabled = 0; | ||
| 737 | return; | 743 | return; |
| 738 | } | 744 | |
| 745 | set_bit(EFI_MEMMAP, &x86_efi_facility); | ||
| 746 | |||
| 739 | #ifdef CONFIG_X86_32 | 747 | #ifdef CONFIG_X86_32 |
| 740 | if (efi_is_native()) { | 748 | if (efi_is_native()) { |
| 741 | x86_platform.get_wallclock = efi_get_time; | 749 | x86_platform.get_wallclock = efi_get_time; |
| @@ -941,7 +949,7 @@ void __init efi_enter_virtual_mode(void) | |||
| 941 | * | 949 | * |
| 942 | * Call EFI services through wrapper functions. | 950 | * Call EFI services through wrapper functions. |
| 943 | */ | 951 | */ |
| 944 | efi.runtime_version = efi_systab.fw_revision; | 952 | efi.runtime_version = efi_systab.hdr.revision; |
| 945 | efi.get_time = virt_efi_get_time; | 953 | efi.get_time = virt_efi_get_time; |
| 946 | efi.set_time = virt_efi_set_time; | 954 | efi.set_time = virt_efi_set_time; |
| 947 | efi.get_wakeup_time = virt_efi_get_wakeup_time; | 955 | efi.get_wakeup_time = virt_efi_get_wakeup_time; |
| @@ -969,6 +977,9 @@ u32 efi_mem_type(unsigned long phys_addr) | |||
| 969 | efi_memory_desc_t *md; | 977 | efi_memory_desc_t *md; |
| 970 | void *p; | 978 | void *p; |
| 971 | 979 | ||
| 980 | if (!efi_enabled(EFI_MEMMAP)) | ||
| 981 | return 0; | ||
| 982 | |||
| 972 | for (p = memmap.map; p < memmap.map_end; p += memmap.desc_size) { | 983 | for (p = memmap.map; p < memmap.map_end; p += memmap.desc_size) { |
| 973 | md = p; | 984 | md = p; |
| 974 | if ((md->phys_addr <= phys_addr) && | 985 | if ((md->phys_addr <= phys_addr) && |
diff --git a/arch/x86/platform/efi/efi_64.c b/arch/x86/platform/efi/efi_64.c index 95fd505dfeb6..2b2003860615 100644 --- a/arch/x86/platform/efi/efi_64.c +++ b/arch/x86/platform/efi/efi_64.c | |||
| @@ -38,7 +38,7 @@ | |||
| 38 | #include <asm/cacheflush.h> | 38 | #include <asm/cacheflush.h> |
| 39 | #include <asm/fixmap.h> | 39 | #include <asm/fixmap.h> |
| 40 | 40 | ||
| 41 | static pgd_t save_pgd __initdata; | 41 | static pgd_t *save_pgd __initdata; |
| 42 | static unsigned long efi_flags __initdata; | 42 | static unsigned long efi_flags __initdata; |
| 43 | 43 | ||
| 44 | static void __init early_code_mapping_set_exec(int executable) | 44 | static void __init early_code_mapping_set_exec(int executable) |
| @@ -61,12 +61,20 @@ static void __init early_code_mapping_set_exec(int executable) | |||
| 61 | void __init efi_call_phys_prelog(void) | 61 | void __init efi_call_phys_prelog(void) |
| 62 | { | 62 | { |
| 63 | unsigned long vaddress; | 63 | unsigned long vaddress; |
| 64 | int pgd; | ||
| 65 | int n_pgds; | ||
| 64 | 66 | ||
| 65 | early_code_mapping_set_exec(1); | 67 | early_code_mapping_set_exec(1); |
| 66 | local_irq_save(efi_flags); | 68 | local_irq_save(efi_flags); |
| 67 | vaddress = (unsigned long)__va(0x0UL); | 69 | |
| 68 | save_pgd = *pgd_offset_k(0x0UL); | 70 | n_pgds = DIV_ROUND_UP((max_pfn << PAGE_SHIFT), PGDIR_SIZE); |
| 69 | set_pgd(pgd_offset_k(0x0UL), *pgd_offset_k(vaddress)); | 71 | save_pgd = kmalloc(n_pgds * sizeof(pgd_t), GFP_KERNEL); |
| 72 | |||
| 73 | for (pgd = 0; pgd < n_pgds; pgd++) { | ||
| 74 | save_pgd[pgd] = *pgd_offset_k(pgd * PGDIR_SIZE); | ||
| 75 | vaddress = (unsigned long)__va(pgd * PGDIR_SIZE); | ||
| 76 | set_pgd(pgd_offset_k(pgd * PGDIR_SIZE), *pgd_offset_k(vaddress)); | ||
| 77 | } | ||
| 70 | __flush_tlb_all(); | 78 | __flush_tlb_all(); |
| 71 | } | 79 | } |
| 72 | 80 | ||
| @@ -75,7 +83,11 @@ void __init efi_call_phys_epilog(void) | |||
| 75 | /* | 83 | /* |
| 76 | * After the lock is released, the original page table is restored. | 84 | * After the lock is released, the original page table is restored. |
| 77 | */ | 85 | */ |
| 78 | set_pgd(pgd_offset_k(0x0UL), save_pgd); | 86 | int pgd; |
| 87 | int n_pgds = DIV_ROUND_UP((max_pfn << PAGE_SHIFT) , PGDIR_SIZE); | ||
| 88 | for (pgd = 0; pgd < n_pgds; pgd++) | ||
| 89 | set_pgd(pgd_offset_k(pgd * PGDIR_SIZE), save_pgd[pgd]); | ||
| 90 | kfree(save_pgd); | ||
| 79 | __flush_tlb_all(); | 91 | __flush_tlb_all(); |
| 80 | local_irq_restore(efi_flags); | 92 | local_irq_restore(efi_flags); |
| 81 | early_code_mapping_set_exec(0); | 93 | early_code_mapping_set_exec(0); |
diff --git a/arch/x86/platform/mrst/mrst.c b/arch/x86/platform/mrst/mrst.c index fd41a9262d65..e31bcd8f2eee 100644 --- a/arch/x86/platform/mrst/mrst.c +++ b/arch/x86/platform/mrst/mrst.c | |||
| @@ -782,7 +782,7 @@ BLOCKING_NOTIFIER_HEAD(intel_scu_notifier); | |||
| 782 | EXPORT_SYMBOL_GPL(intel_scu_notifier); | 782 | EXPORT_SYMBOL_GPL(intel_scu_notifier); |
| 783 | 783 | ||
| 784 | /* Called by IPC driver */ | 784 | /* Called by IPC driver */ |
| 785 | void __devinit intel_scu_devices_create(void) | 785 | void intel_scu_devices_create(void) |
| 786 | { | 786 | { |
| 787 | int i; | 787 | int i; |
| 788 | 788 | ||
diff --git a/arch/x86/platform/olpc/olpc-xo1-pm.c b/arch/x86/platform/olpc/olpc-xo1-pm.c index d75582d1aa55..ff0174dda810 100644 --- a/arch/x86/platform/olpc/olpc-xo1-pm.c +++ b/arch/x86/platform/olpc/olpc-xo1-pm.c | |||
| @@ -121,7 +121,7 @@ static const struct platform_suspend_ops xo1_suspend_ops = { | |||
| 121 | .enter = xo1_power_state_enter, | 121 | .enter = xo1_power_state_enter, |
| 122 | }; | 122 | }; |
| 123 | 123 | ||
| 124 | static int __devinit xo1_pm_probe(struct platform_device *pdev) | 124 | static int xo1_pm_probe(struct platform_device *pdev) |
| 125 | { | 125 | { |
| 126 | struct resource *res; | 126 | struct resource *res; |
| 127 | int err; | 127 | int err; |
| @@ -154,7 +154,7 @@ static int __devinit xo1_pm_probe(struct platform_device *pdev) | |||
| 154 | return 0; | 154 | return 0; |
| 155 | } | 155 | } |
| 156 | 156 | ||
| 157 | static int __devexit xo1_pm_remove(struct platform_device *pdev) | 157 | static int xo1_pm_remove(struct platform_device *pdev) |
| 158 | { | 158 | { |
| 159 | mfd_cell_disable(pdev); | 159 | mfd_cell_disable(pdev); |
| 160 | 160 | ||
| @@ -173,7 +173,7 @@ static struct platform_driver cs5535_pms_driver = { | |||
| 173 | .owner = THIS_MODULE, | 173 | .owner = THIS_MODULE, |
| 174 | }, | 174 | }, |
| 175 | .probe = xo1_pm_probe, | 175 | .probe = xo1_pm_probe, |
| 176 | .remove = __devexit_p(xo1_pm_remove), | 176 | .remove = xo1_pm_remove, |
| 177 | }; | 177 | }; |
| 178 | 178 | ||
| 179 | static struct platform_driver cs5535_acpi_driver = { | 179 | static struct platform_driver cs5535_acpi_driver = { |
| @@ -182,7 +182,7 @@ static struct platform_driver cs5535_acpi_driver = { | |||
| 182 | .owner = THIS_MODULE, | 182 | .owner = THIS_MODULE, |
| 183 | }, | 183 | }, |
| 184 | .probe = xo1_pm_probe, | 184 | .probe = xo1_pm_probe, |
| 185 | .remove = __devexit_p(xo1_pm_remove), | 185 | .remove = xo1_pm_remove, |
| 186 | }; | 186 | }; |
| 187 | 187 | ||
| 188 | static int __init xo1_pm_init(void) | 188 | static int __init xo1_pm_init(void) |
diff --git a/arch/x86/platform/olpc/olpc-xo1-sci.c b/arch/x86/platform/olpc/olpc-xo1-sci.c index 63d4aa40956e..74704be7b1fe 100644 --- a/arch/x86/platform/olpc/olpc-xo1-sci.c +++ b/arch/x86/platform/olpc/olpc-xo1-sci.c | |||
| @@ -309,7 +309,7 @@ static int xo1_sci_resume(struct platform_device *pdev) | |||
| 309 | return 0; | 309 | return 0; |
| 310 | } | 310 | } |
| 311 | 311 | ||
| 312 | static int __devinit setup_sci_interrupt(struct platform_device *pdev) | 312 | static int setup_sci_interrupt(struct platform_device *pdev) |
| 313 | { | 313 | { |
| 314 | u32 lo, hi; | 314 | u32 lo, hi; |
| 315 | u32 sts; | 315 | u32 sts; |
| @@ -351,7 +351,7 @@ static int __devinit setup_sci_interrupt(struct platform_device *pdev) | |||
| 351 | return r; | 351 | return r; |
| 352 | } | 352 | } |
| 353 | 353 | ||
| 354 | static int __devinit setup_ec_sci(void) | 354 | static int setup_ec_sci(void) |
| 355 | { | 355 | { |
| 356 | int r; | 356 | int r; |
| 357 | 357 | ||
| @@ -395,7 +395,7 @@ static void free_ec_sci(void) | |||
| 395 | gpio_free(OLPC_GPIO_ECSCI); | 395 | gpio_free(OLPC_GPIO_ECSCI); |
| 396 | } | 396 | } |
| 397 | 397 | ||
| 398 | static int __devinit setup_lid_events(void) | 398 | static int setup_lid_events(void) |
| 399 | { | 399 | { |
| 400 | int r; | 400 | int r; |
| 401 | 401 | ||
| @@ -432,7 +432,7 @@ static void free_lid_events(void) | |||
| 432 | gpio_free(OLPC_GPIO_LID); | 432 | gpio_free(OLPC_GPIO_LID); |
| 433 | } | 433 | } |
| 434 | 434 | ||
| 435 | static int __devinit setup_power_button(struct platform_device *pdev) | 435 | static int setup_power_button(struct platform_device *pdev) |
| 436 | { | 436 | { |
| 437 | int r; | 437 | int r; |
| 438 | 438 | ||
| @@ -463,7 +463,7 @@ static void free_power_button(void) | |||
| 463 | input_free_device(power_button_idev); | 463 | input_free_device(power_button_idev); |
| 464 | } | 464 | } |
| 465 | 465 | ||
| 466 | static int __devinit setup_ebook_switch(struct platform_device *pdev) | 466 | static int setup_ebook_switch(struct platform_device *pdev) |
| 467 | { | 467 | { |
| 468 | int r; | 468 | int r; |
| 469 | 469 | ||
| @@ -494,7 +494,7 @@ static void free_ebook_switch(void) | |||
| 494 | input_free_device(ebook_switch_idev); | 494 | input_free_device(ebook_switch_idev); |
| 495 | } | 495 | } |
| 496 | 496 | ||
| 497 | static int __devinit setup_lid_switch(struct platform_device *pdev) | 497 | static int setup_lid_switch(struct platform_device *pdev) |
| 498 | { | 498 | { |
| 499 | int r; | 499 | int r; |
| 500 | 500 | ||
| @@ -538,7 +538,7 @@ static void free_lid_switch(void) | |||
| 538 | input_free_device(lid_switch_idev); | 538 | input_free_device(lid_switch_idev); |
| 539 | } | 539 | } |
| 540 | 540 | ||
| 541 | static int __devinit xo1_sci_probe(struct platform_device *pdev) | 541 | static int xo1_sci_probe(struct platform_device *pdev) |
| 542 | { | 542 | { |
| 543 | struct resource *res; | 543 | struct resource *res; |
| 544 | int r; | 544 | int r; |
| @@ -613,7 +613,7 @@ err_ebook: | |||
| 613 | return r; | 613 | return r; |
| 614 | } | 614 | } |
| 615 | 615 | ||
| 616 | static int __devexit xo1_sci_remove(struct platform_device *pdev) | 616 | static int xo1_sci_remove(struct platform_device *pdev) |
| 617 | { | 617 | { |
| 618 | mfd_cell_disable(pdev); | 618 | mfd_cell_disable(pdev); |
| 619 | free_irq(sci_irq, pdev); | 619 | free_irq(sci_irq, pdev); |
| @@ -632,7 +632,7 @@ static struct platform_driver xo1_sci_driver = { | |||
| 632 | .name = "olpc-xo1-sci-acpi", | 632 | .name = "olpc-xo1-sci-acpi", |
| 633 | }, | 633 | }, |
| 634 | .probe = xo1_sci_probe, | 634 | .probe = xo1_sci_probe, |
| 635 | .remove = __devexit_p(xo1_sci_remove), | 635 | .remove = xo1_sci_remove, |
| 636 | .suspend = xo1_sci_suspend, | 636 | .suspend = xo1_sci_suspend, |
| 637 | .resume = xo1_sci_resume, | 637 | .resume = xo1_sci_resume, |
| 638 | }; | 638 | }; |
diff --git a/arch/x86/platform/scx200/scx200_32.c b/arch/x86/platform/scx200/scx200_32.c index 7a9ad30d6c9f..3dc9aee41d91 100644 --- a/arch/x86/platform/scx200/scx200_32.c +++ b/arch/x86/platform/scx200/scx200_32.c | |||
| @@ -35,7 +35,7 @@ static struct pci_device_id scx200_tbl[] = { | |||
| 35 | }; | 35 | }; |
| 36 | MODULE_DEVICE_TABLE(pci,scx200_tbl); | 36 | MODULE_DEVICE_TABLE(pci,scx200_tbl); |
| 37 | 37 | ||
| 38 | static int __devinit scx200_probe(struct pci_dev *, const struct pci_device_id *); | 38 | static int scx200_probe(struct pci_dev *, const struct pci_device_id *); |
| 39 | 39 | ||
| 40 | static struct pci_driver scx200_pci_driver = { | 40 | static struct pci_driver scx200_pci_driver = { |
| 41 | .name = "scx200", | 41 | .name = "scx200", |
| @@ -45,7 +45,7 @@ static struct pci_driver scx200_pci_driver = { | |||
| 45 | 45 | ||
| 46 | static DEFINE_MUTEX(scx200_gpio_config_lock); | 46 | static DEFINE_MUTEX(scx200_gpio_config_lock); |
| 47 | 47 | ||
| 48 | static void __devinit scx200_init_shadow(void) | 48 | static void scx200_init_shadow(void) |
| 49 | { | 49 | { |
| 50 | int bank; | 50 | int bank; |
| 51 | 51 | ||
| @@ -54,7 +54,7 @@ static void __devinit scx200_init_shadow(void) | |||
| 54 | scx200_gpio_shadow[bank] = inl(scx200_gpio_base + 0x10 * bank); | 54 | scx200_gpio_shadow[bank] = inl(scx200_gpio_base + 0x10 * bank); |
| 55 | } | 55 | } |
| 56 | 56 | ||
| 57 | static int __devinit scx200_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | 57 | static int scx200_probe(struct pci_dev *pdev, const struct pci_device_id *ent) |
| 58 | { | 58 | { |
| 59 | unsigned base; | 59 | unsigned base; |
| 60 | 60 | ||
diff --git a/arch/x86/platform/uv/tlb_uv.c b/arch/x86/platform/uv/tlb_uv.c index b8b3a37c80cd..dbbdca5f508c 100644 --- a/arch/x86/platform/uv/tlb_uv.c +++ b/arch/x86/platform/uv/tlb_uv.c | |||
| @@ -1034,7 +1034,8 @@ static int set_distrib_bits(struct cpumask *flush_mask, struct bau_control *bcp, | |||
| 1034 | * globally purge translation cache of a virtual address or all TLB's | 1034 | * globally purge translation cache of a virtual address or all TLB's |
| 1035 | * @cpumask: mask of all cpu's in which the address is to be removed | 1035 | * @cpumask: mask of all cpu's in which the address is to be removed |
| 1036 | * @mm: mm_struct containing virtual address range | 1036 | * @mm: mm_struct containing virtual address range |
| 1037 | * @va: virtual address to be removed (or TLB_FLUSH_ALL for all TLB's on cpu) | 1037 | * @start: start virtual address to be removed from TLB |
| 1038 | * @end: end virtual address to be remove from TLB | ||
| 1038 | * @cpu: the current cpu | 1039 | * @cpu: the current cpu |
| 1039 | * | 1040 | * |
| 1040 | * This is the entry point for initiating any UV global TLB shootdown. | 1041 | * This is the entry point for initiating any UV global TLB shootdown. |
| @@ -1056,7 +1057,7 @@ static int set_distrib_bits(struct cpumask *flush_mask, struct bau_control *bcp, | |||
| 1056 | */ | 1057 | */ |
| 1057 | const struct cpumask *uv_flush_tlb_others(const struct cpumask *cpumask, | 1058 | const struct cpumask *uv_flush_tlb_others(const struct cpumask *cpumask, |
| 1058 | struct mm_struct *mm, unsigned long start, | 1059 | struct mm_struct *mm, unsigned long start, |
| 1059 | unsigned end, unsigned int cpu) | 1060 | unsigned long end, unsigned int cpu) |
| 1060 | { | 1061 | { |
| 1061 | int locals = 0; | 1062 | int locals = 0; |
| 1062 | int remotes = 0; | 1063 | int remotes = 0; |
| @@ -1113,7 +1114,10 @@ const struct cpumask *uv_flush_tlb_others(const struct cpumask *cpumask, | |||
| 1113 | 1114 | ||
| 1114 | record_send_statistics(stat, locals, hubs, remotes, bau_desc); | 1115 | record_send_statistics(stat, locals, hubs, remotes, bau_desc); |
| 1115 | 1116 | ||
| 1116 | bau_desc->payload.address = start; | 1117 | if (!end || (end - start) <= PAGE_SIZE) |
| 1118 | bau_desc->payload.address = start; | ||
| 1119 | else | ||
| 1120 | bau_desc->payload.address = TLB_FLUSH_ALL; | ||
| 1117 | bau_desc->payload.sending_cpu = cpu; | 1121 | bau_desc->payload.sending_cpu = cpu; |
| 1118 | /* | 1122 | /* |
| 1119 | * uv_flush_send_and_wait returns 0 if all cpu's were messaged, | 1123 | * uv_flush_send_and_wait returns 0 if all cpu's were messaged, |
diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c index 5a1847d61930..79d67bd507fa 100644 --- a/arch/x86/tools/relocs.c +++ b/arch/x86/tools/relocs.c | |||
| @@ -814,12 +814,14 @@ int main(int argc, char **argv) | |||
| 814 | read_relocs(fp); | 814 | read_relocs(fp); |
| 815 | if (show_absolute_syms) { | 815 | if (show_absolute_syms) { |
| 816 | print_absolute_symbols(); | 816 | print_absolute_symbols(); |
| 817 | return 0; | 817 | goto out; |
| 818 | } | 818 | } |
| 819 | if (show_absolute_relocs) { | 819 | if (show_absolute_relocs) { |
| 820 | print_absolute_relocs(); | 820 | print_absolute_relocs(); |
| 821 | return 0; | 821 | goto out; |
| 822 | } | 822 | } |
| 823 | emit_relocs(as_text, use_real_mode); | 823 | emit_relocs(as_text, use_real_mode); |
| 824 | out: | ||
| 825 | fclose(fp); | ||
| 824 | return 0; | 826 | return 0; |
| 825 | } | 827 | } |
diff --git a/arch/x86/xen/smp.c b/arch/x86/xen/smp.c index 4f7d2599b484..34bc4cee8887 100644 --- a/arch/x86/xen/smp.c +++ b/arch/x86/xen/smp.c | |||
| @@ -432,13 +432,6 @@ static void __cpuinit xen_play_dead(void) /* used only with HOTPLUG_CPU */ | |||
| 432 | play_dead_common(); | 432 | play_dead_common(); |
| 433 | HYPERVISOR_vcpu_op(VCPUOP_down, smp_processor_id(), NULL); | 433 | HYPERVISOR_vcpu_op(VCPUOP_down, smp_processor_id(), NULL); |
| 434 | cpu_bringup(); | 434 | cpu_bringup(); |
| 435 | /* | ||
| 436 | * Balance out the preempt calls - as we are running in cpu_idle | ||
| 437 | * loop which has been called at bootup from cpu_bringup_and_idle. | ||
| 438 | * The cpucpu_bringup_and_idle called cpu_bringup which made a | ||
| 439 | * preempt_disable() So this preempt_enable will balance it out. | ||
| 440 | */ | ||
| 441 | preempt_enable(); | ||
| 442 | } | 435 | } |
| 443 | 436 | ||
| 444 | #else /* !CONFIG_HOTPLUG_CPU */ | 437 | #else /* !CONFIG_HOTPLUG_CPU */ |
