diff options
-rw-r--r-- | arch/powerpc/kernel/paca.c | 10 | ||||
-rw-r--r-- | arch/powerpc/platforms/iseries/lpardata.c | 7 | ||||
-rw-r--r-- | include/asm-powerpc/iseries/it_lp_reg_save.h | 2 | ||||
-rw-r--r-- | include/asm-powerpc/paca.h | 14 |
4 files changed, 18 insertions, 15 deletions
diff --git a/arch/powerpc/kernel/paca.c b/arch/powerpc/kernel/paca.c index a7b68f911eb1..25420406c8c0 100644 --- a/arch/powerpc/kernel/paca.c +++ b/arch/powerpc/kernel/paca.c | |||
@@ -17,6 +17,7 @@ | |||
17 | #include <asm/page.h> | 17 | #include <asm/page.h> |
18 | #include <asm/lppaca.h> | 18 | #include <asm/lppaca.h> |
19 | #include <asm/iseries/it_lp_queue.h> | 19 | #include <asm/iseries/it_lp_queue.h> |
20 | #include <asm/iseries/it_lp_reg_save.h> | ||
20 | #include <asm/paca.h> | 21 | #include <asm/paca.h> |
21 | 22 | ||
22 | 23 | ||
@@ -26,8 +27,7 @@ extern unsigned long __toc_start; | |||
26 | 27 | ||
27 | /* The Paca is an array with one entry per processor. Each contains an | 28 | /* The Paca is an array with one entry per processor. Each contains an |
28 | * lppaca, which contains the information shared between the | 29 | * lppaca, which contains the information shared between the |
29 | * hypervisor and Linux. Each also contains an ItLpRegSave area which | 30 | * hypervisor and Linux. |
30 | * is used by the hypervisor to save registers. | ||
31 | * On systems with hardware multi-threading, there are two threads | 31 | * On systems with hardware multi-threading, there are two threads |
32 | * per processor. The Paca array must contain an entry for each thread. | 32 | * per processor. The Paca array must contain an entry for each thread. |
33 | * The VPD Areas will give a max logical processors = 2 * max physical | 33 | * The VPD Areas will give a max logical processors = 2 * max physical |
@@ -57,11 +57,7 @@ extern unsigned long __toc_start; | |||
57 | #ifdef CONFIG_PPC_ISERIES | 57 | #ifdef CONFIG_PPC_ISERIES |
58 | #define PACA_INIT_ISERIES(number) \ | 58 | #define PACA_INIT_ISERIES(number) \ |
59 | .lppaca_ptr = &paca[number].lppaca, \ | 59 | .lppaca_ptr = &paca[number].lppaca, \ |
60 | .reg_save_ptr = &paca[number].reg_save, \ | 60 | .reg_save_ptr = &iseries_reg_save[number], |
61 | .reg_save = { \ | ||
62 | .xDesc = 0xd397d9e2, /* "LpRS" */ \ | ||
63 | .xSize = sizeof(struct ItLpRegSave) \ | ||
64 | } | ||
65 | 61 | ||
66 | #define PACA_INIT(number) \ | 62 | #define PACA_INIT(number) \ |
67 | { \ | 63 | { \ |
diff --git a/arch/powerpc/platforms/iseries/lpardata.c b/arch/powerpc/platforms/iseries/lpardata.c index bb8c91537f35..ea72385aaf0a 100644 --- a/arch/powerpc/platforms/iseries/lpardata.c +++ b/arch/powerpc/platforms/iseries/lpardata.c | |||
@@ -225,3 +225,10 @@ struct ItVpdAreas itVpdAreas = { | |||
225 | 0,0 | 225 | 0,0 |
226 | } | 226 | } |
227 | }; | 227 | }; |
228 | |||
229 | struct ItLpRegSave iseries_reg_save[] = { | ||
230 | [0 ... (NR_CPUS-1)] = { | ||
231 | .xDesc = 0xd397d9e2, /* "LpRS" */ | ||
232 | .xSize = sizeof(struct ItLpRegSave), | ||
233 | }, | ||
234 | }; | ||
diff --git a/include/asm-powerpc/iseries/it_lp_reg_save.h b/include/asm-powerpc/iseries/it_lp_reg_save.h index 288044b702de..81824e1bb767 100644 --- a/include/asm-powerpc/iseries/it_lp_reg_save.h +++ b/include/asm-powerpc/iseries/it_lp_reg_save.h | |||
@@ -81,4 +81,6 @@ struct ItLpRegSave { | |||
81 | u8 xRsvd3[176]; // Reserved 350-3FF | 81 | u8 xRsvd3[176]; // Reserved 350-3FF |
82 | }; | 82 | }; |
83 | 83 | ||
84 | extern struct ItLpRegSave iseries_reg_save[]; | ||
85 | |||
84 | #endif /* _ITLPREGSAVE_H */ | 86 | #endif /* _ITLPREGSAVE_H */ |
diff --git a/include/asm-powerpc/paca.h b/include/asm-powerpc/paca.h index 92c765c35bd0..73693db546b3 100644 --- a/include/asm-powerpc/paca.h +++ b/include/asm-powerpc/paca.h | |||
@@ -18,7 +18,6 @@ | |||
18 | #include <linux/config.h> | 18 | #include <linux/config.h> |
19 | #include <asm/types.h> | 19 | #include <asm/types.h> |
20 | #include <asm/lppaca.h> | 20 | #include <asm/lppaca.h> |
21 | #include <asm/iseries/it_lp_reg_save.h> | ||
22 | #include <asm/mmu.h> | 21 | #include <asm/mmu.h> |
23 | 22 | ||
24 | register struct paca_struct *local_paca asm("r13"); | 23 | register struct paca_struct *local_paca asm("r13"); |
@@ -31,9 +30,9 @@ struct task_struct; | |||
31 | * | 30 | * |
32 | * This structure is not directly accessed by firmware or the service | 31 | * This structure is not directly accessed by firmware or the service |
33 | * processor except for the first two pointers that point to the | 32 | * processor except for the first two pointers that point to the |
34 | * lppaca area and the ItLpRegSave area for this CPU. Both the | 33 | * lppaca area and the ItLpRegSave area for this CPU. The lppaca |
35 | * lppaca and ItLpRegSave objects are currently contained within the | 34 | * object is currently contained within the PACA but it doesn't need |
36 | * PACA but they do not need to be. | 35 | * to be. |
37 | */ | 36 | */ |
38 | struct paca_struct { | 37 | struct paca_struct { |
39 | /* | 38 | /* |
@@ -48,7 +47,9 @@ struct paca_struct { | |||
48 | * accessed by the firmware | 47 | * accessed by the firmware |
49 | */ | 48 | */ |
50 | struct lppaca *lppaca_ptr; /* Pointer to LpPaca for PLIC */ | 49 | struct lppaca *lppaca_ptr; /* Pointer to LpPaca for PLIC */ |
51 | struct ItLpRegSave *reg_save_ptr; /* Pointer to LpRegSave for PLIC */ | 50 | #ifdef CONFIG_PPC_ISERIES |
51 | void *reg_save_ptr; /* Pointer to LpRegSave for PLIC */ | ||
52 | #endif /* CONFIG_PPC_ISERIES */ | ||
52 | 53 | ||
53 | /* | 54 | /* |
54 | * MAGIC: the spinlock functions in arch/ppc64/lib/locks.c | 55 | * MAGIC: the spinlock functions in arch/ppc64/lib/locks.c |
@@ -110,9 +111,6 @@ struct paca_struct { | |||
110 | * cross a page boundary. | 111 | * cross a page boundary. |
111 | */ | 112 | */ |
112 | struct lppaca lppaca __attribute__((__aligned__(0x400))); | 113 | struct lppaca lppaca __attribute__((__aligned__(0x400))); |
113 | #ifdef CONFIG_PPC_ISERIES | ||
114 | struct ItLpRegSave reg_save; | ||
115 | #endif | ||
116 | }; | 114 | }; |
117 | 115 | ||
118 | extern struct paca_struct paca[]; | 116 | extern struct paca_struct paca[]; |