2015-08-27 19:20:26

by Alexander Kuleshov

[permalink] [raw]
Subject: [PATCH v1] mm/memblock: Add memblock_first_region_size() helper

Some architectures (like s390, microblaze and etc...) require size
of the first memory region. This patch provides new memblock_first_region_size()
helper for this case.

Signed-off-by: Alexander Kuleshov <[email protected]>
---
include/linux/memblock.h | 1 +
mm/memblock.c | 5 +++++
2 files changed, 6 insertions(+)

diff --git a/include/linux/memblock.h b/include/linux/memblock.h
index cc4b019..8a481e5 100644
--- a/include/linux/memblock.h
+++ b/include/linux/memblock.h
@@ -319,6 +319,7 @@ phys_addr_t memblock_phys_mem_size(void);
phys_addr_t memblock_mem_size(unsigned long limit_pfn);
phys_addr_t memblock_start_of_DRAM(void);
phys_addr_t memblock_end_of_DRAM(void);
+phys_addr_t memblock_first_region_size(void);
void memblock_enforce_memory_limit(phys_addr_t memory_limit);
int memblock_is_memory(phys_addr_t addr);
int memblock_is_region_memory(phys_addr_t base, phys_addr_t size);
diff --git a/mm/memblock.c b/mm/memblock.c
index 87108e7..fb4b7ca 100644
--- a/mm/memblock.c
+++ b/mm/memblock.c
@@ -1463,6 +1463,11 @@ phys_addr_t __init_memblock memblock_end_of_DRAM(void)
return (memblock.memory.regions[idx].base + memblock.memory.regions[idx].size);
}

+phys_addr_t __init_memblock memblock_first_region_size(void)
+{
+ return memblock.memory.regions[0].size;
+}
+
void __init memblock_enforce_memory_limit(phys_addr_t limit)
{
phys_addr_t max_addr = (phys_addr_t)ULLONG_MAX;
--
2.5.0


2015-08-31 22:58:24

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH v1] mm/memblock: Add memblock_first_region_size() helper

On Fri, 28 Aug 2015 01:19:45 +0600 Alexander Kuleshov <[email protected]> wrote:

> Some architectures (like s390, microblaze and etc...) require size
> of the first memory region. This patch provides new memblock_first_region_size()
> helper for this case.
>
> ...
>
> --- a/mm/memblock.c
> +++ b/mm/memblock.c
> @@ -1463,6 +1463,11 @@ phys_addr_t __init_memblock memblock_end_of_DRAM(void)
> return (memblock.memory.regions[idx].base + memblock.memory.regions[idx].size);
> }
>
> +phys_addr_t __init_memblock memblock_first_region_size(void)
> +{
> + return memblock.memory.regions[0].size;
> +}
> +
> void __init memblock_enforce_memory_limit(phys_addr_t limit)
> {
> phys_addr_t max_addr = (phys_addr_t)ULLONG_MAX;

We tend to avoid merging functions which have no callers. Some actual
callsites should be included in the patch or patch series, please.

This is so we know it's useful, that it's getting runtime tested and to
aid review.