diff mbox

[2/4] powerpc: implement vmemmap_remove_mapping() for BOOK3S

Message ID 1402475019-19699-2-git-send-email-zhong@linux.vnet.ibm.com (mailing list archive)
State Accepted
Headers show

Commit Message

Li Zhong June 11, 2014, 8:23 a.m. UTC
This is to be called in vmemmap_free(), leave the implementation on BOOK3E 
empty as before.

Signed-off-by: Li Zhong <zhong@linux.vnet.ibm.com>
Cc: Nathan Fontenot <nfont@linux.vnet.ibm.com>
---
 arch/powerpc/mm/hash_utils_64.c |    2 +-
 arch/powerpc/mm/init_64.c       |   22 ++++++++++++++++++++++
 2 files changed, 23 insertions(+), 1 deletion(-)

Comments

Nathan Fontenot July 24, 2014, 3:12 p.m. UTC | #1
On 06/11/2014 03:23 AM, Li Zhong wrote:
> This is to be called in vmemmap_free(), leave the implementation on BOOK3E 
> empty as before.
> 
> Signed-off-by: Li Zhong <zhong@linux.vnet.ibm.com>
> Cc: Nathan Fontenot <nfont@linux.vnet.ibm.com>

Acked-by: Nathan Fontenot <nfont@linux.vnet.ibm.com>

> ---
>  arch/powerpc/mm/hash_utils_64.c |    2 +-
>  arch/powerpc/mm/init_64.c       |   22 ++++++++++++++++++++++
>  2 files changed, 23 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/powerpc/mm/hash_utils_64.c b/arch/powerpc/mm/hash_utils_64.c
> index 88fdd9d..25d9d66 100644
> --- a/arch/powerpc/mm/hash_utils_64.c
> +++ b/arch/powerpc/mm/hash_utils_64.c
> @@ -243,7 +243,7 @@ int htab_bolt_mapping(unsigned long vstart, unsigned long vend,
>  }
>  
>  #ifdef CONFIG_MEMORY_HOTPLUG
> -static int htab_remove_mapping(unsigned long vstart, unsigned long vend,
> +int htab_remove_mapping(unsigned long vstart, unsigned long vend,
>  		      int psize, int ssize)
>  {
>  	unsigned long vaddr;
> diff --git a/arch/powerpc/mm/init_64.c b/arch/powerpc/mm/init_64.c
> index fa5d28b..69203c8 100644
> --- a/arch/powerpc/mm/init_64.c
> +++ b/arch/powerpc/mm/init_64.c
> @@ -212,6 +212,13 @@ static void __meminit vmemmap_create_mapping(unsigned long start,
>  	for (i = 0; i < page_size; i += PAGE_SIZE)
>  		BUG_ON(map_kernel_page(start + i, phys, flags));
>  }
> +
> +#ifdef CONFIG_MEMORY_HOTPLUG
> +static void vmemmap_remove_mapping(unsigned long start,
> +				   unsigned long page_size)
> +{
> +}
> +#endif
>  #else /* CONFIG_PPC_BOOK3E */
>  static void __meminit vmemmap_create_mapping(unsigned long start,
>  					     unsigned long page_size,
> @@ -223,6 +230,21 @@ static void __meminit vmemmap_create_mapping(unsigned long start,
>  					mmu_kernel_ssize);
>  	BUG_ON(mapped < 0);
>  }
> +
> +#ifdef CONFIG_MEMORY_HOTPLUG
> +extern int htab_remove_mapping(unsigned long vstart, unsigned long vend,
> +			int psize, int ssize);
> +
> +static void vmemmap_remove_mapping(unsigned long start,
> +				   unsigned long page_size)
> +{
> +	int mapped = htab_remove_mapping(start, start + page_size,
> +					 mmu_vmemmap_psize,
> +					 mmu_kernel_ssize);
> +	BUG_ON(mapped < 0);
> +}
> +#endif
> +
>  #endif /* CONFIG_PPC_BOOK3E */
>  
>  struct vmemmap_backing *vmemmap_list;
>
diff mbox

Patch

diff --git a/arch/powerpc/mm/hash_utils_64.c b/arch/powerpc/mm/hash_utils_64.c
index 88fdd9d..25d9d66 100644
--- a/arch/powerpc/mm/hash_utils_64.c
+++ b/arch/powerpc/mm/hash_utils_64.c
@@ -243,7 +243,7 @@  int htab_bolt_mapping(unsigned long vstart, unsigned long vend,
 }
 
 #ifdef CONFIG_MEMORY_HOTPLUG
-static int htab_remove_mapping(unsigned long vstart, unsigned long vend,
+int htab_remove_mapping(unsigned long vstart, unsigned long vend,
 		      int psize, int ssize)
 {
 	unsigned long vaddr;
diff --git a/arch/powerpc/mm/init_64.c b/arch/powerpc/mm/init_64.c
index fa5d28b..69203c8 100644
--- a/arch/powerpc/mm/init_64.c
+++ b/arch/powerpc/mm/init_64.c
@@ -212,6 +212,13 @@  static void __meminit vmemmap_create_mapping(unsigned long start,
 	for (i = 0; i < page_size; i += PAGE_SIZE)
 		BUG_ON(map_kernel_page(start + i, phys, flags));
 }
+
+#ifdef CONFIG_MEMORY_HOTPLUG
+static void vmemmap_remove_mapping(unsigned long start,
+				   unsigned long page_size)
+{
+}
+#endif
 #else /* CONFIG_PPC_BOOK3E */
 static void __meminit vmemmap_create_mapping(unsigned long start,
 					     unsigned long page_size,
@@ -223,6 +230,21 @@  static void __meminit vmemmap_create_mapping(unsigned long start,
 					mmu_kernel_ssize);
 	BUG_ON(mapped < 0);
 }
+
+#ifdef CONFIG_MEMORY_HOTPLUG
+extern int htab_remove_mapping(unsigned long vstart, unsigned long vend,
+			int psize, int ssize);
+
+static void vmemmap_remove_mapping(unsigned long start,
+				   unsigned long page_size)
+{
+	int mapped = htab_remove_mapping(start, start + page_size,
+					 mmu_vmemmap_psize,
+					 mmu_kernel_ssize);
+	BUG_ON(mapped < 0);
+}
+#endif
+
 #endif /* CONFIG_PPC_BOOK3E */
 
 struct vmemmap_backing *vmemmap_list;