diff options
| -rw-r--r-- | arch/powerpc/kernel/machine_kexec.c | 14 | ||||
| -rw-r--r-- | arch/powerpc/kernel/machine_kexec_64.c | 6 |
2 files changed, 14 insertions, 6 deletions
diff --git a/arch/powerpc/kernel/machine_kexec.c b/arch/powerpc/kernel/machine_kexec.c index 75d4f7340da8..015ae55c1868 100644 --- a/arch/powerpc/kernel/machine_kexec.c +++ b/arch/powerpc/kernel/machine_kexec.c | |||
| @@ -196,7 +196,9 @@ int overlaps_crashkernel(unsigned long start, unsigned long size) | |||
| 196 | 196 | ||
| 197 | /* Values we need to export to the second kernel via the device tree. */ | 197 | /* Values we need to export to the second kernel via the device tree. */ |
| 198 | static phys_addr_t kernel_end; | 198 | static phys_addr_t kernel_end; |
| 199 | static phys_addr_t crashk_base; | ||
| 199 | static phys_addr_t crashk_size; | 200 | static phys_addr_t crashk_size; |
| 201 | static unsigned long long mem_limit; | ||
| 200 | 202 | ||
| 201 | static struct property kernel_end_prop = { | 203 | static struct property kernel_end_prop = { |
| 202 | .name = "linux,kernel-end", | 204 | .name = "linux,kernel-end", |
| @@ -207,7 +209,7 @@ static struct property kernel_end_prop = { | |||
| 207 | static struct property crashk_base_prop = { | 209 | static struct property crashk_base_prop = { |
| 208 | .name = "linux,crashkernel-base", | 210 | .name = "linux,crashkernel-base", |
| 209 | .length = sizeof(phys_addr_t), | 211 | .length = sizeof(phys_addr_t), |
| 210 | .value = &crashk_res.start, | 212 | .value = &crashk_base |
| 211 | }; | 213 | }; |
| 212 | 214 | ||
| 213 | static struct property crashk_size_prop = { | 215 | static struct property crashk_size_prop = { |
| @@ -219,9 +221,11 @@ static struct property crashk_size_prop = { | |||
| 219 | static struct property memory_limit_prop = { | 221 | static struct property memory_limit_prop = { |
| 220 | .name = "linux,memory-limit", | 222 | .name = "linux,memory-limit", |
| 221 | .length = sizeof(unsigned long long), | 223 | .length = sizeof(unsigned long long), |
| 222 | .value = &memory_limit, | 224 | .value = &mem_limit, |
| 223 | }; | 225 | }; |
| 224 | 226 | ||
| 227 | #define cpu_to_be_ulong __PASTE(cpu_to_be, BITS_PER_LONG) | ||
| 228 | |||
| 225 | static void __init export_crashk_values(struct device_node *node) | 229 | static void __init export_crashk_values(struct device_node *node) |
| 226 | { | 230 | { |
| 227 | struct property *prop; | 231 | struct property *prop; |
| @@ -237,8 +241,9 @@ static void __init export_crashk_values(struct device_node *node) | |||
| 237 | of_remove_property(node, prop); | 241 | of_remove_property(node, prop); |
| 238 | 242 | ||
| 239 | if (crashk_res.start != 0) { | 243 | if (crashk_res.start != 0) { |
| 244 | crashk_base = cpu_to_be_ulong(crashk_res.start), | ||
| 240 | of_add_property(node, &crashk_base_prop); | 245 | of_add_property(node, &crashk_base_prop); |
| 241 | crashk_size = resource_size(&crashk_res); | 246 | crashk_size = cpu_to_be_ulong(resource_size(&crashk_res)); |
| 242 | of_add_property(node, &crashk_size_prop); | 247 | of_add_property(node, &crashk_size_prop); |
| 243 | } | 248 | } |
| 244 | 249 | ||
| @@ -246,6 +251,7 @@ static void __init export_crashk_values(struct device_node *node) | |||
| 246 | * memory_limit is required by the kexec-tools to limit the | 251 | * memory_limit is required by the kexec-tools to limit the |
| 247 | * crash regions to the actual memory used. | 252 | * crash regions to the actual memory used. |
| 248 | */ | 253 | */ |
| 254 | mem_limit = cpu_to_be_ulong(memory_limit); | ||
| 249 | of_update_property(node, &memory_limit_prop); | 255 | of_update_property(node, &memory_limit_prop); |
| 250 | } | 256 | } |
| 251 | 257 | ||
| @@ -264,7 +270,7 @@ static int __init kexec_setup(void) | |||
| 264 | of_remove_property(node, prop); | 270 | of_remove_property(node, prop); |
| 265 | 271 | ||
| 266 | /* information needed by userspace when using default_machine_kexec */ | 272 | /* information needed by userspace when using default_machine_kexec */ |
| 267 | kernel_end = __pa(_end); | 273 | kernel_end = cpu_to_be_ulong(__pa(_end)); |
| 268 | of_add_property(node, &kernel_end_prop); | 274 | of_add_property(node, &kernel_end_prop); |
| 269 | 275 | ||
| 270 | export_crashk_values(node); | 276 | export_crashk_values(node); |
diff --git a/arch/powerpc/kernel/machine_kexec_64.c b/arch/powerpc/kernel/machine_kexec_64.c index be4e6d648f60..59d229a2a3e0 100644 --- a/arch/powerpc/kernel/machine_kexec_64.c +++ b/arch/powerpc/kernel/machine_kexec_64.c | |||
| @@ -369,6 +369,7 @@ void default_machine_kexec(struct kimage *image) | |||
| 369 | 369 | ||
| 370 | /* Values we need to export to the second kernel via the device tree. */ | 370 | /* Values we need to export to the second kernel via the device tree. */ |
| 371 | static unsigned long htab_base; | 371 | static unsigned long htab_base; |
| 372 | static unsigned long htab_size; | ||
| 372 | 373 | ||
| 373 | static struct property htab_base_prop = { | 374 | static struct property htab_base_prop = { |
| 374 | .name = "linux,htab-base", | 375 | .name = "linux,htab-base", |
| @@ -379,7 +380,7 @@ static struct property htab_base_prop = { | |||
| 379 | static struct property htab_size_prop = { | 380 | static struct property htab_size_prop = { |
| 380 | .name = "linux,htab-size", | 381 | .name = "linux,htab-size", |
| 381 | .length = sizeof(unsigned long), | 382 | .length = sizeof(unsigned long), |
| 382 | .value = &htab_size_bytes, | 383 | .value = &htab_size, |
| 383 | }; | 384 | }; |
| 384 | 385 | ||
| 385 | static int __init export_htab_values(void) | 386 | static int __init export_htab_values(void) |
| @@ -403,8 +404,9 @@ static int __init export_htab_values(void) | |||
| 403 | if (prop) | 404 | if (prop) |
| 404 | of_remove_property(node, prop); | 405 | of_remove_property(node, prop); |
| 405 | 406 | ||
| 406 | htab_base = __pa(htab_address); | 407 | htab_base = cpu_to_be64(__pa(htab_address)); |
| 407 | of_add_property(node, &htab_base_prop); | 408 | of_add_property(node, &htab_base_prop); |
| 409 | htab_size = cpu_to_be64(htab_size_bytes); | ||
| 408 | of_add_property(node, &htab_size_prop); | 410 | of_add_property(node, &htab_size_prop); |
| 409 | 411 | ||
| 410 | of_node_put(node); | 412 | of_node_put(node); |
