ANDROID: memblock: do not track obsolete_checksetup and do_early_param

Originally I've added memsize logic to track memblock memory allocated
at the obsolete_checksetup and do_early_param. That showed size with its
param name.

But nowadays we don't see that big memory allocation in that early
param. To simplify memsize code, let me remove related code. Some code
like memblock_memsize_free will be remained for the next commits.

Bug: 340432773
Signed-off-by: Jaewon Kim <jaewon31.kim@samsung.com>
Change-Id: If54870c3b9da7a83d47cadde3d05b5ed6ace5b7e
This commit is contained in:
Jaewon Kim 2024-07-17 10:51:09 +09:00 committed by jaewon31.kim@samsung.com
parent 0aee2befe9
commit e6127cb41a
3 changed files with 36 additions and 100 deletions

View File

@ -607,14 +607,10 @@ static inline void memtest_report_meminfo(struct seq_file *m) { }
extern void __init_memblock memblock_memsize_record(const char *name,
phys_addr_t base, phys_addr_t size, bool nomap, bool reusable);
extern void __init memblock_memsize_detect_hole(void);
extern void __init memblock_memsize_set_name(const char *name);
extern void __init memblock_memsize_unset_name(void);
#else
static inline void __init_memblock memblock_memsize_record(const char *name,
phys_addr_t base, phys_addr_t size, bool nomap, bool reusable) { }
static inline void __init memblock_memsize_detect_hole(void) { }
static inline void __init memblock_memsize_set_name(const char *name) { }
static inline void __init memblock_memsize_unset_name(void) { }
#endif
#endif /* _LINUX_MEMBLOCK_H */

View File

@ -210,15 +210,8 @@ static bool __init obsolete_checksetup(char *line)
pr_warn("Parameter %s is obsolete, ignored\n",
p->str);
return true;
} else {
int ret;
memblock_memsize_set_name(p->str);
ret = p->setup_func(line + n);
memblock_memsize_unset_name();
if (ret)
return true;
}
} else if (p->setup_func(line + n))
return true;
}
p++;
} while (p < __setup_end);
@ -751,10 +744,8 @@ static int __init do_early_param(char *param, char *val,
(strcmp(param, "console") == 0 &&
strcmp(p->str, "earlycon") == 0)
) {
memblock_memsize_set_name(p->str);
if (p->setup_func(val) != 0)
pr_warn("Malformed early option '%s'\n", param);
memblock_memsize_unset_name();
}
}
/* We accept everything at this stage. */

View File

@ -178,18 +178,6 @@ static inline phys_addr_t memblock_cap_size(phys_addr_t base, phys_addr_t *size)
return *size = min(*size, PHYS_ADDR_MAX - base);
}
#ifdef CONFIG_MEMBLOCK_MEMSIZE
static void memblock_memsize_record_add(struct memblock_type *type,
phys_addr_t base, phys_addr_t size);
static void memblock_memsize_record_remove(struct memblock_type *type,
phys_addr_t base, phys_addr_t size);
#else
static inline void memblock_memsize_record_add(struct memblock_type *type,
phys_addr_t base, phys_addr_t size) { }
static inline void memblock_memsize_record_remove(struct memblock_type *type,
phys_addr_t base, phys_addr_t size) { }
#endif
/*
* Address comparison utilities
*/
@ -705,8 +693,6 @@ repeat:
memblock_merge_regions(type, start_rgn, end_rgn);
}
done:
if (new_size == size)
memblock_memsize_record_add(type, obase, size);
return 0;
}
@ -843,7 +829,6 @@ static int __init_memblock memblock_remove_range(struct memblock_type *type,
for (i = end_rgn - 1; i >= start_rgn; i--)
memblock_remove_region(type, i);
memblock_memsize_record_remove(type, base, size);
return 0;
}
@ -2008,7 +1993,6 @@ struct memsize_rgn_struct {
static struct memsize_rgn_struct memsize_rgn[CONFIG_MAX_MEMBLOCK_MEMSIZE] __initdata_memblock;
static int memsize_rgn_count __initdata_memblock;
static const char *memblock_memsize_name __initdata_memblock;
static void __init_memblock memsize_get_valid_name(char *valid_name, const char *name)
{
@ -2205,75 +2189,6 @@ void __init memblock_memsize_detect_hole(void)
}
}
}
/* assume that freeing region is NOT bigger than the previous region */
static void __init_memblock memblock_memsize_free(phys_addr_t free_base,
phys_addr_t free_size)
{
int i;
struct memsize_rgn_struct *rgn;
phys_addr_t free_end, end;
free_end = free_base + free_size - 1;
memblock_dbg("%s %pa..%pa\n",
__func__, &free_base, &free_end);
for (i = 0; i < memsize_rgn_count; i++) {
rgn = &memsize_rgn[i];
end = rgn->base + rgn->size;
if (free_base < rgn->base ||
free_base >= end)
continue;
free_end = free_base + free_size;
if (free_base == rgn->base) {
rgn->size -= free_size;
if (rgn->size != 0)
rgn->base += free_size;
} else if (free_end == end) {
rgn->size -= free_size;
} else {
memblock_memsize_record(rgn->name, free_end,
end - free_end, rgn->nomap, rgn->reusable);
rgn->size = free_base - rgn->base;
}
}
}
void __init memblock_memsize_set_name(const char *name)
{
memblock_memsize_name = name;
}
void __init memblock_memsize_unset_name(void)
{
memblock_memsize_name = NULL;
}
static void __init_memblock memblock_memsize_record_add(struct memblock_type *type,
phys_addr_t base, phys_addr_t size)
{
if (memblock_memsize_name) {
if (type == &memblock.reserved)
memblock_memsize_record(memblock_memsize_name,
base, size, false, false);
else if (type == &memblock.memory)
memblock_memsize_free(base, size);
}
}
static void __init_memblock memblock_memsize_record_remove(struct memblock_type *type,
phys_addr_t base, phys_addr_t size)
{
if (memblock_memsize_name) {
if (type == &memblock.reserved)
memblock_memsize_free(base, size);
else if (type == &memblock.memory)
memblock_memsize_record(memblock_memsize_name,
base, size, true, false);
}
}
#endif /* MEMBLOCK_MEMSIZE */
static void __init free_memmap(unsigned long start_pfn, unsigned long end_pfn)
@ -2534,6 +2449,40 @@ static int memblock_debug_show(struct seq_file *m, void *private)
DEFINE_SHOW_ATTRIBUTE(memblock_debug);
#ifdef CONFIG_MEMBLOCK_MEMSIZE
/* assume that freeing region is NOT bigger than the previous region */
static void __maybe_unused memblock_memsize_free(phys_addr_t free_base,
phys_addr_t free_size)
{
int i;
struct memsize_rgn_struct *rgn;
phys_addr_t free_end, end;
free_end = free_base + free_size - 1;
memblock_dbg("%s %pa..%pa\n",
__func__, &free_base, &free_end);
for (i = 0; i < memsize_rgn_count; i++) {
rgn = &memsize_rgn[i];
end = rgn->base + rgn->size;
if (free_base < rgn->base ||
free_base >= end)
continue;
free_end = free_base + free_size;
if (free_base == rgn->base) {
rgn->size -= free_size;
if (rgn->size != 0)
rgn->base += free_size;
} else if (free_end == end) {
rgn->size -= free_size;
} else {
memblock_memsize_record(rgn->name, free_end,
end - free_end, rgn->nomap, rgn->reusable);
rgn->size = free_base - rgn->base;
}
}
}
static int memsize_rgn_cmp(const void *a, const void *b)
{