From: Andi Kleen <ak@suse.de>
To: rjw@sisk.pl, patches@x86-64.org, linux-kernel@vger.kernel.org
Subject: [PATCH] [18/50] x86_64: Save registers in saved_context during suspend and hibernation
Date: Sat, 22 Sep 2007 00:32:17 +0200 (CEST) [thread overview]
Message-ID: <20070921223217.12E5013DCD@wotan.suse.de> (raw)
In-Reply-To: <200709221231.836138000@suse.de>
From: Rafael J. Wysocki <rjw@sisk.pl>
During hibernation and suspend on x86_64 save CPU registers in the saved_context
structure rather than in a handful of separate variables.
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Signed-off-by: Andi Kleen <ak@suse.de>
Looks-ok-to: Pavel Machek <pavel@ucw.cz>
---
arch/x86_64/kernel/acpi/wakeup.S | 101 ++++++++++++++++++++-------------------
arch/x86_64/kernel/asm-offsets.c | 28 ++++++++++
arch/x86_64/kernel/suspend.c | 6 --
arch/x86_64/kernel/suspend_asm.S | 72 ++++++++++++++-------------
include/asm-x86_64/suspend.h | 23 ++------
5 files changed, 125 insertions(+), 105 deletions(-)
Index: linux/arch/x86_64/kernel/asm-offsets.c
===================================================================
--- linux.orig/arch/x86_64/kernel/asm-offsets.c
+++ linux/arch/x86_64/kernel/asm-offsets.c
@@ -76,6 +76,34 @@ int main(void)
DEFINE(pbe_orig_address, offsetof(struct pbe, orig_address));
DEFINE(pbe_next, offsetof(struct pbe, next));
BLANK();
+#define ENTRY(entry) DEFINE(pt_regs_ ## entry, offsetof(struct pt_regs, entry))
+ ENTRY(rbx);
+ ENTRY(rbx);
+ ENTRY(rcx);
+ ENTRY(rdx);
+ ENTRY(rsp);
+ ENTRY(rbp);
+ ENTRY(rsi);
+ ENTRY(rdi);
+ ENTRY(r8);
+ ENTRY(r9);
+ ENTRY(r10);
+ ENTRY(r11);
+ ENTRY(r12);
+ ENTRY(r13);
+ ENTRY(r14);
+ ENTRY(r15);
+ ENTRY(eflags);
+ BLANK();
+#undef ENTRY
+#define ENTRY(entry) DEFINE(saved_context_ ## entry, offsetof(struct saved_context, entry))
+ ENTRY(cr0);
+ ENTRY(cr2);
+ ENTRY(cr3);
+ ENTRY(cr4);
+ ENTRY(cr8);
+ BLANK();
+#undef ENTRY
DEFINE(TSS_ist, offsetof(struct tss_struct, ist));
BLANK();
DEFINE(crypto_tfm_ctx_offset, offsetof(struct crypto_tfm, __crt_ctx));
Index: linux/include/asm-x86_64/suspend.h
===================================================================
--- linux.orig/include/asm-x86_64/suspend.h
+++ linux/include/asm-x86_64/suspend.h
@@ -3,6 +3,9 @@
* Based on code
* Copyright 2001 Patrick Mochel <mochel@osdl.org>
*/
+#ifndef __ASM_X86_64_SUSPEND_H
+#define __ASM_X86_64_SUSPEND_H
+
#include <asm/desc.h>
#include <asm/i387.h>
@@ -12,8 +15,9 @@ arch_prepare_suspend(void)
return 0;
}
-/* Image of the saved processor state. If you touch this, fix acpi_wakeup.S. */
+/* Image of the saved processor state. If you touch this, fix acpi/wakeup.S. */
struct saved_context {
+ struct pt_regs regs;
u16 ds, es, fs, gs, ss;
unsigned long gs_base, gs_kernel_base, fs_base;
unsigned long cr0, cr2, cr3, cr4, cr8;
@@ -29,27 +33,14 @@ struct saved_context {
unsigned long tr;
unsigned long safety;
unsigned long return_address;
- unsigned long eflags;
} __attribute__((packed));
-/* We'll access these from assembly, so we'd better have them outside struct */
-extern unsigned long saved_context_eax, saved_context_ebx, saved_context_ecx, saved_context_edx;
-extern unsigned long saved_context_esp, saved_context_ebp, saved_context_esi, saved_context_edi;
-extern unsigned long saved_context_r08, saved_context_r09, saved_context_r10, saved_context_r11;
-extern unsigned long saved_context_r12, saved_context_r13, saved_context_r14, saved_context_r15;
-extern unsigned long saved_context_eflags;
-
#define loaddebug(thread,register) \
set_debugreg((thread)->debugreg##register, register)
extern void fix_processor_context(void);
-extern unsigned long saved_rip;
-extern unsigned long saved_rsp;
-extern unsigned long saved_rbp;
-extern unsigned long saved_rbx;
-extern unsigned long saved_rsi;
-extern unsigned long saved_rdi;
-
/* routines for saving/restoring kernel state */
extern int acpi_save_state_mem(void);
+
+#endif /* __ASM_X86_64_SUSPEND_H */
Index: linux/arch/x86_64/kernel/suspend.c
===================================================================
--- linux.orig/arch/x86_64/kernel/suspend.c
+++ linux/arch/x86_64/kernel/suspend.c
@@ -19,12 +19,6 @@ extern const void __nosave_begin, __nosa
struct saved_context saved_context;
-unsigned long saved_context_eax, saved_context_ebx, saved_context_ecx, saved_context_edx;
-unsigned long saved_context_esp, saved_context_ebp, saved_context_esi, saved_context_edi;
-unsigned long saved_context_r08, saved_context_r09, saved_context_r10, saved_context_r11;
-unsigned long saved_context_r12, saved_context_r13, saved_context_r14, saved_context_r15;
-unsigned long saved_context_eflags;
-
void __save_processor_state(struct saved_context *ctxt)
{
kernel_fpu_begin();
Index: linux/arch/x86_64/kernel/suspend_asm.S
===================================================================
--- linux.orig/arch/x86_64/kernel/suspend_asm.S
+++ linux/arch/x86_64/kernel/suspend_asm.S
@@ -17,24 +17,24 @@
#include <asm/asm-offsets.h>
ENTRY(swsusp_arch_suspend)
-
- movq %rsp, saved_context_esp(%rip)
- movq %rax, saved_context_eax(%rip)
- movq %rbx, saved_context_ebx(%rip)
- movq %rcx, saved_context_ecx(%rip)
- movq %rdx, saved_context_edx(%rip)
- movq %rbp, saved_context_ebp(%rip)
- movq %rsi, saved_context_esi(%rip)
- movq %rdi, saved_context_edi(%rip)
- movq %r8, saved_context_r08(%rip)
- movq %r9, saved_context_r09(%rip)
- movq %r10, saved_context_r10(%rip)
- movq %r11, saved_context_r11(%rip)
- movq %r12, saved_context_r12(%rip)
- movq %r13, saved_context_r13(%rip)
- movq %r14, saved_context_r14(%rip)
- movq %r15, saved_context_r15(%rip)
- pushfq ; popq saved_context_eflags(%rip)
+ movq $saved_context, %rax
+ movq %rsp, pt_regs_rsp(%rax)
+ movq %rbp, pt_regs_rbp(%rax)
+ movq %rsi, pt_regs_rsi(%rax)
+ movq %rdi, pt_regs_rdi(%rax)
+ movq %rbx, pt_regs_rbx(%rax)
+ movq %rcx, pt_regs_rcx(%rax)
+ movq %rdx, pt_regs_rdx(%rax)
+ movq %r8, pt_regs_r8(%rax)
+ movq %r9, pt_regs_r9(%rax)
+ movq %r10, pt_regs_r10(%rax)
+ movq %r11, pt_regs_r11(%rax)
+ movq %r12, pt_regs_r12(%rax)
+ movq %r13, pt_regs_r13(%rax)
+ movq %r14, pt_regs_r14(%rax)
+ movq %r15, pt_regs_r15(%rax)
+ pushfq
+ popq pt_regs_eflags(%rax)
call swsusp_save
ret
@@ -87,23 +87,25 @@ done:
movl $24, %eax
movl %eax, %ds
- movq saved_context_esp(%rip), %rsp
- movq saved_context_ebp(%rip), %rbp
- /* Don't restore %rax, it must be 0 anyway */
- movq saved_context_ebx(%rip), %rbx
- movq saved_context_ecx(%rip), %rcx
- movq saved_context_edx(%rip), %rdx
- movq saved_context_esi(%rip), %rsi
- movq saved_context_edi(%rip), %rdi
- movq saved_context_r08(%rip), %r8
- movq saved_context_r09(%rip), %r9
- movq saved_context_r10(%rip), %r10
- movq saved_context_r11(%rip), %r11
- movq saved_context_r12(%rip), %r12
- movq saved_context_r13(%rip), %r13
- movq saved_context_r14(%rip), %r14
- movq saved_context_r15(%rip), %r15
- pushq saved_context_eflags(%rip) ; popfq
+ /* We don't restore %rax, it must be 0 anyway */
+ movq $saved_context, %rax
+ movq pt_regs_rsp(%rax), %rsp
+ movq pt_regs_rbp(%rax), %rbp
+ movq pt_regs_rsi(%rax), %rsi
+ movq pt_regs_rdi(%rax), %rdi
+ movq pt_regs_rbx(%rax), %rbx
+ movq pt_regs_rcx(%rax), %rcx
+ movq pt_regs_rdx(%rax), %rdx
+ movq pt_regs_r8(%rax), %r8
+ movq pt_regs_r9(%rax), %r9
+ movq pt_regs_r10(%rax), %r10
+ movq pt_regs_r11(%rax), %r11
+ movq pt_regs_r12(%rax), %r12
+ movq pt_regs_r13(%rax), %r13
+ movq pt_regs_r14(%rax), %r14
+ movq pt_regs_r15(%rax), %r15
+ pushq pt_regs_eflags(%rax)
+ popfq
xorq %rax, %rax
Index: linux/arch/x86_64/kernel/acpi/wakeup.S
===================================================================
--- linux.orig/arch/x86_64/kernel/acpi/wakeup.S
+++ linux/arch/x86_64/kernel/acpi/wakeup.S
@@ -4,6 +4,7 @@
#include <asm/pgtable.h>
#include <asm/page.h>
#include <asm/msr.h>
+#include <asm/asm-offsets.h>
# Copyright 2003 Pavel Machek <pavel@suse.cz>, distribute under GPLv2
#
@@ -395,31 +396,32 @@ do_suspend_lowlevel:
xorl %eax, %eax
call save_processor_state
- movq %rsp, saved_context_esp(%rip)
- movq %rax, saved_context_eax(%rip)
- movq %rbx, saved_context_ebx(%rip)
- movq %rcx, saved_context_ecx(%rip)
- movq %rdx, saved_context_edx(%rip)
- movq %rbp, saved_context_ebp(%rip)
- movq %rsi, saved_context_esi(%rip)
- movq %rdi, saved_context_edi(%rip)
- movq %r8, saved_context_r08(%rip)
- movq %r9, saved_context_r09(%rip)
- movq %r10, saved_context_r10(%rip)
- movq %r11, saved_context_r11(%rip)
- movq %r12, saved_context_r12(%rip)
- movq %r13, saved_context_r13(%rip)
- movq %r14, saved_context_r14(%rip)
- movq %r15, saved_context_r15(%rip)
- pushfq ; popq saved_context_eflags(%rip)
+ movq $saved_context, %rax
+ movq %rsp, pt_regs_rsp(%rax)
+ movq %rbp, pt_regs_rbp(%rax)
+ movq %rsi, pt_regs_rsi(%rax)
+ movq %rdi, pt_regs_rdi(%rax)
+ movq %rbx, pt_regs_rbx(%rax)
+ movq %rcx, pt_regs_rcx(%rax)
+ movq %rdx, pt_regs_rdx(%rax)
+ movq %r8, pt_regs_r8(%rax)
+ movq %r9, pt_regs_r9(%rax)
+ movq %r10, pt_regs_r10(%rax)
+ movq %r11, pt_regs_r11(%rax)
+ movq %r12, pt_regs_r12(%rax)
+ movq %r13, pt_regs_r13(%rax)
+ movq %r14, pt_regs_r14(%rax)
+ movq %r15, pt_regs_r15(%rax)
+ pushfq
+ popq pt_regs_eflags(%rax)
movq $.L97, saved_rip(%rip)
- movq %rsp,saved_rsp
- movq %rbp,saved_rbp
- movq %rbx,saved_rbx
- movq %rdi,saved_rdi
- movq %rsi,saved_rsi
+ movq %rsp, saved_rsp
+ movq %rbp, saved_rbp
+ movq %rbx, saved_rbx
+ movq %rdi, saved_rdi
+ movq %rsi, saved_rsi
addq $8, %rsp
movl $3, %edi
@@ -430,32 +432,35 @@ do_suspend_lowlevel:
.L99:
.align 4
movl $24, %eax
- movw %ax, %ds
- movq saved_context+58(%rip), %rax
- movq %rax, %cr4
- movq saved_context+50(%rip), %rax
- movq %rax, %cr3
- movq saved_context+42(%rip), %rax
- movq %rax, %cr2
- movq saved_context+34(%rip), %rax
- movq %rax, %cr0
- pushq saved_context_eflags(%rip) ; popfq
- movq saved_context_esp(%rip), %rsp
- movq saved_context_ebp(%rip), %rbp
- movq saved_context_eax(%rip), %rax
- movq saved_context_ebx(%rip), %rbx
- movq saved_context_ecx(%rip), %rcx
- movq saved_context_edx(%rip), %rdx
- movq saved_context_esi(%rip), %rsi
- movq saved_context_edi(%rip), %rdi
- movq saved_context_r08(%rip), %r8
- movq saved_context_r09(%rip), %r9
- movq saved_context_r10(%rip), %r10
- movq saved_context_r11(%rip), %r11
- movq saved_context_r12(%rip), %r12
- movq saved_context_r13(%rip), %r13
- movq saved_context_r14(%rip), %r14
- movq saved_context_r15(%rip), %r15
+ movw %ax, %ds
+
+ /* We don't restore %rax, it must be 0 anyway */
+ movq $saved_context, %rax
+ movq saved_context_cr4(%rax), %rbx
+ movq %rbx, %cr4
+ movq saved_context_cr3(%rax), %rbx
+ movq %rbx, %cr3
+ movq saved_context_cr2(%rax), %rbx
+ movq %rbx, %cr2
+ movq saved_context_cr0(%rax), %rbx
+ movq %rbx, %cr0
+ pushq pt_regs_eflags(%rax)
+ popfq
+ movq pt_regs_rsp(%rax), %rsp
+ movq pt_regs_rbp(%rax), %rbp
+ movq pt_regs_rsi(%rax), %rsi
+ movq pt_regs_rdi(%rax), %rdi
+ movq pt_regs_rbx(%rax), %rbx
+ movq pt_regs_rcx(%rax), %rcx
+ movq pt_regs_rdx(%rax), %rdx
+ movq pt_regs_r8(%rax), %r8
+ movq pt_regs_r9(%rax), %r9
+ movq pt_regs_r10(%rax), %r10
+ movq pt_regs_r11(%rax), %r11
+ movq pt_regs_r12(%rax), %r12
+ movq pt_regs_r13(%rax), %r13
+ movq pt_regs_r14(%rax), %r14
+ movq pt_regs_r15(%rax), %r15
xorl %eax, %eax
addq $8, %rsp
next prev parent reply other threads:[~2007-09-21 22:38 UTC|newest]
Thread overview: 105+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-09-21 22:31 [PATCH] [0/50] x86 2.6.24 patches review II Andi Kleen
2007-09-21 22:31 ` [PATCH] [1/50] x86_64: store core id bits in cpuinfo_x8 Andi Kleen
2007-09-21 22:31 ` [PATCH] [2/50] x86_64: use core id bits for apicid_to_node initialization Andi Kleen
2007-09-21 22:32 ` [PATCH] [3/50] x86_64: remove never used apic_mapped Andi Kleen
2007-09-21 22:32 ` [PATCH] [4/50] x86: add cpu codenames for Kconfig.cpu Andi Kleen
2007-09-21 22:45 ` Dave Jones
2007-09-21 23:52 ` Alan Cox
2007-09-22 6:57 ` Sam Ravnborg
2007-09-22 9:46 ` Jan Engelhardt
2007-09-22 14:23 ` Dave Jones
2007-09-22 17:40 ` Randy Dunlap
2007-09-30 10:09 ` Andi Kleen
2007-09-22 17:50 ` Thomas Gleixner
2007-10-01 11:17 ` Andi Kleen
2007-09-21 22:32 ` [PATCH] [5/50] i386: change order in Kconfig.cpu Andi Kleen
2007-09-21 22:32 ` [PATCH] [6/50] i386: clean up oops/bug reports Andi Kleen
2007-09-21 22:41 ` Chuck Ebbert
2007-09-22 9:47 ` Jan Engelhardt
2007-09-22 2:51 ` Killing printk calls for size (Re: [PATCH] [6/50] i386: clean up oops/bug reports) Oleg Verych
2007-09-21 22:32 ` [PATCH] [7/50] x86: expand /proc/interrupts to include missing vectors, v2 Andi Kleen
2007-09-22 3:35 ` possible corrections in the docs (Re: [PATCH] [7/50] x86: expand /proc/interrupts to include missing vectors, v2) Oleg Verych
2007-09-22 3:52 ` Joe Korty
2007-09-21 22:32 ` [PATCH] [8/50] x86_64: remove x86_cpu_to_log_apicid Andi Kleen
2007-09-21 22:32 ` [PATCH] [9/50] i386: validate against ACPI motherboard resources Andi Kleen
2007-09-22 6:49 ` Yinghai Lu
2007-09-22 6:56 ` Yinghai Lu
2007-09-22 16:28 ` Robert Hancock
2007-09-22 18:01 ` Thomas Gleixner
2007-09-22 18:42 ` Robert Hancock
2007-09-22 20:40 ` Yinghai Lu
2007-09-22 20:56 ` H. Peter Anvin
2007-09-22 21:27 ` Robert Hancock
2007-09-23 1:20 ` Yinghai Lu
2007-09-23 1:34 ` Yinghai Lu
2007-09-22 20:47 ` Yinghai Lu
2007-09-21 22:32 ` [PATCH] [10/50] x86_64: install unstripped copies of compat vdso on disk Andi Kleen
2007-09-21 22:32 ` [PATCH] [11/50] x86_64: Install unstripped copy of 64bit vdso to disk Andi Kleen
2007-09-21 22:32 ` [PATCH] [12/50] x86_64: Untable __init references between IO data Andi Kleen
2007-09-22 5:37 ` [patches] " Yinghai Lu
2007-09-21 22:32 ` [PATCH] [13/50] x86: Fix and reenable CLFLUSH support in change_page_attr() Andi Kleen
2007-09-22 5:47 ` Oleg Verych
2007-10-01 10:59 ` Andi Kleen
2007-09-24 8:23 ` [patches] [PATCH] [13/50] x86: Fix and reenable CLFLUSH support inchange_page_attr() Jan Beulich
2007-10-01 10:38 ` Andi Kleen
2007-09-21 22:32 ` [PATCH] [14/50] x86: Minor code-style cleanups to change_page_attr Andi Kleen
2007-09-21 22:32 ` [PATCH] [15/50] x86_64: Return EINVAL for unknown address in change_page_attr Andi Kleen
2007-09-24 8:32 ` [patches] [PATCH] [15/50] x86_64: Return EINVAL for unknown addressin change_page_attr Jan Beulich
2007-09-21 22:32 ` [PATCH] [16/50] x86: Use macros to modify the PG_arch_1 page flags in change_page_attr Andi Kleen
2007-09-21 22:32 ` [PATCH] [17/50] x86_64: remove STR() macros Andi Kleen
2007-09-21 22:32 ` Andi Kleen [this message]
2007-09-21 22:32 ` [PATCH] [19/50] Experimental: detect if SVM is disabled by BIOS Andi Kleen
2007-09-22 6:59 ` Sam Ravnborg
2007-09-22 9:17 ` Joerg Roedel
2007-10-01 16:47 ` Andi Kleen
2007-10-01 20:12 ` Joerg Roedel
2007-10-01 21:45 ` [patches] " Andi Kleen
2007-10-01 22:13 ` Joerg Roedel
2007-09-22 19:05 ` Thomas Gleixner
2007-09-21 22:32 ` [PATCH] [20/50] x86_64: Fix some broken white space in arch/x86_64/mm/init.c Andi Kleen
2007-09-22 19:17 ` Thomas Gleixner
2007-09-23 1:47 ` Oleg Verych
2007-09-21 22:32 ` [PATCH] [21/50] i386: Misc cpuinit annotations Andi Kleen
2007-09-21 22:32 ` [PATCH] [22/50] " Andi Kleen
2007-09-21 22:32 ` [PATCH] [23/50] x86_64: Implement missing x86_64 function smp_call_function_mask() Andi Kleen
2007-09-21 22:32 ` [PATCH] [24/50] x86_64: Eliminate result signage problem in asm-x86_64/bitops.h Andi Kleen
2007-09-21 22:32 ` [PATCH] [25/50] x86_64: Add parenthesis to IRQ vector macros Andi Kleen
2007-09-21 22:32 ` [PATCH] [26/50] i386: export i386 smp_call_function_mask() to modules Andi Kleen
2007-09-21 22:32 ` [PATCH] [27/50] x86_64: Remove duplicated vsyscall nsec update Andi Kleen
2007-09-21 22:32 ` [PATCH] [28/50] i386: remove stub early_printk.c Andi Kleen
2007-09-21 22:32 ` [PATCH] [29/50] x86: honor _PAGE_PSE bit on page walks Andi Kleen
2007-09-21 22:32 ` [PATCH] [30/50] x86_64: remove some dead code Andi Kleen
2007-09-21 22:32 ` [PATCH] [31/50] x86_64: honor notify_die() returning NOTIFY_STOP Andi Kleen
2007-09-22 19:23 ` Thomas Gleixner
2007-09-21 22:32 ` [PATCH] [32/50] x86: Show last exception from/to register contents Andi Kleen
2007-09-21 22:32 ` [PATCH] [33/50] x86: rename .i assembler includes to .h Andi Kleen
2007-09-21 22:32 ` [PATCH] [34/50] i386: Fix argument signedness warnings Andi Kleen
2007-09-22 5:06 ` Satyam Sharma
2007-09-22 10:01 ` Jan Engelhardt
2007-09-22 17:42 ` Randy Dunlap
2007-09-21 22:32 ` [PATCH] [35/50] i386: Do cpuid_device_create() in CPU_UP_PREPARE instead of CPU_ONLINE Andi Kleen
2007-09-22 19:33 ` Thomas Gleixner
2007-09-23 1:52 ` Akinobu Mita
2007-09-23 7:52 ` Thomas Gleixner
2007-09-21 22:32 ` [PATCH] [36/50] x86: Use raw locks during oopses Andi Kleen
2007-09-21 22:32 ` [PATCH] [37/50] x86_64: Clean up mce= argument parsing slightly Andi Kleen
2007-09-21 22:32 ` [PATCH] [38/50] x86_64: fix off-by-one in find_next_zero_string Andi Kleen
2007-09-21 22:32 ` [PATCH] [39/50] i386: fix 4 bit apicid assumption of mach-default Andi Kleen
2007-09-21 22:32 ` [PATCH] [40/50] i386: Fix section mismatch Andi Kleen
2007-09-21 22:32 ` [PATCH] [41/50] i386: fix section mismatch warning in intel.c Andi Kleen
2007-09-21 22:32 ` [PATCH] [42/50] i386: constify wd_ops Andi Kleen
2007-09-21 22:32 ` [PATCH] [43/50] x86: multi-byte single instruction NOPs Andi Kleen
2007-09-21 22:32 ` [PATCH] [44/50] i386: Introduce "used_vectors" bitmap which can be used to reserve vectors Andi Kleen
2007-09-21 22:32 ` [PATCH] [45/50] x86_64: configure HPET_EMULATE_RTC automatically Andi Kleen
2007-09-21 22:32 ` [PATCH] [46/50] x86: also show non-zero IRQ counts for vectors that currently don't have a handler Andi Kleen
2007-09-21 22:32 ` [PATCH] [47/50] i386: avoid temporarily inconsistent pte-s Andi Kleen
2007-09-21 22:32 ` [PATCH] [48/50] x86_64: return correct error code from child_rip in x86_64 entry.S Andi Kleen
2007-09-21 22:32 ` [PATCH] [49/50] x86_64: Initialize 64bit registers for a.out executables Andi Kleen
2007-09-21 22:32 ` [PATCH] [50/50] x86_64: Remove fpu io port resource Andi Kleen
2007-09-21 23:00 ` Jeff Garzik
2007-10-01 10:40 ` Andi Kleen
2007-10-01 11:30 ` Jeff Garzik
2007-10-01 11:48 ` Andi Kleen
2007-10-01 13:33 ` Jeff Garzik
2007-10-01 14:16 ` Mark Lord
2007-10-02 14:37 ` Alan Cox
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=20070921223217.12E5013DCD@wotan.suse.de \
--to=ak@suse.de \
--cc=linux-kernel@vger.kernel.org \
--cc=patches@x86-64.org \
--cc=rjw@sisk.pl \
/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
all inboxes | Powered by JetHome®