All of lore.kernel.org
 help / color / mirror / Atom feed
From: tip-bot for Yinghai Lu <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, hpa@zytor.com, mingo@kernel.org,
	yinghai@kernel.org, penberg@kernel.org, tangchen@cn.fujitsu.com,
	jacob.shin@amd.com, trenn@suse.de, tglx@linutronix.de,
	hpa@linux.intel.com, rjw@sisk.pl
Subject: [tip:x86/mm] x86, ACPI: Find acpi tables in initrd early from head_32.S/head64.c
Date: Fri, 14 Jun 2013 14:32:06 -0700	[thread overview]
Message-ID: <tip-88168dcb255f44892bcf9f6fac6aeb424471ffaa@git.kernel.org> (raw)
In-Reply-To: <1371128589-8953-10-git-send-email-tangchen@cn.fujitsu.com>

Commit-ID:  88168dcb255f44892bcf9f6fac6aeb424471ffaa
Gitweb:     http://git.kernel.org/tip/88168dcb255f44892bcf9f6fac6aeb424471ffaa
Author:     Yinghai Lu <yinghai@kernel.org>
AuthorDate: Thu, 13 Jun 2013 21:02:56 +0800
Committer:  H. Peter Anvin <hpa@linux.intel.com>
CommitDate: Fri, 14 Jun 2013 14:04:50 -0700

x86, ACPI: Find acpi tables in initrd early from head_32.S/head64.c

head64.c can use the #PF handler automatic page tables to access initrd before
init mem mapping and initrd relocating.

head_32.S can use 32-bit flat mode to access initrd before init mem
mapping initrd relocating.

This patch introduces x86_acpi_override_find(), which is called from
head_32.S/head64.c, to replace acpi_initrd_override_find(). So that we
can makes 32bit and 64 bit more consistent.

-v2: use inline function in header file instead according to tj.
     also still need to keep #idef head_32.S to avoid compiling error.
-v3: need to move down reserve_initrd() after acpi_initrd_override_copy(),
     to make sure we are using right address.

Signed-off-by: Yinghai Lu <yinghai@kernel.org>
Link: http://lkml.kernel.org/r/1371128589-8953-10-git-send-email-tangchen@cn.fujitsu.com
Cc: Pekka Enberg <penberg@kernel.org>
Cc: Jacob Shin <jacob.shin@amd.com>
Cc: Rafael J. Wysocki <rjw@sisk.pl>
Cc: linux-acpi@vger.kernel.org
Tested-by: Thomas Renninger <trenn@suse.de>
Reviewed-by: Tang Chen <tangchen@cn.fujitsu.com>
Tested-by: Tang Chen <tangchen@cn.fujitsu.com>
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
---
 arch/x86/include/asm/setup.h |  6 ++++++
 arch/x86/kernel/head64.c     |  2 ++
 arch/x86/kernel/head_32.S    |  4 ++++
 arch/x86/kernel/setup.c      | 34 ++++++++++++++++++++++++++++++----
 4 files changed, 42 insertions(+), 4 deletions(-)

diff --git a/arch/x86/include/asm/setup.h b/arch/x86/include/asm/setup.h
index 4f71d48..6f885b7 100644
--- a/arch/x86/include/asm/setup.h
+++ b/arch/x86/include/asm/setup.h
@@ -42,6 +42,12 @@ extern void visws_early_detect(void);
 static inline void visws_early_detect(void) { }
 #endif
 
+#ifdef CONFIG_ACPI_INITRD_TABLE_OVERRIDE
+void x86_acpi_override_find(void);
+#else
+static inline void x86_acpi_override_find(void) { }
+#endif
+
 extern unsigned long saved_video_mode;
 
 extern void reserve_standard_io_resources(void);
diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c
index 55b6761..229b281 100644
--- a/arch/x86/kernel/head64.c
+++ b/arch/x86/kernel/head64.c
@@ -175,6 +175,8 @@ void __init x86_64_start_kernel(char * real_mode_data)
 	if (console_loglevel == 10)
 		early_printk("Kernel alive\n");
 
+	x86_acpi_override_find();
+
 	clear_page(init_level4_pgt);
 	/* set init_level4_pgt kernel high mapping*/
 	init_level4_pgt[511] = early_level4_pgt[511];
diff --git a/arch/x86/kernel/head_32.S b/arch/x86/kernel/head_32.S
index 73afd11..ca08f0e 100644
--- a/arch/x86/kernel/head_32.S
+++ b/arch/x86/kernel/head_32.S
@@ -149,6 +149,10 @@ ENTRY(startup_32)
 	call load_ucode_bsp
 #endif
 
+#ifdef CONFIG_ACPI_INITRD_TABLE_OVERRIDE
+	call x86_acpi_override_find
+#endif
+
 /*
  * Initialize page tables.  This creates a PDE and a set of page
  * tables, which are located immediately beyond __brk_base.  The variable
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
index 142e042..d11b1b7 100644
--- a/arch/x86/kernel/setup.c
+++ b/arch/x86/kernel/setup.c
@@ -421,6 +421,34 @@ static void __init reserve_initrd(void)
 }
 #endif /* CONFIG_BLK_DEV_INITRD */
 
+#ifdef CONFIG_ACPI_INITRD_TABLE_OVERRIDE
+void __init x86_acpi_override_find(void)
+{
+	unsigned long ramdisk_image, ramdisk_size;
+	unsigned char *p = NULL;
+
+#ifdef CONFIG_X86_32
+	struct boot_params *boot_params_p;
+
+	/*
+	 * 32bit is from head_32.S, and it is 32bit flat mode.
+	 * So need to use phys address to access global variables.
+	 */
+	boot_params_p = (struct boot_params *)__pa_nodebug(&boot_params);
+	ramdisk_image = get_ramdisk_image(boot_params_p);
+	ramdisk_size  = get_ramdisk_size(boot_params_p);
+	p = (unsigned char *)ramdisk_image;
+	acpi_initrd_override_find(p, ramdisk_size, true);
+#else
+	ramdisk_image = get_ramdisk_image(&boot_params);
+	ramdisk_size  = get_ramdisk_size(&boot_params);
+	if (ramdisk_image)
+		p = __va(ramdisk_image);
+	acpi_initrd_override_find(p, ramdisk_size, false);
+#endif
+}
+#endif
+
 static void __init parse_setup_data(void)
 {
 	struct setup_data *data;
@@ -1117,12 +1145,10 @@ void __init setup_arch(char **cmdline_p)
 	/* Allocate bigger log buffer */
 	setup_log_buf(1);
 
-	reserve_initrd();
-
-	acpi_initrd_override_find((void *)initrd_start,
-					initrd_end - initrd_start, false);
 	acpi_initrd_override_copy();
 
+	reserve_initrd();
+
 	reserve_crashkernel();
 
 	vsmp_init();

  reply	other threads:[~2013-06-14 21:32 UTC|newest]

Thread overview: 156+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-13 13:02 [Part1 PATCH v5 00/22] x86, ACPI, numa: Parse numa info earlier Tang Chen
2013-06-13 13:02 ` Tang Chen
2013-06-13 13:02 ` [Part1 PATCH v5 01/22] x86: Change get_ramdisk_{image|size}() to global Tang Chen
2013-06-13 13:02   ` Tang Chen
2013-06-14 21:30   ` [tip:x86/mm] " tip-bot for Yinghai Lu
2013-06-13 13:02 ` [Part1 PATCH v5 02/22] x86, microcode: Use common get_ramdisk_{image|size}() Tang Chen
2013-06-13 13:02   ` Tang Chen
2013-06-14 21:31   ` [tip:x86/mm] x86, microcode: Use common get_ramdisk_{image|size}( ) tip-bot for Yinghai Lu
2013-06-13 13:02 ` [Part1 PATCH v5 03/22] x86, ACPI, mm: Kill max_low_pfn_mapped Tang Chen
2013-06-13 13:02   ` Tang Chen
2013-06-14 21:31   ` [tip:x86/mm] " tip-bot for Yinghai Lu
2013-06-17 21:04   ` [Part1 PATCH v5 03/22] " Tejun Heo
2013-06-17 21:04     ` Tejun Heo
2013-06-17 21:13     ` Yinghai Lu
2013-06-17 21:13       ` Yinghai Lu
2013-06-17 21:13       ` Yinghai Lu
2013-06-17 23:08       ` Tejun Heo
2013-06-17 23:08         ` Tejun Heo
2013-06-17 23:08         ` Tejun Heo
2013-06-13 13:02 ` [Part1 PATCH v5 04/22] x86, ACPI: Search buffer above 4GB in a second try for acpi initrd table override Tang Chen
2013-06-13 13:02   ` Tang Chen
2013-06-14 21:31   ` [tip:x86/mm] " tip-bot for Yinghai Lu
2013-06-17 21:06   ` [Part1 PATCH v5 04/22] " Tejun Heo
2013-06-17 21:06     ` Tejun Heo
2013-06-13 13:02 ` [Part1 PATCH v5 05/22] x86, ACPI: Increase acpi initrd override tables number limit Tang Chen
2013-06-13 13:02   ` Tang Chen
2013-06-14 21:31   ` [tip:x86/mm] " tip-bot for Yinghai Lu
2013-06-13 13:02 ` [Part1 PATCH v5 06/22] x86, ACPI: Split acpi_initrd_override() into find/copy two steps Tang Chen
2013-06-13 13:02   ` Tang Chen
2013-06-14 21:31   ` [tip:x86/mm] x86, ACPI: Split acpi_initrd_override() into find/ copy " tip-bot for Yinghai Lu
2013-06-13 13:02 ` [Part1 PATCH v5 07/22] x86, ACPI: Store override acpi tables phys addr in cpio files info array Tang Chen
2013-06-13 13:02   ` Tang Chen
2013-06-14 21:31   ` [tip:x86/mm] " tip-bot for Yinghai Lu
2013-06-17 23:38   ` [Part1 PATCH v5 07/22] " Tejun Heo
2013-06-17 23:38     ` Tejun Heo
2013-06-17 23:40     ` Yinghai Lu
2013-06-17 23:40       ` Yinghai Lu
2013-06-17 23:40       ` Yinghai Lu
2013-06-17 23:52   ` Tejun Heo
2013-06-17 23:52     ` Tejun Heo
2013-06-13 13:02 ` [Part1 PATCH v5 08/22] x86, ACPI: Make acpi_initrd_override_find work with 32bit flat mode Tang Chen
2013-06-13 13:02   ` Tang Chen
2013-06-14 21:31   ` [tip:x86/mm] " tip-bot for Yinghai Lu
2013-06-18  0:07   ` [Part1 PATCH v5 08/22] " Tejun Heo
2013-06-18  0:07     ` Tejun Heo
2013-06-13 13:02 ` [Part1 PATCH v5 09/22] x86, ACPI: Find acpi tables in initrd early from head_32.S/head64.c Tang Chen
2013-06-13 13:02   ` Tang Chen
2013-06-14 21:32   ` tip-bot for Yinghai Lu [this message]
2013-06-18  0:33   ` Tejun Heo
2013-06-18  0:33     ` Tejun Heo
2013-06-13 13:02 ` [Part1 PATCH v5 10/22] x86, mm, numa: Move two functions calling on successful path later Tang Chen
2013-06-13 13:02   ` Tang Chen
2013-06-14 21:32   ` [tip:x86/mm] " tip-bot for Yinghai Lu
2013-06-18  0:53   ` [Part1 PATCH v5 10/22] " Tejun Heo
2013-06-18  0:53     ` Tejun Heo
2013-06-13 13:02 ` [Part1 PATCH v5 11/22] x86, mm, numa: Call numa_meminfo_cover_memory() checking early Tang Chen
2013-06-13 13:02   ` Tang Chen
2013-06-14 21:32   ` [tip:x86/mm] " tip-bot for Yinghai Lu
2013-06-18  1:05   ` [Part1 PATCH v5 11/22] " Tejun Heo
2013-06-18  1:05     ` Tejun Heo
2013-06-13 13:02 ` [Part1 PATCH v5 12/22] x86, mm, numa: Move node_map_pfn_alignment() to x86 Tang Chen
2013-06-13 13:02   ` Tang Chen
2013-06-14 21:32   ` [tip:x86/mm] " tip-bot for Yinghai Lu
2013-06-18  1:08   ` [Part1 PATCH v5 12/22] " Tejun Heo
2013-06-18  1:08     ` Tejun Heo
2013-06-13 13:03 ` [Part1 PATCH v5 13/22] x86, mm, numa: Use numa_meminfo to check node_map_pfn alignment Tang Chen
2013-06-13 13:03   ` Tang Chen
2013-06-14 21:32   ` [tip:x86/mm] " tip-bot for Yinghai Lu
2013-06-18  1:40   ` [Part1 PATCH v5 13/22] " Tejun Heo
2013-06-18  1:40     ` Tejun Heo
2013-06-13 13:03 ` [Part1 PATCH v5 14/22] x86, mm, numa: Set memblock nid later Tang Chen
2013-06-13 13:03   ` Tang Chen
2013-06-14 21:32   ` [tip:x86/mm] " tip-bot for Yinghai Lu
2013-06-18  1:45   ` [Part1 PATCH v5 14/22] " Tejun Heo
2013-06-18  1:45     ` Tejun Heo
2013-06-13 13:03 ` [Part1 PATCH v5 15/22] x86, mm, numa: Move node_possible_map setting later Tang Chen
2013-06-13 13:03   ` Tang Chen
2013-06-14 21:32   ` [tip:x86/mm] " tip-bot for Yinghai Lu
2013-06-13 13:03 ` [Part1 PATCH v5 16/22] x86, mm, numa: Move numa emulation handling down Tang Chen
2013-06-13 13:03   ` Tang Chen
2013-06-14 21:33   ` [tip:x86/mm] " tip-bot for Yinghai Lu
2013-06-18  1:58   ` [Part1 PATCH v5 16/22] " Tejun Heo
2013-06-18  1:58     ` Tejun Heo
2013-06-18  6:22     ` Yinghai Lu
2013-06-18  6:22       ` Yinghai Lu
2013-06-18  7:13       ` Yinghai Lu
2013-06-18  7:13         ` Yinghai Lu
2013-06-19 21:25       ` Yinghai Lu
2013-06-19 21:25         ` Yinghai Lu
2013-06-13 13:03 ` [Part1 PATCH v5 17/22] x86, ACPI, numa, ia64: split SLIT handling out Tang Chen
2013-06-13 13:03   ` Tang Chen
2013-06-13 13:03   ` Tang Chen
2013-06-14 21:33   ` [tip:x86/mm] " tip-bot for Yinghai Lu
2013-06-13 13:03 ` [Part1 PATCH v5 18/22] x86, mm, numa: Add early_initmem_init() stub Tang Chen
2013-06-13 13:03   ` Tang Chen
2013-06-14 21:33   ` [tip:x86/mm] " tip-bot for Yinghai Lu
2013-06-13 13:03 ` [Part1 PATCH v5 19/22] x86, mm: Parse numa info earlier Tang Chen
2013-06-13 13:03   ` Tang Chen
2013-06-14 21:33   ` [tip:x86/mm] " tip-bot for Yinghai Lu
2013-06-13 13:03 ` [Part1 PATCH v5 20/22] x86, mm: Add comments for step_size shift Tang Chen
2013-06-13 13:03   ` Tang Chen
2013-06-14 21:33   ` [tip:x86/mm] " tip-bot for Yinghai Lu
2013-06-13 13:03 ` [Part1 PATCH v5 21/22] x86, mm: Make init_mem_mapping be able to be called several times Tang Chen
2013-06-13 13:03   ` Tang Chen
2013-06-13 18:35   ` Konrad Rzeszutek Wilk
2013-06-13 18:35     ` Konrad Rzeszutek Wilk
2013-06-13 22:47     ` Yinghai Lu
2013-06-13 22:47       ` Yinghai Lu
2013-06-14  5:08       ` Tang Chen
2013-06-14  5:08         ` Tang Chen
2013-06-14 21:33   ` [tip:x86/mm] " tip-bot for Yinghai Lu
2013-06-13 13:03 ` [Part1 PATCH v5 22/22] x86, mm, numa: Put pagetable on local node ram for 64bit Tang Chen
2013-06-13 13:03   ` Tang Chen
2013-06-14 21:34   ` [tip:x86/mm] " tip-bot for Yinghai Lu
2013-06-18  2:03 ` [Part1 PATCH v5 00/22] x86, ACPI, numa: Parse numa info earlier Tejun Heo
2013-06-18  2:03   ` Tejun Heo
2013-06-18  5:47   ` Tang Chen
2013-06-18  5:47     ` Tang Chen
2013-06-18 17:21     ` Tejun Heo
2013-06-18 17:21       ` Tejun Heo
2013-06-20  5:52       ` Tang Chen
2013-06-20  5:52         ` Tang Chen
2013-06-20  6:17         ` Tejun Heo
2013-06-20  6:17           ` Tejun Heo
2013-06-21  9:19           ` Tang Chen
2013-06-21  9:19             ` Tang Chen
2013-06-21 18:25             ` Tejun Heo
2013-06-21 18:25               ` Tejun Heo
2013-06-24  3:51               ` Tang Chen
2013-06-24  3:51                 ` Tang Chen
2013-06-24  7:26                 ` Tang Chen
2013-06-24  7:26                   ` Tang Chen
2013-06-24 19:59                   ` Tejun Heo
2013-06-24 19:59                     ` Tejun Heo
2013-06-18 17:10 ` Vasilis Liaskovitis
2013-06-18 17:10   ` Vasilis Liaskovitis
2013-06-18 20:19   ` Yinghai Lu
2013-06-18 20:19     ` Yinghai Lu
2013-06-19 10:05     ` Vasilis Liaskovitis
2013-06-19 10:05       ` Vasilis Liaskovitis
2013-06-20 18:42       ` Yinghai Lu
2013-06-20 18:42         ` Yinghai Lu
2013-06-24  9:40   ` Gu Zheng
2013-06-24  9:40     ` Gu Zheng
2013-06-21  5:19 ` H. Peter Anvin
2013-06-21  5:19   ` H. Peter Anvin
2013-06-21  6:06   ` Tang Chen
2013-06-21  6:06     ` Tang Chen
2013-06-21  6:10     ` H. Peter Anvin
2013-06-21  6:10       ` H. Peter Anvin
2013-06-21  6:20       ` Tang Chen
2013-06-21  6:20         ` Tang Chen
2013-06-21  6:26         ` Tejun Heo
2013-06-21  6:26           ` Tejun Heo
2013-06-21 20:18   ` Yinghai Lu
2013-06-21 20:18     ` 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=tip-88168dcb255f44892bcf9f6fac6aeb424471ffaa@git.kernel.org \
    --to=tipbot@zytor.com \
    --cc=hpa@linux.intel.com \
    --cc=hpa@zytor.com \
    --cc=jacob.shin@amd.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=penberg@kernel.org \
    --cc=rjw@sisk.pl \
    --cc=tangchen@cn.fujitsu.com \
    --cc=tglx@linutronix.de \
    --cc=trenn@suse.de \
    --cc=yinghai@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.