linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v8 0/4] Fix issues with huge mapping in ioremap for ARM64
@ 2018-04-03  8:00 Chintan Pandya
  2018-04-03  8:00 ` [PATCH v8 1/4] ioremap: Update pgtable free interfaces with addr Chintan Pandya
                   ` (5 more replies)
  0 siblings, 6 replies; 12+ messages in thread
From: Chintan Pandya @ 2018-04-03  8:00 UTC (permalink / raw)
  To: catalin.marinas, will.deacon, mark.rutland, toshi.kani
  Cc: arnd, ard.biesheuvel, marc.zyngier, james.morse,
	kristina.martsenko, takahiro.akashi, gregkh, tglx,
	linux-arm-kernel, linux-kernel, linux-arch, akpm, Chintan Pandya

This series of patches are follow up work (and depends on)
Toshi Kani <toshi.kani@hpe.com>'s patches "fix memory leak/
panic in ioremap huge pages".

This series of patches are tested on 4.9 kernel with Cortex-A75
based SoC.

These patches can also go into '-stable' branch (if accepted)
for 4.6 onwards.

>From V7->V8:
 - Properly fixed compilation issue in x86 file

>From V6->V7:
 - Fixed compilation issue in x86 case
 - V6 patches were not properly enumarated

>From V5->V6:
 - Use __flush_tlb_kernel_pgtable() for both PUD and PMD. Remove
   "bool tlb_inv" based variance as it is not need now
 - Re-naming for consistency

>From V4->V5:
 - Add new API __flush_tlb_kernel_pgtable(unsigned long addr)
   for kernel addresses

>From V3->V4:
 - Add header for 'addr' in x86 implementation
 - Re-order pmd/pud clear and table free
 - Avoid redundant TLB invalidatation in one perticular case

>From V2->V3:
 - Use the exisiting page table free interface to do arm64
   specific things

>From V1->V2:
 - Rebased my patches on top of "[PATCH v2 1/2] mm/vmalloc:
   Add interfaces to free unmapped page table"
 - Honored BBM for ARM64

Chintan Pandya (4):
  ioremap: Update pgtable free interfaces with addr
  arm64: tlbflush: Introduce __flush_tlb_kernel_pgtable
  arm64: Implement page table free interfaces
  Revert "arm64: Enforce BBM for huge IO/VMAP mappings"

 arch/arm64/include/asm/tlbflush.h |  6 ++++++
 arch/arm64/mm/mmu.c               | 37 +++++++++++++++++++++++++------------
 arch/x86/mm/pgtable.c             |  8 +++++---
 include/asm-generic/pgtable.h     |  8 ++++----
 lib/ioremap.c                     |  4 ++--
 5 files changed, 42 insertions(+), 21 deletions(-)

-- 
Qualcomm India Private Limited, on behalf of Qualcomm Innovation
Center, Inc., is a member of Code Aurora Forum, a Linux Foundation
Collaborative Project

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

* [PATCH v8 1/4] ioremap: Update pgtable free interfaces with addr
  2018-04-03  8:00 [PATCH v8 0/4] Fix issues with huge mapping in ioremap for ARM64 Chintan Pandya
@ 2018-04-03  8:00 ` Chintan Pandya
  2018-04-03  8:00 ` [PATCH v8 2/4] arm64: tlbflush: Introduce __flush_tlb_kernel_pgtable Chintan Pandya
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 12+ messages in thread
From: Chintan Pandya @ 2018-04-03  8:00 UTC (permalink / raw)
  To: catalin.marinas, will.deacon, mark.rutland, toshi.kani
  Cc: arnd, ard.biesheuvel, marc.zyngier, james.morse,
	kristina.martsenko, takahiro.akashi, gregkh, tglx,
	linux-arm-kernel, linux-kernel, linux-arch, akpm, Chintan Pandya

This patch ("mm/vmalloc: Add interfaces to free unmapped
page table") adds following 2 interfaces to free the page
table in case we implement huge mapping.

pud_free_pmd_page() and pmd_free_pte_page()

Some architectures (like arm64) needs to do proper TLB
maintanance after updating pagetable entry even in map.
Why ? Read this,
https://patchwork.kernel.org/patch/10134581/

Pass 'addr' in these interfaces so that proper TLB ops
can be performed.

Signed-off-by: Chintan Pandya <cpandya@codeaurora.org>
---
 arch/arm64/mm/mmu.c           | 4 ++--
 arch/x86/mm/pgtable.c         | 8 +++++---
 include/asm-generic/pgtable.h | 8 ++++----
 lib/ioremap.c                 | 4 ++--
 4 files changed, 13 insertions(+), 11 deletions(-)

diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c
index 2dbb2c9..da98828 100644
--- a/arch/arm64/mm/mmu.c
+++ b/arch/arm64/mm/mmu.c
@@ -973,12 +973,12 @@ int pmd_clear_huge(pmd_t *pmdp)
 	return 1;
 }
 
-int pud_free_pmd_page(pud_t *pud)
+int pud_free_pmd_page(pud_t *pud, unsigned long addr)
 {
 	return pud_none(*pud);
 }
 
-int pmd_free_pte_page(pmd_t *pmd)
+int pmd_free_pte_page(pmd_t *pmd, unsigned long addr)
 {
 	return pmd_none(*pmd);
 }
diff --git a/arch/x86/mm/pgtable.c b/arch/x86/mm/pgtable.c
index 34cda7e..cd95edc 100644
--- a/arch/x86/mm/pgtable.c
+++ b/arch/x86/mm/pgtable.c
@@ -706,11 +706,12 @@ int pmd_clear_huge(pmd_t *pmd)
 /**
  * pud_free_pmd_page - Clear pud entry and free pmd page.
  * @pud: Pointer to a PUD.
+ * @addr: Virtual address associated with pud.
  *
  * Context: The pud range has been unmaped and TLB purged.
  * Return: 1 if clearing the entry succeeded. 0 otherwise.
  */
-int pud_free_pmd_page(pud_t *pud)
+int pud_free_pmd_page(pud_t *pud, unsigned long addr)
 {
 	pmd_t *pmd;
 	int i;
@@ -721,7 +722,7 @@ int pud_free_pmd_page(pud_t *pud)
 	pmd = (pmd_t *)pud_page_vaddr(*pud);
 
 	for (i = 0; i < PTRS_PER_PMD; i++)
-		if (!pmd_free_pte_page(&pmd[i]))
+		if (!pmd_free_pte_page(&pmd[i], addr + (i * PMD_SIZE)))
 			return 0;
 
 	pud_clear(pud);
@@ -733,11 +734,12 @@ int pud_free_pmd_page(pud_t *pud)
 /**
  * pmd_free_pte_page - Clear pmd entry and free pte page.
  * @pmd: Pointer to a PMD.
+ * @addr: Virtual address associated with pmd.
  *
  * Context: The pmd range has been unmaped and TLB purged.
  * Return: 1 if clearing the entry succeeded. 0 otherwise.
  */
-int pmd_free_pte_page(pmd_t *pmd)
+int pmd_free_pte_page(pmd_t *pmd, unsigned long addr)
 {
 	pte_t *pte;
 
diff --git a/include/asm-generic/pgtable.h b/include/asm-generic/pgtable.h
index bfbb44a..e6310f4 100644
--- a/include/asm-generic/pgtable.h
+++ b/include/asm-generic/pgtable.h
@@ -983,8 +983,8 @@ static inline int p4d_clear_huge(p4d_t *p4d)
 int pmd_set_huge(pmd_t *pmd, phys_addr_t addr, pgprot_t prot);
 int pud_clear_huge(pud_t *pud);
 int pmd_clear_huge(pmd_t *pmd);
-int pud_free_pmd_page(pud_t *pud);
-int pmd_free_pte_page(pmd_t *pmd);
+int pud_free_pmd_page(pud_t *pud, unsigned long addr);
+int pmd_free_pte_page(pmd_t *pmd, unsigned long addr);
 #else	/* !CONFIG_HAVE_ARCH_HUGE_VMAP */
 static inline int p4d_set_huge(p4d_t *p4d, phys_addr_t addr, pgprot_t prot)
 {
@@ -1010,11 +1010,11 @@ static inline int pmd_clear_huge(pmd_t *pmd)
 {
 	return 0;
 }
-static inline int pud_free_pmd_page(pud_t *pud)
+static inline int pud_free_pmd_page(pud_t *pud, unsigned long addr)
 {
 	return 0;
 }
-static inline int pmd_free_pte_page(pmd_t *pmd)
+static inline int pmd_free_pte_page(pmd_t *pmd, unsigned long addr)
 {
 	return 0;
 }
diff --git a/lib/ioremap.c b/lib/ioremap.c
index 54e5bba..517f585 100644
--- a/lib/ioremap.c
+++ b/lib/ioremap.c
@@ -92,7 +92,7 @@ static inline int ioremap_pmd_range(pud_t *pud, unsigned long addr,
 		if (ioremap_pmd_enabled() &&
 		    ((next - addr) == PMD_SIZE) &&
 		    IS_ALIGNED(phys_addr + addr, PMD_SIZE) &&
-		    pmd_free_pte_page(pmd)) {
+		    pmd_free_pte_page(pmd, addr)) {
 			if (pmd_set_huge(pmd, phys_addr + addr, prot))
 				continue;
 		}
@@ -119,7 +119,7 @@ static inline int ioremap_pud_range(p4d_t *p4d, unsigned long addr,
 		if (ioremap_pud_enabled() &&
 		    ((next - addr) == PUD_SIZE) &&
 		    IS_ALIGNED(phys_addr + addr, PUD_SIZE) &&
-		    pud_free_pmd_page(pud)) {
+		    pud_free_pmd_page(pud, addr)) {
 			if (pud_set_huge(pud, phys_addr + addr, prot))
 				continue;
 		}
-- 
Qualcomm India Private Limited, on behalf of Qualcomm Innovation
Center, Inc., is a member of Code Aurora Forum, a Linux Foundation
Collaborative Project

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

* [PATCH v8 2/4] arm64: tlbflush: Introduce __flush_tlb_kernel_pgtable
  2018-04-03  8:00 [PATCH v8 0/4] Fix issues with huge mapping in ioremap for ARM64 Chintan Pandya
  2018-04-03  8:00 ` [PATCH v8 1/4] ioremap: Update pgtable free interfaces with addr Chintan Pandya
@ 2018-04-03  8:00 ` Chintan Pandya
  2018-04-27 10:29   ` Catalin Marinas
  2018-04-03  8:00 ` [PATCH v8 3/4] arm64: Implement page table free interfaces Chintan Pandya
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 12+ messages in thread
From: Chintan Pandya @ 2018-04-03  8:00 UTC (permalink / raw)
  To: catalin.marinas, will.deacon, mark.rutland, toshi.kani
  Cc: arnd, ard.biesheuvel, marc.zyngier, james.morse,
	kristina.martsenko, takahiro.akashi, gregkh, tglx,
	linux-arm-kernel, linux-kernel, linux-arch, akpm, Chintan Pandya

Add an interface to invalidate intermediate page tables
from TLB for kernel.

Signed-off-by: Chintan Pandya <cpandya@codeaurora.org>
---
 arch/arm64/include/asm/tlbflush.h | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/arch/arm64/include/asm/tlbflush.h b/arch/arm64/include/asm/tlbflush.h
index 9e82dd7..6a4816d 100644
--- a/arch/arm64/include/asm/tlbflush.h
+++ b/arch/arm64/include/asm/tlbflush.h
@@ -209,6 +209,12 @@ static inline void __flush_tlb_pgtable(struct mm_struct *mm,
 	dsb(ish);
 }
 
+static inline void __flush_tlb_kernel_pgtable(unsigned long addr)
+{
+	addr >>= 12;
+	__tlbi(vaae1is, addr);
+	dsb(ish);
+}
 #endif
 
 #endif
-- 
Qualcomm India Private Limited, on behalf of Qualcomm Innovation
Center, Inc., is a member of Code Aurora Forum, a Linux Foundation
Collaborative Project

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

* [PATCH v8 3/4] arm64: Implement page table free interfaces
  2018-04-03  8:00 [PATCH v8 0/4] Fix issues with huge mapping in ioremap for ARM64 Chintan Pandya
  2018-04-03  8:00 ` [PATCH v8 1/4] ioremap: Update pgtable free interfaces with addr Chintan Pandya
  2018-04-03  8:00 ` [PATCH v8 2/4] arm64: tlbflush: Introduce __flush_tlb_kernel_pgtable Chintan Pandya
@ 2018-04-03  8:00 ` Chintan Pandya
  2018-04-03  8:00 ` [PATCH v8 4/4] Revert "arm64: Enforce BBM for huge IO/VMAP mappings" Chintan Pandya
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 12+ messages in thread
From: Chintan Pandya @ 2018-04-03  8:00 UTC (permalink / raw)
  To: catalin.marinas, will.deacon, mark.rutland, toshi.kani
  Cc: arnd, ard.biesheuvel, marc.zyngier, james.morse,
	kristina.martsenko, takahiro.akashi, gregkh, tglx,
	linux-arm-kernel, linux-kernel, linux-arch, akpm, Chintan Pandya

Implement pud_free_pmd_page() and pmd_free_pte_page().

Implementation requires,
 1) Clearing off the current pud/pmd entry
 2) Invalidate TLB which could have previously
    valid but not stale entry
 3) Freeing of the un-used next level page tables

Signed-off-by: Chintan Pandya <cpandya@codeaurora.org>
---
 arch/arm64/mm/mmu.c | 29 +++++++++++++++++++++++++----
 1 file changed, 25 insertions(+), 4 deletions(-)

diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c
index da98828..0f651db 100644
--- a/arch/arm64/mm/mmu.c
+++ b/arch/arm64/mm/mmu.c
@@ -45,6 +45,7 @@
 #include <asm/memblock.h>
 #include <asm/mmu_context.h>
 #include <asm/ptdump.h>
+#include <asm/tlbflush.h>
 
 #define NO_BLOCK_MAPPINGS	BIT(0)
 #define NO_CONT_MAPPINGS	BIT(1)
@@ -973,12 +974,32 @@ int pmd_clear_huge(pmd_t *pmdp)
 	return 1;
 }
 
-int pud_free_pmd_page(pud_t *pud, unsigned long addr)
+int pmd_free_pte_page(pmd_t *pmdp, unsigned long addr)
 {
-	return pud_none(*pud);
+	pmd_t *table;
+
+	if (pmd_present(READ_ONCE(*pmdp))) {
+		table = __va(pmd_val(*pmdp));
+		pmd_clear(pmdp);
+		__flush_tlb_kernel_pgtable(addr);
+		free_page((unsigned long) table);
+	}
+	return 1;
 }
 
-int pmd_free_pte_page(pmd_t *pmd, unsigned long addr)
+int pud_free_pmd_page(pud_t *pudp, unsigned long addr)
 {
-	return pmd_none(*pmd);
+	pmd_t *table;
+	int i;
+
+	if (pud_present(READ_ONCE(*pudp))) {
+		table = __va(pud_val(*pudp));
+		for (i = 0; i < PTRS_PER_PMD; i++)
+			pmd_free_pte_page(&table[i], addr + (i * PMD_SIZE));
+
+		pud_clear(pudp);
+		__flush_tlb_kernel_pgtable(addr);
+		free_page((unsigned long) table);
+	}
+	return 1;
 }
-- 
Qualcomm India Private Limited, on behalf of Qualcomm Innovation
Center, Inc., is a member of Code Aurora Forum, a Linux Foundation
Collaborative Project

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

* [PATCH v8 4/4] Revert "arm64: Enforce BBM for huge IO/VMAP mappings"
  2018-04-03  8:00 [PATCH v8 0/4] Fix issues with huge mapping in ioremap for ARM64 Chintan Pandya
                   ` (2 preceding siblings ...)
  2018-04-03  8:00 ` [PATCH v8 3/4] arm64: Implement page table free interfaces Chintan Pandya
@ 2018-04-03  8:00 ` Chintan Pandya
  2018-04-03  8:43 ` [PATCH v8 0/4] Fix issues with huge mapping in ioremap for ARM64 Marc Zyngier
  2018-04-17 10:25 ` Chintan Pandya
  5 siblings, 0 replies; 12+ messages in thread
From: Chintan Pandya @ 2018-04-03  8:00 UTC (permalink / raw)
  To: catalin.marinas, will.deacon, mark.rutland, toshi.kani
  Cc: arnd, ard.biesheuvel, marc.zyngier, james.morse,
	kristina.martsenko, takahiro.akashi, gregkh, tglx,
	linux-arm-kernel, linux-kernel, linux-arch, akpm, Chintan Pandya

This commit 15122ee2c515a ("arm64: Enforce BBM for huge
IO/VMAP mappings") is a temporary work-around until the
issues with CONFIG_HAVE_ARCH_HUGE_VMAP gets fixed.

Revert this change as we have fixes for the issue.

Signed-off-by: Chintan Pandya <cpandya@codeaurora.org>
---
 arch/arm64/mm/mmu.c | 8 --------
 1 file changed, 8 deletions(-)

diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c
index 0f651db..170009b 100644
--- a/arch/arm64/mm/mmu.c
+++ b/arch/arm64/mm/mmu.c
@@ -935,10 +935,6 @@ int pud_set_huge(pud_t *pudp, phys_addr_t phys, pgprot_t prot)
 	pgprot_t sect_prot = __pgprot(PUD_TYPE_SECT |
 					pgprot_val(mk_sect_prot(prot)));
 
-	/* ioremap_page_range doesn't honour BBM */
-	if (pud_present(READ_ONCE(*pudp)))
-		return 0;
-
 	BUG_ON(phys & ~PUD_MASK);
 	set_pud(pudp, pfn_pud(__phys_to_pfn(phys), sect_prot));
 	return 1;
@@ -949,10 +945,6 @@ int pmd_set_huge(pmd_t *pmdp, phys_addr_t phys, pgprot_t prot)
 	pgprot_t sect_prot = __pgprot(PMD_TYPE_SECT |
 					pgprot_val(mk_sect_prot(prot)));
 
-	/* ioremap_page_range doesn't honour BBM */
-	if (pmd_present(READ_ONCE(*pmdp)))
-		return 0;
-
 	BUG_ON(phys & ~PMD_MASK);
 	set_pmd(pmdp, pfn_pmd(__phys_to_pfn(phys), sect_prot));
 	return 1;
-- 
Qualcomm India Private Limited, on behalf of Qualcomm Innovation
Center, Inc., is a member of Code Aurora Forum, a Linux Foundation
Collaborative Project

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

* Re: [PATCH v8 0/4] Fix issues with huge mapping in ioremap for ARM64
  2018-04-03  8:00 [PATCH v8 0/4] Fix issues with huge mapping in ioremap for ARM64 Chintan Pandya
                   ` (3 preceding siblings ...)
  2018-04-03  8:00 ` [PATCH v8 4/4] Revert "arm64: Enforce BBM for huge IO/VMAP mappings" Chintan Pandya
@ 2018-04-03  8:43 ` Marc Zyngier
  2018-04-03 11:55   ` Chintan Pandya
  2018-04-17 10:25 ` Chintan Pandya
  5 siblings, 1 reply; 12+ messages in thread
From: Marc Zyngier @ 2018-04-03  8:43 UTC (permalink / raw)
  To: Chintan Pandya, catalin.marinas, will.deacon, mark.rutland, toshi.kani
  Cc: arnd, ard.biesheuvel, james.morse, kristina.martsenko,
	takahiro.akashi, gregkh, tglx, linux-arm-kernel, linux-kernel,
	linux-arch, akpm

Hi Chintan,

On 03/04/18 09:00, Chintan Pandya wrote:
> This series of patches are follow up work (and depends on)
> Toshi Kani <toshi.kani@hpe.com>'s patches "fix memory leak/
> panic in ioremap huge pages".
> 
> This series of patches are tested on 4.9 kernel with Cortex-A75
> based SoC.

Given that this is targeting mainline, can you please test with 4.16?
Basing your patches on something that is over 15 months old is not
exactly reassuring.

Thanks,

	M.
-- 
Jazz is not dead. It just smells funny...

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

* Re: [PATCH v8 0/4] Fix issues with huge mapping in ioremap for ARM64
  2018-04-03  8:43 ` [PATCH v8 0/4] Fix issues with huge mapping in ioremap for ARM64 Marc Zyngier
@ 2018-04-03 11:55   ` Chintan Pandya
  2018-04-05  9:09     ` Chintan Pandya
  0 siblings, 1 reply; 12+ messages in thread
From: Chintan Pandya @ 2018-04-03 11:55 UTC (permalink / raw)
  To: Marc Zyngier, catalin.marinas, will.deacon, mark.rutland, toshi.kani
  Cc: arnd, ard.biesheuvel, james.morse, kristina.martsenko,
	takahiro.akashi, gregkh, tglx, linux-arm-kernel, linux-kernel,
	linux-arch, akpm



On 4/3/2018 2:13 PM, Marc Zyngier wrote:
> Hi Chintan,
Hi Marc,
> 
> On 03/04/18 09:00, Chintan Pandya wrote:
>> This series of patches are follow up work (and depends on)
>> Toshi Kani <toshi.kani@hpe.com>'s patches "fix memory leak/
>> panic in ioremap huge pages".
>>
>> This series of patches are tested on 4.9 kernel with Cortex-A75
>> based SoC.
> 
> Given that this is targeting mainline, can you please test with 4.16?
> Basing your patches on something that is over 15 months old is not
> exactly reassuring.

We have 4.14 ported with the devices (remotely) accessible to me. If
that's sufficient, I will post test report by tomorrow.

If we really require these patches to be tested with 4.16, I would need
some help here.

Thanks,

> 
> Thanks,
> 
> 	M.
> 

Chintan
-- 
Qualcomm India Private Limited, on behalf of Qualcomm Innovation Center,
Inc. is a member of the Code Aurora Forum, a Linux Foundation
Collaborative Project

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

* Re: [PATCH v8 0/4] Fix issues with huge mapping in ioremap for ARM64
  2018-04-03 11:55   ` Chintan Pandya
@ 2018-04-05  9:09     ` Chintan Pandya
  0 siblings, 0 replies; 12+ messages in thread
From: Chintan Pandya @ 2018-04-05  9:09 UTC (permalink / raw)
  To: Marc Zyngier, catalin.marinas, will.deacon, mark.rutland, toshi.kani
  Cc: linux-arch, arnd, ard.biesheuvel, gregkh, linux-kernel,
	kristina.martsenko, takahiro.akashi, james.morse, tglx, akpm,
	linux-arm-kernel



On 4/3/2018 5:25 PM, Chintan Pandya wrote:
> 
> 
> On 4/3/2018 2:13 PM, Marc Zyngier wrote:
>> Hi Chintan,
> Hi Marc,
>>
>> On 03/04/18 09:00, Chintan Pandya wrote:
>>> This series of patches are follow up work (and depends on)
>>> Toshi Kani <toshi.kani@hpe.com>'s patches "fix memory leak/
>>> panic in ioremap huge pages".
>>>
>>> This series of patches are tested on 4.9 kernel with Cortex-A75
>>> based SoC.
>>
>> Given that this is targeting mainline, can you please test with 4.16?
>> Basing your patches on something that is over 15 months old is not
>> exactly reassuring.
> 
> We have 4.14 ported with the devices (remotely) accessible to me. If
> that's sufficient, I will post test report by tomorrow.
> 
> If we really require these patches to be tested with 4.16, I would need
> some help here.
> 
Rajendra Nayak <rnayak@codeaurora.org> helped me with testing these
patches on 4.16 kernel (with all the dependent patches already part of
4.16) on SDM845.

In addition to kernel boot up, he executed my test-code which was
stressing ioremap framework and was able to reproduce the bug without
these patches (and Will Deacon's WA).

That passed 10hrs of run.

[36001.446355] IOREMAP_TEST: my tests ended now

Thanks Rajendra Nayak  for testing these patches.

> Thanks,
> 
>>
>> Thanks,
>>
>>     M.
>>
> 
> Chintan

Chintan
-- 
Qualcomm India Private Limited, on behalf of Qualcomm Innovation Center,
Inc. is a member of the Code Aurora Forum, a Linux Foundation
Collaborative Project

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

* Re: [PATCH v8 0/4] Fix issues with huge mapping in ioremap for ARM64
  2018-04-03  8:00 [PATCH v8 0/4] Fix issues with huge mapping in ioremap for ARM64 Chintan Pandya
                   ` (4 preceding siblings ...)
  2018-04-03  8:43 ` [PATCH v8 0/4] Fix issues with huge mapping in ioremap for ARM64 Marc Zyngier
@ 2018-04-17 10:25 ` Chintan Pandya
  2018-04-27 10:27   ` Catalin Marinas
  5 siblings, 1 reply; 12+ messages in thread
From: Chintan Pandya @ 2018-04-17 10:25 UTC (permalink / raw)
  To: catalin.marinas, will.deacon, mark.rutland, toshi.kani
  Cc: linux-arch, arnd, ard.biesheuvel, marc.zyngier, gregkh,
	linux-kernel, kristina.martsenko, takahiro.akashi, james.morse,
	tglx, akpm, linux-arm-kernel

Ping...

On 4/3/2018 1:30 PM, Chintan Pandya wrote:
> This series of patches are follow up work (and depends on)
> Toshi Kani <toshi.kani@hpe.com>'s patches "fix memory leak/
> panic in ioremap huge pages".
> 
> This series of patches are tested on 4.9 kernel with Cortex-A75
> based SoC.
> 
> These patches can also go into '-stable' branch (if accepted)
> for 4.6 onwards.
> 
>  From V7->V8:
>   - Properly fixed compilation issue in x86 file
> 
>  From V6->V7:
>   - Fixed compilation issue in x86 case
>   - V6 patches were not properly enumarated
> 
>  From V5->V6:
>   - Use __flush_tlb_kernel_pgtable() for both PUD and PMD. Remove
>     "bool tlb_inv" based variance as it is not need now
>   - Re-naming for consistency
> 
>  From V4->V5:
>   - Add new API __flush_tlb_kernel_pgtable(unsigned long addr)
>     for kernel addresses
> 
>  From V3->V4:
>   - Add header for 'addr' in x86 implementation
>   - Re-order pmd/pud clear and table free
>   - Avoid redundant TLB invalidatation in one perticular case
> 
>  From V2->V3:
>   - Use the exisiting page table free interface to do arm64
>     specific things
> 
>  From V1->V2:
>   - Rebased my patches on top of "[PATCH v2 1/2] mm/vmalloc:
>     Add interfaces to free unmapped page table"
>   - Honored BBM for ARM64
> 
> Chintan Pandya (4):
>    ioremap: Update pgtable free interfaces with addr
>    arm64: tlbflush: Introduce __flush_tlb_kernel_pgtable
>    arm64: Implement page table free interfaces
>    Revert "arm64: Enforce BBM for huge IO/VMAP mappings"
> 
>   arch/arm64/include/asm/tlbflush.h |  6 ++++++
>   arch/arm64/mm/mmu.c               | 37 +++++++++++++++++++++++++------------
>   arch/x86/mm/pgtable.c             |  8 +++++---
>   include/asm-generic/pgtable.h     |  8 ++++----
>   lib/ioremap.c                     |  4 ++--
>   5 files changed, 42 insertions(+), 21 deletions(-)
> 

Chintan
-- 
Qualcomm India Private Limited, on behalf of Qualcomm Innovation Center,
Inc. is a member of the Code Aurora Forum, a Linux Foundation
Collaborative Project

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

* Re: [PATCH v8 0/4] Fix issues with huge mapping in ioremap for ARM64
  2018-04-17 10:25 ` Chintan Pandya
@ 2018-04-27 10:27   ` Catalin Marinas
  0 siblings, 0 replies; 12+ messages in thread
From: Catalin Marinas @ 2018-04-27 10:27 UTC (permalink / raw)
  To: Chintan Pandya
  Cc: will.deacon, mark.rutland, toshi.kani, linux-arch, arnd,
	ard.biesheuvel, marc.zyngier, gregkh, linux-kernel,
	kristina.martsenko, takahiro.akashi, james.morse, tglx, akpm,
	linux-arm-kernel

On Tue, Apr 17, 2018 at 03:55:08PM +0530, Chintan Pandya wrote:
> Ping...
> 
> On 4/3/2018 1:30 PM, Chintan Pandya wrote:
> > This series of patches are follow up work (and depends on)
> > Toshi Kani <toshi.kani@hpe.com>'s patches "fix memory leak/
> > panic in ioremap huge pages".

First of all, you'd need to post patches against the latest mainline
(4.17-rcX).

Second, since they depend on another series, we'd have to wait for the
comments on that series to settle.

-- 
Catalin

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

* Re: [PATCH v8 2/4] arm64: tlbflush: Introduce __flush_tlb_kernel_pgtable
  2018-04-03  8:00 ` [PATCH v8 2/4] arm64: tlbflush: Introduce __flush_tlb_kernel_pgtable Chintan Pandya
@ 2018-04-27 10:29   ` Catalin Marinas
  2018-04-27 12:30     ` Chintan Pandya
  0 siblings, 1 reply; 12+ messages in thread
From: Catalin Marinas @ 2018-04-27 10:29 UTC (permalink / raw)
  To: Chintan Pandya
  Cc: will.deacon, mark.rutland, toshi.kani, linux-arch, arnd,
	ard.biesheuvel, marc.zyngier, gregkh, linux-kernel,
	kristina.martsenko, takahiro.akashi, james.morse, tglx, akpm,
	linux-arm-kernel

On Tue, Apr 03, 2018 at 01:30:44PM +0530, Chintan Pandya wrote:
> Add an interface to invalidate intermediate page tables
> from TLB for kernel.
> 
> Signed-off-by: Chintan Pandya <cpandya@codeaurora.org>
> ---
>  arch/arm64/include/asm/tlbflush.h | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/arch/arm64/include/asm/tlbflush.h b/arch/arm64/include/asm/tlbflush.h
> index 9e82dd7..6a4816d 100644
> --- a/arch/arm64/include/asm/tlbflush.h
> +++ b/arch/arm64/include/asm/tlbflush.h
> @@ -209,6 +209,12 @@ static inline void __flush_tlb_pgtable(struct mm_struct *mm,
>  	dsb(ish);
>  }
>  
> +static inline void __flush_tlb_kernel_pgtable(unsigned long addr)
> +{
> +	addr >>= 12;
> +	__tlbi(vaae1is, addr);
> +	dsb(ish);
> +}
>  #endif

Please use __TLBI_VADDR here as it does some additional masking.

-- 
Catalin

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

* Re: [PATCH v8 2/4] arm64: tlbflush: Introduce __flush_tlb_kernel_pgtable
  2018-04-27 10:29   ` Catalin Marinas
@ 2018-04-27 12:30     ` Chintan Pandya
  0 siblings, 0 replies; 12+ messages in thread
From: Chintan Pandya @ 2018-04-27 12:30 UTC (permalink / raw)
  To: Catalin Marinas
  Cc: will.deacon, mark.rutland, toshi.kani, linux-arch, arnd,
	ard.biesheuvel, marc.zyngier, gregkh, linux-kernel,
	kristina.martsenko, takahiro.akashi, james.morse, tglx, akpm,
	linux-arm-kernel



On 4/27/2018 3:59 PM, Catalin Marinas wrote:
> On Tue, Apr 03, 2018 at 01:30:44PM +0530, Chintan Pandya wrote:
>> Add an interface to invalidate intermediate page tables
>> from TLB for kernel.
>>
>> Signed-off-by: Chintan Pandya <cpandya@codeaurora.org>
>> ---
>>   arch/arm64/include/asm/tlbflush.h | 6 ++++++
>>   1 file changed, 6 insertions(+)
>>
>> diff --git a/arch/arm64/include/asm/tlbflush.h b/arch/arm64/include/asm/tlbflush.h
>> index 9e82dd7..6a4816d 100644
>> --- a/arch/arm64/include/asm/tlbflush.h
>> +++ b/arch/arm64/include/asm/tlbflush.h
>> @@ -209,6 +209,12 @@ static inline void __flush_tlb_pgtable(struct mm_struct *mm,
>>   	dsb(ish);
>>   }
>>   
>> +static inline void __flush_tlb_kernel_pgtable(unsigned long addr)
>> +{
>> +	addr >>= 12;
>> +	__tlbi(vaae1is, addr);
>> +	dsb(ish);
>> +}
>>   #endif
> 
> Please use __TLBI_VADDR here as it does some additional masking.
> 
Sure.

Chintan
-- 
Qualcomm India Private Limited, on behalf of Qualcomm Innovation Center,
Inc. is a member of the Code Aurora Forum, a Linux Foundation
Collaborative Project

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

end of thread, other threads:[~2018-04-27 12:30 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-04-03  8:00 [PATCH v8 0/4] Fix issues with huge mapping in ioremap for ARM64 Chintan Pandya
2018-04-03  8:00 ` [PATCH v8 1/4] ioremap: Update pgtable free interfaces with addr Chintan Pandya
2018-04-03  8:00 ` [PATCH v8 2/4] arm64: tlbflush: Introduce __flush_tlb_kernel_pgtable Chintan Pandya
2018-04-27 10:29   ` Catalin Marinas
2018-04-27 12:30     ` Chintan Pandya
2018-04-03  8:00 ` [PATCH v8 3/4] arm64: Implement page table free interfaces Chintan Pandya
2018-04-03  8:00 ` [PATCH v8 4/4] Revert "arm64: Enforce BBM for huge IO/VMAP mappings" Chintan Pandya
2018-04-03  8:43 ` [PATCH v8 0/4] Fix issues with huge mapping in ioremap for ARM64 Marc Zyngier
2018-04-03 11:55   ` Chintan Pandya
2018-04-05  9:09     ` Chintan Pandya
2018-04-17 10:25 ` Chintan Pandya
2018-04-27 10:27   ` Catalin Marinas

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).