All the mail mirrored from lore.kernel.org
 help / color / mirror / Atom feed
* RE: [PATCH] arm64: mm: free unused memmap for sparse memory model that define VMEMMAP
       [not found] <20200708015555.14946-1-liwei213@huawei.com>
@ 2020-07-08  7:18   ` Song Bao Hua (Barry Song)
  0 siblings, 0 replies; 19+ messages in thread
From: Song Bao Hua (Barry Song) @ 2020-07-08  7:18 UTC (permalink / raw
  To: liwei (CM), catalin.marinas@arm.com, will@kernel.org
  Cc: fengbaopeng, nsaenzjulienne@suse.de, steve.capper@arm.com,
	rppt@linux.ibm.com, linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, sujunfei



> -----Original Message-----
> From: liwei (CM)
> Sent: Wednesday, July 8, 2020 1:56 PM
> To: catalin.marinas@arm.com; will@kernel.org
> Cc: liwei (CM) <liwei213@huawei.com>; fengbaopeng
> <fengbaopeng2@hisilicon.com>; nsaenzjulienne@suse.de;
> steve.capper@arm.com; rppt@linux.ibm.com; Song Bao Hua (Barry Song)
> <song.bao.hua@hisilicon.com>; linux-arm-kernel@lists.infradead.org;
> linux-kernel@vger.kernel.org; sujunfei <sujunfei2@hisilicon.com>
> Subject: [PATCH] arm64: mm: free unused memmap for sparse memory model
> that define VMEMMAP
> 
> For the memory hole, sparse memory model that define
> SPARSEMEM_VMEMMAP do not free the reserved memory for the page map,
> this patch do it.

Hello Wei,
Just curious if this patch breaks MEMORY_HOTPLUG?

> 
> Signed-off-by: Wei Li <liwei213@huawei.com>
> Signed-off-by: Chen Feng <puck.chen@hisilicon.com>
> Signed-off-by: Xia Qing <saberlily.xia@hisilicon.com>
> ---
>  arch/arm64/mm/init.c | 81
> +++++++++++++++++++++++++++++++++++++++++++++-------
>  1 file changed, 71 insertions(+), 10 deletions(-)
> 
> diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c index
> 1e93cfc7c47a..d1b56b47d5ba 100644
> --- a/arch/arm64/mm/init.c
> +++ b/arch/arm64/mm/init.c
> @@ -441,7 +441,48 @@ void __init bootmem_init(void)
>  	memblock_dump_all();
>  }
> 

Thanks
Barry


^ permalink raw reply	[flat|nested] 19+ messages in thread

* RE: [PATCH] arm64: mm: free unused memmap for sparse memory model that define VMEMMAP
@ 2020-07-08  7:18   ` Song Bao Hua (Barry Song)
  0 siblings, 0 replies; 19+ messages in thread
From: Song Bao Hua (Barry Song) @ 2020-07-08  7:18 UTC (permalink / raw
  To: liwei (CM), catalin.marinas@arm.com, will@kernel.org
  Cc: steve.capper@arm.com, sujunfei, linux-kernel@vger.kernel.org,
	rppt@linux.ibm.com, nsaenzjulienne@suse.de, fengbaopeng,
	linux-arm-kernel@lists.infradead.org



> -----Original Message-----
> From: liwei (CM)
> Sent: Wednesday, July 8, 2020 1:56 PM
> To: catalin.marinas@arm.com; will@kernel.org
> Cc: liwei (CM) <liwei213@huawei.com>; fengbaopeng
> <fengbaopeng2@hisilicon.com>; nsaenzjulienne@suse.de;
> steve.capper@arm.com; rppt@linux.ibm.com; Song Bao Hua (Barry Song)
> <song.bao.hua@hisilicon.com>; linux-arm-kernel@lists.infradead.org;
> linux-kernel@vger.kernel.org; sujunfei <sujunfei2@hisilicon.com>
> Subject: [PATCH] arm64: mm: free unused memmap for sparse memory model
> that define VMEMMAP
> 
> For the memory hole, sparse memory model that define
> SPARSEMEM_VMEMMAP do not free the reserved memory for the page map,
> this patch do it.

Hello Wei,
Just curious if this patch breaks MEMORY_HOTPLUG?

> 
> Signed-off-by: Wei Li <liwei213@huawei.com>
> Signed-off-by: Chen Feng <puck.chen@hisilicon.com>
> Signed-off-by: Xia Qing <saberlily.xia@hisilicon.com>
> ---
>  arch/arm64/mm/init.c | 81
> +++++++++++++++++++++++++++++++++++++++++++++-------
>  1 file changed, 71 insertions(+), 10 deletions(-)
> 
> diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c index
> 1e93cfc7c47a..d1b56b47d5ba 100644
> --- a/arch/arm64/mm/init.c
> +++ b/arch/arm64/mm/init.c
> @@ -441,7 +441,48 @@ void __init bootmem_init(void)
>  	memblock_dump_all();
>  }
> 

Thanks
Barry


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 19+ messages in thread

* 答复: [PATCH] arm64: mm: free unused memmap for sparse memory model that define VMEMMAP
  2020-07-08  7:18   ` Song Bao Hua (Barry Song)
@ 2020-07-08  7:51     ` liwei (CM)
  -1 siblings, 0 replies; 19+ messages in thread
From: liwei (CM) @ 2020-07-08  7:51 UTC (permalink / raw
  To: Song Bao Hua (Barry Song), catalin.marinas@arm.com,
	will@kernel.org
  Cc: fengbaopeng, nsaenzjulienne@suse.de, steve.capper@arm.com,
	rppt@linux.ibm.com, linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, sujunfei, Xiaqing (A),
	Yaobaofeng (Yaobaofeng)

Hi, baohua

Thank you for your attention.

In my understanding of the MEMORY_HOTPLUG this patch has no effect on it. The reason is that in sparse_add_one_section() the memory that memmap needs from Slab if kernel start completed,this memory has nothing to do with memblock alloc/ free memory in the process of kernel start.

You may have a look vmemmap_alloc_block () this function.

If I don't understand right welcome pointed out in a timely manner.

Thanks!


-----邮件原件-----
发件人: Song Bao Hua (Barry Song) 
发送时间: 2020年7月8日 15:19
收件人: liwei (CM) <liwei213@huawei.com>; catalin.marinas@arm.com; will@kernel.org
抄送: fengbaopeng <fengbaopeng2@hisilicon.com>; nsaenzjulienne@suse.de; steve.capper@arm.com; rppt@linux.ibm.com; linux-arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org; sujunfei <sujunfei2@hisilicon.com>
主题: RE: [PATCH] arm64: mm: free unused memmap for sparse memory model that define VMEMMAP



> -----Original Message-----
> From: liwei (CM)
> Sent: Wednesday, July 8, 2020 1:56 PM
> To: catalin.marinas@arm.com; will@kernel.org
> Cc: liwei (CM) <liwei213@huawei.com>; fengbaopeng 
> <fengbaopeng2@hisilicon.com>; nsaenzjulienne@suse.de; 
> steve.capper@arm.com; rppt@linux.ibm.com; Song Bao Hua (Barry Song) 
> <song.bao.hua@hisilicon.com>; linux-arm-kernel@lists.infradead.org;
> linux-kernel@vger.kernel.org; sujunfei <sujunfei2@hisilicon.com>
> Subject: [PATCH] arm64: mm: free unused memmap for sparse memory model 
> that define VMEMMAP
> 
> For the memory hole, sparse memory model that define SPARSEMEM_VMEMMAP 
> do not free the reserved memory for the page map, this patch do it.

Hello Wei,
Just curious if this patch breaks MEMORY_HOTPLUG?

> 
> Signed-off-by: Wei Li <liwei213@huawei.com>
> Signed-off-by: Chen Feng <puck.chen@hisilicon.com>
> Signed-off-by: Xia Qing <saberlily.xia@hisilicon.com>
> ---
>  arch/arm64/mm/init.c | 81
> +++++++++++++++++++++++++++++++++++++++++++++-------
>  1 file changed, 71 insertions(+), 10 deletions(-)
> 
> diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c index 
> 1e93cfc7c47a..d1b56b47d5ba 100644
> --- a/arch/arm64/mm/init.c
> +++ b/arch/arm64/mm/init.c
> @@ -441,7 +441,48 @@ void __init bootmem_init(void)
>  	memblock_dump_all();
>  }
> 

Thanks
Barry


^ permalink raw reply	[flat|nested] 19+ messages in thread

* 答复: [PATCH] arm64: mm: free unused memmap for sparse memory model that define VMEMMAP
@ 2020-07-08  7:51     ` liwei (CM)
  0 siblings, 0 replies; 19+ messages in thread
From: liwei (CM) @ 2020-07-08  7:51 UTC (permalink / raw
  To: Song Bao Hua (Barry Song), catalin.marinas@arm.com,
	will@kernel.org
  Cc: steve.capper@arm.com, Yaobaofeng (Yaobaofeng), sujunfei,
	linux-kernel@vger.kernel.org, rppt@linux.ibm.com,
	nsaenzjulienne@suse.de, fengbaopeng,
	linux-arm-kernel@lists.infradead.org, Xiaqing (A)

Hi, baohua

Thank you for your attention.

In my understanding of the MEMORY_HOTPLUG this patch has no effect on it. The reason is that in sparse_add_one_section() the memory that memmap needs from Slab if kernel start completed,this memory has nothing to do with memblock alloc/ free memory in the process of kernel start.

You may have a look vmemmap_alloc_block () this function.

If I don't understand right welcome pointed out in a timely manner.

Thanks!


-----邮件原件-----
发件人: Song Bao Hua (Barry Song) 
发送时间: 2020年7月8日 15:19
收件人: liwei (CM) <liwei213@huawei.com>; catalin.marinas@arm.com; will@kernel.org
抄送: fengbaopeng <fengbaopeng2@hisilicon.com>; nsaenzjulienne@suse.de; steve.capper@arm.com; rppt@linux.ibm.com; linux-arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org; sujunfei <sujunfei2@hisilicon.com>
主题: RE: [PATCH] arm64: mm: free unused memmap for sparse memory model that define VMEMMAP



> -----Original Message-----
> From: liwei (CM)
> Sent: Wednesday, July 8, 2020 1:56 PM
> To: catalin.marinas@arm.com; will@kernel.org
> Cc: liwei (CM) <liwei213@huawei.com>; fengbaopeng 
> <fengbaopeng2@hisilicon.com>; nsaenzjulienne@suse.de; 
> steve.capper@arm.com; rppt@linux.ibm.com; Song Bao Hua (Barry Song) 
> <song.bao.hua@hisilicon.com>; linux-arm-kernel@lists.infradead.org;
> linux-kernel@vger.kernel.org; sujunfei <sujunfei2@hisilicon.com>
> Subject: [PATCH] arm64: mm: free unused memmap for sparse memory model 
> that define VMEMMAP
> 
> For the memory hole, sparse memory model that define SPARSEMEM_VMEMMAP 
> do not free the reserved memory for the page map, this patch do it.

Hello Wei,
Just curious if this patch breaks MEMORY_HOTPLUG?

> 
> Signed-off-by: Wei Li <liwei213@huawei.com>
> Signed-off-by: Chen Feng <puck.chen@hisilicon.com>
> Signed-off-by: Xia Qing <saberlily.xia@hisilicon.com>
> ---
>  arch/arm64/mm/init.c | 81
> +++++++++++++++++++++++++++++++++++++++++++++-------
>  1 file changed, 71 insertions(+), 10 deletions(-)
> 
> diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c index 
> 1e93cfc7c47a..d1b56b47d5ba 100644
> --- a/arch/arm64/mm/init.c
> +++ b/arch/arm64/mm/init.c
> @@ -441,7 +441,48 @@ void __init bootmem_init(void)
>  	memblock_dump_all();
>  }
> 

Thanks
Barry

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 19+ messages in thread

* RE: [PATCH] arm64: mm: free unused memmap for sparse memory model that define VMEMMAP
  2020-07-08  7:51     ` liwei (CM)
@ 2020-07-09 12:27       ` Song Bao Hua (Barry Song)
  -1 siblings, 0 replies; 19+ messages in thread
From: Song Bao Hua (Barry Song) @ 2020-07-09 12:27 UTC (permalink / raw
  To: liwei (CM), catalin.marinas@arm.com, will@kernel.org
  Cc: fengbaopeng, nsaenzjulienne@suse.de, steve.capper@arm.com,
	rppt@linux.ibm.com, linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, sujunfei, Xiaqing (A),
	Yaobaofeng (Yaobaofeng)



> -----Original Message-----
> From: liwei (CM)
> Sent: Wednesday, July 8, 2020 7:52 PM
> To: Song Bao Hua (Barry Song) <song.bao.hua@hisilicon.com>;
> catalin.marinas@arm.com; will@kernel.org
> Cc: fengbaopeng <fengbaopeng2@hisilicon.com>; nsaenzjulienne@suse.de;
> steve.capper@arm.com; rppt@linux.ibm.com;
> linux-arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org; sujunfei
> <sujunfei2@hisilicon.com>; Xiaqing (A) <saberlily.xia@hisilicon.com>;
> Yaobaofeng (Yaobaofeng) <yaobaofeng@huawei.com>
> Subject: 答复: [PATCH] arm64: mm: free unused memmap for sparse memory
> model that define VMEMMAP
> 
> Hi, baohua
> 
> Thank you for your attention.
> 
> In my understanding of the MEMORY_HOTPLUG this patch has no effect on it.
> The reason is that in sparse_add_one_section() the memory that memmap
> needs from Slab if kernel start completed,this memory has nothing to do with
> memblock alloc/ free memory in the process of kernel start.
> 
> You may have a look vmemmap_alloc_block () this function.
> 
> If I don't understand right welcome pointed out in a timely manner.

At the first glance of this patch, I suspect that this bootmem may be used by hot-added memory.
If you confirm this won't happen, please ignore my noise.

BTW, next time, bear in mind that top-post is not a good way to reply mail :-)

> 
> Thanks!
> 
> 
> -----邮件原件-----
> 发件人: Song Bao Hua (Barry Song)
> 发送时间: 2020年7月8日 15:19
> 收件人: liwei (CM) <liwei213@huawei.com>; catalin.marinas@arm.com;
> will@kernel.org
> 抄送: fengbaopeng <fengbaopeng2@hisilicon.com>; nsaenzjulienne@suse.de;
> steve.capper@arm.com; rppt@linux.ibm.com;
> linux-arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org; sujunfei
> <sujunfei2@hisilicon.com>
> 主题: RE: [PATCH] arm64: mm: free unused memmap for sparse memory
> model that define VMEMMAP
> 
> 
> 
> > -----Original Message-----
> > From: liwei (CM)
> > Sent: Wednesday, July 8, 2020 1:56 PM
> > To: catalin.marinas@arm.com; will@kernel.org
> > Cc: liwei (CM) <liwei213@huawei.com>; fengbaopeng
> > <fengbaopeng2@hisilicon.com>; nsaenzjulienne@suse.de;
> > steve.capper@arm.com; rppt@linux.ibm.com; Song Bao Hua (Barry Song)
> > <song.bao.hua@hisilicon.com>; linux-arm-kernel@lists.infradead.org;
> > linux-kernel@vger.kernel.org; sujunfei <sujunfei2@hisilicon.com>
> > Subject: [PATCH] arm64: mm: free unused memmap for sparse memory
> model
> > that define VMEMMAP
> >
> > For the memory hole, sparse memory model that define
> SPARSEMEM_VMEMMAP
> > do not free the reserved memory for the page map, this patch do it.
> 
> Hello Wei,
> Just curious if this patch breaks MEMORY_HOTPLUG?
> 
> >
> > Signed-off-by: Wei Li <liwei213@huawei.com>
> > Signed-off-by: Chen Feng <puck.chen@hisilicon.com>
> > Signed-off-by: Xia Qing <saberlily.xia@hisilicon.com>
> > ---
> >  arch/arm64/mm/init.c | 81
> > +++++++++++++++++++++++++++++++++++++++++++++-------
> >  1 file changed, 71 insertions(+), 10 deletions(-)
> >
> > diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c index
> > 1e93cfc7c47a..d1b56b47d5ba 100644
> > --- a/arch/arm64/mm/init.c
> > +++ b/arch/arm64/mm/init.c
> > @@ -441,7 +441,48 @@ void __init bootmem_init(void)
> >  	memblock_dump_all();
> >  }
> >
> 
> Thanks
> Barry


^ permalink raw reply	[flat|nested] 19+ messages in thread

* RE: [PATCH] arm64: mm: free unused memmap for sparse memory model that define VMEMMAP
@ 2020-07-09 12:27       ` Song Bao Hua (Barry Song)
  0 siblings, 0 replies; 19+ messages in thread
From: Song Bao Hua (Barry Song) @ 2020-07-09 12:27 UTC (permalink / raw
  To: liwei (CM), catalin.marinas@arm.com, will@kernel.org
  Cc: steve.capper@arm.com, Yaobaofeng (Yaobaofeng), sujunfei,
	linux-kernel@vger.kernel.org, rppt@linux.ibm.com,
	nsaenzjulienne@suse.de, fengbaopeng,
	linux-arm-kernel@lists.infradead.org, Xiaqing (A)



> -----Original Message-----
> From: liwei (CM)
> Sent: Wednesday, July 8, 2020 7:52 PM
> To: Song Bao Hua (Barry Song) <song.bao.hua@hisilicon.com>;
> catalin.marinas@arm.com; will@kernel.org
> Cc: fengbaopeng <fengbaopeng2@hisilicon.com>; nsaenzjulienne@suse.de;
> steve.capper@arm.com; rppt@linux.ibm.com;
> linux-arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org; sujunfei
> <sujunfei2@hisilicon.com>; Xiaqing (A) <saberlily.xia@hisilicon.com>;
> Yaobaofeng (Yaobaofeng) <yaobaofeng@huawei.com>
> Subject: 答复: [PATCH] arm64: mm: free unused memmap for sparse memory
> model that define VMEMMAP
> 
> Hi, baohua
> 
> Thank you for your attention.
> 
> In my understanding of the MEMORY_HOTPLUG this patch has no effect on it.
> The reason is that in sparse_add_one_section() the memory that memmap
> needs from Slab if kernel start completed,this memory has nothing to do with
> memblock alloc/ free memory in the process of kernel start.
> 
> You may have a look vmemmap_alloc_block () this function.
> 
> If I don't understand right welcome pointed out in a timely manner.

At the first glance of this patch, I suspect that this bootmem may be used by hot-added memory.
If you confirm this won't happen, please ignore my noise.

BTW, next time, bear in mind that top-post is not a good way to reply mail :-)

> 
> Thanks!
> 
> 
> -----邮件原件-----
> 发件人: Song Bao Hua (Barry Song)
> 发送时间: 2020年7月8日 15:19
> 收件人: liwei (CM) <liwei213@huawei.com>; catalin.marinas@arm.com;
> will@kernel.org
> 抄送: fengbaopeng <fengbaopeng2@hisilicon.com>; nsaenzjulienne@suse.de;
> steve.capper@arm.com; rppt@linux.ibm.com;
> linux-arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org; sujunfei
> <sujunfei2@hisilicon.com>
> 主题: RE: [PATCH] arm64: mm: free unused memmap for sparse memory
> model that define VMEMMAP
> 
> 
> 
> > -----Original Message-----
> > From: liwei (CM)
> > Sent: Wednesday, July 8, 2020 1:56 PM
> > To: catalin.marinas@arm.com; will@kernel.org
> > Cc: liwei (CM) <liwei213@huawei.com>; fengbaopeng
> > <fengbaopeng2@hisilicon.com>; nsaenzjulienne@suse.de;
> > steve.capper@arm.com; rppt@linux.ibm.com; Song Bao Hua (Barry Song)
> > <song.bao.hua@hisilicon.com>; linux-arm-kernel@lists.infradead.org;
> > linux-kernel@vger.kernel.org; sujunfei <sujunfei2@hisilicon.com>
> > Subject: [PATCH] arm64: mm: free unused memmap for sparse memory
> model
> > that define VMEMMAP
> >
> > For the memory hole, sparse memory model that define
> SPARSEMEM_VMEMMAP
> > do not free the reserved memory for the page map, this patch do it.
> 
> Hello Wei,
> Just curious if this patch breaks MEMORY_HOTPLUG?
> 
> >
> > Signed-off-by: Wei Li <liwei213@huawei.com>
> > Signed-off-by: Chen Feng <puck.chen@hisilicon.com>
> > Signed-off-by: Xia Qing <saberlily.xia@hisilicon.com>
> > ---
> >  arch/arm64/mm/init.c | 81
> > +++++++++++++++++++++++++++++++++++++++++++++-------
> >  1 file changed, 71 insertions(+), 10 deletions(-)
> >
> > diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c index
> > 1e93cfc7c47a..d1b56b47d5ba 100644
> > --- a/arch/arm64/mm/init.c
> > +++ b/arch/arm64/mm/init.c
> > @@ -441,7 +441,48 @@ void __init bootmem_init(void)
> >  	memblock_dump_all();
> >  }
> >
> 
> Thanks
> Barry

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 19+ messages in thread

* 答复: [PATCH] arm64: mm: free unused memmap for sparse memory model that define VMEMMAP
  2020-07-09 12:27       ` Song Bao Hua (Barry Song)
@ 2020-07-21  1:56         ` liwei (CM)
  -1 siblings, 0 replies; 19+ messages in thread
From: liwei (CM) @ 2020-07-21  1:56 UTC (permalink / raw
  To: Song Bao Hua (Barry Song), catalin.marinas@arm.com,
	will@kernel.org
  Cc: fengbaopeng, nsaenzjulienne@suse.de, steve.capper@arm.com,
	rppt@linux.ibm.com, linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, sujunfei, Xiaqing (A),
	Yaobaofeng (Yaobaofeng)

Hi, all

I'm sorry to bother you, but still very hope you can give comments or suggestions to this patch, thank you very much.


-----邮件原件-----
发件人: Song Bao Hua (Barry Song) 
发送时间: 2020年7月9日 20:27
收件人: liwei (CM) <liwei213@huawei.com>; catalin.marinas@arm.com; will@kernel.org
抄送: fengbaopeng <fengbaopeng2@hisilicon.com>; nsaenzjulienne@suse.de; steve.capper@arm.com; rppt@linux.ibm.com; linux-arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org; sujunfei <sujunfei2@hisilicon.com>; Xiaqing (A) <saberlily.xia@hisilicon.com>; Yaobaofeng (Yaobaofeng) <yaobaofeng@huawei.com>
主题: RE: [PATCH] arm64: mm: free unused memmap for sparse memory model that define VMEMMAP



> -----Original Message-----
> From: liwei (CM)
> Sent: Wednesday, July 8, 2020 7:52 PM
> To: Song Bao Hua (Barry Song) <song.bao.hua@hisilicon.com>; 
> catalin.marinas@arm.com; will@kernel.org
> Cc: fengbaopeng <fengbaopeng2@hisilicon.com>; nsaenzjulienne@suse.de; 
> steve.capper@arm.com; rppt@linux.ibm.com; 
> linux-arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org; 
> sujunfei <sujunfei2@hisilicon.com>; Xiaqing (A) 
> <saberlily.xia@hisilicon.com>; Yaobaofeng (Yaobaofeng) 
> <yaobaofeng@huawei.com>
> Subject: 答复: [PATCH] arm64: mm: free unused memmap for sparse memory 
> model that define VMEMMAP
> 
> Hi, baohua
> 
> Thank you for your attention.
> 
> In my understanding of the MEMORY_HOTPLUG this patch has no effect on it.
> The reason is that in sparse_add_one_section() the memory that memmap 
> needs from Slab if kernel start completed,this memory has nothing to 
> do with memblock alloc/ free memory in the process of kernel start.
> 
> You may have a look vmemmap_alloc_block () this function.
> 
> If I don't understand right welcome pointed out in a timely manner.

At the first glance of this patch, I suspect that this bootmem may be used by hot-added memory.
If you confirm this won't happen, please ignore my noise.

BTW, next time, bear in mind that top-post is not a good way to reply mail :-)

> 
> Thanks!
> 
> 
> -----邮件原件-----
> 发件人: Song Bao Hua (Barry Song)
> 发送时间: 2020年7月8日 15:19
> 收件人: liwei (CM) <liwei213@huawei.com>; catalin.marinas@arm.com; 
> will@kernel.org
> 抄送: fengbaopeng <fengbaopeng2@hisilicon.com>; nsaenzjulienne@suse.de; 
> steve.capper@arm.com; rppt@linux.ibm.com; 
> linux-arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org; 
> sujunfei <sujunfei2@hisilicon.com>
> 主题: RE: [PATCH] arm64: mm: free unused memmap for sparse memory model 
> that define VMEMMAP
> 
> 
> 
> > -----Original Message-----
> > From: liwei (CM)
> > Sent: Wednesday, July 8, 2020 1:56 PM
> > To: catalin.marinas@arm.com; will@kernel.org
> > Cc: liwei (CM) <liwei213@huawei.com>; fengbaopeng 
> > <fengbaopeng2@hisilicon.com>; nsaenzjulienne@suse.de; 
> > steve.capper@arm.com; rppt@linux.ibm.com; Song Bao Hua (Barry Song) 
> > <song.bao.hua@hisilicon.com>; linux-arm-kernel@lists.infradead.org;
> > linux-kernel@vger.kernel.org; sujunfei <sujunfei2@hisilicon.com>
> > Subject: [PATCH] arm64: mm: free unused memmap for sparse memory
> model
> > that define VMEMMAP
> >
> > For the memory hole, sparse memory model that define
> SPARSEMEM_VMEMMAP
> > do not free the reserved memory for the page map, this patch do it.
> 
> Hello Wei,
> Just curious if this patch breaks MEMORY_HOTPLUG?
> 
> >
> > Signed-off-by: Wei Li <liwei213@huawei.com>
> > Signed-off-by: Chen Feng <puck.chen@hisilicon.com>
> > Signed-off-by: Xia Qing <saberlily.xia@hisilicon.com>
> > ---
> >  arch/arm64/mm/init.c | 81
> > +++++++++++++++++++++++++++++++++++++++++++++-------
> >  1 file changed, 71 insertions(+), 10 deletions(-)
> >
> > diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c index 
> > 1e93cfc7c47a..d1b56b47d5ba 100644
> > --- a/arch/arm64/mm/init.c
> > +++ b/arch/arm64/mm/init.c
> > @@ -441,7 +441,48 @@ void __init bootmem_init(void)
> >  	memblock_dump_all();
> >  }
> >
> 
> Thanks
> Barry


^ permalink raw reply	[flat|nested] 19+ messages in thread

* 答复: [PATCH] arm64: mm: free unused memmap for sparse memory model that define VMEMMAP
@ 2020-07-21  1:56         ` liwei (CM)
  0 siblings, 0 replies; 19+ messages in thread
From: liwei (CM) @ 2020-07-21  1:56 UTC (permalink / raw
  To: Song Bao Hua (Barry Song), catalin.marinas@arm.com,
	will@kernel.org
  Cc: steve.capper@arm.com, Yaobaofeng (Yaobaofeng), sujunfei,
	linux-kernel@vger.kernel.org, rppt@linux.ibm.com,
	nsaenzjulienne@suse.de, fengbaopeng,
	linux-arm-kernel@lists.infradead.org, Xiaqing (A)

Hi, all

I'm sorry to bother you, but still very hope you can give comments or suggestions to this patch, thank you very much.


-----邮件原件-----
发件人: Song Bao Hua (Barry Song) 
发送时间: 2020年7月9日 20:27
收件人: liwei (CM) <liwei213@huawei.com>; catalin.marinas@arm.com; will@kernel.org
抄送: fengbaopeng <fengbaopeng2@hisilicon.com>; nsaenzjulienne@suse.de; steve.capper@arm.com; rppt@linux.ibm.com; linux-arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org; sujunfei <sujunfei2@hisilicon.com>; Xiaqing (A) <saberlily.xia@hisilicon.com>; Yaobaofeng (Yaobaofeng) <yaobaofeng@huawei.com>
主题: RE: [PATCH] arm64: mm: free unused memmap for sparse memory model that define VMEMMAP



> -----Original Message-----
> From: liwei (CM)
> Sent: Wednesday, July 8, 2020 7:52 PM
> To: Song Bao Hua (Barry Song) <song.bao.hua@hisilicon.com>; 
> catalin.marinas@arm.com; will@kernel.org
> Cc: fengbaopeng <fengbaopeng2@hisilicon.com>; nsaenzjulienne@suse.de; 
> steve.capper@arm.com; rppt@linux.ibm.com; 
> linux-arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org; 
> sujunfei <sujunfei2@hisilicon.com>; Xiaqing (A) 
> <saberlily.xia@hisilicon.com>; Yaobaofeng (Yaobaofeng) 
> <yaobaofeng@huawei.com>
> Subject: 答复: [PATCH] arm64: mm: free unused memmap for sparse memory 
> model that define VMEMMAP
> 
> Hi, baohua
> 
> Thank you for your attention.
> 
> In my understanding of the MEMORY_HOTPLUG this patch has no effect on it.
> The reason is that in sparse_add_one_section() the memory that memmap 
> needs from Slab if kernel start completed,this memory has nothing to 
> do with memblock alloc/ free memory in the process of kernel start.
> 
> You may have a look vmemmap_alloc_block () this function.
> 
> If I don't understand right welcome pointed out in a timely manner.

At the first glance of this patch, I suspect that this bootmem may be used by hot-added memory.
If you confirm this won't happen, please ignore my noise.

BTW, next time, bear in mind that top-post is not a good way to reply mail :-)

> 
> Thanks!
> 
> 
> -----邮件原件-----
> 发件人: Song Bao Hua (Barry Song)
> 发送时间: 2020年7月8日 15:19
> 收件人: liwei (CM) <liwei213@huawei.com>; catalin.marinas@arm.com; 
> will@kernel.org
> 抄送: fengbaopeng <fengbaopeng2@hisilicon.com>; nsaenzjulienne@suse.de; 
> steve.capper@arm.com; rppt@linux.ibm.com; 
> linux-arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org; 
> sujunfei <sujunfei2@hisilicon.com>
> 主题: RE: [PATCH] arm64: mm: free unused memmap for sparse memory model 
> that define VMEMMAP
> 
> 
> 
> > -----Original Message-----
> > From: liwei (CM)
> > Sent: Wednesday, July 8, 2020 1:56 PM
> > To: catalin.marinas@arm.com; will@kernel.org
> > Cc: liwei (CM) <liwei213@huawei.com>; fengbaopeng 
> > <fengbaopeng2@hisilicon.com>; nsaenzjulienne@suse.de; 
> > steve.capper@arm.com; rppt@linux.ibm.com; Song Bao Hua (Barry Song) 
> > <song.bao.hua@hisilicon.com>; linux-arm-kernel@lists.infradead.org;
> > linux-kernel@vger.kernel.org; sujunfei <sujunfei2@hisilicon.com>
> > Subject: [PATCH] arm64: mm: free unused memmap for sparse memory
> model
> > that define VMEMMAP
> >
> > For the memory hole, sparse memory model that define
> SPARSEMEM_VMEMMAP
> > do not free the reserved memory for the page map, this patch do it.
> 
> Hello Wei,
> Just curious if this patch breaks MEMORY_HOTPLUG?
> 
> >
> > Signed-off-by: Wei Li <liwei213@huawei.com>
> > Signed-off-by: Chen Feng <puck.chen@hisilicon.com>
> > Signed-off-by: Xia Qing <saberlily.xia@hisilicon.com>
> > ---
> >  arch/arm64/mm/init.c | 81
> > +++++++++++++++++++++++++++++++++++++++++++++-------
> >  1 file changed, 71 insertions(+), 10 deletions(-)
> >
> > diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c index 
> > 1e93cfc7c47a..d1b56b47d5ba 100644
> > --- a/arch/arm64/mm/init.c
> > +++ b/arch/arm64/mm/init.c
> > @@ -441,7 +441,48 @@ void __init bootmem_init(void)
> >  	memblock_dump_all();
> >  }
> >
> 
> Thanks
> Barry

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: 答复: [PATCH] arm64: mm: free unused memmap for sparse memory model that define VMEMMAP
  2020-07-21  1:56         ` liwei (CM)
@ 2020-07-21  6:35           ` Mike Rapoport
  -1 siblings, 0 replies; 19+ messages in thread
From: Mike Rapoport @ 2020-07-21  6:35 UTC (permalink / raw
  To: liwei (CM)
  Cc: Song Bao Hua (Barry Song), catalin.marinas@arm.com,
	will@kernel.org, fengbaopeng, nsaenzjulienne@suse.de,
	steve.capper@arm.com, linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, sujunfei, Xiaqing (A),
	Yaobaofeng (Yaobaofeng)

Hi,

On Tue, Jul 21, 2020 at 01:56:33AM +0000, liwei (CM) wrote:
> Hi, all
> 
> I'm sorry to bother you, but still very hope you can give comments or suggestions to this patch, thank you very much.
 
I cannot find your patch neither in Inbox nor in the public archives.
Can you resend it please?


> -----邮件原件-----
> 发件人: Song Bao Hua (Barry Song) 
> 发送时间: 2020年7月9日 20:27
> 收件人: liwei (CM) <liwei213@huawei.com>; catalin.marinas@arm.com; will@kernel.org
> 抄送: fengbaopeng <fengbaopeng2@hisilicon.com>; nsaenzjulienne@suse.de; steve.capper@arm.com; rppt@linux.ibm.com; linux-arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org; sujunfei <sujunfei2@hisilicon.com>; Xiaqing (A) <saberlily.xia@hisilicon.com>; Yaobaofeng (Yaobaofeng) <yaobaofeng@huawei.com>
> 主题: RE: [PATCH] arm64: mm: free unused memmap for sparse memory model that define VMEMMAP
> 
> 
> 
> > -----Original Message-----
> > From: liwei (CM)
> > Sent: Wednesday, July 8, 2020 7:52 PM
> > To: Song Bao Hua (Barry Song) <song.bao.hua@hisilicon.com>; 
> > catalin.marinas@arm.com; will@kernel.org
> > Cc: fengbaopeng <fengbaopeng2@hisilicon.com>; nsaenzjulienne@suse.de; 
> > steve.capper@arm.com; rppt@linux.ibm.com; 
> > linux-arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org; 
> > sujunfei <sujunfei2@hisilicon.com>; Xiaqing (A) 
> > <saberlily.xia@hisilicon.com>; Yaobaofeng (Yaobaofeng) 
> > <yaobaofeng@huawei.com>
> > Subject: 答复: [PATCH] arm64: mm: free unused memmap for sparse memory 
> > model that define VMEMMAP
> > 
> > Hi, baohua
> > 
> > Thank you for your attention.
> > 
> > In my understanding of the MEMORY_HOTPLUG this patch has no effect on it.
> > The reason is that in sparse_add_one_section() the memory that memmap 
> > needs from Slab if kernel start completed,this memory has nothing to 
> > do with memblock alloc/ free memory in the process of kernel start.
> > 
> > You may have a look vmemmap_alloc_block () this function.
> > 
> > If I don't understand right welcome pointed out in a timely manner.
> 
> At the first glance of this patch, I suspect that this bootmem may be used by hot-added memory.
> If you confirm this won't happen, please ignore my noise.
> 
> BTW, next time, bear in mind that top-post is not a good way to reply mail :-)
> 
> > 
> > Thanks!
> > 
> > 
> > -----邮件原件-----
> > 发件人: Song Bao Hua (Barry Song)
> > 发送时间: 2020年7月8日 15:19
> > 收件人: liwei (CM) <liwei213@huawei.com>; catalin.marinas@arm.com; 
> > will@kernel.org
> > 抄送: fengbaopeng <fengbaopeng2@hisilicon.com>; nsaenzjulienne@suse.de; 
> > steve.capper@arm.com; rppt@linux.ibm.com; 
> > linux-arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org; 
> > sujunfei <sujunfei2@hisilicon.com>
> > 主题: RE: [PATCH] arm64: mm: free unused memmap for sparse memory model 
> > that define VMEMMAP
> > 
> > 
> > 
> > > -----Original Message-----
> > > From: liwei (CM)
> > > Sent: Wednesday, July 8, 2020 1:56 PM
> > > To: catalin.marinas@arm.com; will@kernel.org
> > > Cc: liwei (CM) <liwei213@huawei.com>; fengbaopeng 
> > > <fengbaopeng2@hisilicon.com>; nsaenzjulienne@suse.de; 
> > > steve.capper@arm.com; rppt@linux.ibm.com; Song Bao Hua (Barry Song) 
> > > <song.bao.hua@hisilicon.com>; linux-arm-kernel@lists.infradead.org;
> > > linux-kernel@vger.kernel.org; sujunfei <sujunfei2@hisilicon.com>
> > > Subject: [PATCH] arm64: mm: free unused memmap for sparse memory
> > model
> > > that define VMEMMAP
> > >
> > > For the memory hole, sparse memory model that define
> > SPARSEMEM_VMEMMAP
> > > do not free the reserved memory for the page map, this patch do it.
> > 
> > Hello Wei,
> > Just curious if this patch breaks MEMORY_HOTPLUG?
> > 
> > >
> > > Signed-off-by: Wei Li <liwei213@huawei.com>
> > > Signed-off-by: Chen Feng <puck.chen@hisilicon.com>
> > > Signed-off-by: Xia Qing <saberlily.xia@hisilicon.com>
> > > ---
> > >  arch/arm64/mm/init.c | 81
> > > +++++++++++++++++++++++++++++++++++++++++++++-------
> > >  1 file changed, 71 insertions(+), 10 deletions(-)
> > >
> > > diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c index 
> > > 1e93cfc7c47a..d1b56b47d5ba 100644
> > > --- a/arch/arm64/mm/init.c
> > > +++ b/arch/arm64/mm/init.c
> > > @@ -441,7 +441,48 @@ void __init bootmem_init(void)
> > >  	memblock_dump_all();
> > >  }
> > >
> > 
> > Thanks
> > Barry
> 

-- 
Sincerely yours,
Mike.

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: 答复: [PATCH] arm64: mm: free unused memmap for sparse memory model that define VMEMMAP
@ 2020-07-21  6:35           ` Mike Rapoport
  0 siblings, 0 replies; 19+ messages in thread
From: Mike Rapoport @ 2020-07-21  6:35 UTC (permalink / raw
  To: liwei (CM)
  Cc: Song Bao Hua (Barry Song), Xiaqing (A), steve.capper@arm.com,
	catalin.marinas@arm.com, Yaobaofeng (Yaobaofeng), sujunfei,
	linux-kernel@vger.kernel.org, fengbaopeng, will@kernel.org,
	nsaenzjulienne@suse.de, linux-arm-kernel@lists.infradead.org

Hi,

On Tue, Jul 21, 2020 at 01:56:33AM +0000, liwei (CM) wrote:
> Hi, all
> 
> I'm sorry to bother you, but still very hope you can give comments or suggestions to this patch, thank you very much.
 
I cannot find your patch neither in Inbox nor in the public archives.
Can you resend it please?


> -----邮件原件-----
> 发件人: Song Bao Hua (Barry Song) 
> 发送时间: 2020年7月9日 20:27
> 收件人: liwei (CM) <liwei213@huawei.com>; catalin.marinas@arm.com; will@kernel.org
> 抄送: fengbaopeng <fengbaopeng2@hisilicon.com>; nsaenzjulienne@suse.de; steve.capper@arm.com; rppt@linux.ibm.com; linux-arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org; sujunfei <sujunfei2@hisilicon.com>; Xiaqing (A) <saberlily.xia@hisilicon.com>; Yaobaofeng (Yaobaofeng) <yaobaofeng@huawei.com>
> 主题: RE: [PATCH] arm64: mm: free unused memmap for sparse memory model that define VMEMMAP
> 
> 
> 
> > -----Original Message-----
> > From: liwei (CM)
> > Sent: Wednesday, July 8, 2020 7:52 PM
> > To: Song Bao Hua (Barry Song) <song.bao.hua@hisilicon.com>; 
> > catalin.marinas@arm.com; will@kernel.org
> > Cc: fengbaopeng <fengbaopeng2@hisilicon.com>; nsaenzjulienne@suse.de; 
> > steve.capper@arm.com; rppt@linux.ibm.com; 
> > linux-arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org; 
> > sujunfei <sujunfei2@hisilicon.com>; Xiaqing (A) 
> > <saberlily.xia@hisilicon.com>; Yaobaofeng (Yaobaofeng) 
> > <yaobaofeng@huawei.com>
> > Subject: 答复: [PATCH] arm64: mm: free unused memmap for sparse memory 
> > model that define VMEMMAP
> > 
> > Hi, baohua
> > 
> > Thank you for your attention.
> > 
> > In my understanding of the MEMORY_HOTPLUG this patch has no effect on it.
> > The reason is that in sparse_add_one_section() the memory that memmap 
> > needs from Slab if kernel start completed,this memory has nothing to 
> > do with memblock alloc/ free memory in the process of kernel start.
> > 
> > You may have a look vmemmap_alloc_block () this function.
> > 
> > If I don't understand right welcome pointed out in a timely manner.
> 
> At the first glance of this patch, I suspect that this bootmem may be used by hot-added memory.
> If you confirm this won't happen, please ignore my noise.
> 
> BTW, next time, bear in mind that top-post is not a good way to reply mail :-)
> 
> > 
> > Thanks!
> > 
> > 
> > -----邮件原件-----
> > 发件人: Song Bao Hua (Barry Song)
> > 发送时间: 2020年7月8日 15:19
> > 收件人: liwei (CM) <liwei213@huawei.com>; catalin.marinas@arm.com; 
> > will@kernel.org
> > 抄送: fengbaopeng <fengbaopeng2@hisilicon.com>; nsaenzjulienne@suse.de; 
> > steve.capper@arm.com; rppt@linux.ibm.com; 
> > linux-arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org; 
> > sujunfei <sujunfei2@hisilicon.com>
> > 主题: RE: [PATCH] arm64: mm: free unused memmap for sparse memory model 
> > that define VMEMMAP
> > 
> > 
> > 
> > > -----Original Message-----
> > > From: liwei (CM)
> > > Sent: Wednesday, July 8, 2020 1:56 PM
> > > To: catalin.marinas@arm.com; will@kernel.org
> > > Cc: liwei (CM) <liwei213@huawei.com>; fengbaopeng 
> > > <fengbaopeng2@hisilicon.com>; nsaenzjulienne@suse.de; 
> > > steve.capper@arm.com; rppt@linux.ibm.com; Song Bao Hua (Barry Song) 
> > > <song.bao.hua@hisilicon.com>; linux-arm-kernel@lists.infradead.org;
> > > linux-kernel@vger.kernel.org; sujunfei <sujunfei2@hisilicon.com>
> > > Subject: [PATCH] arm64: mm: free unused memmap for sparse memory
> > model
> > > that define VMEMMAP
> > >
> > > For the memory hole, sparse memory model that define
> > SPARSEMEM_VMEMMAP
> > > do not free the reserved memory for the page map, this patch do it.
> > 
> > Hello Wei,
> > Just curious if this patch breaks MEMORY_HOTPLUG?
> > 
> > >
> > > Signed-off-by: Wei Li <liwei213@huawei.com>
> > > Signed-off-by: Chen Feng <puck.chen@hisilicon.com>
> > > Signed-off-by: Xia Qing <saberlily.xia@hisilicon.com>
> > > ---
> > >  arch/arm64/mm/init.c | 81
> > > +++++++++++++++++++++++++++++++++++++++++++++-------
> > >  1 file changed, 71 insertions(+), 10 deletions(-)
> > >
> > > diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c index 
> > > 1e93cfc7c47a..d1b56b47d5ba 100644
> > > --- a/arch/arm64/mm/init.c
> > > +++ b/arch/arm64/mm/init.c
> > > @@ -441,7 +441,48 @@ void __init bootmem_init(void)
> > >  	memblock_dump_all();
> > >  }
> > >
> > 
> > Thanks
> > Barry
> 

-- 
Sincerely yours,
Mike.

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [PATCH] arm64: mm: free unused memmap for sparse memory model that define VMEMMAP
@ 2020-07-21  7:32 ` Wei Li
  0 siblings, 0 replies; 19+ messages in thread
From: Wei Li @ 2020-07-21  7:32 UTC (permalink / raw
  To: catalin.marinas, will
  Cc: liwei213, saberlily.xia, puck.chen, butao, fengbaopeng2,
	nsaenzjulienne, steve.capper, rppt, song.bao.hua,
	linux-arm-kernel, linux-kernel, sujunfei2

For the memory hole, sparse memory model that define SPARSEMEM_VMEMMAP
do not free the reserved memory for the page map, this patch do it.

Signed-off-by: Wei Li <liwei213@huawei.com>
Signed-off-by: Chen Feng <puck.chen@hisilicon.com>
Signed-off-by: Xia Qing <saberlily.xia@hisilicon.com>
---
 arch/arm64/mm/init.c | 81 +++++++++++++++++++++++++++++++++++++++++++++-------
 1 file changed, 71 insertions(+), 10 deletions(-)

diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c
index 1e93cfc7c47a..d1b56b47d5ba 100644
--- a/arch/arm64/mm/init.c
+++ b/arch/arm64/mm/init.c
@@ -441,7 +441,48 @@ void __init bootmem_init(void)
 	memblock_dump_all();
 }

-#ifndef CONFIG_SPARSEMEM_VMEMMAP
+#ifdef CONFIG_SPARSEMEM_VMEMMAP
+#define VMEMMAP_PAGE_INUSE 0xFD
+static inline void free_memmap(unsigned long start_pfn, unsigned long end_pfn)
+{
+	unsigned long addr, end;
+	unsigned long next;
+	pmd_t *pmd;
+	void *page_addr;
+	phys_addr_t phys_addr;
+
+	addr = (unsigned long)pfn_to_page(start_pfn);
+	end = (unsigned long)pfn_to_page(end_pfn);
+
+	pmd = pmd_offset(pud_offset(pgd_offset_k(addr), addr), addr);
+	for (; addr < end; addr = next, pmd++) {
+		next = pmd_addr_end(addr, end);
+
+		if (!pmd_present(*pmd))
+			continue;
+
+		if (IS_ALIGNED(addr, PMD_SIZE) &&
+			IS_ALIGNED(next, PMD_SIZE)) {
+			phys_addr = __pfn_to_phys(pmd_pfn(*pmd));
+			free_bootmem(phys_addr, PMD_SIZE);
+			pmd_clear(pmd);
+		} else {
+			/* If here, we are freeing vmemmap pages. */
+			memset((void *)addr, VMEMMAP_PAGE_INUSE, next - addr);
+			page_addr = page_address(pmd_page(*pmd));
+
+			if (!memchr_inv(page_addr, VMEMMAP_PAGE_INUSE,
+				PMD_SIZE)) {
+				phys_addr = __pfn_to_phys(pmd_pfn(*pmd));
+				free_bootmem(phys_addr, PMD_SIZE);
+				pmd_clear(pmd);
+			}
+		}
+	}
+
+	flush_tlb_all();
+}
+#else
 static inline void free_memmap(unsigned long start_pfn, unsigned long end_pfn)
 {
 	struct page *start_pg, *end_pg;
@@ -468,31 +509,53 @@ static inline void free_memmap(unsigned long start_pfn, unsigned long end_pfn)
 		memblock_free(pg, pgend - pg);
 }

+#endif
+
 /*
  * The mem_map array can get very big. Free the unused area of the memory map.
  */
 static void __init free_unused_memmap(void)
 {
-	unsigned long start, prev_end = 0;
+	unsigned long start, cur_start, prev_end = 0;
 	struct memblock_region *reg;

 	for_each_memblock(memory, reg) {
-		start = __phys_to_pfn(reg->base);
+		cur_start = __phys_to_pfn(reg->base);

 #ifdef CONFIG_SPARSEMEM
 		/*
 		 * Take care not to free memmap entries that don't exist due
 		 * to SPARSEMEM sections which aren't present.
 		 */
-		start = min(start, ALIGN(prev_end, PAGES_PER_SECTION));
-#endif
+		start = min(cur_start, ALIGN(prev_end, PAGES_PER_SECTION));
+
 		/*
-		 * If we had a previous bank, and there is a space between the
-		 * current bank and the previous, free it.
+		 * Free memory in the case of:
+		 * 1. if cur_start - prev_end <= PAGES_PER_SECTION,
+		 * free pre_end ~ cur_start.
+		 * 2. if cur_start - prev_end > PAGES_PER_SECTION,
+		 * free pre_end ~ ALIGN(prev_end, PAGES_PER_SECTION).
 		 */
 		if (prev_end && prev_end < start)
 			free_memmap(prev_end, start);

+		/*
+		 * Free memory in the case of:
+		 * if cur_start - prev_end > PAGES_PER_SECTION,
+		 * free ALIGN_DOWN(cur_start, PAGES_PER_SECTION) ~ cur_start.
+		 */
+		if (cur_start > start &&
+		    !IS_ALIGNED(cur_start, PAGES_PER_SECTION))
+			free_memmap(ALIGN_DOWN(cur_start, PAGES_PER_SECTION),
+				    cur_start);
+#else
+		/*
+		 * If we had a previous bank, and there is a space between the
+		 * current bank and the previous, free it.
+		 */
+		if (prev_end && prev_end < cur_start)
+			free_memmap(prev_end, cur_start);
+#endif
 		/*
 		 * Align up here since the VM subsystem insists that the
 		 * memmap entries are valid from the bank end aligned to
@@ -507,7 +570,6 @@ static void __init free_unused_memmap(void)
 		free_memmap(prev_end, ALIGN(prev_end, PAGES_PER_SECTION));
 #endif
 }
-#endif	/* !CONFIG_SPARSEMEM_VMEMMAP */

 /*
  * mem_init() marks the free areas in the mem_map and tells us how much memory
@@ -524,9 +586,8 @@ void __init mem_init(void)

 	set_max_mapnr(max_pfn - PHYS_PFN_OFFSET);

-#ifndef CONFIG_SPARSEMEM_VMEMMAP
 	free_unused_memmap();
-#endif
+
 	/* this will put all unused low memory onto the freelists */
 	memblock_free_all();

--
2.15.0


^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH] arm64: mm: free unused memmap for sparse memory model that define VMEMMAP
@ 2020-07-21  7:32 ` Wei Li
  0 siblings, 0 replies; 19+ messages in thread
From: Wei Li @ 2020-07-21  7:32 UTC (permalink / raw
  To: catalin.marinas, will
  Cc: song.bao.hua, sujunfei2, saberlily.xia, linux-arm-kernel,
	steve.capper, puck.chen, liwei213, linux-kernel, rppt,
	fengbaopeng2, nsaenzjulienne, butao

For the memory hole, sparse memory model that define SPARSEMEM_VMEMMAP
do not free the reserved memory for the page map, this patch do it.

Signed-off-by: Wei Li <liwei213@huawei.com>
Signed-off-by: Chen Feng <puck.chen@hisilicon.com>
Signed-off-by: Xia Qing <saberlily.xia@hisilicon.com>
---
 arch/arm64/mm/init.c | 81 +++++++++++++++++++++++++++++++++++++++++++++-------
 1 file changed, 71 insertions(+), 10 deletions(-)

diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c
index 1e93cfc7c47a..d1b56b47d5ba 100644
--- a/arch/arm64/mm/init.c
+++ b/arch/arm64/mm/init.c
@@ -441,7 +441,48 @@ void __init bootmem_init(void)
 	memblock_dump_all();
 }

-#ifndef CONFIG_SPARSEMEM_VMEMMAP
+#ifdef CONFIG_SPARSEMEM_VMEMMAP
+#define VMEMMAP_PAGE_INUSE 0xFD
+static inline void free_memmap(unsigned long start_pfn, unsigned long end_pfn)
+{
+	unsigned long addr, end;
+	unsigned long next;
+	pmd_t *pmd;
+	void *page_addr;
+	phys_addr_t phys_addr;
+
+	addr = (unsigned long)pfn_to_page(start_pfn);
+	end = (unsigned long)pfn_to_page(end_pfn);
+
+	pmd = pmd_offset(pud_offset(pgd_offset_k(addr), addr), addr);
+	for (; addr < end; addr = next, pmd++) {
+		next = pmd_addr_end(addr, end);
+
+		if (!pmd_present(*pmd))
+			continue;
+
+		if (IS_ALIGNED(addr, PMD_SIZE) &&
+			IS_ALIGNED(next, PMD_SIZE)) {
+			phys_addr = __pfn_to_phys(pmd_pfn(*pmd));
+			free_bootmem(phys_addr, PMD_SIZE);
+			pmd_clear(pmd);
+		} else {
+			/* If here, we are freeing vmemmap pages. */
+			memset((void *)addr, VMEMMAP_PAGE_INUSE, next - addr);
+			page_addr = page_address(pmd_page(*pmd));
+
+			if (!memchr_inv(page_addr, VMEMMAP_PAGE_INUSE,
+				PMD_SIZE)) {
+				phys_addr = __pfn_to_phys(pmd_pfn(*pmd));
+				free_bootmem(phys_addr, PMD_SIZE);
+				pmd_clear(pmd);
+			}
+		}
+	}
+
+	flush_tlb_all();
+}
+#else
 static inline void free_memmap(unsigned long start_pfn, unsigned long end_pfn)
 {
 	struct page *start_pg, *end_pg;
@@ -468,31 +509,53 @@ static inline void free_memmap(unsigned long start_pfn, unsigned long end_pfn)
 		memblock_free(pg, pgend - pg);
 }

+#endif
+
 /*
  * The mem_map array can get very big. Free the unused area of the memory map.
  */
 static void __init free_unused_memmap(void)
 {
-	unsigned long start, prev_end = 0;
+	unsigned long start, cur_start, prev_end = 0;
 	struct memblock_region *reg;

 	for_each_memblock(memory, reg) {
-		start = __phys_to_pfn(reg->base);
+		cur_start = __phys_to_pfn(reg->base);

 #ifdef CONFIG_SPARSEMEM
 		/*
 		 * Take care not to free memmap entries that don't exist due
 		 * to SPARSEMEM sections which aren't present.
 		 */
-		start = min(start, ALIGN(prev_end, PAGES_PER_SECTION));
-#endif
+		start = min(cur_start, ALIGN(prev_end, PAGES_PER_SECTION));
+
 		/*
-		 * If we had a previous bank, and there is a space between the
-		 * current bank and the previous, free it.
+		 * Free memory in the case of:
+		 * 1. if cur_start - prev_end <= PAGES_PER_SECTION,
+		 * free pre_end ~ cur_start.
+		 * 2. if cur_start - prev_end > PAGES_PER_SECTION,
+		 * free pre_end ~ ALIGN(prev_end, PAGES_PER_SECTION).
 		 */
 		if (prev_end && prev_end < start)
 			free_memmap(prev_end, start);

+		/*
+		 * Free memory in the case of:
+		 * if cur_start - prev_end > PAGES_PER_SECTION,
+		 * free ALIGN_DOWN(cur_start, PAGES_PER_SECTION) ~ cur_start.
+		 */
+		if (cur_start > start &&
+		    !IS_ALIGNED(cur_start, PAGES_PER_SECTION))
+			free_memmap(ALIGN_DOWN(cur_start, PAGES_PER_SECTION),
+				    cur_start);
+#else
+		/*
+		 * If we had a previous bank, and there is a space between the
+		 * current bank and the previous, free it.
+		 */
+		if (prev_end && prev_end < cur_start)
+			free_memmap(prev_end, cur_start);
+#endif
 		/*
 		 * Align up here since the VM subsystem insists that the
 		 * memmap entries are valid from the bank end aligned to
@@ -507,7 +570,6 @@ static void __init free_unused_memmap(void)
 		free_memmap(prev_end, ALIGN(prev_end, PAGES_PER_SECTION));
 #endif
 }
-#endif	/* !CONFIG_SPARSEMEM_VMEMMAP */

 /*
  * mem_init() marks the free areas in the mem_map and tells us how much memory
@@ -524,9 +586,8 @@ void __init mem_init(void)

 	set_max_mapnr(max_pfn - PHYS_PFN_OFFSET);

-#ifndef CONFIG_SPARSEMEM_VMEMMAP
 	free_unused_memmap();
-#endif
+
 	/* this will put all unused low memory onto the freelists */
 	memblock_free_all();

--
2.15.0


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* 答复: 答复: [PATCH] arm64: mm: free unused memmap for sparse memory model that define VMEMMAP
  2020-07-21  6:35           ` Mike Rapoport
@ 2020-07-21 12:27             ` liwei (CM)
  -1 siblings, 0 replies; 19+ messages in thread
From: liwei (CM) @ 2020-07-21 12:27 UTC (permalink / raw
  To: Mike Rapoport
  Cc: Song Bao Hua (Barry Song), catalin.marinas@arm.com,
	will@kernel.org, fengbaopeng, nsaenzjulienne@suse.de,
	steve.capper@arm.com, linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, sujunfei, Xiaqing (A),
	Yaobaofeng (Yaobaofeng)



-----邮件原件-----
发件人: Mike Rapoport [mailto:rppt@linux.ibm.com] 
发送时间: 2020年7月21日 14:35
收件人: liwei (CM) <liwei213@huawei.com>
抄送: Song Bao Hua (Barry Song) <song.bao.hua@hisilicon.com>; catalin.marinas@arm.com; will@kernel.org; fengbaopeng <fengbaopeng2@hisilicon.com>; nsaenzjulienne@suse.de; steve.capper@arm.com; linux-arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org; sujunfei <sujunfei2@hisilicon.com>; Xiaqing (A) <saberlily.xia@hisilicon.com>; Yaobaofeng (Yaobaofeng) <yaobaofeng@huawei.com>
主题: Re: 答复: [PATCH] arm64: mm: free unused memmap for sparse memory model that define VMEMMAP

Hi,

On Tue, Jul 21, 2020 at 01:56:33AM +0000, liwei (CM) wrote:
> Hi, all
> 
> I'm sorry to bother you, but still very hope you can give comments or suggestions to this patch, thank you very much.
 
I cannot find your patch neither in Inbox nor in the public archives.
Can you resend it please?

Hi, Mike

I resend the patch, if you see please give advice, thanks!



> -----邮件原件-----
> 发件人: Song Bao Hua (Barry Song)
> 发送时间: 2020年7月9日 20:27
> 收件人: liwei (CM) <liwei213@huawei.com>; catalin.marinas@arm.com; 
> will@kernel.org
> 抄送: fengbaopeng <fengbaopeng2@hisilicon.com>; nsaenzjulienne@suse.de; 
> steve.capper@arm.com; rppt@linux.ibm.com; 
> linux-arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org; 
> sujunfei <sujunfei2@hisilicon.com>; Xiaqing (A) 
> <saberlily.xia@hisilicon.com>; Yaobaofeng (Yaobaofeng) 
> <yaobaofeng@huawei.com>
> 主题: RE: [PATCH] arm64: mm: free unused memmap for sparse memory model 
> that define VMEMMAP
> 
> 
> 
> > -----Original Message-----
> > From: liwei (CM)
> > Sent: Wednesday, July 8, 2020 7:52 PM
> > To: Song Bao Hua (Barry Song) <song.bao.hua@hisilicon.com>; 
> > catalin.marinas@arm.com; will@kernel.org
> > Cc: fengbaopeng <fengbaopeng2@hisilicon.com>; 
> > nsaenzjulienne@suse.de; steve.capper@arm.com; rppt@linux.ibm.com; 
> > linux-arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org; 
> > sujunfei <sujunfei2@hisilicon.com>; Xiaqing (A) 
> > <saberlily.xia@hisilicon.com>; Yaobaofeng (Yaobaofeng) 
> > <yaobaofeng@huawei.com>
> > Subject: 答复: [PATCH] arm64: mm: free unused memmap for sparse memory 
> > model that define VMEMMAP
> > 
> > Hi, baohua
> > 
> > Thank you for your attention.
> > 
> > In my understanding of the MEMORY_HOTPLUG this patch has no effect on it.
> > The reason is that in sparse_add_one_section() the memory that 
> > memmap needs from Slab if kernel start completed,this memory has 
> > nothing to do with memblock alloc/ free memory in the process of kernel start.
> > 
> > You may have a look vmemmap_alloc_block () this function.
> > 
> > If I don't understand right welcome pointed out in a timely manner.
> 
> At the first glance of this patch, I suspect that this bootmem may be used by hot-added memory.
> If you confirm this won't happen, please ignore my noise.
> 
> BTW, next time, bear in mind that top-post is not a good way to reply 
> mail :-)
> 
> > 
> > Thanks!
> > 
> > 
> > -----邮件原件-----
> > 发件人: Song Bao Hua (Barry Song)
> > 发送时间: 2020年7月8日 15:19
> > 收件人: liwei (CM) <liwei213@huawei.com>; catalin.marinas@arm.com; 
> > will@kernel.org
> > 抄送: fengbaopeng <fengbaopeng2@hisilicon.com>; 
> > nsaenzjulienne@suse.de; steve.capper@arm.com; rppt@linux.ibm.com; 
> > linux-arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org; 
> > sujunfei <sujunfei2@hisilicon.com>
> > 主题: RE: [PATCH] arm64: mm: free unused memmap for sparse memory 
> > model that define VMEMMAP
> > 
> > 
> > 
> > > -----Original Message-----
> > > From: liwei (CM)
> > > Sent: Wednesday, July 8, 2020 1:56 PM
> > > To: catalin.marinas@arm.com; will@kernel.org
> > > Cc: liwei (CM) <liwei213@huawei.com>; fengbaopeng 
> > > <fengbaopeng2@hisilicon.com>; nsaenzjulienne@suse.de; 
> > > steve.capper@arm.com; rppt@linux.ibm.com; Song Bao Hua (Barry 
> > > Song) <song.bao.hua@hisilicon.com>; 
> > > linux-arm-kernel@lists.infradead.org;
> > > linux-kernel@vger.kernel.org; sujunfei <sujunfei2@hisilicon.com>
> > > Subject: [PATCH] arm64: mm: free unused memmap for sparse memory
> > model
> > > that define VMEMMAP
> > >
> > > For the memory hole, sparse memory model that define
> > SPARSEMEM_VMEMMAP
> > > do not free the reserved memory for the page map, this patch do it.
> > 
> > Hello Wei,
> > Just curious if this patch breaks MEMORY_HOTPLUG?
> > 
> > >
> > > Signed-off-by: Wei Li <liwei213@huawei.com>
> > > Signed-off-by: Chen Feng <puck.chen@hisilicon.com>
> > > Signed-off-by: Xia Qing <saberlily.xia@hisilicon.com>
> > > ---
> > >  arch/arm64/mm/init.c | 81
> > > +++++++++++++++++++++++++++++++++++++++++++++-------
> > >  1 file changed, 71 insertions(+), 10 deletions(-)
> > >
> > > diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c index 
> > > 1e93cfc7c47a..d1b56b47d5ba 100644
> > > --- a/arch/arm64/mm/init.c
> > > +++ b/arch/arm64/mm/init.c
> > > @@ -441,7 +441,48 @@ void __init bootmem_init(void)
> > >  	memblock_dump_all();
> > >  }
> > >
> > 
> > Thanks
> > Barry
> 

--
Sincerely yours,
Mike.

^ permalink raw reply	[flat|nested] 19+ messages in thread

* 答复: 答复: [PATCH] arm64: mm: free unused memmap for sparse memory model that define VMEMMAP
@ 2020-07-21 12:27             ` liwei (CM)
  0 siblings, 0 replies; 19+ messages in thread
From: liwei (CM) @ 2020-07-21 12:27 UTC (permalink / raw
  To: Mike Rapoport
  Cc: Song Bao Hua (Barry Song), Xiaqing (A), steve.capper@arm.com,
	catalin.marinas@arm.com, Yaobaofeng (Yaobaofeng), sujunfei,
	linux-kernel@vger.kernel.org, fengbaopeng, will@kernel.org,
	nsaenzjulienne@suse.de, linux-arm-kernel@lists.infradead.org



-----邮件原件-----
发件人: Mike Rapoport [mailto:rppt@linux.ibm.com] 
发送时间: 2020年7月21日 14:35
收件人: liwei (CM) <liwei213@huawei.com>
抄送: Song Bao Hua (Barry Song) <song.bao.hua@hisilicon.com>; catalin.marinas@arm.com; will@kernel.org; fengbaopeng <fengbaopeng2@hisilicon.com>; nsaenzjulienne@suse.de; steve.capper@arm.com; linux-arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org; sujunfei <sujunfei2@hisilicon.com>; Xiaqing (A) <saberlily.xia@hisilicon.com>; Yaobaofeng (Yaobaofeng) <yaobaofeng@huawei.com>
主题: Re: 答复: [PATCH] arm64: mm: free unused memmap for sparse memory model that define VMEMMAP

Hi,

On Tue, Jul 21, 2020 at 01:56:33AM +0000, liwei (CM) wrote:
> Hi, all
> 
> I'm sorry to bother you, but still very hope you can give comments or suggestions to this patch, thank you very much.
 
I cannot find your patch neither in Inbox nor in the public archives.
Can you resend it please?

Hi, Mike

I resend the patch, if you see please give advice, thanks!



> -----邮件原件-----
> 发件人: Song Bao Hua (Barry Song)
> 发送时间: 2020年7月9日 20:27
> 收件人: liwei (CM) <liwei213@huawei.com>; catalin.marinas@arm.com; 
> will@kernel.org
> 抄送: fengbaopeng <fengbaopeng2@hisilicon.com>; nsaenzjulienne@suse.de; 
> steve.capper@arm.com; rppt@linux.ibm.com; 
> linux-arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org; 
> sujunfei <sujunfei2@hisilicon.com>; Xiaqing (A) 
> <saberlily.xia@hisilicon.com>; Yaobaofeng (Yaobaofeng) 
> <yaobaofeng@huawei.com>
> 主题: RE: [PATCH] arm64: mm: free unused memmap for sparse memory model 
> that define VMEMMAP
> 
> 
> 
> > -----Original Message-----
> > From: liwei (CM)
> > Sent: Wednesday, July 8, 2020 7:52 PM
> > To: Song Bao Hua (Barry Song) <song.bao.hua@hisilicon.com>; 
> > catalin.marinas@arm.com; will@kernel.org
> > Cc: fengbaopeng <fengbaopeng2@hisilicon.com>; 
> > nsaenzjulienne@suse.de; steve.capper@arm.com; rppt@linux.ibm.com; 
> > linux-arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org; 
> > sujunfei <sujunfei2@hisilicon.com>; Xiaqing (A) 
> > <saberlily.xia@hisilicon.com>; Yaobaofeng (Yaobaofeng) 
> > <yaobaofeng@huawei.com>
> > Subject: 答复: [PATCH] arm64: mm: free unused memmap for sparse memory 
> > model that define VMEMMAP
> > 
> > Hi, baohua
> > 
> > Thank you for your attention.
> > 
> > In my understanding of the MEMORY_HOTPLUG this patch has no effect on it.
> > The reason is that in sparse_add_one_section() the memory that 
> > memmap needs from Slab if kernel start completed,this memory has 
> > nothing to do with memblock alloc/ free memory in the process of kernel start.
> > 
> > You may have a look vmemmap_alloc_block () this function.
> > 
> > If I don't understand right welcome pointed out in a timely manner.
> 
> At the first glance of this patch, I suspect that this bootmem may be used by hot-added memory.
> If you confirm this won't happen, please ignore my noise.
> 
> BTW, next time, bear in mind that top-post is not a good way to reply 
> mail :-)
> 
> > 
> > Thanks!
> > 
> > 
> > -----邮件原件-----
> > 发件人: Song Bao Hua (Barry Song)
> > 发送时间: 2020年7月8日 15:19
> > 收件人: liwei (CM) <liwei213@huawei.com>; catalin.marinas@arm.com; 
> > will@kernel.org
> > 抄送: fengbaopeng <fengbaopeng2@hisilicon.com>; 
> > nsaenzjulienne@suse.de; steve.capper@arm.com; rppt@linux.ibm.com; 
> > linux-arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org; 
> > sujunfei <sujunfei2@hisilicon.com>
> > 主题: RE: [PATCH] arm64: mm: free unused memmap for sparse memory 
> > model that define VMEMMAP
> > 
> > 
> > 
> > > -----Original Message-----
> > > From: liwei (CM)
> > > Sent: Wednesday, July 8, 2020 1:56 PM
> > > To: catalin.marinas@arm.com; will@kernel.org
> > > Cc: liwei (CM) <liwei213@huawei.com>; fengbaopeng 
> > > <fengbaopeng2@hisilicon.com>; nsaenzjulienne@suse.de; 
> > > steve.capper@arm.com; rppt@linux.ibm.com; Song Bao Hua (Barry 
> > > Song) <song.bao.hua@hisilicon.com>; 
> > > linux-arm-kernel@lists.infradead.org;
> > > linux-kernel@vger.kernel.org; sujunfei <sujunfei2@hisilicon.com>
> > > Subject: [PATCH] arm64: mm: free unused memmap for sparse memory
> > model
> > > that define VMEMMAP
> > >
> > > For the memory hole, sparse memory model that define
> > SPARSEMEM_VMEMMAP
> > > do not free the reserved memory for the page map, this patch do it.
> > 
> > Hello Wei,
> > Just curious if this patch breaks MEMORY_HOTPLUG?
> > 
> > >
> > > Signed-off-by: Wei Li <liwei213@huawei.com>
> > > Signed-off-by: Chen Feng <puck.chen@hisilicon.com>
> > > Signed-off-by: Xia Qing <saberlily.xia@hisilicon.com>
> > > ---
> > >  arch/arm64/mm/init.c | 81
> > > +++++++++++++++++++++++++++++++++++++++++++++-------
> > >  1 file changed, 71 insertions(+), 10 deletions(-)
> > >
> > > diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c index 
> > > 1e93cfc7c47a..d1b56b47d5ba 100644
> > > --- a/arch/arm64/mm/init.c
> > > +++ b/arch/arm64/mm/init.c
> > > @@ -441,7 +441,48 @@ void __init bootmem_init(void)
> > >  	memblock_dump_all();
> > >  }
> > >
> > 
> > Thanks
> > Barry
> 

--
Sincerely yours,
Mike.
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH] arm64: mm: free unused memmap for sparse memory model that define VMEMMAP
  2020-07-21  7:32 ` Wei Li
  (?)
@ 2020-07-21 16:29 ` kernel test robot
  -1 siblings, 0 replies; 19+ messages in thread
From: kernel test robot @ 2020-07-21 16:29 UTC (permalink / raw
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 4569 bytes --]

Hi Wei,

I love your patch! Yet something to improve:

[auto build test ERROR on arm64/for-next/core]
[also build test ERROR on v5.8-rc6 next-20200721]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Wei-Li/arm64-mm-free-unused-memmap-for-sparse-memory-model-that-define-VMEMMAP/20200721-153408
base:   https://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-next/core
config: arm64-allyesconfig (attached as .config)
compiler: aarch64-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=arm64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   In file included from arch/arm64/include/asm/kernel-pgtable.h:11,
                    from arch/arm64/include/asm/uaccess.h:11,
                    from include/linux/uaccess.h:11,
                    from include/linux/sched/task.h:11,
                    from include/linux/sched/signal.h:9,
                    from include/linux/rcuwait.h:6,
                    from include/linux/percpu-rwsem.h:7,
                    from include/linux/fs.h:33,
                    from include/linux/cgroup.h:17,
                    from include/linux/memcontrol.h:13,
                    from include/linux/swap.h:9,
                    from arch/arm64/mm/init.c:12:
   arch/arm64/mm/init.c: In function 'free_memmap':
>> include/linux/pgtable.h:113:34: error: passing argument 1 of 'pud_offset' from incompatible pointer type [-Werror=incompatible-pointer-types]
     113 | #define pgd_offset(mm, address)  pgd_offset_pgd((mm)->pgd, (address))
         |                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         |                                  |
         |                                  pgd_t * {aka struct <anonymous> *}
   include/linux/pgtable.h:120:32: note: in expansion of macro 'pgd_offset'
     120 | #define pgd_offset_k(address)  pgd_offset(&init_mm, (address))
         |                                ^~~~~~~~~~
   arch/arm64/mm/init.c:457:30: note: in expansion of macro 'pgd_offset_k'
     457 |  pmd = pmd_offset(pud_offset(pgd_offset_k(addr), addr), addr);
         |                              ^~~~~~~~~~~~
   In file included from arch/arm64/include/asm/pgtable-types.h:50,
                    from arch/arm64/include/asm/kasan.h:9,
                    from arch/arm64/include/asm/processor.h:36,
                    from include/asm-generic/qrwlock.h:14,
                    from ./arch/arm64/include/generated/asm/qrwlock.h:1,
                    from arch/arm64/include/asm/spinlock.h:8,
                    from include/linux/spinlock.h:89,
                    from include/linux/swap.h:5,
                    from arch/arm64/mm/init.c:12:
   include/asm-generic/pgtable-nopud.h:42:40: note: expected 'p4d_t *' {aka 'struct <anonymous> *'} but argument is of type 'pgd_t *' {aka 'struct <anonymous> *'}
      42 | static inline pud_t *pud_offset(p4d_t *p4d, unsigned long address)
         |                                 ~~~~~~~^~~
>> arch/arm64/mm/init.c:467:4: error: implicit declaration of function 'free_bootmem'; did you mean 'free_initmem'? [-Werror=implicit-function-declaration]
     467 |    free_bootmem(phys_addr, PMD_SIZE);
         |    ^~~~~~~~~~~~
         |    free_initmem
   cc1: some warnings being treated as errors

vim +/pud_offset +113 include/linux/pgtable.h

974b9b2c68f3d3 Mike Rapoport 2020-06-08  108  
974b9b2c68f3d3 Mike Rapoport 2020-06-08  109  /*
974b9b2c68f3d3 Mike Rapoport 2020-06-08  110   * a shortcut to get a pgd_t in a given mm
974b9b2c68f3d3 Mike Rapoport 2020-06-08  111   */
974b9b2c68f3d3 Mike Rapoport 2020-06-08  112  #ifndef pgd_offset
974b9b2c68f3d3 Mike Rapoport 2020-06-08 @113  #define pgd_offset(mm, address)		pgd_offset_pgd((mm)->pgd, (address))
974b9b2c68f3d3 Mike Rapoport 2020-06-08  114  #endif
974b9b2c68f3d3 Mike Rapoport 2020-06-08  115  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 73584 bytes --]

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH] arm64: mm: free unused memmap for sparse memory model that define VMEMMAP
  2020-07-21  7:32 ` Wei Li
@ 2020-07-22  6:07   ` Mike Rapoport
  -1 siblings, 0 replies; 19+ messages in thread
From: Mike Rapoport @ 2020-07-22  6:07 UTC (permalink / raw
  To: Wei Li
  Cc: catalin.marinas, will, saberlily.xia, puck.chen, butao,
	fengbaopeng2, nsaenzjulienne, steve.capper, song.bao.hua,
	linux-arm-kernel, linux-kernel, sujunfei2

Hi,

On Tue, Jul 21, 2020 at 03:32:03PM +0800, Wei Li wrote:
> For the memory hole, sparse memory model that define SPARSEMEM_VMEMMAP
> do not free the reserved memory for the page map, this patch do it.

Are there numbers showing how much memory is actually freed?

The freeing of empty memmap would become rather complex with these
changes, do the memory savings justify it?

> Signed-off-by: Wei Li <liwei213@huawei.com>
> Signed-off-by: Chen Feng <puck.chen@hisilicon.com>
> Signed-off-by: Xia Qing <saberlily.xia@hisilicon.com>
> ---
>  arch/arm64/mm/init.c | 81 +++++++++++++++++++++++++++++++++++++++++++++-------
>  1 file changed, 71 insertions(+), 10 deletions(-)
> 
> diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c
> index 1e93cfc7c47a..d1b56b47d5ba 100644
> --- a/arch/arm64/mm/init.c
> +++ b/arch/arm64/mm/init.c
> @@ -441,7 +441,48 @@ void __init bootmem_init(void)
>  	memblock_dump_all();
>  }
> 
> -#ifndef CONFIG_SPARSEMEM_VMEMMAP
> +#ifdef CONFIG_SPARSEMEM_VMEMMAP
> +#define VMEMMAP_PAGE_INUSE 0xFD
> +static inline void free_memmap(unsigned long start_pfn, unsigned long end_pfn)
> +{
> +	unsigned long addr, end;
> +	unsigned long next;
> +	pmd_t *pmd;
> +	void *page_addr;
> +	phys_addr_t phys_addr;
> +
> +	addr = (unsigned long)pfn_to_page(start_pfn);
> +	end = (unsigned long)pfn_to_page(end_pfn);
> +
> +	pmd = pmd_offset(pud_offset(pgd_offset_k(addr), addr), addr);
> +	for (; addr < end; addr = next, pmd++) {
> +		next = pmd_addr_end(addr, end);
> +
> +		if (!pmd_present(*pmd))
> +			continue;
> +
> +		if (IS_ALIGNED(addr, PMD_SIZE) &&
> +			IS_ALIGNED(next, PMD_SIZE)) {
> +			phys_addr = __pfn_to_phys(pmd_pfn(*pmd));
> +			free_bootmem(phys_addr, PMD_SIZE);
> +			pmd_clear(pmd);
> +		} else {
> +			/* If here, we are freeing vmemmap pages. */
> +			memset((void *)addr, VMEMMAP_PAGE_INUSE, next - addr);
> +			page_addr = page_address(pmd_page(*pmd));
> +
> +			if (!memchr_inv(page_addr, VMEMMAP_PAGE_INUSE,
> +				PMD_SIZE)) {
> +				phys_addr = __pfn_to_phys(pmd_pfn(*pmd));
> +				free_bootmem(phys_addr, PMD_SIZE);
> +				pmd_clear(pmd);
> +			}
> +		}
> +	}
> +
> +	flush_tlb_all();
> +}
> +#else
>  static inline void free_memmap(unsigned long start_pfn, unsigned long end_pfn)
>  {
>  	struct page *start_pg, *end_pg;
> @@ -468,31 +509,53 @@ static inline void free_memmap(unsigned long start_pfn, unsigned long end_pfn)
>  		memblock_free(pg, pgend - pg);
>  }
> 
> +#endif
> +
>  /*
>   * The mem_map array can get very big. Free the unused area of the memory map.
>   */
>  static void __init free_unused_memmap(void)
>  {
> -	unsigned long start, prev_end = 0;
> +	unsigned long start, cur_start, prev_end = 0;
>  	struct memblock_region *reg;
> 
>  	for_each_memblock(memory, reg) {
> -		start = __phys_to_pfn(reg->base);
> +		cur_start = __phys_to_pfn(reg->base);
> 
>  #ifdef CONFIG_SPARSEMEM
>  		/*
>  		 * Take care not to free memmap entries that don't exist due
>  		 * to SPARSEMEM sections which aren't present.
>  		 */
> -		start = min(start, ALIGN(prev_end, PAGES_PER_SECTION));
> -#endif
> +		start = min(cur_start, ALIGN(prev_end, PAGES_PER_SECTION));
> +
>  		/*
> -		 * If we had a previous bank, and there is a space between the
> -		 * current bank and the previous, free it.
> +		 * Free memory in the case of:
> +		 * 1. if cur_start - prev_end <= PAGES_PER_SECTION,
> +		 * free pre_end ~ cur_start.
> +		 * 2. if cur_start - prev_end > PAGES_PER_SECTION,
> +		 * free pre_end ~ ALIGN(prev_end, PAGES_PER_SECTION).
>  		 */
>  		if (prev_end && prev_end < start)
>  			free_memmap(prev_end, start);
> 
> +		/*
> +		 * Free memory in the case of:
> +		 * if cur_start - prev_end > PAGES_PER_SECTION,
> +		 * free ALIGN_DOWN(cur_start, PAGES_PER_SECTION) ~ cur_start.
> +		 */
> +		if (cur_start > start &&
> +		    !IS_ALIGNED(cur_start, PAGES_PER_SECTION))
> +			free_memmap(ALIGN_DOWN(cur_start, PAGES_PER_SECTION),
> +				    cur_start);
> +#else
> +		/*
> +		 * If we had a previous bank, and there is a space between the
> +		 * current bank and the previous, free it.
> +		 */
> +		if (prev_end && prev_end < cur_start)
> +			free_memmap(prev_end, cur_start);
> +#endif
>  		/*
>  		 * Align up here since the VM subsystem insists that the
>  		 * memmap entries are valid from the bank end aligned to
> @@ -507,7 +570,6 @@ static void __init free_unused_memmap(void)
>  		free_memmap(prev_end, ALIGN(prev_end, PAGES_PER_SECTION));
>  #endif
>  }
> -#endif	/* !CONFIG_SPARSEMEM_VMEMMAP */
> 
>  /*
>   * mem_init() marks the free areas in the mem_map and tells us how much memory
> @@ -524,9 +586,8 @@ void __init mem_init(void)
> 
>  	set_max_mapnr(max_pfn - PHYS_PFN_OFFSET);
> 
> -#ifndef CONFIG_SPARSEMEM_VMEMMAP
>  	free_unused_memmap();
> -#endif
> +
>  	/* this will put all unused low memory onto the freelists */
>  	memblock_free_all();
> 
> --
> 2.15.0
> 

-- 
Sincerely yours,
Mike.

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH] arm64: mm: free unused memmap for sparse memory model that define VMEMMAP
@ 2020-07-22  6:07   ` Mike Rapoport
  0 siblings, 0 replies; 19+ messages in thread
From: Mike Rapoport @ 2020-07-22  6:07 UTC (permalink / raw
  To: Wei Li
  Cc: song.bao.hua, linux-arm-kernel, steve.capper, catalin.marinas,
	sujunfei2, linux-kernel, fengbaopeng2, saberlily.xia, puck.chen,
	will, nsaenzjulienne, butao

Hi,

On Tue, Jul 21, 2020 at 03:32:03PM +0800, Wei Li wrote:
> For the memory hole, sparse memory model that define SPARSEMEM_VMEMMAP
> do not free the reserved memory for the page map, this patch do it.

Are there numbers showing how much memory is actually freed?

The freeing of empty memmap would become rather complex with these
changes, do the memory savings justify it?

> Signed-off-by: Wei Li <liwei213@huawei.com>
> Signed-off-by: Chen Feng <puck.chen@hisilicon.com>
> Signed-off-by: Xia Qing <saberlily.xia@hisilicon.com>
> ---
>  arch/arm64/mm/init.c | 81 +++++++++++++++++++++++++++++++++++++++++++++-------
>  1 file changed, 71 insertions(+), 10 deletions(-)
> 
> diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c
> index 1e93cfc7c47a..d1b56b47d5ba 100644
> --- a/arch/arm64/mm/init.c
> +++ b/arch/arm64/mm/init.c
> @@ -441,7 +441,48 @@ void __init bootmem_init(void)
>  	memblock_dump_all();
>  }
> 
> -#ifndef CONFIG_SPARSEMEM_VMEMMAP
> +#ifdef CONFIG_SPARSEMEM_VMEMMAP
> +#define VMEMMAP_PAGE_INUSE 0xFD
> +static inline void free_memmap(unsigned long start_pfn, unsigned long end_pfn)
> +{
> +	unsigned long addr, end;
> +	unsigned long next;
> +	pmd_t *pmd;
> +	void *page_addr;
> +	phys_addr_t phys_addr;
> +
> +	addr = (unsigned long)pfn_to_page(start_pfn);
> +	end = (unsigned long)pfn_to_page(end_pfn);
> +
> +	pmd = pmd_offset(pud_offset(pgd_offset_k(addr), addr), addr);
> +	for (; addr < end; addr = next, pmd++) {
> +		next = pmd_addr_end(addr, end);
> +
> +		if (!pmd_present(*pmd))
> +			continue;
> +
> +		if (IS_ALIGNED(addr, PMD_SIZE) &&
> +			IS_ALIGNED(next, PMD_SIZE)) {
> +			phys_addr = __pfn_to_phys(pmd_pfn(*pmd));
> +			free_bootmem(phys_addr, PMD_SIZE);
> +			pmd_clear(pmd);
> +		} else {
> +			/* If here, we are freeing vmemmap pages. */
> +			memset((void *)addr, VMEMMAP_PAGE_INUSE, next - addr);
> +			page_addr = page_address(pmd_page(*pmd));
> +
> +			if (!memchr_inv(page_addr, VMEMMAP_PAGE_INUSE,
> +				PMD_SIZE)) {
> +				phys_addr = __pfn_to_phys(pmd_pfn(*pmd));
> +				free_bootmem(phys_addr, PMD_SIZE);
> +				pmd_clear(pmd);
> +			}
> +		}
> +	}
> +
> +	flush_tlb_all();
> +}
> +#else
>  static inline void free_memmap(unsigned long start_pfn, unsigned long end_pfn)
>  {
>  	struct page *start_pg, *end_pg;
> @@ -468,31 +509,53 @@ static inline void free_memmap(unsigned long start_pfn, unsigned long end_pfn)
>  		memblock_free(pg, pgend - pg);
>  }
> 
> +#endif
> +
>  /*
>   * The mem_map array can get very big. Free the unused area of the memory map.
>   */
>  static void __init free_unused_memmap(void)
>  {
> -	unsigned long start, prev_end = 0;
> +	unsigned long start, cur_start, prev_end = 0;
>  	struct memblock_region *reg;
> 
>  	for_each_memblock(memory, reg) {
> -		start = __phys_to_pfn(reg->base);
> +		cur_start = __phys_to_pfn(reg->base);
> 
>  #ifdef CONFIG_SPARSEMEM
>  		/*
>  		 * Take care not to free memmap entries that don't exist due
>  		 * to SPARSEMEM sections which aren't present.
>  		 */
> -		start = min(start, ALIGN(prev_end, PAGES_PER_SECTION));
> -#endif
> +		start = min(cur_start, ALIGN(prev_end, PAGES_PER_SECTION));
> +
>  		/*
> -		 * If we had a previous bank, and there is a space between the
> -		 * current bank and the previous, free it.
> +		 * Free memory in the case of:
> +		 * 1. if cur_start - prev_end <= PAGES_PER_SECTION,
> +		 * free pre_end ~ cur_start.
> +		 * 2. if cur_start - prev_end > PAGES_PER_SECTION,
> +		 * free pre_end ~ ALIGN(prev_end, PAGES_PER_SECTION).
>  		 */
>  		if (prev_end && prev_end < start)
>  			free_memmap(prev_end, start);
> 
> +		/*
> +		 * Free memory in the case of:
> +		 * if cur_start - prev_end > PAGES_PER_SECTION,
> +		 * free ALIGN_DOWN(cur_start, PAGES_PER_SECTION) ~ cur_start.
> +		 */
> +		if (cur_start > start &&
> +		    !IS_ALIGNED(cur_start, PAGES_PER_SECTION))
> +			free_memmap(ALIGN_DOWN(cur_start, PAGES_PER_SECTION),
> +				    cur_start);
> +#else
> +		/*
> +		 * If we had a previous bank, and there is a space between the
> +		 * current bank and the previous, free it.
> +		 */
> +		if (prev_end && prev_end < cur_start)
> +			free_memmap(prev_end, cur_start);
> +#endif
>  		/*
>  		 * Align up here since the VM subsystem insists that the
>  		 * memmap entries are valid from the bank end aligned to
> @@ -507,7 +570,6 @@ static void __init free_unused_memmap(void)
>  		free_memmap(prev_end, ALIGN(prev_end, PAGES_PER_SECTION));
>  #endif
>  }
> -#endif	/* !CONFIG_SPARSEMEM_VMEMMAP */
> 
>  /*
>   * mem_init() marks the free areas in the mem_map and tells us how much memory
> @@ -524,9 +586,8 @@ void __init mem_init(void)
> 
>  	set_max_mapnr(max_pfn - PHYS_PFN_OFFSET);
> 
> -#ifndef CONFIG_SPARSEMEM_VMEMMAP
>  	free_unused_memmap();
> -#endif
> +
>  	/* this will put all unused low memory onto the freelists */
>  	memblock_free_all();
> 
> --
> 2.15.0
> 

-- 
Sincerely yours,
Mike.

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH] arm64: mm: free unused memmap for sparse memory model that define VMEMMAP
  2020-07-21  7:32 ` Wei Li
@ 2020-07-23  2:33   ` Anshuman Khandual
  -1 siblings, 0 replies; 19+ messages in thread
From: Anshuman Khandual @ 2020-07-23  2:33 UTC (permalink / raw
  To: Wei Li, catalin.marinas, will
  Cc: song.bao.hua, sujunfei2, saberlily.xia, linux-arm-kernel,
	steve.capper, puck.chen, linux-kernel, rppt, fengbaopeng2,
	nsaenzjulienne, butao



On 07/21/2020 01:02 PM, Wei Li wrote:
> For the memory hole, sparse memory model that define SPARSEMEM_VMEMMAP
> do not free the reserved memory for the page map, this patch do it.
> 
> Signed-off-by: Wei Li <liwei213@huawei.com>
> Signed-off-by: Chen Feng <puck.chen@hisilicon.com>
> Signed-off-by: Xia Qing <saberlily.xia@hisilicon.com>
> ---
>  arch/arm64/mm/init.c | 81 +++++++++++++++++++++++++++++++++++++++++++++-------
>  1 file changed, 71 insertions(+), 10 deletions(-)

This patch does not compile on 5.8-rc6 with defconfig.

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH] arm64: mm: free unused memmap for sparse memory model that define VMEMMAP
@ 2020-07-23  2:33   ` Anshuman Khandual
  0 siblings, 0 replies; 19+ messages in thread
From: Anshuman Khandual @ 2020-07-23  2:33 UTC (permalink / raw
  To: Wei Li, catalin.marinas, will
  Cc: song.bao.hua, steve.capper, puck.chen, sujunfei2, linux-kernel,
	rppt, nsaenzjulienne, saberlily.xia, butao, linux-arm-kernel,
	fengbaopeng2



On 07/21/2020 01:02 PM, Wei Li wrote:
> For the memory hole, sparse memory model that define SPARSEMEM_VMEMMAP
> do not free the reserved memory for the page map, this patch do it.
> 
> Signed-off-by: Wei Li <liwei213@huawei.com>
> Signed-off-by: Chen Feng <puck.chen@hisilicon.com>
> Signed-off-by: Xia Qing <saberlily.xia@hisilicon.com>
> ---
>  arch/arm64/mm/init.c | 81 +++++++++++++++++++++++++++++++++++++++++++++-------
>  1 file changed, 71 insertions(+), 10 deletions(-)

This patch does not compile on 5.8-rc6 with defconfig.

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2020-07-23  2:35 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20200708015555.14946-1-liwei213@huawei.com>
2020-07-08  7:18 ` [PATCH] arm64: mm: free unused memmap for sparse memory model that define VMEMMAP Song Bao Hua (Barry Song)
2020-07-08  7:18   ` Song Bao Hua (Barry Song)
2020-07-08  7:51   ` 答复: " liwei (CM)
2020-07-08  7:51     ` liwei (CM)
2020-07-09 12:27     ` Song Bao Hua (Barry Song)
2020-07-09 12:27       ` Song Bao Hua (Barry Song)
2020-07-21  1:56       ` 答复: " liwei (CM)
2020-07-21  1:56         ` liwei (CM)
2020-07-21  6:35         ` Mike Rapoport
2020-07-21  6:35           ` Mike Rapoport
2020-07-21 12:27           ` 答复: " liwei (CM)
2020-07-21 12:27             ` liwei (CM)
2020-07-21  7:32 Wei Li
2020-07-21  7:32 ` Wei Li
2020-07-21 16:29 ` kernel test robot
2020-07-22  6:07 ` Mike Rapoport
2020-07-22  6:07   ` Mike Rapoport
2020-07-23  2:33 ` Anshuman Khandual
2020-07-23  2:33   ` Anshuman Khandual

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.