aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/powerpc/boot/Makefile3
-rw-r--r--arch/powerpc/boot/opal.c2
-rw-r--r--arch/powerpc/kernel/eeh_driver.c4
-rw-r--r--arch/powerpc/kernel/vmlinux.lds.S9
-rw-r--r--arch/powerpc/mm/hash64_4k.c2
-rw-r--r--arch/powerpc/mm/hash64_64k.c4
6 files changed, 18 insertions, 6 deletions
diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile
index eae2dc8bc218..9d47f2efa830 100644
--- a/arch/powerpc/boot/Makefile
+++ b/arch/powerpc/boot/Makefile
@@ -100,7 +100,8 @@ src-wlib-y := string.S crt0.S crtsavres.S stdio.c decompress.c main.c \
100 ns16550.c serial.c simple_alloc.c div64.S util.S \ 100 ns16550.c serial.c simple_alloc.c div64.S util.S \
101 elf_util.c $(zlib-y) devtree.c stdlib.c \ 101 elf_util.c $(zlib-y) devtree.c stdlib.c \
102 oflib.c ofconsole.c cuboot.c mpsc.c cpm-serial.c \ 102 oflib.c ofconsole.c cuboot.c mpsc.c cpm-serial.c \
103 uartlite.c mpc52xx-psc.c opal.c opal-calls.S 103 uartlite.c mpc52xx-psc.c opal.c
104src-wlib-$(CONFIG_PPC64_BOOT_WRAPPER) += opal-calls.S
104src-wlib-$(CONFIG_40x) += 4xx.c planetcore.c 105src-wlib-$(CONFIG_40x) += 4xx.c planetcore.c
105src-wlib-$(CONFIG_44x) += 4xx.c ebony.c bamboo.c 106src-wlib-$(CONFIG_44x) += 4xx.c ebony.c bamboo.c
106src-wlib-$(CONFIG_8xx) += mpc8xx.c planetcore.c fsl-soc.c 107src-wlib-$(CONFIG_8xx) += mpc8xx.c planetcore.c fsl-soc.c
diff --git a/arch/powerpc/boot/opal.c b/arch/powerpc/boot/opal.c
index d7b4fd47eb44..0272570d02de 100644
--- a/arch/powerpc/boot/opal.c
+++ b/arch/powerpc/boot/opal.c
@@ -13,7 +13,7 @@
13#include <libfdt.h> 13#include <libfdt.h>
14#include "../include/asm/opal-api.h" 14#include "../include/asm/opal-api.h"
15 15
16#ifdef __powerpc64__ 16#ifdef CONFIG_PPC64_BOOT_WRAPPER
17 17
18/* Global OPAL struct used by opal-call.S */ 18/* Global OPAL struct used by opal-call.S */
19struct opal { 19struct opal {
diff --git a/arch/powerpc/kernel/eeh_driver.c b/arch/powerpc/kernel/eeh_driver.c
index a62be72da274..5c31369435f2 100644
--- a/arch/powerpc/kernel/eeh_driver.c
+++ b/arch/powerpc/kernel/eeh_driver.c
@@ -671,8 +671,10 @@ static int eeh_reset_device(struct eeh_pe *pe, struct pci_bus *bus,
671 671
672 /* Clear frozen state */ 672 /* Clear frozen state */
673 rc = eeh_clear_pe_frozen_state(pe, false); 673 rc = eeh_clear_pe_frozen_state(pe, false);
674 if (rc) 674 if (rc) {
675 pci_unlock_rescan_remove();
675 return rc; 676 return rc;
677 }
676 678
677 /* Give the system 5 seconds to finish running the user-space 679 /* Give the system 5 seconds to finish running the user-space
678 * hotplug shutdown scripts, e.g. ifdown for ethernet. Yes, 680 * hotplug shutdown scripts, e.g. ifdown for ethernet. Yes,
diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S
index 8295f51c1a5f..7394b770ae1f 100644
--- a/arch/powerpc/kernel/vmlinux.lds.S
+++ b/arch/powerpc/kernel/vmlinux.lds.S
@@ -94,8 +94,17 @@ SECTIONS
94 * detected, and will result in a crash at boot due to offsets being 94 * detected, and will result in a crash at boot due to offsets being
95 * wrong. 95 * wrong.
96 */ 96 */
97#ifdef CONFIG_PPC64
98 /*
99 * BLOCK(0) overrides the default output section alignment because
100 * this needs to start right after .head.text in order for fixed
101 * section placement to work.
102 */
103 .text BLOCK(0) : AT(ADDR(.text) - LOAD_OFFSET) {
104#else
97 .text : AT(ADDR(.text) - LOAD_OFFSET) { 105 .text : AT(ADDR(.text) - LOAD_OFFSET) {
98 ALIGN_FUNCTION(); 106 ALIGN_FUNCTION();
107#endif
99 /* careful! __ftr_alt_* sections need to be close to .text */ 108 /* careful! __ftr_alt_* sections need to be close to .text */
100 *(.text .fixup __ftr_alt_* .ref.text) 109 *(.text .fixup __ftr_alt_* .ref.text)
101 SCHED_TEXT 110 SCHED_TEXT
diff --git a/arch/powerpc/mm/hash64_4k.c b/arch/powerpc/mm/hash64_4k.c
index 42c702b3be1f..6fa450c12d6d 100644
--- a/arch/powerpc/mm/hash64_4k.c
+++ b/arch/powerpc/mm/hash64_4k.c
@@ -55,7 +55,7 @@ int __hash_page_4K(unsigned long ea, unsigned long access, unsigned long vsid,
55 */ 55 */
56 rflags = htab_convert_pte_flags(new_pte); 56 rflags = htab_convert_pte_flags(new_pte);
57 57
58 if (!cpu_has_feature(CPU_FTR_NOEXECUTE) && 58 if (cpu_has_feature(CPU_FTR_NOEXECUTE) &&
59 !cpu_has_feature(CPU_FTR_COHERENT_ICACHE)) 59 !cpu_has_feature(CPU_FTR_COHERENT_ICACHE))
60 rflags = hash_page_do_lazy_icache(rflags, __pte(old_pte), trap); 60 rflags = hash_page_do_lazy_icache(rflags, __pte(old_pte), trap);
61 61
diff --git a/arch/powerpc/mm/hash64_64k.c b/arch/powerpc/mm/hash64_64k.c
index 3bbbea07378c..1a68cb19b0e3 100644
--- a/arch/powerpc/mm/hash64_64k.c
+++ b/arch/powerpc/mm/hash64_64k.c
@@ -87,7 +87,7 @@ int __hash_page_4K(unsigned long ea, unsigned long access, unsigned long vsid,
87 subpg_pte = new_pte & ~subpg_prot; 87 subpg_pte = new_pte & ~subpg_prot;
88 rflags = htab_convert_pte_flags(subpg_pte); 88 rflags = htab_convert_pte_flags(subpg_pte);
89 89
90 if (!cpu_has_feature(CPU_FTR_NOEXECUTE) && 90 if (cpu_has_feature(CPU_FTR_NOEXECUTE) &&
91 !cpu_has_feature(CPU_FTR_COHERENT_ICACHE)) { 91 !cpu_has_feature(CPU_FTR_COHERENT_ICACHE)) {
92 92
93 /* 93 /*
@@ -258,7 +258,7 @@ int __hash_page_64K(unsigned long ea, unsigned long access,
258 258
259 rflags = htab_convert_pte_flags(new_pte); 259 rflags = htab_convert_pte_flags(new_pte);
260 260
261 if (!cpu_has_feature(CPU_FTR_NOEXECUTE) && 261 if (cpu_has_feature(CPU_FTR_NOEXECUTE) &&
262 !cpu_has_feature(CPU_FTR_COHERENT_ICACHE)) 262 !cpu_has_feature(CPU_FTR_COHERENT_ICACHE))
263 rflags = hash_page_do_lazy_icache(rflags, __pte(old_pte), trap); 263 rflags = hash_page_do_lazy_icache(rflags, __pte(old_pte), trap);
264 264