mirror of
https://github.com/nxp-imx/linux-imx.git
synced 2025-07-05 17:05:21 +02:00
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:
parent
0aee2befe9
commit
e6127cb41a
|
@ -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 */
|
||||
|
|
13
init/main.c
13
init/main.c
|
@ -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. */
|
||||
|
|
119
mm/memblock.c
119
mm/memblock.c
|
@ -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)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue
Block a user