* Re: [PATCH v3] arm64/mm: add fallback option to allocate virtually contiguous memory
2020-10-15 0:51 ` Sudarshan Rajagopalan
@ 2020-10-15 8:36 ` Will Deacon
2020-10-16 18:49 ` Sudarshan Rajagopalan
2020-10-16 18:56 ` [PATCH v4] " Sudarshan Rajagopalan
` (2 subsequent siblings)
3 siblings, 1 reply; 10+ messages in thread
From: Will Deacon @ 2020-10-15 8:36 UTC (permalink / raw)
To: Sudarshan Rajagopalan
Cc: Mark Rutland, Gavin Shan, Anshuman Khandual, Catalin Marinas,
David Hildenbrand, linux-kernel, Steven Price, Andrew Morton,
Logan Gunthorpe, linux-arm-kernel
On Wed, Oct 14, 2020 at 05:51:23PM -0700, Sudarshan Rajagopalan wrote:
> When section mappings are enabled, we allocate vmemmap pages from
> physically continuous memory of size PMD_SIZE using
> vmemmap_alloc_block_buf(). Section mappings are good to reduce TLB
> pressure. But when system is highly fragmented and memory blocks are
> being hot-added at runtime, its possible that such physically continuous
> memory allocations can fail. Rather than failing the memory hot-add
> procedure, add a fallback option to allocate vmemmap pages from
> discontinuous pages using vmemmap_populate_basepages().
>
> Signed-off-by: Sudarshan Rajagopalan <sudaraja@codeaurora.org>
> Reviewed-by: Gavin Shan <gshan@redhat.com>
> Reviewed-by: Anshuman Khandual <anshuman.khandual@arm.com>
> Cc: Catalin Marinas <catalin.marinas@arm.com>
> Cc: Will Deacon <will@kernel.org>
> Cc: Anshuman Khandual <anshuman.khandual@arm.com>
> Cc: Mark Rutland <mark.rutland@arm.com>
> Cc: Logan Gunthorpe <logang@deltatee.com>
> Cc: David Hildenbrand <david@redhat.com>
> Cc: Andrew Morton <akpm@linux-foundation.org>
> Cc: Steven Price <steven.price@arm.com>
> ---
> arch/arm64/mm/mmu.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
Please can you fix the subject? I have three copies of "PATCH v3" from
different days in my inbox. I know it sounds trivial, but getting these
little things right really helps with review, especially when it's sitting
amongst a sea of other patches.
Thanks,
Will
_______________________________________________
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] 10+ messages in thread
* Re: [PATCH v3] arm64/mm: add fallback option to allocate virtually contiguous memory
2020-10-15 8:36 ` Will Deacon
@ 2020-10-16 18:49 ` Sudarshan Rajagopalan
0 siblings, 0 replies; 10+ messages in thread
From: Sudarshan Rajagopalan @ 2020-10-16 18:49 UTC (permalink / raw)
To: Will Deacon
Cc: Mark Rutland, Gavin Shan, Anshuman Khandual, Catalin Marinas,
David Hildenbrand, linux-kernel, Steven Price, Andrew Morton,
Logan Gunthorpe, linux-arm-kernel
On 2020-10-15 01:36, Will Deacon wrote:
> On Wed, Oct 14, 2020 at 05:51:23PM -0700, Sudarshan Rajagopalan wrote:
>> When section mappings are enabled, we allocate vmemmap pages from
>> physically continuous memory of size PMD_SIZE using
>> vmemmap_alloc_block_buf(). Section mappings are good to reduce TLB
>> pressure. But when system is highly fragmented and memory blocks are
>> being hot-added at runtime, its possible that such physically
>> continuous
>> memory allocations can fail. Rather than failing the memory hot-add
>> procedure, add a fallback option to allocate vmemmap pages from
>> discontinuous pages using vmemmap_populate_basepages().
>>
>> Signed-off-by: Sudarshan Rajagopalan <sudaraja@codeaurora.org>
>> Reviewed-by: Gavin Shan <gshan@redhat.com>
>> Reviewed-by: Anshuman Khandual <anshuman.khandual@arm.com>
>> Cc: Catalin Marinas <catalin.marinas@arm.com>
>> Cc: Will Deacon <will@kernel.org>
>> Cc: Anshuman Khandual <anshuman.khandual@arm.com>
>> Cc: Mark Rutland <mark.rutland@arm.com>
>> Cc: Logan Gunthorpe <logang@deltatee.com>
>> Cc: David Hildenbrand <david@redhat.com>
>> Cc: Andrew Morton <akpm@linux-foundation.org>
>> Cc: Steven Price <steven.price@arm.com>
>> ---
>> arch/arm64/mm/mmu.c | 7 +++++--
>> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> Please can you fix the subject? I have three copies of "PATCH v3" from
> different days in my inbox. I know it sounds trivial, but getting these
> little things right really helps with review, especially when it's
> sitting
> amongst a sea of other patches.
Yes sure, sorry about that - will change it to "PATCH v4" to make it
stand out from other patches.
>
> Thanks,
>
> Will
Sudarshan
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a
Linux Foundation Collaborative Project
_______________________________________________
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] 10+ messages in thread
* [PATCH v4] arm64/mm: add fallback option to allocate virtually contiguous memory
2020-10-15 0:51 ` Sudarshan Rajagopalan
2020-10-15 8:36 ` Will Deacon
@ 2020-10-16 18:56 ` Sudarshan Rajagopalan
2020-11-05 0:03 ` Sudarshan Rajagopalan
2020-11-06 13:43 ` Will Deacon
3 siblings, 0 replies; 10+ messages in thread
From: Sudarshan Rajagopalan @ 2020-10-16 18:56 UTC (permalink / raw)
To: linux-arm-kernel, linux-kernel
Cc: Mark Rutland, Gavin Shan, Anshuman Khandual, Catalin Marinas,
Sudarshan Rajagopalan, David Hildenbrand, Steven Price,
Logan Gunthorpe, Andrew Morton, Will Deacon
When section mappings are enabled, we allocate vmemmap pages from
physically continuous memory of size PMD_SIZE using
vmemmap_alloc_block_buf(). Section mappings are good to reduce TLB
pressure. But when system is highly fragmented and memory blocks are
being hot-added at runtime, its possible that such physically continuous
memory allocations can fail. Rather than failing the memory hot-add
procedure, add a fallback option to allocate vmemmap pages from
discontinuous pages using vmemmap_populate_basepages().
Signed-off-by: Sudarshan Rajagopalan <sudaraja@codeaurora.org>
Reviewed-by: Gavin Shan <gshan@redhat.com>
Reviewed-by: Anshuman Khandual <anshuman.khandual@arm.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Anshuman Khandual <anshuman.khandual@arm.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Logan Gunthorpe <logang@deltatee.com>
Cc: David Hildenbrand <david@redhat.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Steven Price <steven.price@arm.com>
---
arch/arm64/mm/mmu.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c
index 75df62fea1b6..44486fd0e883 100644
--- a/arch/arm64/mm/mmu.c
+++ b/arch/arm64/mm/mmu.c
@@ -1121,8 +1121,11 @@ int __meminit vmemmap_populate(unsigned long start, unsigned long end, int node,
void *p = NULL;
p = vmemmap_alloc_block_buf(PMD_SIZE, node, altmap);
- if (!p)
- return -ENOMEM;
+ if (!p) {
+ if (vmemmap_populate_basepages(addr, next, node, altmap))
+ return -ENOMEM;
+ continue;
+ }
pmd_set_huge(pmdp, __pa(p), __pgprot(PROT_SECT_NORMAL));
} else
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project
_______________________________________________
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] 10+ messages in thread
* Re: [PATCH v4] arm64/mm: add fallback option to allocate virtually contiguous memory
2020-10-15 0:51 ` Sudarshan Rajagopalan
2020-10-15 8:36 ` Will Deacon
2020-10-16 18:56 ` [PATCH v4] " Sudarshan Rajagopalan
@ 2020-11-05 0:03 ` Sudarshan Rajagopalan
2020-11-06 14:38 ` Catalin Marinas
2020-11-06 13:43 ` Will Deacon
3 siblings, 1 reply; 10+ messages in thread
From: Sudarshan Rajagopalan @ 2020-11-05 0:03 UTC (permalink / raw)
To: Will Deacon, Catalin Marinas, linux-arm-kernel, linux-kernel
Cc: Mark Rutland, Gavin Shan, David Hildenbrand, Anshuman Khandual,
Steven Price, Andrew Morton, Logan Gunthorpe
On 2020-10-16 11:56, Sudarshan Rajagopalan wrote:
Hello Will, Catalin,
Did you have a chance to review this patch? It is reviewed by others and
haven't seen any Nacks. This patch will be useful to have so that memory
hotremove doesn't fail when such PMD_SIZE pages aren't available.. which
is usually the case in low RAM devices.
> When section mappings are enabled, we allocate vmemmap pages from
> physically continuous memory of size PMD_SIZE using
> vmemmap_alloc_block_buf(). Section mappings are good to reduce TLB
> pressure. But when system is highly fragmented and memory blocks are
> being hot-added at runtime, its possible that such physically
> continuous
> memory allocations can fail. Rather than failing the memory hot-add
> procedure, add a fallback option to allocate vmemmap pages from
> discontinuous pages using vmemmap_populate_basepages().
>
> Signed-off-by: Sudarshan Rajagopalan <sudaraja@codeaurora.org>
> Reviewed-by: Gavin Shan <gshan@redhat.com>
> Reviewed-by: Anshuman Khandual <anshuman.khandual@arm.com>
> Cc: Catalin Marinas <catalin.marinas@arm.com>
> Cc: Will Deacon <will@kernel.org>
> Cc: Anshuman Khandual <anshuman.khandual@arm.com>
> Cc: Mark Rutland <mark.rutland@arm.com>
> Cc: Logan Gunthorpe <logang@deltatee.com>
> Cc: David Hildenbrand <david@redhat.com>
> Cc: Andrew Morton <akpm@linux-foundation.org>
> Cc: Steven Price <steven.price@arm.com>
> ---
> arch/arm64/mm/mmu.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c
> index 75df62fea1b6..44486fd0e883 100644
> --- a/arch/arm64/mm/mmu.c
> +++ b/arch/arm64/mm/mmu.c
> @@ -1121,8 +1121,11 @@ int __meminit vmemmap_populate(unsigned long
> start, unsigned long end, int node,
> void *p = NULL;
>
> p = vmemmap_alloc_block_buf(PMD_SIZE, node, altmap);
> - if (!p)
> - return -ENOMEM;
> + if (!p) {
> + if (vmemmap_populate_basepages(addr, next, node, altmap))
> + return -ENOMEM;
> + continue;
> + }
>
> pmd_set_huge(pmdp, __pa(p), __pgprot(PROT_SECT_NORMAL));
> } else
--
Sudarshan
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a
Linux Foundation Collaborative Project
_______________________________________________
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] 10+ messages in thread
* Re: [PATCH v4] arm64/mm: add fallback option to allocate virtually contiguous memory
2020-11-05 0:03 ` Sudarshan Rajagopalan
@ 2020-11-06 14:38 ` Catalin Marinas
0 siblings, 0 replies; 10+ messages in thread
From: Catalin Marinas @ 2020-11-06 14:38 UTC (permalink / raw)
To: Sudarshan Rajagopalan
Cc: Mark Rutland, Gavin Shan, Anshuman Khandual, Logan Gunthorpe,
David Hildenbrand, linux-kernel, Steven Price, Andrew Morton,
Will Deacon, linux-arm-kernel
On Wed, Nov 04, 2020 at 04:03:36PM -0800, Sudarshan Rajagopalan wrote:
> Did you have a chance to review this patch? It is reviewed by others and
> haven't seen any Nacks. This patch will be useful to have so that memory
> hotremove doesn't fail when such PMD_SIZE pages aren't available.. which is
> usually the case in low RAM devices.
Can you please post it again please with Will's ack? You posted a v4
which I think had the same message-id as v3. Mutt flagged it as
duplicate and I deleted it. Just to be sure (I'll queue it when we get
to -rc3).
Thanks.
--
Catalin
_______________________________________________
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] 10+ messages in thread
* Re: [PATCH v4] arm64/mm: add fallback option to allocate virtually contiguous memory
2020-10-15 0:51 ` Sudarshan Rajagopalan
` (2 preceding siblings ...)
2020-11-05 0:03 ` Sudarshan Rajagopalan
@ 2020-11-06 13:43 ` Will Deacon
3 siblings, 0 replies; 10+ messages in thread
From: Will Deacon @ 2020-11-06 13:43 UTC (permalink / raw)
To: Sudarshan Rajagopalan
Cc: Mark Rutland, Gavin Shan, Anshuman Khandual, Catalin Marinas,
David Hildenbrand, linux-kernel, Steven Price, Andrew Morton,
Logan Gunthorpe, linux-arm-kernel
On Fri, Oct 16, 2020 at 11:56:56AM -0700, Sudarshan Rajagopalan wrote:
> When section mappings are enabled, we allocate vmemmap pages from
> physically continuous memory of size PMD_SIZE using
> vmemmap_alloc_block_buf(). Section mappings are good to reduce TLB
> pressure. But when system is highly fragmented and memory blocks are
> being hot-added at runtime, its possible that such physically continuous
> memory allocations can fail. Rather than failing the memory hot-add
> procedure, add a fallback option to allocate vmemmap pages from
> discontinuous pages using vmemmap_populate_basepages().
>
> Signed-off-by: Sudarshan Rajagopalan <sudaraja@codeaurora.org>
> Reviewed-by: Gavin Shan <gshan@redhat.com>
> Reviewed-by: Anshuman Khandual <anshuman.khandual@arm.com>
> Cc: Catalin Marinas <catalin.marinas@arm.com>
> Cc: Will Deacon <will@kernel.org>
> Cc: Anshuman Khandual <anshuman.khandual@arm.com>
> Cc: Mark Rutland <mark.rutland@arm.com>
> Cc: Logan Gunthorpe <logang@deltatee.com>
> Cc: David Hildenbrand <david@redhat.com>
> Cc: Andrew Morton <akpm@linux-foundation.org>
> Cc: Steven Price <steven.price@arm.com>
> ---
> arch/arm64/mm/mmu.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c
> index 75df62fea1b6..44486fd0e883 100644
> --- a/arch/arm64/mm/mmu.c
> +++ b/arch/arm64/mm/mmu.c
> @@ -1121,8 +1121,11 @@ int __meminit vmemmap_populate(unsigned long start, unsigned long end, int node,
> void *p = NULL;
>
> p = vmemmap_alloc_block_buf(PMD_SIZE, node, altmap);
> - if (!p)
> - return -ENOMEM;
> + if (!p) {
> + if (vmemmap_populate_basepages(addr, next, node, altmap))
> + return -ENOMEM;
> + continue;
> + }
Looks fine to me:
Acked-by: Will Deacon <will@kernel.org>
Will
_______________________________________________
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] 10+ messages in thread