From: Chris Wright <chrisw@sous-sol.org>
To: linux-kernel@vger.kernel.org
Cc: virtualization@lists.osdl.org, xen-devel@lists.xensource.com,
Jeremy Fitzhardinge <jeremy@goop.org>, Andi Kleen <ak@suse.de>,
Andrew Morton <akpm@osdl.org>,
Rusty Russell <rusty@rustcorp.com.au>,
Zachary Amsden <zach@vmware.com>,
Ian Pratt <ian.pratt@xensource.com>,
Christian Limpach <Christian.Limpach@cl.cam.ac.uk>
Subject: [RFC PATCH 13/33] Add a new head.S start-of-day file for booting on Xen.
Date: Tue, 18 Jul 2006 00:00:13 -0700 [thread overview]
Message-ID: <20060718091951.689269000@sous-sol.org> (raw)
In-Reply-To: <20060718091807.467468000@sous-sol.org>
[-- Attachment #1: i386-head.S --]
[-- Type: text/plain, Size: 12092 bytes --]
When running on Xen, the kernel is started with paging enabled. Also
don't check for cpu features which are present on all cpus supported
by Xen.
Don't define segments which are not supported when running on Xen.
Define the __xen_guest section which exports information about the
kernel to the domain builder.
Signed-off-by: Ian Pratt <ian.pratt@xensource.com>
Signed-off-by: Christian Limpach <Christian.Limpach@cl.cam.ac.uk>
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
---
arch/i386/Makefile | 7 +-
arch/i386/kernel/head-cpu.S | 86 +++++++++++++++++++++++++++++
arch/i386/kernel/head.S | 71 ++----------------------
arch/i386/mach-xen/Makefile | 2
arch/i386/mach-xen/head.S | 127 +++++++++++++++++++++++++++++++++++++++++++
5 files changed, 226 insertions(+), 67 deletions(-)
diff -r 1fae6e99c029 arch/i386/Makefile
--- a/arch/i386/Makefile Thu Jun 22 20:21:43 2006 -0400
+++ b/arch/i386/Makefile Thu Jun 22 20:29:44 2006 -0400
@@ -48,6 +48,9 @@ CFLAGS += $(shell if [ $(call cc-vers
CFLAGS += $(cflags-y)
+# Default subarch head files
+head-y := arch/i386/kernel/head.o arch/i386/kernel/init_task.o
+
# Default subarch .c files
mcore-y := mach-default
@@ -74,6 +77,8 @@ mcore-$(CONFIG_X86_SUMMIT) := mach-defa
# Xen subarch support
mflags-$(CONFIG_X86_XEN) := -Iinclude/asm-i386/mach-xen
mcore-$(CONFIG_X86_XEN) := mach-xen
+head-$(CONFIG_X86_XEN) := arch/i386/mach-xen/head.o \
+ arch/i386/kernel/init_task.o
# generic subarchitecture
mflags-$(CONFIG_X86_GENERICARCH) := -Iinclude/asm-i386/mach-generic
@@ -87,8 +92,6 @@ core-$(CONFIG_X86_ES7000) := arch/i386/m
# default subarch .h files
mflags-y += -Iinclude/asm-i386/mach-default
-
-head-y := arch/i386/kernel/head.o arch/i386/kernel/init_task.o
libs-y += arch/i386/lib/
core-y += arch/i386/kernel/ \
diff -r 1fae6e99c029 arch/i386/kernel/head.S
--- a/arch/i386/kernel/head.S Thu Jun 22 20:21:43 2006 -0400
+++ b/arch/i386/kernel/head.S Thu Jun 22 20:29:44 2006 -0400
@@ -19,6 +19,8 @@
#include <asm/thread_info.h>
#include <asm/asm-offsets.h>
#include <asm/setup.h>
+
+#include "head-cpu.S"
/*
* References to members of the new_cpu_data structure.
@@ -270,28 +272,12 @@ checkCPUtype:
testl $0x200000,%eax # check if ID bit changed
je is486
- /* get vendor info */
- xorl %eax,%eax # call CPUID with 0 -> return vendor ID
- cpuid
- movl %eax,X86_CPUID # save CPUID level
- movl %ebx,X86_VENDOR_ID # lo 4 chars
- movl %edx,X86_VENDOR_ID+4 # next 4 chars
- movl %ecx,X86_VENDOR_ID+8 # last 4 chars
+ CPUID_GET_VENDOR_INFO X86_CPUID, X86_VENDOR_ID
orl %eax,%eax # do we have processor info as well?
je is486
- movl $1,%eax # Use the CPUID instruction to get CPU type
- cpuid
- movb %al,%cl # save reg for future use
- andb $0x0f,%ah # mask processor family
- movb %ah,X86
- andb $0xf0,%al # mask model
- shrb $4,%al
- movb %al,X86_MODEL
- andb $0x0f,%cl # mask mask revision
- movb %cl,X86_MASK
- movl %edx,X86_CAPABILITY
+ CPUID_GET_CPU_TYPE X86, X86_MODEL, X86_MASK, X86_CAPABILITY
is486: movl $0x50022,%ecx # set AM, WP, NE and MP
jmp 2f
@@ -484,50 +470,5 @@ ENTRY(boot_gdt_table)
*/
.align L1_CACHE_BYTES
ENTRY(cpu_gdt_table)
- .quad 0x0000000000000000 /* NULL descriptor */
- .quad 0x0000000000000000 /* 0x0b reserved */
- .quad 0x0000000000000000 /* 0x13 reserved */
- .quad 0x0000000000000000 /* 0x1b reserved */
- .quad 0x0000000000000000 /* 0x20 unused */
- .quad 0x0000000000000000 /* 0x28 unused */
- .quad 0x0000000000000000 /* 0x33 TLS entry 1 */
- .quad 0x0000000000000000 /* 0x3b TLS entry 2 */
- .quad 0x0000000000000000 /* 0x43 TLS entry 3 */
- .quad 0x0000000000000000 /* 0x4b reserved */
- .quad 0x0000000000000000 /* 0x53 reserved */
- .quad 0x0000000000000000 /* 0x5b reserved */
-
- .quad 0x00cf9a000000ffff /* 0x60 kernel 4GB code at 0x00000000 */
- .quad 0x00cf92000000ffff /* 0x68 kernel 4GB data at 0x00000000 */
- .quad 0x00cffa000000ffff /* 0x73 user 4GB code at 0x00000000 */
- .quad 0x00cff2000000ffff /* 0x7b user 4GB data at 0x00000000 */
-
- .quad 0x0000000000000000 /* 0x80 TSS descriptor */
- .quad 0x0000000000000000 /* 0x88 LDT descriptor */
-
- /*
- * Segments used for calling PnP BIOS have byte granularity.
- * They code segments and data segments have fixed 64k limits,
- * the transfer segment sizes are set at run time.
- */
- .quad 0x00409a000000ffff /* 0x90 32-bit code */
- .quad 0x00009a000000ffff /* 0x98 16-bit code */
- .quad 0x000092000000ffff /* 0xa0 16-bit data */
- .quad 0x0000920000000000 /* 0xa8 16-bit data */
- .quad 0x0000920000000000 /* 0xb0 16-bit data */
-
- /*
- * The APM segments have byte granularity and their bases
- * are set at run time. All have 64k limits.
- */
- .quad 0x00409a000000ffff /* 0xb8 APM CS code */
- .quad 0x00009a000000ffff /* 0xc0 APM CS 16 code (16 bit) */
- .quad 0x004092000000ffff /* 0xc8 APM DS data */
-
- .quad 0x0000920000000000 /* 0xd0 - ESPFIX 16-bit SS */
- .quad 0x0000000000000000 /* 0xd8 - unused */
- .quad 0x0000000000000000 /* 0xe0 - unused */
- .quad 0x0000000000000000 /* 0xe8 - unused */
- .quad 0x0000000000000000 /* 0xf0 - unused */
- .quad 0x0000000000000000 /* 0xf8 - GDT entry 31: double-fault TSS */
-
+ CPU_GDT_TABLE
+
diff -r 1fae6e99c029 arch/i386/mach-xen/Makefile
--- a/arch/i386/mach-xen/Makefile Thu Jun 22 20:21:43 2006 -0400
+++ b/arch/i386/mach-xen/Makefile Thu Jun 22 20:29:44 2006 -0400
@@ -2,6 +2,8 @@
# Makefile for the linux kernel.
#
+extra-y := head.o
+
obj-y := setup.o setup-xen.o memory.o
setup-y := ../mach-default/setup.o
diff -r 1fae6e99c029 arch/i386/kernel/head-cpu.S
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/arch/i386/kernel/head-cpu.S Thu Jun 22 20:29:44 2006 -0400
@@ -0,0 +1,86 @@
+/* Some macros for head.S */
+
+.macro CPU_GDT_TABLE
+ .quad 0x0000000000000000 /* NULL descriptor */
+ .quad 0x0000000000000000 /* 0x0b reserved */
+ .quad 0x0000000000000000 /* 0x13 reserved */
+ .quad 0x0000000000000000 /* 0x1b reserved */
+ .quad 0x0000000000000000 /* 0x20 unused */
+ .quad 0x0000000000000000 /* 0x28 unused */
+ .quad 0x0000000000000000 /* 0x33 TLS entry 1 */
+ .quad 0x0000000000000000 /* 0x3b TLS entry 2 */
+ .quad 0x0000000000000000 /* 0x43 TLS entry 3 */
+ .quad 0x0000000000000000 /* 0x4b reserved */
+ .quad 0x0000000000000000 /* 0x53 reserved */
+ .quad 0x0000000000000000 /* 0x5b reserved */
+
+ .quad 0x00cf9a000000ffff /* 0x60 kernel 4GB code at 0x00000000 */
+ .quad 0x00cf92000000ffff /* 0x68 kernel 4GB data at 0x00000000 */
+ .quad 0x00cffa000000ffff /* 0x73 user 4GB code at 0x00000000 */
+ .quad 0x00cff2000000ffff /* 0x7b user 4GB data at 0x00000000 */
+
+ .quad 0x0000000000000000 /* 0x80 TSS descriptor */
+ .quad 0x0000000000000000 /* 0x88 LDT descriptor */
+
+ /*
+ * Segments used for calling PnP BIOS have byte granularity.
+ * They code segments and data segments have fixed 64k limits,
+ * the transfer segment sizes are set at run time.
+ */
+ .quad 0x00409a000000ffff /* 0x90 32-bit code */
+ .quad 0x00009a000000ffff /* 0x98 16-bit code */
+ .quad 0x000092000000ffff /* 0xa0 16-bit data */
+ .quad 0x0000920000000000 /* 0xa8 16-bit data */
+ .quad 0x0000920000000000 /* 0xb0 16-bit data */
+
+ /*
+ * The APM segments have byte granularity and their bases
+ * are set at run time. All have 64k limits.
+ */
+ .quad 0x00409a000000ffff /* 0xb8 APM CS code */
+ .quad 0x00009a000000ffff /* 0xc0 APM CS 16 code (16 bit) */
+ .quad 0x004092000000ffff /* 0xc8 APM DS data */
+
+ .quad 0x0000920000000000 /* 0xd0 - ESPFIX 16-bit SS */
+ .quad 0x0000000000000000 /* 0xd8 - unused */
+ .quad 0x0000000000000000 /* 0xe0 - unused */
+ .quad 0x0000000000000000 /* 0xe8 - unused */
+ .quad 0x0000000000000000 /* 0xf0 - unused */
+ .quad 0x0000000000000000 /* 0xf8 - GDT entry 31: double-fault TSS */
+.endm
+
+/**
+ * CPUID_GET_VENDOR_INFO - macro for obtaining cpuid vendor info
+ * @cpuid_level: address to store max basic supported cpuid level
+ * @x86_vendor_id: buffer to store vendor id, must be at least 12 bytes
+ */
+.macro CPUID_GET_VENDOR_INFO cpuid_level, x86_vendor_id
+ /* get vendor info */
+ xorl %eax,%eax # call CPUID with 0 -> return vendor ID
+ cpuid
+ movl %eax,\cpuid_level # save CPUID level
+ movl %ebx,\x86_vendor_id # lo 4 chars
+ movl %edx,\x86_vendor_id+4 # next 4 chars
+ movl %ecx,\x86_vendor_id+8 # last 4 chars
+.endm
+
+/**
+ * CPUID_GET_CPU_TYPE - macro for obtaining cpuid version info
+ * @family: address to store family
+ * @model: address to store model
+ * @mask: address to store mask
+ * @capability: address to store capabilities
+ */
+.macro CPUID_GET_CPU_TYPE family, model, mask, capability
+ movl $1,%eax # Use the CPUID instruction to get CPU type
+ cpuid
+ movb %al,%cl # save reg for future use
+ andb $0x0f,%ah # mask processor family
+ movb %ah,\family
+ andb $0xf0,%al # mask model
+ shrb $4,%al
+ movb %al,\model
+ andb $0x0f,%cl # mask mask revision
+ movb %cl,\mask
+ movl %edx,\capability
+.endm
diff -r 1fae6e99c029 arch/i386/mach-xen/head.S
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/arch/i386/mach-xen/head.S Thu Jun 22 20:29:44 2006 -0400
@@ -0,0 +1,127 @@
+
+
+.text
+#include <linux/config.h>
+#include <linux/threads.h>
+#include <linux/linkage.h>
+#include <asm/segment.h>
+#include <asm/page.h>
+#include <asm/thread_info.h>
+#include <asm/asm-offsets.h>
+
+#include "../kernel/head-cpu.S"
+
+/*
+ * References to members of the new_cpu_data structure.
+ */
+
+#define X86 new_cpu_data+CPUINFO_x86
+#define X86_VENDOR new_cpu_data+CPUINFO_x86_vendor
+#define X86_MODEL new_cpu_data+CPUINFO_x86_model
+#define X86_MASK new_cpu_data+CPUINFO_x86_mask
+#define X86_HARD_MATH new_cpu_data+CPUINFO_hard_math
+#define X86_CPUID new_cpu_data+CPUINFO_cpuid_level
+#define X86_CAPABILITY new_cpu_data+CPUINFO_x86_capability
+#define X86_VENDOR_ID new_cpu_data+CPUINFO_x86_vendor_id
+
+#define VIRT_ENTRY_OFFSET 0x0
+.org VIRT_ENTRY_OFFSET
+ENTRY(startup_32)
+ movl %esi,xen_start_info
+ cld
+
+ /* Set up the stack pointer */
+ movl $(init_thread_union+THREAD_SIZE),%esp
+
+ CPUID_GET_VENDOR_INFO X86_CPUID, X86_VENDOR_ID
+ CPUID_GET_CPU_TYPE X86, X86_MODEL, X86_MASK, X86_CAPABILITY
+
+ movb $1,X86_HARD_MATH
+
+ xorl %eax,%eax # Clear FS/GS and LDT
+ movl %eax,%fs
+ movl %eax,%gs
+ cld # gcc2 wants the direction flag cleared at all times
+
+ call start_kernel
+L6:
+ jmp L6 # main should never return here, but
+ # just in case, we know what happens.
+
+#define HYPERCALL_PAGE_OFFSET 0x1000
+.org HYPERCALL_PAGE_OFFSET
+ENTRY(hypercall_page)
+.skip 0x1000
+
+/*
+ * Real beginning of normal "text" segment
+ */
+ENTRY(stext)
+ENTRY(_stext)
+
+/*
+ * BSS section
+ */
+.section ".bss.page_aligned","w"
+ENTRY(swapper_pg_dir)
+ .fill 1024,4,0
+ENTRY(empty_zero_page)
+ .fill 4096,1,0
+
+/*
+ * This starts the data section.
+ */
+.data
+
+ ALIGN
+ .word 0 # 32 bit align gdt_desc.address
+ .globl cpu_gdt_descr
+cpu_gdt_descr:
+ .word GDT_SIZE
+ .long cpu_gdt_table
+
+ .fill NR_CPUS-1,8,0 # space for the other GDT descriptors
+
+/*
+ * The Global Descriptor Table contains 28 quadwords, per-CPU.
+ */
+ .align PAGE_SIZE_asm
+ENTRY(cpu_gdt_table)
+ CPU_GDT_TABLE
+ /* Be sure this is zeroed to avoid false validations in Xen */
+ .fill PAGE_SIZE_asm / 8 - GDT_ENTRIES,8,0
+
+
+/*
+ * __xen_guest information
+ */
+.macro utoa value
+ .if (\value) < 0 || (\value) >= 0x10
+ utoa (((\value)>>4)&0x0fffffff)
+ .endif
+ .if ((\value) & 0xf) < 10
+ .byte '0' + ((\value) & 0xf)
+ .else
+ .byte 'A' + ((\value) & 0xf) - 10
+ .endif
+.endm
+
+.section __xen_guest
+ .ascii "GUEST_OS=linux,GUEST_VER=2.6"
+ .ascii ",XEN_VER=xen-3.0"
+ .ascii ",VIRT_BASE=0x"
+ utoa __PAGE_OFFSET
+ .ascii ",ELF_PADDR_OFFSET=0x0"
+ .ascii ",VIRT_ENTRY=0x"
+ utoa (__PAGE_OFFSET + __PHYSICAL_START + VIRT_ENTRY_OFFSET)
+ .ascii ",HYPERCALL_PAGE=0x"
+ utoa ((__PHYSICAL_START+HYPERCALL_PAGE_OFFSET)>>PAGE_SHIFT)
+ .ascii ",FEATURES=!writable_page_tables"
+ .ascii "|!auto_translated_physmap"
+#ifdef CONFIG_X86_PAE
+ .ascii ",PAE=yes"
+#else
+ .ascii ",PAE=no"
+#endif
+ .ascii ",LOADER=generic"
+ .byte 0
--
next prev parent reply other threads:[~2006-07-18 9:21 UTC|newest]
Thread overview: 101+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-07-18 9:18 [RFC PATCH 00/33] Xen i386 paravirtualization support Chris Wright
2006-07-18 7:00 ` [RFC PATCH 01/33] Add apply_to_page_range() function Chris Wright
2006-07-18 10:38 ` Adrian Bunk
2006-07-18 19:29 ` Chris Wright
2006-07-20 6:17 ` Adrian Bunk
2006-07-18 7:00 ` [RFC PATCH 02/33] Add sync bitops Chris Wright
2006-07-18 9:56 ` Arjan van de Ven
2006-07-18 10:18 ` Keir Fraser
2006-07-19 12:54 ` Andi Kleen
2006-07-18 10:34 ` Adrian Bunk
2006-07-18 7:00 ` [RFC PATCH 03/33] Add nosegneg capability to the vsyscall page notes Chris Wright
2006-07-18 7:00 ` [RFC PATCH 04/33] Add XEN config options and disable unsupported config options Chris Wright
2006-07-18 9:59 ` Arjan van de Ven
2006-07-18 10:21 ` Keir Fraser
2006-07-18 7:00 ` [RFC PATCH 05/33] Makefile support to build Xen subarch Chris Wright
2006-07-18 10:00 ` Arjan van de Ven
2006-07-18 11:40 ` Andrew Morton
2006-07-18 20:41 ` Jeremy Fitzhardinge
2006-07-18 20:15 ` Jeremy Fitzhardinge
2006-07-18 7:00 ` [RFC PATCH 06/33] Add Xen interface header files Chris Wright
2006-07-18 7:00 ` [RFC PATCH 07/33] Hypervisor " Chris Wright
2006-07-18 7:00 ` [RFC PATCH 08/33] Add vmlinuz build target Chris Wright
2006-07-18 7:00 ` [RFC PATCH 09/33] Add start-of-day setup hooks to subarch Chris Wright
2006-07-18 10:03 ` Arjan van de Ven
2006-07-18 20:49 ` Jeremy Fitzhardinge
2006-07-20 6:07 ` Adrian Bunk
2006-07-20 12:10 ` Keir Fraser
2006-07-20 13:27 ` Jeremy Fitzhardinge
2006-07-18 7:00 ` [RFC PATCH 10/33] add support for Xen feature queries Chris Wright
2006-07-18 7:00 ` [RFC PATCH 11/33] Add Xen-specific memory management definitions Chris Wright
2006-07-18 7:00 ` [RFC PATCH 12/33] Change __FIXADDR_TOP to leave room for the hypervisor Chris Wright
2006-07-18 7:00 ` Chris Wright [this message]
2006-07-18 10:06 ` [RFC PATCH 13/33] Add a new head.S start-of-day file for booting on Xen Arjan van de Ven
2006-07-18 20:13 ` Jeremy Fitzhardinge
2006-07-18 7:00 ` [RFC PATCH 14/33] subarch support for controlling interrupt delivery Chris Wright
2006-07-18 7:00 ` [RFC PATCH 15/33] move segment checks to subarch Chris Wright
2006-07-18 10:09 ` Arjan van de Ven
2006-07-18 11:28 ` Zachary Amsden
2006-07-18 19:06 ` Rusty Russell
2006-07-18 19:25 ` Chris Wright
2006-07-18 20:00 ` [Xen-devel] " Rusty Russell
2006-07-18 7:00 ` [RFC PATCH 16/33] Add support for Xen to entry.S Chris Wright
2006-07-18 10:11 ` Arjan van de Ven
2006-07-18 20:04 ` Jeremy Fitzhardinge
2006-07-18 19:17 ` Rusty Russell
2006-07-18 20:43 ` Chris Wright
2006-07-18 23:03 ` Jeremy Fitzhardinge
2006-07-19 5:30 ` Chris Wright
2006-07-18 7:00 ` [RFC PATCH 17/33] Support loading an initrd when running on Xen Chris Wright
2006-07-18 7:00 ` [RFC PATCH 18/33] Subarch support for CPUID instruction Chris Wright
2006-07-18 10:14 ` Arjan van de Ven
2006-07-18 10:26 ` Keir Fraser
2006-07-18 10:38 ` Arjan van de Ven
2006-07-18 11:33 ` Zachary Amsden
2006-07-18 20:46 ` David Miller
2006-07-18 21:00 ` Chris Wright
2006-07-18 7:00 ` [RFC PATCH 19/33] Support gdt/idt/ldt handling on Xen Chris Wright
2006-07-18 7:00 ` [RFC PATCH 20/33] subarch support for interrupt and exception gates Chris Wright
2006-07-18 7:00 ` [RFC PATCH 21/33] subarch support for control register accesses Chris Wright
2006-07-18 7:00 ` [RFC PATCH 22/33] subarch stack pointer update Chris Wright
2006-07-18 7:00 ` [RFC PATCH 23/33] subarch TLB support Chris Wright
2006-07-18 20:39 ` David Miller
2006-07-18 21:00 ` Chris Wright
2006-07-18 7:00 ` [RFC PATCH 24/33] Add support for Xen event channels Chris Wright
2006-07-18 7:00 ` [RFC PATCH 25/33] Implement timekeeping for Xen Chris Wright
2006-07-25 2:49 ` john stultz
2006-07-25 20:05 ` Jeremy Fitzhardinge
2006-07-18 7:00 ` [RFC PATCH 26/33] subarch suport for idle loop (NO_IDLE_HZ for Xen) Chris Wright
2006-07-18 7:00 ` [RFC PATCH 27/33] Add the Xen virtual console driver Chris Wright
2006-07-18 10:24 ` Arjan van de Ven
2006-07-18 10:31 ` Keir Fraser
2006-07-27 15:05 ` Hollis Blanchard
2006-07-18 7:00 ` [RFC PATCH 28/33] Add Xen grant table support Chris Wright
2006-07-19 10:04 ` [Xen-devel] " Harry Butterworth
2006-07-25 18:30 ` Hollis Blanchard
2006-07-25 18:45 ` Keir Fraser
2006-07-25 19:06 ` Segher Boessenkool
2006-07-18 7:00 ` [RFC PATCH 29/33] Add Xen driver utility functions Chris Wright
2006-07-18 7:00 ` [RFC PATCH 30/33] Add the Xenbus sysfs and virtual device hotplug driver Chris Wright
2006-07-18 7:00 ` [RFC PATCH 31/33] Add Xen subarch reboot support Chris Wright
2006-07-20 6:16 ` Adrian Bunk
2006-07-18 7:00 ` [RFC PATCH 32/33] Add the Xen virtual network device driver Chris Wright
2006-07-18 10:27 ` Arjan van de Ven
2006-07-18 10:35 ` Keir Fraser
2006-07-18 10:42 ` Arjan van de Ven
2006-07-18 12:18 ` Dave Boutcher
2006-07-18 12:39 ` jamal
2006-07-18 13:08 ` Herbert Xu
2006-07-18 13:25 ` John Haller
2006-07-18 15:22 ` Herbert Xu
2006-07-18 15:44 ` Stephen Hemminger
2006-07-19 3:55 ` Herbert Xu
2006-07-18 20:42 ` David Miller
2006-07-18 21:09 ` Chris Wright
2006-07-18 7:00 ` [RFC PATCH 33/33] Add Xen virtual block " Chris Wright
2006-07-18 10:34 ` Arjan van de Ven
2006-07-18 20:57 ` Jeremy Fitzhardinge
2006-07-18 13:01 ` Dave Boutcher
2006-07-18 16:25 ` Jeff Garzik
2006-07-18 19:28 ` Chris Wright
2006-07-18 21:22 ` Jeremy Fitzhardinge
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=20060718091951.689269000@sous-sol.org \
--to=chrisw@sous-sol.org \
--cc=Christian.Limpach@cl.cam.ac.uk \
--cc=ak@suse.de \
--cc=akpm@osdl.org \
--cc=ian.pratt@xensource.com \
--cc=jeremy@goop.org \
--cc=linux-kernel@vger.kernel.org \
--cc=rusty@rustcorp.com.au \
--cc=virtualization@lists.osdl.org \
--cc=xen-devel@lists.xensource.com \
--cc=zach@vmware.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome