Skip to content

Commit 493404a

Browse files
author
Fox Snowpatch
committed
1 parent ad0be02 commit 493404a

File tree

3 files changed

+16
-6
lines changed

3 files changed

+16
-6
lines changed

arch/powerpc/include/asm/fadump.h

+2
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,15 @@ extern int is_fadump_active(void);
1919
extern int should_fadump_crash(void);
2020
extern void crash_fadump(struct pt_regs *, const char *);
2121
extern void fadump_cleanup(void);
22+
void fadump_setup_param_area(void);
2223
extern void fadump_append_bootargs(void);
2324

2425
#else /* CONFIG_FA_DUMP */
2526
static inline int is_fadump_active(void) { return 0; }
2627
static inline int should_fadump_crash(void) { return 0; }
2728
static inline void crash_fadump(struct pt_regs *regs, const char *str) { }
2829
static inline void fadump_cleanup(void) { }
30+
static inline void fadump_setup_param_area(void) { }
2931
static inline void fadump_append_bootargs(void) { }
3032
#endif /* !CONFIG_FA_DUMP */
3133

arch/powerpc/kernel/fadump.c

+11-6
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ void __init fadump_append_bootargs(void)
153153
if (!fw_dump.dump_active || !fw_dump.param_area_supported || !fw_dump.param_area)
154154
return;
155155

156-
if (fw_dump.param_area >= fw_dump.boot_mem_top) {
156+
if (fw_dump.param_area < fw_dump.boot_mem_top) {
157157
if (memblock_reserve(fw_dump.param_area, COMMAND_LINE_SIZE)) {
158158
pr_warn("WARNING: Can't use additional parameters area!\n");
159159
fw_dump.param_area = 0;
@@ -1587,6 +1587,12 @@ static void __init fadump_init_files(void)
15871587
return;
15881588
}
15891589

1590+
if (fw_dump.param_area) {
1591+
rc = sysfs_create_file(fadump_kobj, &bootargs_append_attr.attr);
1592+
if (rc)
1593+
pr_err("unable to create bootargs_append sysfs file (%d)\n", rc);
1594+
}
1595+
15901596
debugfs_create_file("fadump_region", 0444, arch_debugfs_dir, NULL,
15911597
&fadump_region_fops);
15921598

@@ -1741,15 +1747,15 @@ static void __init fadump_process(void)
17411747
* Reserve memory to store additional parameters to be passed
17421748
* for fadump/capture kernel.
17431749
*/
1744-
static void __init fadump_setup_param_area(void)
1750+
void __init fadump_setup_param_area(void)
17451751
{
17461752
phys_addr_t range_start, range_end;
17471753

17481754
if (!fw_dump.param_area_supported || fw_dump.dump_active)
17491755
return;
17501756

17511757
/* This memory can't be used by PFW or bootloader as it is shared across kernels */
1752-
if (radix_enabled()) {
1758+
if (early_radix_enabled()) {
17531759
/*
17541760
* Anywhere in the upper half should be good enough as all memory
17551761
* is accessible in real mode.
@@ -1777,12 +1783,12 @@ static void __init fadump_setup_param_area(void)
17771783
COMMAND_LINE_SIZE,
17781784
range_start,
17791785
range_end);
1780-
if (!fw_dump.param_area || sysfs_create_file(fadump_kobj, &bootargs_append_attr.attr)) {
1786+
if (!fw_dump.param_area) {
17811787
pr_warn("WARNING: Could not setup area to pass additional parameters!\n");
17821788
return;
17831789
}
17841790

1785-
memset(phys_to_virt(fw_dump.param_area), 0, COMMAND_LINE_SIZE);
1791+
memset((void *)fw_dump.param_area, 0, COMMAND_LINE_SIZE);
17861792
}
17871793

17881794
/*
@@ -1808,7 +1814,6 @@ int __init setup_fadump(void)
18081814
}
18091815
/* Initialize the kernel dump memory structure and register with f/w */
18101816
else if (fw_dump.reserve_dump_area_size) {
1811-
fadump_setup_param_area();
18121817
fw_dump.ops->fadump_init_mem_struct(&fw_dump);
18131818
register_fadump();
18141819
}

arch/powerpc/kernel/prom.c

+3
Original file line numberDiff line numberDiff line change
@@ -908,6 +908,9 @@ void __init early_init_devtree(void *params)
908908

909909
mmu_early_init_devtree();
910910

911+
/* Setup param area for passing additional parameters to fadump capture kernel. */
912+
fadump_setup_param_area();
913+
911914
#ifdef CONFIG_PPC_POWERNV
912915
/* Scan and build the list of machine check recoverable ranges */
913916
of_scan_flat_dt(early_init_dt_scan_recoverable_ranges, NULL);

0 commit comments

Comments
 (0)