All of lore.kernel.org
 help / color / mirror / Atom feed
From: "H. Peter Anvin" <hpa@linux.intel.com>
To: linux-kernel@vger.kernel.org
Cc: "H. Peter Anvin" <hpa@zytor.com>,
	kexec@lists.infradead.org, hbabu@us.ibm.com,
	ebiederm@xmission.com, ying.huang@intel.com, mingo@elte.hu,
	sam@ravnborg.org, tglx@linutronix.de, vgoyal@redhat.com
Subject: [PATCH 02/14] x86, boot: honor CONFIG_PHYSICAL_START when relocatable
Date: Thu,  7 May 2009 15:26:50 -0700	[thread overview]
Message-ID: <1241735222-6640-3-git-send-email-hpa@linux.intel.com> (raw)
In-Reply-To: <1241735222-6640-1-git-send-email-hpa@linux.intel.com>

From: H. Peter Anvin <hpa@zytor.com>

Currently, when building a relocatable kernel, CONFIG_PHYSICAL_START
is ignored.  This is undesirable, as we would like to keep the kernel
out of ZONE_DMA and away from the possible memory hole at 15 MB (which
some vendors for some bizarre reason still have.)

With this patch, CONFIG_PHYSICAL_START is considered the *minimum*
address at which the kernel can be located; a relocating bootloader
can locate it higher, but not lower.  This also restores the
originally intended behavior that CONFIG_RELOCATABLE is functionally a
noop if used with a non-relocating bootloader.

This patch also change movsb and stosb to movsl, stosl and stosq, to
shave a small fraction off the boot time.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
---
 arch/x86/boot/compressed/head_32.S |   77 ++++++++++++++++++-----------------
 arch/x86/boot/compressed/head_64.S |   37 ++++++++++-------
 2 files changed, 61 insertions(+), 53 deletions(-)

diff --git a/arch/x86/boot/compressed/head_32.S b/arch/x86/boot/compressed/head_32.S
index 85bd328..31fc6dc 100644
--- a/arch/x86/boot/compressed/head_32.S
+++ b/arch/x86/boot/compressed/head_32.S
@@ -39,11 +39,11 @@ ENTRY(startup_32)
 
 	cli
 	movl $(__BOOT_DS),%eax
-	movl %eax,%ds
-	movl %eax,%es
-	movl %eax,%fs
-	movl %eax,%gs
-	movl %eax,%ss
+	movl %eax, %ds
+	movl %eax, %es
+	movl %eax, %fs
+	movl %eax, %gs
+	movl %eax, %ss
 1:
 
 /* Calculate the delta between where we were compiled to run
@@ -64,12 +64,18 @@ ENTRY(startup_32)
  */
 
 #ifdef CONFIG_RELOCATABLE
-	movl 	%ebp, %ebx
-	addl    $(CONFIG_PHYSICAL_ALIGN - 1), %ebx
-	andl    $(~(CONFIG_PHYSICAL_ALIGN - 1)), %ebx
+	movl $LOAD_PHYSICAL_ADDR, %eax
+	movl %ebp, %ebx
+	cmpl %ebx, %eax
+	jbe 1f
+	movl %eax, %ebx
+1:
+	addl $(CONFIG_PHYSICAL_ALIGN - 1), %ebx
+	andl $(~(CONFIG_PHYSICAL_ALIGN - 1)), %ebx
 #else
 	movl $LOAD_PHYSICAL_ADDR, %ebx
 #endif
+	movl %ebx, %edi		/* Save kernel target address */
 
 	/* Replace the compressed data size with the uncompressed size */
 	subl input_len(%ebp), %ebx
@@ -84,27 +90,30 @@ ENTRY(startup_32)
 	addl $4095, %ebx
 	andl $~4095, %ebx
 
-/* Copy the compressed kernel to the end of our buffer
+/*
+ * Set up the stack
+ */
+	leal boot_stack_end(%ebx), %esp
+	pushl %edi		/* Saved kernel target address */
+
+/*
+ * Copy the compressed kernel to the end of our buffer
  * where decompression in place becomes safe.
  */
 	pushl %esi
-	leal _ebss(%ebp), %esi
-	leal _ebss(%ebx), %edi
-	movl $(_ebss - startup_32), %ecx
+	leal (_bss-4)(%ebp), %esi
+	leal (_bss-4)(%ebx), %edi
+	movl $(_bss - startup_32), %ecx
+	shrl $2, %ecx
 	std
-	rep
-	movsb
+	rep; movsl
 	cld
 	popl %esi
 
-/* Compute the kernel start address.
+/*
+ * %ebp -> kernel target address
  */
-#ifdef CONFIG_RELOCATABLE
-	addl    $(CONFIG_PHYSICAL_ALIGN - 1), %ebp
-	andl    $(~(CONFIG_PHYSICAL_ALIGN - 1)), %ebp
-#else
-	movl	$LOAD_PHYSICAL_ADDR, %ebp
-#endif
+	popl %ebp
 
 /*
  * Jump to the relocated address.
@@ -117,20 +126,14 @@ ENDPROC(startup_32)
 relocated:
 
 /*
- * Clear BSS
- */
-	xorl %eax,%eax
-	leal _edata(%ebx),%edi
-	leal _ebss(%ebx), %ecx
-	subl %edi,%ecx
-	cld
-	rep
-	stosb
-
-/*
- * Setup the stack for the decompressor
+ * Clear BSS - note: stack is currently empty
  */
-	leal boot_stack_end(%ebx), %esp
+	xorl %eax, %eax
+	leal _bss(%ebx), %edi
+	leal (_ebss+3)(%ebx), %ecx
+	subl %edi, %ecx
+	shrl $2, %ecx
+	rep; stosl
 
 /*
  * Do the decompression, and jump to the new kernel..
@@ -178,12 +181,12 @@ relocated:
 /*
  * Jump to the decompressed kernel.
  */
-	xorl %ebx,%ebx
+	xorl %ebx, %ebx
 	jmp *%ebp
 
-.bss
 /* Stack and heap for uncompression */
-.balign 4
+	.bss
+	.balign 4
 boot_heap:
 	.fill BOOT_HEAP_SIZE, 1, 0
 boot_stack:
diff --git a/arch/x86/boot/compressed/head_64.S b/arch/x86/boot/compressed/head_64.S
index ed4a829..f4ddd02 100644
--- a/arch/x86/boot/compressed/head_64.S
+++ b/arch/x86/boot/compressed/head_64.S
@@ -7,11 +7,6 @@
 /*
  *  head.S contains the 32-bit startup code.
  *
- * NOTE!!! Startup happens at absolute address 0x00001000, which is also where
- * the page directory will exist. The startup code will be overwritten by
- * the page directory. [According to comments etc elsewhere on a compressed
- * kernel it will end up at 0x1000 + 1Mb I hope so as I assume this. - AC]
- *
  * Page 0 is deliberately kept safe, since System Management Mode code in 
  * laptops may need to access the BIOS data stored there.  This is also
  * useful for future device drivers that either access the BIOS via VM86 
@@ -77,11 +72,17 @@ ENTRY(startup_32)
  * contains the address where we should move the kernel image temporarily
  * for safe in-place decompression.
  */
+ALIGN_MASK	= (CONFIG_PHYSICAL_ALIGN-1) | (PMD_PAGE_SIZE-1)
 
 #ifdef CONFIG_RELOCATABLE
+	movl	$CONFIG_PHYSICAL_START, %eax
 	movl	%ebp, %ebx
-	addl	$(PMD_PAGE_SIZE -1), %ebx
-	andl	$PMD_PAGE_MASK, %ebx
+	addl	$ALIGN_MASK, %ebx
+	andl	$~ALIGN_MASK, %ebx
+	cmpl	%ebx, %eax
+	jbe	1f
+	movl	%eax, %ebx
+1:
 #else
 	movl	$CONFIG_PHYSICAL_START, %ebx
 #endif
@@ -221,13 +222,17 @@ ENTRY(startup_64)
 	/* Start with the delta to where the kernel will run at. */
 #ifdef CONFIG_RELOCATABLE
 	leaq	startup_32(%rip) /* - $startup_32 */, %rbp
-	addq	$(PMD_PAGE_SIZE - 1), %rbp
-	andq	$PMD_PAGE_MASK, %rbp
-	movq	%rbp, %rbx
+	movq	$CONFIG_PHYSICAL_START, %rax
+	addq	$ALIGN_MASK, %rbp
+	andq	$~ALIGN_MASK, %rbp
+	cmpq	%rbp, %rax
+	jbe	1f
+	movq	%rax, %rbp
+1:
 #else
 	movq	$CONFIG_PHYSICAL_START, %rbp
-	movq	%rbp, %rbx
 #endif
+	movq	%rbp, %rbx
 
 	/* Replace the compressed data size with the uncompressed size */
 	movl	input_len(%rip), %eax
@@ -266,13 +271,13 @@ relocated:
 /*
  * Clear BSS
  */
-	xorq	%rax, %rax
-	leaq    _edata(%rbx), %rdi
-	leaq    _end_before_pgt(%rbx), %rcx
+	xorl	%eax, %eax
+	leaq    _edata(%rip), %rdi
+	leaq    _end_before_pgt(%rip), %rcx
 	subq	%rdi, %rcx
+	shrq	$3, %rcx
 	cld
-	rep
-	stosb
+	rep	stosq
 
 	/* Setup the stack */
 	leaq	boot_stack_end(%rip), %rsp
-- 
1.6.0.6


_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec

WARNING: multiple messages have this Message-ID (diff)
From: "H. Peter Anvin" <hpa@linux.intel.com>
To: linux-kernel@vger.kernel.org
Cc: vgoyal@redhat.com, hbabu@us.ibm.com, kexec@lists.infradead.org,
	ying.huang@intel.com, mingo@elte.hu, tglx@linutronix.de,
	ebiederm@xmission.com, sam@ravnborg.org,
	"H. Peter Anvin" <hpa@zytor.com>
Subject: [PATCH 02/14] x86, boot: honor CONFIG_PHYSICAL_START when relocatable
Date: Thu,  7 May 2009 15:26:50 -0700	[thread overview]
Message-ID: <1241735222-6640-3-git-send-email-hpa@linux.intel.com> (raw)
In-Reply-To: <1241735222-6640-1-git-send-email-hpa@linux.intel.com>

From: H. Peter Anvin <hpa@zytor.com>

Currently, when building a relocatable kernel, CONFIG_PHYSICAL_START
is ignored.  This is undesirable, as we would like to keep the kernel
out of ZONE_DMA and away from the possible memory hole at 15 MB (which
some vendors for some bizarre reason still have.)

With this patch, CONFIG_PHYSICAL_START is considered the *minimum*
address at which the kernel can be located; a relocating bootloader
can locate it higher, but not lower.  This also restores the
originally intended behavior that CONFIG_RELOCATABLE is functionally a
noop if used with a non-relocating bootloader.

This patch also change movsb and stosb to movsl, stosl and stosq, to
shave a small fraction off the boot time.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
---
 arch/x86/boot/compressed/head_32.S |   77 ++++++++++++++++++-----------------
 arch/x86/boot/compressed/head_64.S |   37 ++++++++++-------
 2 files changed, 61 insertions(+), 53 deletions(-)

diff --git a/arch/x86/boot/compressed/head_32.S b/arch/x86/boot/compressed/head_32.S
index 85bd328..31fc6dc 100644
--- a/arch/x86/boot/compressed/head_32.S
+++ b/arch/x86/boot/compressed/head_32.S
@@ -39,11 +39,11 @@ ENTRY(startup_32)
 
 	cli
 	movl $(__BOOT_DS),%eax
-	movl %eax,%ds
-	movl %eax,%es
-	movl %eax,%fs
-	movl %eax,%gs
-	movl %eax,%ss
+	movl %eax, %ds
+	movl %eax, %es
+	movl %eax, %fs
+	movl %eax, %gs
+	movl %eax, %ss
 1:
 
 /* Calculate the delta between where we were compiled to run
@@ -64,12 +64,18 @@ ENTRY(startup_32)
  */
 
 #ifdef CONFIG_RELOCATABLE
-	movl 	%ebp, %ebx
-	addl    $(CONFIG_PHYSICAL_ALIGN - 1), %ebx
-	andl    $(~(CONFIG_PHYSICAL_ALIGN - 1)), %ebx
+	movl $LOAD_PHYSICAL_ADDR, %eax
+	movl %ebp, %ebx
+	cmpl %ebx, %eax
+	jbe 1f
+	movl %eax, %ebx
+1:
+	addl $(CONFIG_PHYSICAL_ALIGN - 1), %ebx
+	andl $(~(CONFIG_PHYSICAL_ALIGN - 1)), %ebx
 #else
 	movl $LOAD_PHYSICAL_ADDR, %ebx
 #endif
+	movl %ebx, %edi		/* Save kernel target address */
 
 	/* Replace the compressed data size with the uncompressed size */
 	subl input_len(%ebp), %ebx
@@ -84,27 +90,30 @@ ENTRY(startup_32)
 	addl $4095, %ebx
 	andl $~4095, %ebx
 
-/* Copy the compressed kernel to the end of our buffer
+/*
+ * Set up the stack
+ */
+	leal boot_stack_end(%ebx), %esp
+	pushl %edi		/* Saved kernel target address */
+
+/*
+ * Copy the compressed kernel to the end of our buffer
  * where decompression in place becomes safe.
  */
 	pushl %esi
-	leal _ebss(%ebp), %esi
-	leal _ebss(%ebx), %edi
-	movl $(_ebss - startup_32), %ecx
+	leal (_bss-4)(%ebp), %esi
+	leal (_bss-4)(%ebx), %edi
+	movl $(_bss - startup_32), %ecx
+	shrl $2, %ecx
 	std
-	rep
-	movsb
+	rep; movsl
 	cld
 	popl %esi
 
-/* Compute the kernel start address.
+/*
+ * %ebp -> kernel target address
  */
-#ifdef CONFIG_RELOCATABLE
-	addl    $(CONFIG_PHYSICAL_ALIGN - 1), %ebp
-	andl    $(~(CONFIG_PHYSICAL_ALIGN - 1)), %ebp
-#else
-	movl	$LOAD_PHYSICAL_ADDR, %ebp
-#endif
+	popl %ebp
 
 /*
  * Jump to the relocated address.
@@ -117,20 +126,14 @@ ENDPROC(startup_32)
 relocated:
 
 /*
- * Clear BSS
- */
-	xorl %eax,%eax
-	leal _edata(%ebx),%edi
-	leal _ebss(%ebx), %ecx
-	subl %edi,%ecx
-	cld
-	rep
-	stosb
-
-/*
- * Setup the stack for the decompressor
+ * Clear BSS - note: stack is currently empty
  */
-	leal boot_stack_end(%ebx), %esp
+	xorl %eax, %eax
+	leal _bss(%ebx), %edi
+	leal (_ebss+3)(%ebx), %ecx
+	subl %edi, %ecx
+	shrl $2, %ecx
+	rep; stosl
 
 /*
  * Do the decompression, and jump to the new kernel..
@@ -178,12 +181,12 @@ relocated:
 /*
  * Jump to the decompressed kernel.
  */
-	xorl %ebx,%ebx
+	xorl %ebx, %ebx
 	jmp *%ebp
 
-.bss
 /* Stack and heap for uncompression */
-.balign 4
+	.bss
+	.balign 4
 boot_heap:
 	.fill BOOT_HEAP_SIZE, 1, 0
 boot_stack:
diff --git a/arch/x86/boot/compressed/head_64.S b/arch/x86/boot/compressed/head_64.S
index ed4a829..f4ddd02 100644
--- a/arch/x86/boot/compressed/head_64.S
+++ b/arch/x86/boot/compressed/head_64.S
@@ -7,11 +7,6 @@
 /*
  *  head.S contains the 32-bit startup code.
  *
- * NOTE!!! Startup happens at absolute address 0x00001000, which is also where
- * the page directory will exist. The startup code will be overwritten by
- * the page directory. [According to comments etc elsewhere on a compressed
- * kernel it will end up at 0x1000 + 1Mb I hope so as I assume this. - AC]
- *
  * Page 0 is deliberately kept safe, since System Management Mode code in 
  * laptops may need to access the BIOS data stored there.  This is also
  * useful for future device drivers that either access the BIOS via VM86 
@@ -77,11 +72,17 @@ ENTRY(startup_32)
  * contains the address where we should move the kernel image temporarily
  * for safe in-place decompression.
  */
+ALIGN_MASK	= (CONFIG_PHYSICAL_ALIGN-1) | (PMD_PAGE_SIZE-1)
 
 #ifdef CONFIG_RELOCATABLE
+	movl	$CONFIG_PHYSICAL_START, %eax
 	movl	%ebp, %ebx
-	addl	$(PMD_PAGE_SIZE -1), %ebx
-	andl	$PMD_PAGE_MASK, %ebx
+	addl	$ALIGN_MASK, %ebx
+	andl	$~ALIGN_MASK, %ebx
+	cmpl	%ebx, %eax
+	jbe	1f
+	movl	%eax, %ebx
+1:
 #else
 	movl	$CONFIG_PHYSICAL_START, %ebx
 #endif
@@ -221,13 +222,17 @@ ENTRY(startup_64)
 	/* Start with the delta to where the kernel will run at. */
 #ifdef CONFIG_RELOCATABLE
 	leaq	startup_32(%rip) /* - $startup_32 */, %rbp
-	addq	$(PMD_PAGE_SIZE - 1), %rbp
-	andq	$PMD_PAGE_MASK, %rbp
-	movq	%rbp, %rbx
+	movq	$CONFIG_PHYSICAL_START, %rax
+	addq	$ALIGN_MASK, %rbp
+	andq	$~ALIGN_MASK, %rbp
+	cmpq	%rbp, %rax
+	jbe	1f
+	movq	%rax, %rbp
+1:
 #else
 	movq	$CONFIG_PHYSICAL_START, %rbp
-	movq	%rbp, %rbx
 #endif
+	movq	%rbp, %rbx
 
 	/* Replace the compressed data size with the uncompressed size */
 	movl	input_len(%rip), %eax
@@ -266,13 +271,13 @@ relocated:
 /*
  * Clear BSS
  */
-	xorq	%rax, %rax
-	leaq    _edata(%rbx), %rdi
-	leaq    _end_before_pgt(%rbx), %rcx
+	xorl	%eax, %eax
+	leaq    _edata(%rip), %rdi
+	leaq    _end_before_pgt(%rip), %rcx
 	subq	%rdi, %rcx
+	shrq	$3, %rcx
 	cld
-	rep
-	stosb
+	rep	stosq
 
 	/* Setup the stack */
 	leaq	boot_stack_end(%rip), %rsp
-- 
1.6.0.6


  parent reply	other threads:[~2009-05-07 22:27 UTC|newest]

Thread overview: 90+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-05-07 22:26 [PATCH 00/14] RFC: x86: relocatable kernel changes H. Peter Anvin
2009-05-07 22:26 ` H. Peter Anvin
2009-05-07 22:26 ` [PATCH 01/14] x86, boot: align the .bss section in the decompressor H. Peter Anvin
2009-05-07 22:26   ` H. Peter Anvin
2009-05-08  7:17   ` Sam Ravnborg
2009-05-08  7:17     ` Sam Ravnborg
2009-05-08  8:18     ` Eric Dumazet
2009-05-08  8:18       ` Eric Dumazet
2009-05-08 16:54     ` H. Peter Anvin
2009-05-08 16:54       ` H. Peter Anvin
2009-05-08  7:53   ` Cyrill Gorcunov
2009-05-08  7:53     ` Cyrill Gorcunov
2009-05-08 17:03     ` H. Peter Anvin
2009-05-08 17:03       ` H. Peter Anvin
2009-05-08 17:15       ` Cyrill Gorcunov
2009-05-08 17:15         ` Cyrill Gorcunov
2009-05-08 17:21         ` H. Peter Anvin
2009-05-08 17:21           ` H. Peter Anvin
2009-05-07 22:26 ` H. Peter Anvin [this message]
2009-05-07 22:26   ` [PATCH 02/14] x86, boot: honor CONFIG_PHYSICAL_START when relocatable H. Peter Anvin
2009-05-08  7:34   ` Sam Ravnborg
2009-05-08  7:34     ` Sam Ravnborg
2009-05-08 16:58     ` H. Peter Anvin
2009-05-08 16:58       ` H. Peter Anvin
2009-05-07 22:26 ` [PATCH 03/14] x86, config: change defaults PHYSICAL_START and PHYSICAL_ALIGN H. Peter Anvin
2009-05-07 22:26   ` H. Peter Anvin
2009-05-08  7:36   ` Sam Ravnborg
2009-05-08  7:36     ` Sam Ravnborg
2009-05-08  9:47     ` Ingo Molnar
2009-05-08  9:47       ` Ingo Molnar
2009-05-08 17:01     ` H. Peter Anvin
2009-05-08 17:01       ` H. Peter Anvin
2009-05-07 22:26 ` [PATCH 04/14] x86, boot: unify use LOAD_PHYSICAL_ADDR and LOAD_PHYSICAL_ALIGN H. Peter Anvin
2009-05-07 22:26   ` H. Peter Anvin
2009-05-07 22:26 ` [PATCH 05/14] kbuild: allow compressors (gzip, bzip2, lzma) to take multiple inputs H. Peter Anvin
2009-05-07 22:26   ` H. Peter Anvin
2009-05-08  7:42   ` Sam Ravnborg
2009-05-08  7:42     ` Sam Ravnborg
2009-05-08 20:18     ` H. Peter Anvin
2009-05-08 20:18       ` H. Peter Anvin
2009-05-08 20:47       ` Sam Ravnborg
2009-05-08 20:47         ` Sam Ravnborg
2009-05-08 20:49         ` H. Peter Anvin
2009-05-08 20:49           ` H. Peter Anvin
2009-05-08 21:33           ` Sam Ravnborg
2009-05-08 21:33             ` Sam Ravnborg
2009-05-07 22:26 ` [PATCH 06/14] x86: add a Kconfig symbol for when relocations are needed H. Peter Anvin
2009-05-07 22:26   ` H. Peter Anvin
2009-05-07 22:26 ` [PATCH 07/14] x86, boot: simplify arch/x86/boot/compressed/Makefile H. Peter Anvin
2009-05-07 22:26   ` H. Peter Anvin
2009-05-08  7:45   ` Sam Ravnborg
2009-05-08  7:45     ` Sam Ravnborg
2009-05-07 22:26 ` [PATCH 08/14] x86, boot: use BP_scratch in arch/x86/boot/compressed/head_*.S H. Peter Anvin
2009-05-07 22:26   ` H. Peter Anvin
2009-05-07 22:26 ` [PATCH 09/14] x86, boot: add new runtime_address and runtime_size bzImage fields H. Peter Anvin
2009-05-07 22:26   ` H. Peter Anvin
2009-05-08  7:55   ` Sam Ravnborg
2009-05-08  7:55     ` Sam Ravnborg
2009-05-08 21:09     ` H. Peter Anvin
2009-05-08 21:09       ` H. Peter Anvin
2009-05-08 21:35       ` Sam Ravnborg
2009-05-08 21:35         ` Sam Ravnborg
2009-05-07 22:26 ` [PATCH 10/14] x86, doc: document the runtime_start " H. Peter Anvin
2009-05-07 22:26   ` H. Peter Anvin
2009-05-07 22:26 ` [PATCH 11/14] x86, boot: use rep movsq to move kernel on 64 bits H. Peter Anvin
2009-05-07 22:26   ` H. Peter Anvin
2009-05-07 22:27 ` [PATCH 12/14] x86, boot: zero EFLAGS on 32 bits H. Peter Anvin
2009-05-07 22:27   ` H. Peter Anvin
2009-05-07 22:27 ` [PATCH 13/14] x86: make CONFIG_RELOCATABLE the default H. Peter Anvin
2009-05-07 22:27   ` H. Peter Anvin
2009-05-07 22:27 ` [PATCH 14/14] x86, defconfig: update defconfigs to relocatable H. Peter Anvin
2009-05-07 22:27   ` H. Peter Anvin
2009-05-08  1:23 ` [PATCH 00/14] RFC: x86: relocatable kernel changes Eric W. Biederman
2009-05-08  1:23   ` Eric W. Biederman
2009-05-08  5:31   ` H. Peter Anvin
2009-05-08  5:31     ` H. Peter Anvin
2009-05-08  6:54     ` Eric W. Biederman
2009-05-08  6:54       ` Eric W. Biederman
2009-05-08 18:04       ` H. Peter Anvin
2009-05-08 18:04         ` H. Peter Anvin
2009-05-08 18:47       ` H. Peter Anvin
2009-05-08 18:47         ` H. Peter Anvin
2009-05-11  5:18         ` RFC: x86: relocatable kernel changes (revised spec) H. Peter Anvin
2009-05-11  5:18           ` H. Peter Anvin
2009-05-11 11:54           ` Eric W. Biederman
2009-05-11 11:54             ` Eric W. Biederman
2009-05-11 16:03             ` H. Peter Anvin
2009-05-11 16:03               ` H. Peter Anvin
2009-05-11 17:56             ` RFC: x86: relocatable kernel changes (revised spec v2) H. Peter Anvin
2009-05-11 17:56               ` H. Peter Anvin

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=1241735222-6640-3-git-send-email-hpa@linux.intel.com \
    --to=hpa@linux.intel.com \
    --cc=ebiederm@xmission.com \
    --cc=hbabu@us.ibm.com \
    --cc=hpa@zytor.com \
    --cc=kexec@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=sam@ravnborg.org \
    --cc=tglx@linutronix.de \
    --cc=vgoyal@redhat.com \
    --cc=ying.huang@intel.com \
    /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.