All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yinghai Lu <yinghai@kernel.org>
To: Thomas Gleixner <tglx@linutronix.de>, Ingo Molnar <mingo@elte.hu>,
	"H. Peter Anvin" <hpa@zytor.com>, Jacob Shin <jacob.shin@amd.com>,
	Tejun Heo <tj@kernel.org>
Cc: Stefano Stabellini <stefano.stabellini@eu.citrix.com>,
	linux-kernel@vger.kernel.org, Yinghai Lu <yinghai@kernel.org>
Subject: [PATCH 09/19] x86, mm: Merge alloc_low_page between 64bit and 32bit
Date: Thu, 18 Oct 2012 13:50:20 -0700	[thread overview]
Message-ID: <1350593430-24470-13-git-send-email-yinghai@kernel.org> (raw)
In-Reply-To: <1350593430-24470-1-git-send-email-yinghai@kernel.org>

They are almost same except 64 bit need to handle after_bootmem.

Add mm_internal.h to hide that alloc_low_page out of arch/x86/mm/init*.c

Signed-off-by: Yinghai Lu <yinghai@kernel.org>
---
 arch/x86/mm/init.c        |   34 ++++++++++++++++++++++++++++++++++
 arch/x86/mm/init_32.c     |   26 ++------------------------
 arch/x86/mm/init_64.c     |   32 ++------------------------------
 arch/x86/mm/mm_internal.h |    6 ++++++
 4 files changed, 44 insertions(+), 54 deletions(-)
 create mode 100644 arch/x86/mm/mm_internal.h

diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c
index 9ff29c1..c398b2c 100644
--- a/arch/x86/mm/init.c
+++ b/arch/x86/mm/init.c
@@ -17,10 +17,44 @@
 #include <asm/proto.h>
 #include <asm/dma.h>		/* for MAX_DMA_PFN */
 
+#include "mm_internal.h"
+
 unsigned long __initdata pgt_buf_start;
 unsigned long __meminitdata pgt_buf_end;
 unsigned long __meminitdata pgt_buf_top;
 
+__ref void *alloc_low_page(void)
+{
+	unsigned long pfn;
+	void *adr;
+
+#ifdef CONFIG_X86_64
+	if (after_bootmem) {
+		adr = (void *)get_zeroed_page(GFP_ATOMIC | __GFP_NOTRACK);
+
+		return adr;
+	}
+#endif
+
+	if ((pgt_buf_end + 1) >= pgt_buf_top) {
+		unsigned long ret;
+		if (min_pfn_mapped >= max_pfn_mapped)
+			panic("alloc_low_page: ran out of memory");
+		ret = memblock_find_in_range(min_pfn_mapped << PAGE_SHIFT,
+					max_pfn_mapped << PAGE_SHIFT,
+					PAGE_SIZE, PAGE_SIZE);
+		if (!ret)
+			panic("alloc_low_page: can not alloc memory");
+		memblock_reserve(ret, PAGE_SIZE);
+		pfn = ret >> PAGE_SHIFT;
+	} else
+		pfn = pgt_buf_end++;
+
+	adr = __va(pfn * PAGE_SIZE);
+	clear_page(adr);
+	return adr;
+}
+
 /* need 4 4k for initial PMD_SIZE, 4k for 0-ISA_END_ADDRESS */
 #define INIT_PGT_BUF_SIZE	(5 * PAGE_SIZE)
 RESERVE_BRK(early_pgt_alloc, INIT_PGT_BUF_SIZE);
diff --git a/arch/x86/mm/init_32.c b/arch/x86/mm/init_32.c
index 7bb1106..a7f2df1 100644
--- a/arch/x86/mm/init_32.c
+++ b/arch/x86/mm/init_32.c
@@ -53,36 +53,14 @@
 #include <asm/page_types.h>
 #include <asm/init.h>
 
+#include "mm_internal.h"
+
 unsigned long highstart_pfn, highend_pfn;
 
 static noinline int do_test_wp_bit(void);
 
 bool __read_mostly __vmalloc_start_set = false;
 
-static __init void *alloc_low_page(void)
-{
-	unsigned long pfn;
-	void *adr;
-
-	if ((pgt_buf_end + 1) >= pgt_buf_top) {
-		unsigned long ret;
-		if (min_pfn_mapped >= max_pfn_mapped)
-			panic("alloc_low_page: ran out of memory");
-		ret = memblock_find_in_range(min_pfn_mapped << PAGE_SHIFT,
-					max_pfn_mapped << PAGE_SHIFT,
-					PAGE_SIZE, PAGE_SIZE);
-		if (!ret)
-			panic("alloc_low_page: can not alloc memory");
-		memblock_reserve(ret, PAGE_SIZE);
-		pfn = ret >> PAGE_SHIFT;
-	} else
-		pfn = pgt_buf_end++;
-
-	adr = __va(pfn * PAGE_SIZE);
-	clear_page(adr);
-	return adr;
-}
-
 /*
  * Creates a middle page table and puts a pointer to it in the
  * given global directory entry. This only returns the gd entry
diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c
index cbf8dbe..aabe8ff 100644
--- a/arch/x86/mm/init_64.c
+++ b/arch/x86/mm/init_64.c
@@ -54,6 +54,8 @@
 #include <asm/uv/uv.h>
 #include <asm/setup.h>
 
+#include "mm_internal.h"
+
 static int __init parse_direct_gbpages_off(char *arg)
 {
 	direct_gbpages = 0;
@@ -314,36 +316,6 @@ void __init cleanup_highmap(void)
 	}
 }
 
-static __ref void *alloc_low_page(void)
-{
-	unsigned long pfn;
-	void *adr;
-
-	if (after_bootmem) {
-		adr = (void *)get_zeroed_page(GFP_ATOMIC | __GFP_NOTRACK);
-
-		return adr;
-	}
-
-	if ((pgt_buf_end + 1) >= pgt_buf_top) {
-		unsigned long ret;
-		if (min_pfn_mapped >= max_pfn_mapped)
-			panic("alloc_low_page: ran out of memory");
-		ret = memblock_find_in_range(min_pfn_mapped << PAGE_SHIFT,
-					max_pfn_mapped << PAGE_SHIFT,
-					PAGE_SIZE, PAGE_SIZE);
-		if (!ret)
-			panic("alloc_low_page: can not alloc memory");
-		memblock_reserve(ret, PAGE_SIZE);
-		pfn = ret >> PAGE_SHIFT;
-	} else
-		pfn = pgt_buf_end++;
-
-	adr = __va(pfn * PAGE_SIZE);
-	clear_page(adr);
-	return adr;
-}
-
 static unsigned long __meminit
 phys_pte_init(pte_t *pte_page, unsigned long addr, unsigned long end,
 	      pgprot_t prot)
diff --git a/arch/x86/mm/mm_internal.h b/arch/x86/mm/mm_internal.h
new file mode 100644
index 0000000..b3f993a
--- /dev/null
+++ b/arch/x86/mm/mm_internal.h
@@ -0,0 +1,6 @@
+#ifndef __X86_MM_INTERNAL_H
+#define __X86_MM_INTERNAL_H
+
+void *alloc_low_page(void);
+
+#endif	/* __X86_MM_INTERNAL_H */
-- 
1.7.7


  parent reply	other threads:[~2012-10-18 20:51 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-18 20:50 [PATCH -v5 00/19] x86: Use BRK to pre mapping page table to make xen happy Yinghai Lu
2012-10-18 20:50 ` [PATCH 1/3] ACPI: Introduce a new acpi handle to determine HID match Yinghai Lu
2012-11-02 12:23   ` Rafael J. Wysocki
2012-11-02 15:03     ` Yinghai Lu
2012-10-18 20:50 ` [PATCH 01/19] x86, mm: Align start address to correct big page size Yinghai Lu
2012-10-22 14:16   ` Konrad Rzeszutek Wilk
2012-10-22 16:31     ` Yinghai Lu
2012-10-18 20:50 ` [PATCH 2/3] PCI: correctly detect ACPI PCI host bridge objects Yinghai Lu
2012-10-26  9:10   ` Bjorn Helgaas
2012-10-26 18:13     ` Yinghai Lu
2012-10-18 20:50 ` [PATCH 02/19] x86, mm: Use big page size for small memory range Yinghai Lu
2012-10-22 14:21   ` Konrad Rzeszutek Wilk
2012-10-22 16:33     ` Yinghai Lu
2012-10-18 20:50 ` [PATCH 3/3] PCI, ACPI: debug print for installation of acpi root bridge's notifier Yinghai Lu
2012-10-18 20:50 ` [PATCH 03/19] x86, mm: Don't clear page table if range is ram Yinghai Lu
2012-10-22 14:28   ` Konrad Rzeszutek Wilk
2012-10-22 16:56     ` Yinghai Lu
2012-10-18 20:50 ` [PATCH 04/19] x86, mm: only keep initial mapping for ram Yinghai Lu
2012-10-22 14:33   ` Konrad Rzeszutek Wilk
2012-10-22 17:43     ` Yinghai Lu
2012-10-18 20:50 ` [PATCH 05/19] x86, mm: Break down init_all_memory_mapping Yinghai Lu
2012-10-18 20:50 ` [PATCH 06/19] x86, mm: setup page table in top-down Yinghai Lu
2012-10-19 16:24   ` Stefano Stabellini
2012-10-19 16:41     ` Yinghai Lu
2012-10-22 13:19       ` Stefano Stabellini
2012-10-22 18:17         ` Yinghai Lu
2012-10-22 18:22           ` Yinghai Lu
2012-10-23 12:16             ` Stefano Stabellini
2012-10-23 18:47               ` Yinghai Lu
2012-10-23 12:22           ` Stefano Stabellini
2012-10-23 18:37             ` Yinghai Lu
2012-10-24 10:55               ` Stefano Stabellini
2012-10-22 14:14       ` Konrad Rzeszutek Wilk
2012-10-22 15:06   ` Konrad Rzeszutek Wilk
2012-10-22 18:56     ` Yinghai Lu
2012-10-18 20:50 ` [PATCH 07/19] x86, mm: Remove early_memremap workaround for page table accessing on 64bit Yinghai Lu
2012-10-22 15:07   ` Konrad Rzeszutek Wilk
2012-10-22 19:08     ` Yinghai Lu
2012-10-18 20:50 ` [PATCH 08/19] x86, mm: Remove parameter in alloc_low_page for 64bit Yinghai Lu
2012-10-22 15:09   ` Konrad Rzeszutek Wilk
2012-10-22 19:09     ` Yinghai Lu
2012-10-18 20:50 ` Yinghai Lu [this message]
2012-10-22 15:11   ` [PATCH 09/19] x86, mm: Merge alloc_low_page between 64bit and 32bit Konrad Rzeszutek Wilk
2012-10-22 19:14     ` Yinghai Lu
2012-10-18 20:50 ` [PATCH 10/19] x86, mm: Move min_pfn_mapped back to mm/init.c Yinghai Lu
2012-10-18 20:50 ` [PATCH 11/19] x86, mm, xen: Remove mapping_pagatable_reserve Yinghai Lu
2012-10-22 15:14   ` Konrad Rzeszutek Wilk
2012-10-22 19:18     ` Yinghai Lu
2012-10-18 20:50 ` [PATCH 12/19] x86, mm: Add alloc_low_pages(num) Yinghai Lu
2012-10-22 15:17   ` Konrad Rzeszutek Wilk
2012-10-22 19:24     ` Yinghai Lu
2012-10-18 20:50 ` [PATCH 13/19] x86, mm: only call early_ioremap_page_table_range_init() once Yinghai Lu
2012-10-22 15:24   ` Konrad Rzeszutek Wilk
2012-10-22 19:40     ` Yinghai Lu
2012-10-23  0:01       ` Yinghai Lu
2012-10-18 20:50 ` [PATCH 14/19] x86, mm: Move back pgt_buf_* to mm/init.c Yinghai Lu
2012-10-18 20:50 ` [PATCH 15/19] x86, mm: Move init_gbpages() out of setup.c Yinghai Lu
2012-10-18 20:50 ` [PATCH 16/19] x86, mm: change low/hignmem_pfn_init to static on 32bit Yinghai Lu
2012-10-18 20:50 ` [PATCH 17/19] x86, mm: Move function declaration into mm_internal.h Yinghai Lu
2012-10-18 20:50 ` [PATCH 18/19] x86, mm: Let "memmap=" take more entries one time Yinghai Lu
2012-10-22 15:19   ` Konrad Rzeszutek Wilk
2012-10-22 19:26     ` Yinghai Lu
2012-10-18 20:50 ` [PATCH 19/19] x86, mm: Add check before clear pte above max_low_pfn on 32bit Yinghai Lu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1350593430-24470-13-git-send-email-yinghai@kernel.org \
    --to=yinghai@kernel.org \
    --cc=hpa@zytor.com \
    --cc=jacob.shin@amd.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=stefano.stabellini@eu.citrix.com \
    --cc=tglx@linutronix.de \
    --cc=tj@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.