On 05/27/23 at 08:34pm, Zhen Lei wrote: > The major adjustments are: > 1. end = start + new_size. > The 'end' here is not an accurate representation, because it is not the > new end of crashk_res, but the start of ram_res, difference 1. So > eliminate it and replace it with ram_res->start. > 2. Use 'ram_res->start' and 'ram_res->end' as arguments to > crash_free_reserved_phys_range() to indicate that the memory covered by > 'ram_res' is released from the crashk. And keep it close to > insert_resource(). > 3. Replace 'if (start == end)' with 'if (!new_size)', clear indication that > all crashk memory will be shrunken. > > No functional change. > > Signed-off-by: Zhen Lei <thunder.leizhen@xxxxxxxxxx> LGTM, Acked-by: Baoquan He <bhe@xxxxxxxxxx> > --- > kernel/kexec_core.c | 15 +++++---------- > 1 file changed, 5 insertions(+), 10 deletions(-) > > diff --git a/kernel/kexec_core.c b/kernel/kexec_core.c > index bcc86a250ab3bf9..69fe92141b0b62d 100644 > --- a/kernel/kexec_core.c > +++ b/kernel/kexec_core.c > @@ -1108,7 +1108,6 @@ ssize_t crash_get_memory_size(void) > int crash_shrink_memory(unsigned long new_size) > { > int ret = 0; > - unsigned long start, end; > unsigned long old_size; > struct resource *ram_res; > > @@ -1119,9 +1118,7 @@ int crash_shrink_memory(unsigned long new_size) > ret = -ENOENT; > goto unlock; > } > - start = crashk_res.start; > - end = crashk_res.end; > - old_size = (end == 0) ? 0 : end - start + 1; > + old_size = !crashk_res.end ? 0 : resource_size(&crashk_res); > new_size = roundup(new_size, KEXEC_CRASH_MEM_ALIGN); > if (new_size >= old_size) { > ret = (new_size == old_size) ? 0 : -EINVAL; > @@ -1134,22 +1131,20 @@ int crash_shrink_memory(unsigned long new_size) > goto unlock; > } > > - end = start + new_size; > - crash_free_reserved_phys_range(end, crashk_res.end); > - > - ram_res->start = end; > + ram_res->start = crashk_res.start + new_size; > ram_res->end = crashk_res.end; > ram_res->flags = IORESOURCE_BUSY | IORESOURCE_SYSTEM_RAM; > ram_res->name = "System RAM"; > > - if (start == end) { > + if (!new_size) { > release_resource(&crashk_res); > crashk_res.start = 0; > crashk_res.end = 0; > } else { > - crashk_res.end = end - 1; > + crashk_res.end = ram_res->start - 1; > } > > + crash_free_reserved_phys_range(ram_res->start, ram_res->end); > insert_resource(&iomem_resource, ram_res); > > unlock: > -- > 2.25.1 > _______________________________________________ kexec mailing list kexec@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/kexec