Re: [PATCH 7/9] lib/cpumask: add num_{possible, present, active}_cpus_{eq, gt, le}

2021-11-28 Thread Emil Renner Berthing
On Sun, 28 Nov 2021 at 18:43, Yury Norov  wrote:
> On Sun, Nov 28, 2021 at 09:07:52AM -0800, Joe Perches wrote:
> > On Sat, 2021-11-27 at 19:57 -0800, Yury Norov wrote:
> > > Add num_{possible,present,active}_cpus_{eq,gt,le} and replace num_*_cpus()
> > > with one of new functions where appropriate. This allows num_*_cpus_*()
> > > to return earlier depending on the condition.
> > []
> > > diff --git a/arch/arc/kernel/smp.c b/arch/arc/kernel/smp.c
> > []
> > > @@ -103,7 +103,7 @@ void __init smp_prepare_cpus(unsigned int max_cpus)
> > >  * if platform didn't set the present map already, do it now
> > >  * boot cpu is set to present already by init/main.c
> > >  */
> > > -   if (num_present_cpus() <= 1)
> > > +   if (num_present_cpus_le(2))
> > > init_cpu_present(cpu_possible_mask);
> >
> > ?  is this supposed to be 2 or 1
>
> X <= 1 is the equivalent of X < 2.

Ah, then the function is confusing. Usually it's lt = less than and lt
= less than or equal. Same idea for gt vs ge.


Re: [PATCH 13/15] arch, drivers: replace for_each_membock() with for_each_mem_range()

2020-07-28 Thread Emil Renner Berthing
On Tue, 28 Jul 2020, 07:16 Mike Rapoport,  wrote:

> From: Mike Rapoport 
>
> There are several occurrences of the following pattern:
>
> for_each_memblock(memory, reg) {
> start = __pfn_to_phys(memblock_region_memory_base_pfn(reg);
> end = __pfn_to_phys(memblock_region_memory_end_pfn(reg));
>
> /* do something with start and end */
> }
>
> Using for_each_mem_range() iterator is more appropriate in such cases and
> allows simpler and cleaner code.
>
> Signed-off-by: Mike Rapoport 
> ---
>  arch/arm/kernel/setup.c  | 18 +++
>  arch/arm/mm/mmu.c| 39 
>  arch/arm/mm/pmsa-v7.c| 20 ++--
>  arch/arm/mm/pmsa-v8.c| 17 +--
>  arch/arm/xen/mm.c|  7 +++--
>  arch/arm64/mm/kasan_init.c   |  8 ++---
>  arch/arm64/mm/mmu.c  | 11 ++-
>  arch/c6x/kernel/setup.c  |  9 +++---
>  arch/microblaze/mm/init.c|  9 +++---
>  arch/mips/cavium-octeon/dma-octeon.c | 12 
>  arch/mips/kernel/setup.c | 31 +--
>  arch/openrisc/mm/init.c  |  8 +++--
>  arch/powerpc/kernel/fadump.c | 27 +++-
>  arch/powerpc/mm/book3s64/hash_utils.c| 16 +-
>  arch/powerpc/mm/book3s64/radix_pgtable.c | 11 +++
>  arch/powerpc/mm/kasan/kasan_init_32.c|  8 ++---
>  arch/powerpc/mm/mem.c| 16 ++
>  arch/powerpc/mm/pgtable_32.c |  8 ++---
>  arch/riscv/mm/init.c | 24 ++-
>  arch/riscv/mm/kasan_init.c   | 10 +++---
>  arch/s390/kernel/setup.c | 27 ++--
>  arch/s390/mm/vmem.c  | 16 +-
>  arch/sparc/mm/init_64.c  | 12 +++-
>  drivers/bus/mvebu-mbus.c | 12 
>  drivers/s390/char/zcore.c|  9 +++---
>  25 files changed, 187 insertions(+), 198 deletions(-)
>
> diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c
> index d8e18cdd96d3..3f65d0ac9f63 100644
> --- a/arch/arm/kernel/setup.c
> +++ b/arch/arm/kernel/setup.c
> @@ -843,19 +843,25 @@ early_param("mem", early_mem);
>
>  static void __init request_standard_resources(const struct machine_desc
> *mdesc)
>  {
> -   struct memblock_region *region;
> +   phys_addr_t start, end, res_end;
> struct resource *res;
> +   u64 i;
>
> kernel_code.start   = virt_to_phys(_text);
> kernel_code.end = virt_to_phys(__init_begin - 1);
> kernel_data.start   = virt_to_phys(_sdata);
> kernel_data.end = virt_to_phys(_end - 1);
>
> -   for_each_memblock(memory, region) {
> -   phys_addr_t start =
> __pfn_to_phys(memblock_region_memory_base_pfn(region));
> -   phys_addr_t end =
> __pfn_to_phys(memblock_region_memory_end_pfn(region)) - 1;
> +   for_each_mem_range(i, , ) {
> unsigned long boot_alias_start;
>
> +   /*
> +* In memblock, end points to the first byte after the
> +* range while in resourses, end points to the last byte in
> +* the range.
> +*/
> +   res_end = end - 1;
> +
> /*
>  * Some systems have a special memory alias which is only
>  * used for booting.  We need to advertise this region to
> @@ -869,7 +875,7 @@ static void __init request_standard_resources(const
> struct machine_desc *mdesc)
>   __func__, sizeof(*res));
> res->name = "System RAM (boot alias)";
> res->start = boot_alias_start;
> -   res->end = phys_to_idmap(end);
> +   res->end = phys_to_idmap(res_end);
> res->flags = IORESOURCE_MEM | IORESOURCE_BUSY;
> request_resource(_resource, res);
> }
> @@ -880,7 +886,7 @@ static void __init request_standard_resources(const
> struct machine_desc *mdesc)
>   sizeof(*res));
> res->name  = "System RAM";
> res->start = start;
> -   res->end = end;
> +   res->end = res_end;
> res->flags = IORESOURCE_SYSTEM_RAM | IORESOURCE_BUSY;
>
> request_resource(_resource, res);
> diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c
> index 628028bfbb92..a149d9cb4fdb 100644
> --- a/arch/arm/mm/mmu.c
> +++ b/arch/arm/mm/mmu.c
> @@ -1155,9 +1155,8 @@ phys_addr_t arm_lowmem_limit __initdata = 0;
>
>  void __init adjust_lowmem_bounds(void)
>  {
> -   phys_addr_t memblock_limit = 0;
> -   u64 vmalloc_limit;
> -   struct memblock_region *reg;
> +   phys_addr_t block_start, block_end, memblock_limit = 0;
> +