Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1329871 > unrolled thread

[PATCH 0/4] powerpc/mm: Cleanups to hotplug memory path

Started byDavid Gibson <david@gibson.dropbear.id.au>
First post2016-02-09 04:40 +0100
Last post2016-02-10 10:00 +0100
Articles 3 — 2 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH 0/4] powerpc/mm: Cleanups to hotplug memory path David Gibson <david@gibson.dropbear.id.au> - 2016-02-09 04:40 +0100
    [PATCH 1/4] powerpc/mm: Clean up error handling for htab_remove_mapping David Gibson <david@gibson.dropbear.id.au> - 2016-02-09 04:40 +0100
      Re: [PATCH 1/4] powerpc/mm: Clean up error handling for htab_remove_mapping "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com> - 2016-02-10 10:00 +0100

#1329871 — [PATCH 0/4] powerpc/mm: Cleanups to hotplug memory path

FromDavid Gibson <david@gibson.dropbear.id.au>
Date2016-02-09 04:40 +0100
Subject[PATCH 0/4] powerpc/mm: Cleanups to hotplug memory path
Message-ID<r07jI-6AS-9@gated-at.bofh.it>
The cleanups to the (guest side) memory hotplug paths came up in the
context of allowing hash page table resizing for PAPR guests.
However, they stand on their own and can improve reporting of several
error conditions that could already happen.

Please apply.

David Gibson (4):
  powerpc/mm: Clean up error handling for htab_remove_mapping
  powerpc/mm: Handle removing maybe-present bolted HPTEs
  powerpc/mm: Clean up memory hotplug failure paths
  powerpc/mm: Split hash page table sizing heuristic into a helper

 arch/powerpc/include/asm/machdep.h    |  2 +-
 arch/powerpc/include/asm/mmu-hash64.h |  3 ++
 arch/powerpc/mm/hash_utils_64.c       | 73 ++++++++++++++++++++++-------------
 arch/powerpc/mm/init_64.c             | 47 ++++++++++++++--------
 arch/powerpc/mm/mem.c                 | 10 ++++-
 arch/powerpc/platforms/pseries/lpar.c |  9 +++--
 6 files changed, 96 insertions(+), 48 deletions(-)

-- 
2.5.0

[toc] | [next] | [standalone]


#1329872 — [PATCH 1/4] powerpc/mm: Clean up error handling for htab_remove_mapping

FromDavid Gibson <david@gibson.dropbear.id.au>
Date2016-02-09 04:40 +0100
Subject[PATCH 1/4] powerpc/mm: Clean up error handling for htab_remove_mapping
Message-ID<r07jJ-6AS-33@gated-at.bofh.it>
In reply to#1329871
Currently, the only error that htab_remove_mapping() can report is -EINVAL,
if removal of bolted HPTEs isn't implemeted for this platform.  We make
a few clean ups to the handling of this:

 * EINVAL isn't really the right code - there's nothing wrong with the
   function's arguments - use ENODEV instead
 * We were also printing a warning message, but that's a decision better
   left up to the callers, so remove it
 * One caller is vmemmap_remove_mapping(), which will just BUG_ON() on
   error, making the warning message redundant, so no change is needed
   there.
 * The other caller is remove_section_mapping().  This is called in the
   memory hot remove path at a point after vmemmap_remove_mapping() so
   if hpte_removebolted isn't implemented, we'd expect to have already
   BUG()ed anyway.  Put a WARN_ON() here, in lieu of a printk() since this
   really shouldn't be happening.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 arch/powerpc/mm/hash_utils_64.c | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/arch/powerpc/mm/hash_utils_64.c b/arch/powerpc/mm/hash_utils_64.c
index ba59d59..9f7d727 100644
--- a/arch/powerpc/mm/hash_utils_64.c
+++ b/arch/powerpc/mm/hash_utils_64.c
@@ -273,11 +273,8 @@ int htab_remove_mapping(unsigned long vstart, unsigned long vend,
 	shift = mmu_psize_defs[psize].shift;
 	step = 1 << shift;
 
-	if (!ppc_md.hpte_removebolted) {
-		printk(KERN_WARNING "Platform doesn't implement "
-				"hpte_removebolted\n");
-		return -EINVAL;
-	}
+	if (!ppc_md.hpte_removebolted)
+		return -ENODEV;
 
 	for (vaddr = vstart; vaddr < vend; vaddr += step)
 		ppc_md.hpte_removebolted(vaddr, psize, ssize);
@@ -641,8 +638,10 @@ int create_section_mapping(unsigned long start, unsigned long end)
 
 int remove_section_mapping(unsigned long start, unsigned long end)
 {
-	return htab_remove_mapping(start, end, mmu_linear_psize,
-			mmu_kernel_ssize);
+	int rc = htab_remove_mapping(start, end, mmu_linear_psize,
+				     mmu_kernel_ssize);
+	WARN_ON(rc < 0);
+	return rc;
 }
 #endif /* CONFIG_MEMORY_HOTPLUG */
 
-- 
2.5.0

[toc] | [prev] | [next] | [standalone]


#1330951 — Re: [PATCH 1/4] powerpc/mm: Clean up error handling for htab_remove_mapping

From"Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
Date2016-02-10 10:00 +0100
SubjectRe: [PATCH 1/4] powerpc/mm: Clean up error handling for htab_remove_mapping
Message-ID<r0yMV-8kM-3@gated-at.bofh.it>
In reply to#1329872
David Gibson <david@gibson.dropbear.id.au> writes:

> Currently, the only error that htab_remove_mapping() can report is -EINVAL,
> if removal of bolted HPTEs isn't implemeted for this platform.  We make
> a few clean ups to the handling of this:
>
>  * EINVAL isn't really the right code - there's nothing wrong with the
>    function's arguments - use ENODEV instead
>  * We were also printing a warning message, but that's a decision better
>    left up to the callers, so remove it
>  * One caller is vmemmap_remove_mapping(), which will just BUG_ON() on
>    error, making the warning message redundant, so no change is needed
>    there.
>  * The other caller is remove_section_mapping().  This is called in the
>    memory hot remove path at a point after vmemmap_remove_mapping() so
>    if hpte_removebolted isn't implemented, we'd expect to have already
>    BUG()ed anyway.  Put a WARN_ON() here, in lieu of a printk() since this
>    really shouldn't be happening.
>

Reviewed-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>

> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
> ---
>  arch/powerpc/mm/hash_utils_64.c | 13 ++++++-------
>  1 file changed, 6 insertions(+), 7 deletions(-)
>
> diff --git a/arch/powerpc/mm/hash_utils_64.c b/arch/powerpc/mm/hash_utils_64.c
> index ba59d59..9f7d727 100644
> --- a/arch/powerpc/mm/hash_utils_64.c
> +++ b/arch/powerpc/mm/hash_utils_64.c
> @@ -273,11 +273,8 @@ int htab_remove_mapping(unsigned long vstart, unsigned long vend,
>  	shift = mmu_psize_defs[psize].shift;
>  	step = 1 << shift;
>  
> -	if (!ppc_md.hpte_removebolted) {
> -		printk(KERN_WARNING "Platform doesn't implement "
> -				"hpte_removebolted\n");
> -		return -EINVAL;
> -	}
> +	if (!ppc_md.hpte_removebolted)
> +		return -ENODEV;
>  
>  	for (vaddr = vstart; vaddr < vend; vaddr += step)
>  		ppc_md.hpte_removebolted(vaddr, psize, ssize);
> @@ -641,8 +638,10 @@ int create_section_mapping(unsigned long start, unsigned long end)
>  
>  int remove_section_mapping(unsigned long start, unsigned long end)
>  {
> -	return htab_remove_mapping(start, end, mmu_linear_psize,
> -			mmu_kernel_ssize);
> +	int rc = htab_remove_mapping(start, end, mmu_linear_psize,
> +				     mmu_kernel_ssize);
> +	WARN_ON(rc < 0);
> +	return rc;
>  }
>  #endif /* CONFIG_MEMORY_HOTPLUG */
>  
> -- 
> 2.5.0

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web