Message ID | 20230117034921.185150-3-bhe@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | arm64: kdump: simplify the reservation behaviour of crashkernel=,high | expand |
On Tue, Jan 17, 2023 at 11:49:21AM +0800, Baoquan He wrote: > This will help understand codes on crashkernel reservations on arm64. FWIIW, I think you can fold this into the first patch. And, although I have no good idea at this moment, I do wonder if the logic can be simplified - I for one really needed the comments to understand the retry logic. > Signed-off-by: Baoquan He <bhe@redhat.com> > --- > arch/arm64/mm/init.c | 13 +++++++++++++ > 1 file changed, 13 insertions(+) > > diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c > index 26a05af2bfa8..f88ad17cb20d 100644 > --- a/arch/arm64/mm/init.c > +++ b/arch/arm64/mm/init.c > @@ -177,6 +177,10 @@ static void __init reserve_crashkernel(void) > crash_base = memblock_phys_alloc_range(crash_size, CRASH_ALIGN, > search_base, crash_max); > if (!crash_base) { > + /* > + * For crashkernel=size[KMG]@offset[KMG], print out failure > + * message if can't reserve the specified region. > + */ > if (fixed_base) { > pr_warn("cannot reserve crashkernel region [0x%llx-0x%llx]\n", > search_base, crash_max); > @@ -188,6 +192,11 @@ static void __init reserve_crashkernel(void) > * high memory, the minimum required low memory will be > * reserved later. > */ > + /* > + * For crashkernel=size[KMG], if the first attempt was for > + * low memory, fall back to high memory, the minimum required > + * low memory will be reserved later. > + */ I think this duplicates the preceding comment. Perhaps just replace the earlier comment with this one. > if (!high && crash_max == CRASH_ADDR_LOW_MAX) { > crash_max = CRASH_ADDR_HIGH_MAX; > search_base = CRASH_ADDR_LOW_MAX; > @@ -195,6 +204,10 @@ static void __init reserve_crashkernel(void) > goto retry; > } > > + /* > + * For crashkernel=size[KMG],high, if the first attempt was for > + * high memory, fall back to low memory. > + */ > if (high && (crash_max == CRASH_ADDR_HIGH_MAX)) { > crash_max = CRASH_ADDR_LOW_MAX; > search_base = 0; > -- > 2.34.1 > > > _______________________________________________ > kexec mailing list > kexec@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/kexec >
On 01/20/23 at 10:02am, Simon Horman wrote: > On Tue, Jan 17, 2023 at 11:49:21AM +0800, Baoquan He wrote: > > This will help understand codes on crashkernel reservations on arm64. > > FWIIW, I think you can fold this into the first patch. Sure, will do. I folded this into patch 1 at the very beginning. Then felt the added code comments add lines of change and make the code change not so straightforward. I admit it's from personal feeling. > > And, although I have no good idea at this moment, I do wonder > if the logic can be simplified - I for one really needed the > comments to understand the retry logic. Got it. I will consider if I can improve the logic readability. Thanks. > > > Signed-off-by: Baoquan He <bhe@redhat.com> > > --- > > arch/arm64/mm/init.c | 13 +++++++++++++ > > 1 file changed, 13 insertions(+) > > > > diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c > > index 26a05af2bfa8..f88ad17cb20d 100644 > > --- a/arch/arm64/mm/init.c > > +++ b/arch/arm64/mm/init.c > > @@ -177,6 +177,10 @@ static void __init reserve_crashkernel(void) > > crash_base = memblock_phys_alloc_range(crash_size, CRASH_ALIGN, > > search_base, crash_max); > > if (!crash_base) { > > + /* > > + * For crashkernel=size[KMG]@offset[KMG], print out failure > > + * message if can't reserve the specified region. > > + */ > > if (fixed_base) { > > pr_warn("cannot reserve crashkernel region [0x%llx-0x%llx]\n", > > search_base, crash_max); > > @@ -188,6 +192,11 @@ static void __init reserve_crashkernel(void) > > * high memory, the minimum required low memory will be > > * reserved later. > > */ > > + /* > > + * For crashkernel=size[KMG], if the first attempt was for > > + * low memory, fall back to high memory, the minimum required > > + * low memory will be reserved later. > > + */ > > I think this duplicates the preceding comment. > Perhaps just replace the earlier comment with this one. > > > if (!high && crash_max == CRASH_ADDR_LOW_MAX) { > > crash_max = CRASH_ADDR_HIGH_MAX; > > search_base = CRASH_ADDR_LOW_MAX; > > @@ -195,6 +204,10 @@ static void __init reserve_crashkernel(void) > > goto retry; > > } > > > > + /* > > + * For crashkernel=size[KMG],high, if the first attempt was for > > + * high memory, fall back to low memory. > > + */ > > if (high && (crash_max == CRASH_ADDR_HIGH_MAX)) { > > crash_max = CRASH_ADDR_LOW_MAX; > > search_base = 0; > > -- > > 2.34.1 > > > > > > _______________________________________________ > > kexec mailing list > > kexec@lists.infradead.org > > http://lists.infradead.org/mailman/listinfo/kexec > > > > _______________________________________________ > kexec mailing list > kexec@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/kexec >
diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c index 26a05af2bfa8..f88ad17cb20d 100644 --- a/arch/arm64/mm/init.c +++ b/arch/arm64/mm/init.c @@ -177,6 +177,10 @@ static void __init reserve_crashkernel(void) crash_base = memblock_phys_alloc_range(crash_size, CRASH_ALIGN, search_base, crash_max); if (!crash_base) { + /* + * For crashkernel=size[KMG]@offset[KMG], print out failure + * message if can't reserve the specified region. + */ if (fixed_base) { pr_warn("cannot reserve crashkernel region [0x%llx-0x%llx]\n", search_base, crash_max); @@ -188,6 +192,11 @@ static void __init reserve_crashkernel(void) * high memory, the minimum required low memory will be * reserved later. */ + /* + * For crashkernel=size[KMG], if the first attempt was for + * low memory, fall back to high memory, the minimum required + * low memory will be reserved later. + */ if (!high && crash_max == CRASH_ADDR_LOW_MAX) { crash_max = CRASH_ADDR_HIGH_MAX; search_base = CRASH_ADDR_LOW_MAX; @@ -195,6 +204,10 @@ static void __init reserve_crashkernel(void) goto retry; } + /* + * For crashkernel=size[KMG],high, if the first attempt was for + * high memory, fall back to low memory. + */ if (high && (crash_max == CRASH_ADDR_HIGH_MAX)) { crash_max = CRASH_ADDR_LOW_MAX; search_base = 0;
This will help understand codes on crashkernel reservations on arm64. Signed-off-by: Baoquan He <bhe@redhat.com> --- arch/arm64/mm/init.c | 13 +++++++++++++ 1 file changed, 13 insertions(+)