All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] x86 ACPI: normalize segment descriptor register on resume
@ 2008-06-24 21:03 Rafael J. Wysocki
  2008-06-24 21:46 ` Pavel Machek
                   ` (3 more replies)
  0 siblings, 4 replies; 22+ messages in thread
From: Rafael J. Wysocki @ 2008-06-24 21:03 UTC (permalink / raw)
  To: Len Brown
  Cc: Andrew Morton, ACPI Devel Maling List, Ingo Molnar, LKML,
	Pavel Machek, pm list

Hi,

The patch below fixes the regression described at
http://bugzilla.kernel.org/show_bug.cgi?id=10927
which is caused by the fact that some BIOSes call the kernel's resume code with
post-protected mode garbage in segment registers.

Apart from Dell laptops referred to in the chagelog it has a potential to fix
some other systems on which resume from suspend to RAM fails in a mysterious
way and the probability of it breaking things is rather small, so IMO it would
be nice to have in 2.6.26.

Thanks,
Rafael


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

x86 ACPI: normalize segment descriptor register on resume

Some Dell laptops enter resume with apparent garbage in the segment
descriptor registers (almost certainly the result of a botched
transition from protected to real mode.)  The only way to clean that
up is to enter protected mode ourselves and clean out the descriptor
registers.

This fixes resume on Dell XPS M1210 and Dell D620.

Reference: http://bugzilla.kernel.org/show_bug.cgi?id=10927

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Tested-by: Kirill A. Shutemov <kirill@shutemov.name>
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
 arch/x86/kernel/acpi/realmode/wakeup.S |   38 ++++++++++++++++++++++++++++++++-
 arch/x86/kernel/acpi/realmode/wakeup.h |    5 ++++
 arch/x86/kernel/acpi/sleep.c           |   16 +++++++++++++
 drivers/acpi/sleep/main.c              |    5 +---
 4 files changed, 59 insertions(+), 5 deletions(-)

Index: linux-2.6/arch/x86/kernel/acpi/realmode/wakeup.S
===================================================================
--- linux-2.6.orig/arch/x86/kernel/acpi/realmode/wakeup.S
+++ linux-2.6/arch/x86/kernel/acpi/realmode/wakeup.S
@@ -5,6 +5,7 @@
 #include <asm/msr-index.h>
 #include <asm/page.h>
 #include <asm/pgtable.h>
+#include <asm/processor-flags.h>
 
 	.code16
 	.section ".header", "a"
@@ -24,6 +25,11 @@ pmode_gdt:	.quad	0
 realmode_flags:	.long	0
 real_magic:	.long	0
 trampoline_segment:	.word 0
+_pad1:		.byte	0
+wakeup_jmp:	.byte	0xea	/* ljmpw */
+wakeup_jmp_off:	.word	3f
+wakeup_jmp_seg:	.word	0
+wakeup_gdt:	.quad	0, 0, 0
 signature:	.long	0x51ee1111
 
 	.text
@@ -34,11 +40,34 @@ _start:
 	cli
 	cld
 
+	/* Apparently some dimwit BIOS programmers don't know how to
+	   program a PM to RM transition, and we might end up here with
+	   junk in the data segment descriptor registers.  The only way
+	   to repair that is to go into PM and fix it ourselves... */
+	movw	$16, %cx
+	lgdtl	%cs:wakeup_gdt
+	movl	%cr0, %eax
+	orb	$X86_CR0_PE, %al
+	movl	%eax, %cr0
+	jmp	1f
+1:	ljmpw	$8, $2f
+2:
+	movw	%cx, %ds
+	movw	%cx, %es
+	movw	%cx, %ss
+	movw	%cx, %fs
+	movw	%cx, %gs
+
+	andb	$~X86_CR0_PE, %al
+	movl	%eax, %cr0
+	jmp	wakeup_jmp
+3:
 	/* Set up segments */
 	movw	%cs, %ax
 	movw	%ax, %ds
 	movw	%ax, %es
 	movw	%ax, %ss
+	lidtl	wakeup_idt
 
 	movl	$wakeup_stack_end, %esp
 
@@ -98,7 +127,14 @@ bogus_real_magic:
 	jmp	1b
 
 	.data
-	.balign	4
+	.balign	8
+
+	/* This is the standard real-mode IDT */
+wakeup_idt:
+	.word	0xffff		/* limit */
+	.long	0		/* address */
+	.word	0
+
 	.globl	HEAP, heap_end
 HEAP:
 	.long	wakeup_heap
Index: linux-2.6/arch/x86/kernel/acpi/realmode/wakeup.h
===================================================================
--- linux-2.6.orig/arch/x86/kernel/acpi/realmode/wakeup.h
+++ linux-2.6/arch/x86/kernel/acpi/realmode/wakeup.h
@@ -24,6 +24,11 @@ struct wakeup_header {
 	u32 realmode_flags;
 	u32 real_magic;
 	u16 trampoline_segment;	/* segment with trampoline code, 64-bit only */
+	u8  _pad1;
+	u8  wakeup_jmp;
+	u16 wakeup_jmp_off;
+	u16 wakeup_jmp_seg;
+	u64 wakeup_gdt[3];
 	u32 signature;		/* To check we have correct structure */
 } __attribute__((__packed__));
 
Index: linux-2.6/arch/x86/kernel/acpi/sleep.c
===================================================================
--- linux-2.6.orig/arch/x86/kernel/acpi/sleep.c
+++ linux-2.6/arch/x86/kernel/acpi/sleep.c
@@ -50,6 +50,20 @@ int acpi_save_state_mem(void)
 
 	header->video_mode = saved_video_mode;
 
+	header->wakeup_jmp_seg = acpi_wakeup_address >> 4;
+	/* GDT[0]: GDT self-pointer */
+	header->wakeup_gdt[0] =
+		(u64)(sizeof(header->wakeup_gdt) - 1) +
+		((u64)(acpi_wakeup_address +
+			((char *)&header->wakeup_gdt - (char *)acpi_realmode))
+				<< 16);
+	/* GDT[1]: real-mode-like code segment */
+	header->wakeup_gdt[1] = (0x009bULL << 40) +
+		((u64)acpi_wakeup_address << 16) + 0xffff;
+	/* GDT[2]: real-mode-like data segment */
+	header->wakeup_gdt[2] = (0x0093ULL << 40) +
+		((u64)acpi_wakeup_address << 16) + 0xffff;
+
 #ifndef CONFIG_64BIT
 	store_gdt((struct desc_ptr *)&header->pmode_gdt);
 
@@ -111,7 +125,7 @@ void __init acpi_reserve_bootmem(void)
 		return;
 	}
 
-	acpi_wakeup_address = acpi_realmode;
+	acpi_wakeup_address = virt_to_phys((void *)acpi_realmode);
 }
 
 
Index: linux-2.6/drivers/acpi/sleep/main.c
===================================================================
--- linux-2.6.orig/drivers/acpi/sleep/main.c
+++ linux-2.6/drivers/acpi/sleep/main.c
@@ -32,9 +32,8 @@ static int acpi_sleep_prepare(u32 acpi_s
 		if (!acpi_wakeup_address) {
 			return -EFAULT;
 		}
-		acpi_set_firmware_waking_vector((acpi_physical_address)
-						virt_to_phys((void *)
-							     acpi_wakeup_address));
+		acpi_set_firmware_waking_vector(
+				(acpi_physical_address)acpi_wakeup_address);
 
 	}
 	ACPI_FLUSH_CPU_CACHE();

^ permalink raw reply	[flat|nested] 22+ messages in thread

* [PATCH] x86 ACPI: normalize segment descriptor register on resume
@ 2008-06-24 21:03 Rafael J. Wysocki
  0 siblings, 0 replies; 22+ messages in thread
From: Rafael J. Wysocki @ 2008-06-24 21:03 UTC (permalink / raw)
  To: Len Brown
  Cc: Ingo Molnar, LKML, ACPI Devel Maling List, Andrew Morton, pm list

Hi,

The patch below fixes the regression described at
http://bugzilla.kernel.org/show_bug.cgi?id=10927
which is caused by the fact that some BIOSes call the kernel's resume code with
post-protected mode garbage in segment registers.

Apart from Dell laptops referred to in the chagelog it has a potential to fix
some other systems on which resume from suspend to RAM fails in a mysterious
way and the probability of it breaking things is rather small, so IMO it would
be nice to have in 2.6.26.

Thanks,
Rafael


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

x86 ACPI: normalize segment descriptor register on resume

Some Dell laptops enter resume with apparent garbage in the segment
descriptor registers (almost certainly the result of a botched
transition from protected to real mode.)  The only way to clean that
up is to enter protected mode ourselves and clean out the descriptor
registers.

This fixes resume on Dell XPS M1210 and Dell D620.

Reference: http://bugzilla.kernel.org/show_bug.cgi?id=10927

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Tested-by: Kirill A. Shutemov <kirill@shutemov.name>
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
 arch/x86/kernel/acpi/realmode/wakeup.S |   38 ++++++++++++++++++++++++++++++++-
 arch/x86/kernel/acpi/realmode/wakeup.h |    5 ++++
 arch/x86/kernel/acpi/sleep.c           |   16 +++++++++++++
 drivers/acpi/sleep/main.c              |    5 +---
 4 files changed, 59 insertions(+), 5 deletions(-)

Index: linux-2.6/arch/x86/kernel/acpi/realmode/wakeup.S
===================================================================
--- linux-2.6.orig/arch/x86/kernel/acpi/realmode/wakeup.S
+++ linux-2.6/arch/x86/kernel/acpi/realmode/wakeup.S
@@ -5,6 +5,7 @@
 #include <asm/msr-index.h>
 #include <asm/page.h>
 #include <asm/pgtable.h>
+#include <asm/processor-flags.h>
 
 	.code16
 	.section ".header", "a"
@@ -24,6 +25,11 @@ pmode_gdt:	.quad	0
 realmode_flags:	.long	0
 real_magic:	.long	0
 trampoline_segment:	.word 0
+_pad1:		.byte	0
+wakeup_jmp:	.byte	0xea	/* ljmpw */
+wakeup_jmp_off:	.word	3f
+wakeup_jmp_seg:	.word	0
+wakeup_gdt:	.quad	0, 0, 0
 signature:	.long	0x51ee1111
 
 	.text
@@ -34,11 +40,34 @@ _start:
 	cli
 	cld
 
+	/* Apparently some dimwit BIOS programmers don't know how to
+	   program a PM to RM transition, and we might end up here with
+	   junk in the data segment descriptor registers.  The only way
+	   to repair that is to go into PM and fix it ourselves... */
+	movw	$16, %cx
+	lgdtl	%cs:wakeup_gdt
+	movl	%cr0, %eax
+	orb	$X86_CR0_PE, %al
+	movl	%eax, %cr0
+	jmp	1f
+1:	ljmpw	$8, $2f
+2:
+	movw	%cx, %ds
+	movw	%cx, %es
+	movw	%cx, %ss
+	movw	%cx, %fs
+	movw	%cx, %gs
+
+	andb	$~X86_CR0_PE, %al
+	movl	%eax, %cr0
+	jmp	wakeup_jmp
+3:
 	/* Set up segments */
 	movw	%cs, %ax
 	movw	%ax, %ds
 	movw	%ax, %es
 	movw	%ax, %ss
+	lidtl	wakeup_idt
 
 	movl	$wakeup_stack_end, %esp
 
@@ -98,7 +127,14 @@ bogus_real_magic:
 	jmp	1b
 
 	.data
-	.balign	4
+	.balign	8
+
+	/* This is the standard real-mode IDT */
+wakeup_idt:
+	.word	0xffff		/* limit */
+	.long	0		/* address */
+	.word	0
+
 	.globl	HEAP, heap_end
 HEAP:
 	.long	wakeup_heap
Index: linux-2.6/arch/x86/kernel/acpi/realmode/wakeup.h
===================================================================
--- linux-2.6.orig/arch/x86/kernel/acpi/realmode/wakeup.h
+++ linux-2.6/arch/x86/kernel/acpi/realmode/wakeup.h
@@ -24,6 +24,11 @@ struct wakeup_header {
 	u32 realmode_flags;
 	u32 real_magic;
 	u16 trampoline_segment;	/* segment with trampoline code, 64-bit only */
+	u8  _pad1;
+	u8  wakeup_jmp;
+	u16 wakeup_jmp_off;
+	u16 wakeup_jmp_seg;
+	u64 wakeup_gdt[3];
 	u32 signature;		/* To check we have correct structure */
 } __attribute__((__packed__));
 
Index: linux-2.6/arch/x86/kernel/acpi/sleep.c
===================================================================
--- linux-2.6.orig/arch/x86/kernel/acpi/sleep.c
+++ linux-2.6/arch/x86/kernel/acpi/sleep.c
@@ -50,6 +50,20 @@ int acpi_save_state_mem(void)
 
 	header->video_mode = saved_video_mode;
 
+	header->wakeup_jmp_seg = acpi_wakeup_address >> 4;
+	/* GDT[0]: GDT self-pointer */
+	header->wakeup_gdt[0] =
+		(u64)(sizeof(header->wakeup_gdt) - 1) +
+		((u64)(acpi_wakeup_address +
+			((char *)&header->wakeup_gdt - (char *)acpi_realmode))
+				<< 16);
+	/* GDT[1]: real-mode-like code segment */
+	header->wakeup_gdt[1] = (0x009bULL << 40) +
+		((u64)acpi_wakeup_address << 16) + 0xffff;
+	/* GDT[2]: real-mode-like data segment */
+	header->wakeup_gdt[2] = (0x0093ULL << 40) +
+		((u64)acpi_wakeup_address << 16) + 0xffff;
+
 #ifndef CONFIG_64BIT
 	store_gdt((struct desc_ptr *)&header->pmode_gdt);
 
@@ -111,7 +125,7 @@ void __init acpi_reserve_bootmem(void)
 		return;
 	}
 
-	acpi_wakeup_address = acpi_realmode;
+	acpi_wakeup_address = virt_to_phys((void *)acpi_realmode);
 }
 
 
Index: linux-2.6/drivers/acpi/sleep/main.c
===================================================================
--- linux-2.6.orig/drivers/acpi/sleep/main.c
+++ linux-2.6/drivers/acpi/sleep/main.c
@@ -32,9 +32,8 @@ static int acpi_sleep_prepare(u32 acpi_s
 		if (!acpi_wakeup_address) {
 			return -EFAULT;
 		}
-		acpi_set_firmware_waking_vector((acpi_physical_address)
-						virt_to_phys((void *)
-							     acpi_wakeup_address));
+		acpi_set_firmware_waking_vector(
+				(acpi_physical_address)acpi_wakeup_address);
 
 	}
 	ACPI_FLUSH_CPU_CACHE();

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] x86 ACPI: normalize segment descriptor register on resume
  2008-06-24 21:03 [PATCH] x86 ACPI: normalize segment descriptor register on resume Rafael J. Wysocki
  2008-06-24 21:46 ` Pavel Machek
@ 2008-06-24 21:46 ` Pavel Machek
  2008-06-25 17:01   ` Ingo Molnar
  2008-06-25 17:01   ` Ingo Molnar
  2008-06-24 21:47 ` Len Brown
  2008-06-24 21:47 ` Len Brown
  3 siblings, 2 replies; 22+ messages in thread
From: Pavel Machek @ 2008-06-24 21:46 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Len Brown, Andrew Morton, ACPI Devel Maling List, Ingo Molnar,
	LKML, pm list

Hi!

> From: H. Peter Anvin <hpa@zytor.com>
> 
> x86 ACPI: normalize segment descriptor register on resume
> 
> Some Dell laptops enter resume with apparent garbage in the segment
> descriptor registers (almost certainly the result of a botched
> transition from protected to real mode.)  The only way to clean that
> up is to enter protected mode ourselves and clean out the descriptor
> registers.
> 
> This fixes resume on Dell XPS M1210 and Dell D620.
> 
> Reference: http://bugzilla.kernel.org/show_bug.cgi?id=10927
> 
> Signed-off-by: H. Peter Anvin <hpa@zytor.com>
> Tested-by: Kirill A. Shutemov <kirill@shutemov.name>
> Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>

Thanks for great work.

I still consider this one slightly risky, and would like to get it as
much testing as possible, but all the risks are hypothetical and
regression from 2.6.25 is real, so...

Acked-by: Pavel Machek <pavel@suse.cz>

If this could be sneaked into Ingo's tree for some automated testing,
that would be good.

									Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] x86 ACPI: normalize segment descriptor register on resume
  2008-06-24 21:03 [PATCH] x86 ACPI: normalize segment descriptor register on resume Rafael J. Wysocki
@ 2008-06-24 21:46 ` Pavel Machek
  2008-06-24 21:46 ` Pavel Machek
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 22+ messages in thread
From: Pavel Machek @ 2008-06-24 21:46 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Ingo Molnar, LKML, ACPI Devel Maling List, Andrew Morton, pm list

Hi!

> From: H. Peter Anvin <hpa@zytor.com>
> 
> x86 ACPI: normalize segment descriptor register on resume
> 
> Some Dell laptops enter resume with apparent garbage in the segment
> descriptor registers (almost certainly the result of a botched
> transition from protected to real mode.)  The only way to clean that
> up is to enter protected mode ourselves and clean out the descriptor
> registers.
> 
> This fixes resume on Dell XPS M1210 and Dell D620.
> 
> Reference: http://bugzilla.kernel.org/show_bug.cgi?id=10927
> 
> Signed-off-by: H. Peter Anvin <hpa@zytor.com>
> Tested-by: Kirill A. Shutemov <kirill@shutemov.name>
> Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>

Thanks for great work.

I still consider this one slightly risky, and would like to get it as
much testing as possible, but all the risks are hypothetical and
regression from 2.6.25 is real, so...

Acked-by: Pavel Machek <pavel@suse.cz>

If this could be sneaked into Ingo's tree for some automated testing,
that would be good.

									Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] x86 ACPI: normalize segment descriptor register on resume
  2008-06-24 21:03 [PATCH] x86 ACPI: normalize segment descriptor register on resume Rafael J. Wysocki
  2008-06-24 21:46 ` Pavel Machek
  2008-06-24 21:46 ` Pavel Machek
@ 2008-06-24 21:47 ` Len Brown
  2008-06-24 21:47 ` Len Brown
  3 siblings, 0 replies; 22+ messages in thread
From: Len Brown @ 2008-06-24 21:47 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Andrew Morton, ACPI Devel Maling List, Ingo Molnar, LKML,
	Pavel Machek, pm list

Applied.

thanks,
-Len

On Tue, 24 Jun 2008, Rafael J. Wysocki wrote:

> Hi,
> 
> The patch below fixes the regression described at
> http://bugzilla.kernel.org/show_bug.cgi?id=10927
> which is caused by the fact that some BIOSes call the kernel's resume code with
> post-protected mode garbage in segment registers.
> 
> Apart from Dell laptops referred to in the chagelog it has a potential to fix
> some other systems on which resume from suspend to RAM fails in a mysterious
> way and the probability of it breaking things is rather small, so IMO it would
> be nice to have in 2.6.26.
> 
> Thanks,
> Rafael
> 
> 
> ---
> From: H. Peter Anvin <hpa@zytor.com>
> 
> x86 ACPI: normalize segment descriptor register on resume
> 
> Some Dell laptops enter resume with apparent garbage in the segment
> descriptor registers (almost certainly the result of a botched
> transition from protected to real mode.)  The only way to clean that
> up is to enter protected mode ourselves and clean out the descriptor
> registers.
> 
> This fixes resume on Dell XPS M1210 and Dell D620.
> 
> Reference: http://bugzilla.kernel.org/show_bug.cgi?id=10927
> 
> Signed-off-by: H. Peter Anvin <hpa@zytor.com>
> Tested-by: Kirill A. Shutemov <kirill@shutemov.name>
> Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
> ---
>  arch/x86/kernel/acpi/realmode/wakeup.S |   38 ++++++++++++++++++++++++++++++++-
>  arch/x86/kernel/acpi/realmode/wakeup.h |    5 ++++
>  arch/x86/kernel/acpi/sleep.c           |   16 +++++++++++++
>  drivers/acpi/sleep/main.c              |    5 +---
>  4 files changed, 59 insertions(+), 5 deletions(-)
> 
> Index: linux-2.6/arch/x86/kernel/acpi/realmode/wakeup.S
> ===================================================================
> --- linux-2.6.orig/arch/x86/kernel/acpi/realmode/wakeup.S
> +++ linux-2.6/arch/x86/kernel/acpi/realmode/wakeup.S
> @@ -5,6 +5,7 @@
>  #include <asm/msr-index.h>
>  #include <asm/page.h>
>  #include <asm/pgtable.h>
> +#include <asm/processor-flags.h>
>  
>  	.code16
>  	.section ".header", "a"
> @@ -24,6 +25,11 @@ pmode_gdt:	.quad	0
>  realmode_flags:	.long	0
>  real_magic:	.long	0
>  trampoline_segment:	.word 0
> +_pad1:		.byte	0
> +wakeup_jmp:	.byte	0xea	/* ljmpw */
> +wakeup_jmp_off:	.word	3f
> +wakeup_jmp_seg:	.word	0
> +wakeup_gdt:	.quad	0, 0, 0
>  signature:	.long	0x51ee1111
>  
>  	.text
> @@ -34,11 +40,34 @@ _start:
>  	cli
>  	cld
>  
> +	/* Apparently some dimwit BIOS programmers don't know how to
> +	   program a PM to RM transition, and we might end up here with
> +	   junk in the data segment descriptor registers.  The only way
> +	   to repair that is to go into PM and fix it ourselves... */
> +	movw	$16, %cx
> +	lgdtl	%cs:wakeup_gdt
> +	movl	%cr0, %eax
> +	orb	$X86_CR0_PE, %al
> +	movl	%eax, %cr0
> +	jmp	1f
> +1:	ljmpw	$8, $2f
> +2:
> +	movw	%cx, %ds
> +	movw	%cx, %es
> +	movw	%cx, %ss
> +	movw	%cx, %fs
> +	movw	%cx, %gs
> +
> +	andb	$~X86_CR0_PE, %al
> +	movl	%eax, %cr0
> +	jmp	wakeup_jmp
> +3:
>  	/* Set up segments */
>  	movw	%cs, %ax
>  	movw	%ax, %ds
>  	movw	%ax, %es
>  	movw	%ax, %ss
> +	lidtl	wakeup_idt
>  
>  	movl	$wakeup_stack_end, %esp
>  
> @@ -98,7 +127,14 @@ bogus_real_magic:
>  	jmp	1b
>  
>  	.data
> -	.balign	4
> +	.balign	8
> +
> +	/* This is the standard real-mode IDT */
> +wakeup_idt:
> +	.word	0xffff		/* limit */
> +	.long	0		/* address */
> +	.word	0
> +
>  	.globl	HEAP, heap_end
>  HEAP:
>  	.long	wakeup_heap
> Index: linux-2.6/arch/x86/kernel/acpi/realmode/wakeup.h
> ===================================================================
> --- linux-2.6.orig/arch/x86/kernel/acpi/realmode/wakeup.h
> +++ linux-2.6/arch/x86/kernel/acpi/realmode/wakeup.h
> @@ -24,6 +24,11 @@ struct wakeup_header {
>  	u32 realmode_flags;
>  	u32 real_magic;
>  	u16 trampoline_segment;	/* segment with trampoline code, 64-bit only */
> +	u8  _pad1;
> +	u8  wakeup_jmp;
> +	u16 wakeup_jmp_off;
> +	u16 wakeup_jmp_seg;
> +	u64 wakeup_gdt[3];
>  	u32 signature;		/* To check we have correct structure */
>  } __attribute__((__packed__));
>  
> Index: linux-2.6/arch/x86/kernel/acpi/sleep.c
> ===================================================================
> --- linux-2.6.orig/arch/x86/kernel/acpi/sleep.c
> +++ linux-2.6/arch/x86/kernel/acpi/sleep.c
> @@ -50,6 +50,20 @@ int acpi_save_state_mem(void)
>  
>  	header->video_mode = saved_video_mode;
>  
> +	header->wakeup_jmp_seg = acpi_wakeup_address >> 4;
> +	/* GDT[0]: GDT self-pointer */
> +	header->wakeup_gdt[0] =
> +		(u64)(sizeof(header->wakeup_gdt) - 1) +
> +		((u64)(acpi_wakeup_address +
> +			((char *)&header->wakeup_gdt - (char *)acpi_realmode))
> +				<< 16);
> +	/* GDT[1]: real-mode-like code segment */
> +	header->wakeup_gdt[1] = (0x009bULL << 40) +
> +		((u64)acpi_wakeup_address << 16) + 0xffff;
> +	/* GDT[2]: real-mode-like data segment */
> +	header->wakeup_gdt[2] = (0x0093ULL << 40) +
> +		((u64)acpi_wakeup_address << 16) + 0xffff;
> +
>  #ifndef CONFIG_64BIT
>  	store_gdt((struct desc_ptr *)&header->pmode_gdt);
>  
> @@ -111,7 +125,7 @@ void __init acpi_reserve_bootmem(void)
>  		return;
>  	}
>  
> -	acpi_wakeup_address = acpi_realmode;
> +	acpi_wakeup_address = virt_to_phys((void *)acpi_realmode);
>  }
>  
>  
> Index: linux-2.6/drivers/acpi/sleep/main.c
> ===================================================================
> --- linux-2.6.orig/drivers/acpi/sleep/main.c
> +++ linux-2.6/drivers/acpi/sleep/main.c
> @@ -32,9 +32,8 @@ static int acpi_sleep_prepare(u32 acpi_s
>  		if (!acpi_wakeup_address) {
>  			return -EFAULT;
>  		}
> -		acpi_set_firmware_waking_vector((acpi_physical_address)
> -						virt_to_phys((void *)
> -							     acpi_wakeup_address));
> +		acpi_set_firmware_waking_vector(
> +				(acpi_physical_address)acpi_wakeup_address);
>  
>  	}
>  	ACPI_FLUSH_CPU_CACHE();
> 

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] x86 ACPI: normalize segment descriptor register on resume
  2008-06-24 21:03 [PATCH] x86 ACPI: normalize segment descriptor register on resume Rafael J. Wysocki
                   ` (2 preceding siblings ...)
  2008-06-24 21:47 ` Len Brown
@ 2008-06-24 21:47 ` Len Brown
  3 siblings, 0 replies; 22+ messages in thread
From: Len Brown @ 2008-06-24 21:47 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Ingo Molnar, LKML, ACPI Devel Maling List, Andrew Morton, pm list

Applied.

thanks,
-Len

On Tue, 24 Jun 2008, Rafael J. Wysocki wrote:

> Hi,
> 
> The patch below fixes the regression described at
> http://bugzilla.kernel.org/show_bug.cgi?id=10927
> which is caused by the fact that some BIOSes call the kernel's resume code with
> post-protected mode garbage in segment registers.
> 
> Apart from Dell laptops referred to in the chagelog it has a potential to fix
> some other systems on which resume from suspend to RAM fails in a mysterious
> way and the probability of it breaking things is rather small, so IMO it would
> be nice to have in 2.6.26.
> 
> Thanks,
> Rafael
> 
> 
> ---
> From: H. Peter Anvin <hpa@zytor.com>
> 
> x86 ACPI: normalize segment descriptor register on resume
> 
> Some Dell laptops enter resume with apparent garbage in the segment
> descriptor registers (almost certainly the result of a botched
> transition from protected to real mode.)  The only way to clean that
> up is to enter protected mode ourselves and clean out the descriptor
> registers.
> 
> This fixes resume on Dell XPS M1210 and Dell D620.
> 
> Reference: http://bugzilla.kernel.org/show_bug.cgi?id=10927
> 
> Signed-off-by: H. Peter Anvin <hpa@zytor.com>
> Tested-by: Kirill A. Shutemov <kirill@shutemov.name>
> Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
> ---
>  arch/x86/kernel/acpi/realmode/wakeup.S |   38 ++++++++++++++++++++++++++++++++-
>  arch/x86/kernel/acpi/realmode/wakeup.h |    5 ++++
>  arch/x86/kernel/acpi/sleep.c           |   16 +++++++++++++
>  drivers/acpi/sleep/main.c              |    5 +---
>  4 files changed, 59 insertions(+), 5 deletions(-)
> 
> Index: linux-2.6/arch/x86/kernel/acpi/realmode/wakeup.S
> ===================================================================
> --- linux-2.6.orig/arch/x86/kernel/acpi/realmode/wakeup.S
> +++ linux-2.6/arch/x86/kernel/acpi/realmode/wakeup.S
> @@ -5,6 +5,7 @@
>  #include <asm/msr-index.h>
>  #include <asm/page.h>
>  #include <asm/pgtable.h>
> +#include <asm/processor-flags.h>
>  
>  	.code16
>  	.section ".header", "a"
> @@ -24,6 +25,11 @@ pmode_gdt:	.quad	0
>  realmode_flags:	.long	0
>  real_magic:	.long	0
>  trampoline_segment:	.word 0
> +_pad1:		.byte	0
> +wakeup_jmp:	.byte	0xea	/* ljmpw */
> +wakeup_jmp_off:	.word	3f
> +wakeup_jmp_seg:	.word	0
> +wakeup_gdt:	.quad	0, 0, 0
>  signature:	.long	0x51ee1111
>  
>  	.text
> @@ -34,11 +40,34 @@ _start:
>  	cli
>  	cld
>  
> +	/* Apparently some dimwit BIOS programmers don't know how to
> +	   program a PM to RM transition, and we might end up here with
> +	   junk in the data segment descriptor registers.  The only way
> +	   to repair that is to go into PM and fix it ourselves... */
> +	movw	$16, %cx
> +	lgdtl	%cs:wakeup_gdt
> +	movl	%cr0, %eax
> +	orb	$X86_CR0_PE, %al
> +	movl	%eax, %cr0
> +	jmp	1f
> +1:	ljmpw	$8, $2f
> +2:
> +	movw	%cx, %ds
> +	movw	%cx, %es
> +	movw	%cx, %ss
> +	movw	%cx, %fs
> +	movw	%cx, %gs
> +
> +	andb	$~X86_CR0_PE, %al
> +	movl	%eax, %cr0
> +	jmp	wakeup_jmp
> +3:
>  	/* Set up segments */
>  	movw	%cs, %ax
>  	movw	%ax, %ds
>  	movw	%ax, %es
>  	movw	%ax, %ss
> +	lidtl	wakeup_idt
>  
>  	movl	$wakeup_stack_end, %esp
>  
> @@ -98,7 +127,14 @@ bogus_real_magic:
>  	jmp	1b
>  
>  	.data
> -	.balign	4
> +	.balign	8
> +
> +	/* This is the standard real-mode IDT */
> +wakeup_idt:
> +	.word	0xffff		/* limit */
> +	.long	0		/* address */
> +	.word	0
> +
>  	.globl	HEAP, heap_end
>  HEAP:
>  	.long	wakeup_heap
> Index: linux-2.6/arch/x86/kernel/acpi/realmode/wakeup.h
> ===================================================================
> --- linux-2.6.orig/arch/x86/kernel/acpi/realmode/wakeup.h
> +++ linux-2.6/arch/x86/kernel/acpi/realmode/wakeup.h
> @@ -24,6 +24,11 @@ struct wakeup_header {
>  	u32 realmode_flags;
>  	u32 real_magic;
>  	u16 trampoline_segment;	/* segment with trampoline code, 64-bit only */
> +	u8  _pad1;
> +	u8  wakeup_jmp;
> +	u16 wakeup_jmp_off;
> +	u16 wakeup_jmp_seg;
> +	u64 wakeup_gdt[3];
>  	u32 signature;		/* To check we have correct structure */
>  } __attribute__((__packed__));
>  
> Index: linux-2.6/arch/x86/kernel/acpi/sleep.c
> ===================================================================
> --- linux-2.6.orig/arch/x86/kernel/acpi/sleep.c
> +++ linux-2.6/arch/x86/kernel/acpi/sleep.c
> @@ -50,6 +50,20 @@ int acpi_save_state_mem(void)
>  
>  	header->video_mode = saved_video_mode;
>  
> +	header->wakeup_jmp_seg = acpi_wakeup_address >> 4;
> +	/* GDT[0]: GDT self-pointer */
> +	header->wakeup_gdt[0] =
> +		(u64)(sizeof(header->wakeup_gdt) - 1) +
> +		((u64)(acpi_wakeup_address +
> +			((char *)&header->wakeup_gdt - (char *)acpi_realmode))
> +				<< 16);
> +	/* GDT[1]: real-mode-like code segment */
> +	header->wakeup_gdt[1] = (0x009bULL << 40) +
> +		((u64)acpi_wakeup_address << 16) + 0xffff;
> +	/* GDT[2]: real-mode-like data segment */
> +	header->wakeup_gdt[2] = (0x0093ULL << 40) +
> +		((u64)acpi_wakeup_address << 16) + 0xffff;
> +
>  #ifndef CONFIG_64BIT
>  	store_gdt((struct desc_ptr *)&header->pmode_gdt);
>  
> @@ -111,7 +125,7 @@ void __init acpi_reserve_bootmem(void)
>  		return;
>  	}
>  
> -	acpi_wakeup_address = acpi_realmode;
> +	acpi_wakeup_address = virt_to_phys((void *)acpi_realmode);
>  }
>  
>  
> Index: linux-2.6/drivers/acpi/sleep/main.c
> ===================================================================
> --- linux-2.6.orig/drivers/acpi/sleep/main.c
> +++ linux-2.6/drivers/acpi/sleep/main.c
> @@ -32,9 +32,8 @@ static int acpi_sleep_prepare(u32 acpi_s
>  		if (!acpi_wakeup_address) {
>  			return -EFAULT;
>  		}
> -		acpi_set_firmware_waking_vector((acpi_physical_address)
> -						virt_to_phys((void *)
> -							     acpi_wakeup_address));
> +		acpi_set_firmware_waking_vector(
> +				(acpi_physical_address)acpi_wakeup_address);
>  
>  	}
>  	ACPI_FLUSH_CPU_CACHE();
> 

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] x86 ACPI: normalize segment descriptor register on resume
  2008-06-24 21:46 ` Pavel Machek
  2008-06-25 17:01   ` Ingo Molnar
@ 2008-06-25 17:01   ` Ingo Molnar
  2008-06-25 20:17     ` Rafael J. Wysocki
  2008-06-25 20:17     ` Rafael J. Wysocki
  1 sibling, 2 replies; 22+ messages in thread
From: Ingo Molnar @ 2008-06-25 17:01 UTC (permalink / raw)
  To: Pavel Machek
  Cc: Rafael J. Wysocki, Len Brown, Andrew Morton,
	ACPI Devel Maling List, LKML, pm list


* Pavel Machek <pavel@suse.cz> wrote:

> Acked-by: Pavel Machek <pavel@suse.cz>
> 
> If this could be sneaked into Ingo's tree for some automated testing, 
> that would be good.

sure - i have applied it to tip/out-of-tree. I'm equally nervous about 
this change - it affects every suspend+resume cycle that people do on 
those boxes which are working just fine currently.

btw., it would get a lot more coverage on my test-systems if this commit 
in tip/out-of-tree:

| commit 01259383c345d13b70efcc549439927ae64dc66d
| Author: David Brownell <david-b@pacbell.net>
| Date:   Fri May 16 10:12:36 2008 +0200
|
|     sleepy linux self-test

was upstream and if it was enabled more prominently, instead of hidden 
behind the rather obscure condition of:

  config PM_TEST_SUSPEND
        bool "Test suspend/resume and wakealarm during bootup"
        depends on SUSPEND && PM_DEBUG && RTC_LIB=y

and even then it needs certain other config options related to RTC_LIB 
to actually work during bootup.

As a result of all this obstruction, the automated testing i do, which 
builds and boots more than 1 random kernel per minute, will only run 
this self-test once every hour or so.

I dont mind if this option breaks boxes (that its purpose: it does the 
same thing that a real suspend+resume does and suspend+resume frequently 
breaks boxes), but right now it's all obscured so heavily which makes 
automated testing a lot harder than it should be.

it would be wonderful if this excellent suspend+resume self-test was 
upstream and was more prominent! :-)

	Ingo

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] x86 ACPI: normalize segment descriptor register on resume
  2008-06-24 21:46 ` Pavel Machek
@ 2008-06-25 17:01   ` Ingo Molnar
  2008-06-25 17:01   ` Ingo Molnar
  1 sibling, 0 replies; 22+ messages in thread
From: Ingo Molnar @ 2008-06-25 17:01 UTC (permalink / raw)
  To: Pavel Machek; +Cc: LKML, ACPI Devel Maling List, Andrew Morton, pm list


* Pavel Machek <pavel@suse.cz> wrote:

> Acked-by: Pavel Machek <pavel@suse.cz>
> 
> If this could be sneaked into Ingo's tree for some automated testing, 
> that would be good.

sure - i have applied it to tip/out-of-tree. I'm equally nervous about 
this change - it affects every suspend+resume cycle that people do on 
those boxes which are working just fine currently.

btw., it would get a lot more coverage on my test-systems if this commit 
in tip/out-of-tree:

| commit 01259383c345d13b70efcc549439927ae64dc66d
| Author: David Brownell <david-b@pacbell.net>
| Date:   Fri May 16 10:12:36 2008 +0200
|
|     sleepy linux self-test

was upstream and if it was enabled more prominently, instead of hidden 
behind the rather obscure condition of:

  config PM_TEST_SUSPEND
        bool "Test suspend/resume and wakealarm during bootup"
        depends on SUSPEND && PM_DEBUG && RTC_LIB=y

and even then it needs certain other config options related to RTC_LIB 
to actually work during bootup.

As a result of all this obstruction, the automated testing i do, which 
builds and boots more than 1 random kernel per minute, will only run 
this self-test once every hour or so.

I dont mind if this option breaks boxes (that its purpose: it does the 
same thing that a real suspend+resume does and suspend+resume frequently 
breaks boxes), but right now it's all obscured so heavily which makes 
automated testing a lot harder than it should be.

it would be wonderful if this excellent suspend+resume self-test was 
upstream and was more prominent! :-)

	Ingo

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] x86 ACPI: normalize segment descriptor register on resume
  2008-06-25 17:01   ` Ingo Molnar
  2008-06-25 20:17     ` Rafael J. Wysocki
@ 2008-06-25 20:17     ` Rafael J. Wysocki
  2008-06-26  8:17       ` Andrew Morton
  2008-06-26  8:17       ` Andrew Morton
  1 sibling, 2 replies; 22+ messages in thread
From: Rafael J. Wysocki @ 2008-06-25 20:17 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Pavel Machek, Len Brown, Andrew Morton, ACPI Devel Maling List,
	LKML, pm list

On Wednesday, 25 of June 2008, Ingo Molnar wrote:
> 
> * Pavel Machek <pavel@suse.cz> wrote:
> 
> > Acked-by: Pavel Machek <pavel@suse.cz>
> > 
> > If this could be sneaked into Ingo's tree for some automated testing, 
> > that would be good.
> 
> sure - i have applied it to tip/out-of-tree. I'm equally nervous about 
> this change - it affects every suspend+resume cycle that people do on 
> those boxes which are working just fine currently.
> 
> btw., it would get a lot more coverage on my test-systems if this commit 
> in tip/out-of-tree:
> 
> | commit 01259383c345d13b70efcc549439927ae64dc66d
> | Author: David Brownell <david-b@pacbell.net>
> | Date:   Fri May 16 10:12:36 2008 +0200
> |
> |     sleepy linux self-test
> 
> was upstream and if it was enabled more prominently, instead of hidden 
> behind the rather obscure condition of:
> 
>   config PM_TEST_SUSPEND
>         bool "Test suspend/resume and wakealarm during bootup"
>         depends on SUSPEND && PM_DEBUG && RTC_LIB=y
> 
> and even then it needs certain other config options related to RTC_LIB 
> to actually work during bootup.
> 
> As a result of all this obstruction, the automated testing i do, which 
> builds and boots more than 1 random kernel per minute, will only run 
> this self-test once every hour or so.
> 
> I dont mind if this option breaks boxes (that its purpose: it does the 
> same thing that a real suspend+resume does and suspend+resume frequently 
> breaks boxes), but right now it's all obscured so heavily which makes 
> automated testing a lot harder than it should be.
> 
> it would be wonderful if this excellent suspend+resume self-test was 
> upstream and was more prominent! :-)

I thought it was in linux-next, wasn't it?

Rafael

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] x86 ACPI: normalize segment descriptor register on resume
  2008-06-25 17:01   ` Ingo Molnar
@ 2008-06-25 20:17     ` Rafael J. Wysocki
  2008-06-25 20:17     ` Rafael J. Wysocki
  1 sibling, 0 replies; 22+ messages in thread
From: Rafael J. Wysocki @ 2008-06-25 20:17 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: LKML, ACPI Devel Maling List, Pavel Machek, pm list,
	Andrew Morton

On Wednesday, 25 of June 2008, Ingo Molnar wrote:
> 
> * Pavel Machek <pavel@suse.cz> wrote:
> 
> > Acked-by: Pavel Machek <pavel@suse.cz>
> > 
> > If this could be sneaked into Ingo's tree for some automated testing, 
> > that would be good.
> 
> sure - i have applied it to tip/out-of-tree. I'm equally nervous about 
> this change - it affects every suspend+resume cycle that people do on 
> those boxes which are working just fine currently.
> 
> btw., it would get a lot more coverage on my test-systems if this commit 
> in tip/out-of-tree:
> 
> | commit 01259383c345d13b70efcc549439927ae64dc66d
> | Author: David Brownell <david-b@pacbell.net>
> | Date:   Fri May 16 10:12:36 2008 +0200
> |
> |     sleepy linux self-test
> 
> was upstream and if it was enabled more prominently, instead of hidden 
> behind the rather obscure condition of:
> 
>   config PM_TEST_SUSPEND
>         bool "Test suspend/resume and wakealarm during bootup"
>         depends on SUSPEND && PM_DEBUG && RTC_LIB=y
> 
> and even then it needs certain other config options related to RTC_LIB 
> to actually work during bootup.
> 
> As a result of all this obstruction, the automated testing i do, which 
> builds and boots more than 1 random kernel per minute, will only run 
> this self-test once every hour or so.
> 
> I dont mind if this option breaks boxes (that its purpose: it does the 
> same thing that a real suspend+resume does and suspend+resume frequently 
> breaks boxes), but right now it's all obscured so heavily which makes 
> automated testing a lot harder than it should be.
> 
> it would be wonderful if this excellent suspend+resume self-test was 
> upstream and was more prominent! :-)

I thought it was in linux-next, wasn't it?

Rafael

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] x86 ACPI: normalize segment descriptor register on resume
  2008-06-25 20:17     ` Rafael J. Wysocki
  2008-06-26  8:17       ` Andrew Morton
@ 2008-06-26  8:17       ` Andrew Morton
  2008-06-26  8:29         ` Ingo Molnar
                           ` (3 more replies)
  1 sibling, 4 replies; 22+ messages in thread
From: Andrew Morton @ 2008-06-26  8:17 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Ingo Molnar, Pavel Machek, Len Brown, ACPI Devel Maling List,
	LKML, pm list

On Wed, 25 Jun 2008 22:17:26 +0200 "Rafael J. Wysocki" <rjw@sisk.pl> wrote:

> On Wednesday, 25 of June 2008, Ingo Molnar wrote:
> > 
> > * Pavel Machek <pavel@suse.cz> wrote:
> > 
> > > Acked-by: Pavel Machek <pavel@suse.cz>
> > > 
> > > If this could be sneaked into Ingo's tree for some automated testing, 
> > > that would be good.
> > 
> > sure - i have applied it to tip/out-of-tree. I'm equally nervous about 
> > this change - it affects every suspend+resume cycle that people do on 
> > those boxes which are working just fine currently.
> > 
> > btw., it would get a lot more coverage on my test-systems if this commit 
> > in tip/out-of-tree:
> > 
> > | commit 01259383c345d13b70efcc549439927ae64dc66d
> > | Author: David Brownell <david-b@pacbell.net>
> > | Date:   Fri May 16 10:12:36 2008 +0200
> > |
> > |     sleepy linux self-test
> > 
> > was upstream and if it was enabled more prominently, instead of hidden 
> > behind the rather obscure condition of:
> > 
> >   config PM_TEST_SUSPEND
> >         bool "Test suspend/resume and wakealarm during bootup"
> >         depends on SUSPEND && PM_DEBUG && RTC_LIB=y
> > 
> > and even then it needs certain other config options related to RTC_LIB 
> > to actually work during bootup.
> > 
> > As a result of all this obstruction, the automated testing i do, which 
> > builds and boots more than 1 random kernel per minute, will only run 
> > this self-test once every hour or so.
> > 
> > I dont mind if this option breaks boxes (that its purpose: it does the 
> > same thing that a real suspend+resume does and suspend+resume frequently 
> > breaks boxes), but right now it's all obscured so heavily which makes 
> > automated testing a lot harder than it should be.
> > 
> > it would be wonderful if this excellent suspend+resume self-test was 
> > upstream and was more prominent! :-)
> 
> I thought it was in linux-next, wasn't it?
> 

Len seems to think that Rafael seems to think that Ingo seems to think
that this patch broke one of his boxes.

Is it so?

Thanks.

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] x86 ACPI: normalize segment descriptor register on resume
  2008-06-25 20:17     ` Rafael J. Wysocki
@ 2008-06-26  8:17       ` Andrew Morton
  2008-06-26  8:17       ` Andrew Morton
  1 sibling, 0 replies; 22+ messages in thread
From: Andrew Morton @ 2008-06-26  8:17 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: LKML, ACPI Devel Maling List, Pavel Machek, Ingo Molnar, pm list

On Wed, 25 Jun 2008 22:17:26 +0200 "Rafael J. Wysocki" <rjw@sisk.pl> wrote:

> On Wednesday, 25 of June 2008, Ingo Molnar wrote:
> > 
> > * Pavel Machek <pavel@suse.cz> wrote:
> > 
> > > Acked-by: Pavel Machek <pavel@suse.cz>
> > > 
> > > If this could be sneaked into Ingo's tree for some automated testing, 
> > > that would be good.
> > 
> > sure - i have applied it to tip/out-of-tree. I'm equally nervous about 
> > this change - it affects every suspend+resume cycle that people do on 
> > those boxes which are working just fine currently.
> > 
> > btw., it would get a lot more coverage on my test-systems if this commit 
> > in tip/out-of-tree:
> > 
> > | commit 01259383c345d13b70efcc549439927ae64dc66d
> > | Author: David Brownell <david-b@pacbell.net>
> > | Date:   Fri May 16 10:12:36 2008 +0200
> > |
> > |     sleepy linux self-test
> > 
> > was upstream and if it was enabled more prominently, instead of hidden 
> > behind the rather obscure condition of:
> > 
> >   config PM_TEST_SUSPEND
> >         bool "Test suspend/resume and wakealarm during bootup"
> >         depends on SUSPEND && PM_DEBUG && RTC_LIB=y
> > 
> > and even then it needs certain other config options related to RTC_LIB 
> > to actually work during bootup.
> > 
> > As a result of all this obstruction, the automated testing i do, which 
> > builds and boots more than 1 random kernel per minute, will only run 
> > this self-test once every hour or so.
> > 
> > I dont mind if this option breaks boxes (that its purpose: it does the 
> > same thing that a real suspend+resume does and suspend+resume frequently 
> > breaks boxes), but right now it's all obscured so heavily which makes 
> > automated testing a lot harder than it should be.
> > 
> > it would be wonderful if this excellent suspend+resume self-test was 
> > upstream and was more prominent! :-)
> 
> I thought it was in linux-next, wasn't it?
> 

Len seems to think that Rafael seems to think that Ingo seems to think
that this patch broke one of his boxes.

Is it so?

Thanks.

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] x86 ACPI: normalize segment descriptor register on resume
  2008-06-26  8:17       ` Andrew Morton
  2008-06-26  8:29         ` Ingo Molnar
@ 2008-06-26  8:29         ` Ingo Molnar
  2008-06-26  8:39           ` Rafael J. Wysocki
  2008-06-26  8:39           ` Rafael J. Wysocki
  2008-06-26  8:35         ` Rafael J. Wysocki
  2008-06-26  8:35         ` Rafael J. Wysocki
  3 siblings, 2 replies; 22+ messages in thread
From: Ingo Molnar @ 2008-06-26  8:29 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Rafael J. Wysocki, Pavel Machek, Len Brown,
	ACPI Devel Maling List, LKML, pm list


* Andrew Morton <akpm@linux-foundation.org> wrote:

> Len seems to think that Rafael seems to think that Ingo seems to think 
> that this patch broke one of his boxes.
> 
> Is it so?

No! :-)

it found a pre-existing suspend+resume breakage on a testbox. (I.e. the 
debug patch worked as i'd expect it to work. Every good debug patch 
starts its lifetime with a sharp spike of breakages it finds.)

( my kernel test-setup does in excess of 100,000 random kernel bootups 
  per year and me not having to hit the keyboard or close+open the lid a 
  hundred thousand times, day and night, to find the occasional 
  suspend+resume regression is a not to be under-estimated plus. )

	Ingo

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] x86 ACPI: normalize segment descriptor register on resume
  2008-06-26  8:17       ` Andrew Morton
@ 2008-06-26  8:29         ` Ingo Molnar
  2008-06-26  8:29         ` Ingo Molnar
                           ` (2 subsequent siblings)
  3 siblings, 0 replies; 22+ messages in thread
From: Ingo Molnar @ 2008-06-26  8:29 UTC (permalink / raw)
  To: Andrew Morton; +Cc: LKML, ACPI Devel Maling List, Pavel Machek, pm list


* Andrew Morton <akpm@linux-foundation.org> wrote:

> Len seems to think that Rafael seems to think that Ingo seems to think 
> that this patch broke one of his boxes.
> 
> Is it so?

No! :-)

it found a pre-existing suspend+resume breakage on a testbox. (I.e. the 
debug patch worked as i'd expect it to work. Every good debug patch 
starts its lifetime with a sharp spike of breakages it finds.)

( my kernel test-setup does in excess of 100,000 random kernel bootups 
  per year and me not having to hit the keyboard or close+open the lid a 
  hundred thousand times, day and night, to find the occasional 
  suspend+resume regression is a not to be under-estimated plus. )

	Ingo

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] x86 ACPI: normalize segment descriptor register on resume
  2008-06-26  8:17       ` Andrew Morton
                           ` (2 preceding siblings ...)
  2008-06-26  8:35         ` Rafael J. Wysocki
@ 2008-06-26  8:35         ` Rafael J. Wysocki
  3 siblings, 0 replies; 22+ messages in thread
From: Rafael J. Wysocki @ 2008-06-26  8:35 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Ingo Molnar, Pavel Machek, Len Brown, ACPI Devel Maling List,
	LKML, pm list

On Thursday, 26 of June 2008, Andrew Morton wrote:
> On Wed, 25 Jun 2008 22:17:26 +0200 "Rafael J. Wysocki" <rjw@sisk.pl> wrote:
> 
> > On Wednesday, 25 of June 2008, Ingo Molnar wrote:
> > > 
> > > * Pavel Machek <pavel@suse.cz> wrote:
> > > 
> > > > Acked-by: Pavel Machek <pavel@suse.cz>
> > > > 
> > > > If this could be sneaked into Ingo's tree for some automated testing, 
> > > > that would be good.
> > > 
> > > sure - i have applied it to tip/out-of-tree. I'm equally nervous about 
> > > this change - it affects every suspend+resume cycle that people do on 
> > > those boxes which are working just fine currently.
> > > 
> > > btw., it would get a lot more coverage on my test-systems if this commit 
> > > in tip/out-of-tree:
> > > 
> > > | commit 01259383c345d13b70efcc549439927ae64dc66d
> > > | Author: David Brownell <david-b@pacbell.net>
> > > | Date:   Fri May 16 10:12:36 2008 +0200
> > > |
> > > |     sleepy linux self-test
> > > 
> > > was upstream and if it was enabled more prominently, instead of hidden 
> > > behind the rather obscure condition of:
> > > 
> > >   config PM_TEST_SUSPEND
> > >         bool "Test suspend/resume and wakealarm during bootup"
> > >         depends on SUSPEND && PM_DEBUG && RTC_LIB=y
> > > 
> > > and even then it needs certain other config options related to RTC_LIB 
> > > to actually work during bootup.
> > > 
> > > As a result of all this obstruction, the automated testing i do, which 
> > > builds and boots more than 1 random kernel per minute, will only run 
> > > this self-test once every hour or so.
> > > 
> > > I dont mind if this option breaks boxes (that its purpose: it does the 
> > > same thing that a real suspend+resume does and suspend+resume frequently 
> > > breaks boxes), but right now it's all obscured so heavily which makes 
> > > automated testing a lot harder than it should be.
> > > 
> > > it would be wonderful if this excellent suspend+resume self-test was 
> > > upstream and was more prominent! :-)
> > 
> > I thought it was in linux-next, wasn't it?
> > 
> 
> Len seems to think that Rafael seems to think that Ingo seems to think
> that this patch broke one of his boxes.
> 
> Is it so?

Yes, it is.

The box is apparently broken, but we've been unable to reproduce the breakage
on other very similar boxes, so far.  Investigation continues.

Thanks,
Rafael

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] x86 ACPI: normalize segment descriptor register on resume
  2008-06-26  8:17       ` Andrew Morton
  2008-06-26  8:29         ` Ingo Molnar
  2008-06-26  8:29         ` Ingo Molnar
@ 2008-06-26  8:35         ` Rafael J. Wysocki
  2008-06-26  8:35         ` Rafael J. Wysocki
  3 siblings, 0 replies; 22+ messages in thread
From: Rafael J. Wysocki @ 2008-06-26  8:35 UTC (permalink / raw)
  To: Andrew Morton
  Cc: LKML, ACPI Devel Maling List, Pavel Machek, Ingo Molnar, pm list

On Thursday, 26 of June 2008, Andrew Morton wrote:
> On Wed, 25 Jun 2008 22:17:26 +0200 "Rafael J. Wysocki" <rjw@sisk.pl> wrote:
> 
> > On Wednesday, 25 of June 2008, Ingo Molnar wrote:
> > > 
> > > * Pavel Machek <pavel@suse.cz> wrote:
> > > 
> > > > Acked-by: Pavel Machek <pavel@suse.cz>
> > > > 
> > > > If this could be sneaked into Ingo's tree for some automated testing, 
> > > > that would be good.
> > > 
> > > sure - i have applied it to tip/out-of-tree. I'm equally nervous about 
> > > this change - it affects every suspend+resume cycle that people do on 
> > > those boxes which are working just fine currently.
> > > 
> > > btw., it would get a lot more coverage on my test-systems if this commit 
> > > in tip/out-of-tree:
> > > 
> > > | commit 01259383c345d13b70efcc549439927ae64dc66d
> > > | Author: David Brownell <david-b@pacbell.net>
> > > | Date:   Fri May 16 10:12:36 2008 +0200
> > > |
> > > |     sleepy linux self-test
> > > 
> > > was upstream and if it was enabled more prominently, instead of hidden 
> > > behind the rather obscure condition of:
> > > 
> > >   config PM_TEST_SUSPEND
> > >         bool "Test suspend/resume and wakealarm during bootup"
> > >         depends on SUSPEND && PM_DEBUG && RTC_LIB=y
> > > 
> > > and even then it needs certain other config options related to RTC_LIB 
> > > to actually work during bootup.
> > > 
> > > As a result of all this obstruction, the automated testing i do, which 
> > > builds and boots more than 1 random kernel per minute, will only run 
> > > this self-test once every hour or so.
> > > 
> > > I dont mind if this option breaks boxes (that its purpose: it does the 
> > > same thing that a real suspend+resume does and suspend+resume frequently 
> > > breaks boxes), but right now it's all obscured so heavily which makes 
> > > automated testing a lot harder than it should be.
> > > 
> > > it would be wonderful if this excellent suspend+resume self-test was 
> > > upstream and was more prominent! :-)
> > 
> > I thought it was in linux-next, wasn't it?
> > 
> 
> Len seems to think that Rafael seems to think that Ingo seems to think
> that this patch broke one of his boxes.
> 
> Is it so?

Yes, it is.

The box is apparently broken, but we've been unable to reproduce the breakage
on other very similar boxes, so far.  Investigation continues.

Thanks,
Rafael

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] x86 ACPI: normalize segment descriptor register on resume
  2008-06-26  8:29         ` Ingo Molnar
  2008-06-26  8:39           ` Rafael J. Wysocki
@ 2008-06-26  8:39           ` Rafael J. Wysocki
  2008-06-26  8:51             ` Ingo Molnar
  2008-06-26  8:51             ` Ingo Molnar
  1 sibling, 2 replies; 22+ messages in thread
From: Rafael J. Wysocki @ 2008-06-26  8:39 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Andrew Morton, Pavel Machek, Len Brown, ACPI Devel Maling List,
	LKML, pm list

On Thursday, 26 of June 2008, Ingo Molnar wrote:
> 
> * Andrew Morton <akpm@linux-foundation.org> wrote:
> 
> > Len seems to think that Rafael seems to think that Ingo seems to think 
> > that this patch broke one of his boxes.
> > 
> > Is it so?
> 
> No! :-)
> 
> it found a pre-existing suspend+resume breakage on a testbox. (I.e. the 
> debug patch worked as i'd expect it to work. Every good debug patch 
> starts its lifetime with a sharp spike of breakages it finds.)

Does it mean that the $subject patch doesn't break your test box after all?

Rafael

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] x86 ACPI: normalize segment descriptor register on resume
  2008-06-26  8:29         ` Ingo Molnar
@ 2008-06-26  8:39           ` Rafael J. Wysocki
  2008-06-26  8:39           ` Rafael J. Wysocki
  1 sibling, 0 replies; 22+ messages in thread
From: Rafael J. Wysocki @ 2008-06-26  8:39 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: LKML, ACPI Devel Maling List, Pavel Machek, Andrew Morton,
	pm list

On Thursday, 26 of June 2008, Ingo Molnar wrote:
> 
> * Andrew Morton <akpm@linux-foundation.org> wrote:
> 
> > Len seems to think that Rafael seems to think that Ingo seems to think 
> > that this patch broke one of his boxes.
> > 
> > Is it so?
> 
> No! :-)
> 
> it found a pre-existing suspend+resume breakage on a testbox. (I.e. the 
> debug patch worked as i'd expect it to work. Every good debug patch 
> starts its lifetime with a sharp spike of breakages it finds.)

Does it mean that the $subject patch doesn't break your test box after all?

Rafael

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] x86 ACPI: normalize segment descriptor register on resume
  2008-06-26  8:39           ` Rafael J. Wysocki
@ 2008-06-26  8:51             ` Ingo Molnar
  2008-06-26  8:56               ` Rafael J. Wysocki
  2008-06-26  8:56               ` Rafael J. Wysocki
  2008-06-26  8:51             ` Ingo Molnar
  1 sibling, 2 replies; 22+ messages in thread
From: Ingo Molnar @ 2008-06-26  8:51 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Andrew Morton, Pavel Machek, Len Brown, ACPI Devel Maling List,
	LKML, pm list


* Rafael J. Wysocki <rjw@sisk.pl> wrote:

> On Thursday, 26 of June 2008, Ingo Molnar wrote:
> > 
> > * Andrew Morton <akpm@linux-foundation.org> wrote:
> > 
> > > Len seems to think that Rafael seems to think that Ingo seems to think 
> > > that this patch broke one of his boxes.
> > > 
> > > Is it so?
> > 
> > No! :-)
> > 
> > it found a pre-existing suspend+resume breakage on a testbox. (I.e. 
> > the debug patch worked as i'd expect it to work. Every good debug 
> > patch starts its lifetime with a sharp spike of breakages it finds.)
> 
> Does it mean that the $subject patch doesn't break your test box after 
> all?

it doesnt break it - i get the same suspend+resume breakage without that 
patch as well, if i do it manually.

	Ingo

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] x86 ACPI: normalize segment descriptor register on resume
  2008-06-26  8:39           ` Rafael J. Wysocki
  2008-06-26  8:51             ` Ingo Molnar
@ 2008-06-26  8:51             ` Ingo Molnar
  1 sibling, 0 replies; 22+ messages in thread
From: Ingo Molnar @ 2008-06-26  8:51 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: LKML, ACPI Devel Maling List, Pavel Machek, Andrew Morton,
	pm list


* Rafael J. Wysocki <rjw@sisk.pl> wrote:

> On Thursday, 26 of June 2008, Ingo Molnar wrote:
> > 
> > * Andrew Morton <akpm@linux-foundation.org> wrote:
> > 
> > > Len seems to think that Rafael seems to think that Ingo seems to think 
> > > that this patch broke one of his boxes.
> > > 
> > > Is it so?
> > 
> > No! :-)
> > 
> > it found a pre-existing suspend+resume breakage on a testbox. (I.e. 
> > the debug patch worked as i'd expect it to work. Every good debug 
> > patch starts its lifetime with a sharp spike of breakages it finds.)
> 
> Does it mean that the $subject patch doesn't break your test box after 
> all?

it doesnt break it - i get the same suspend+resume breakage without that 
patch as well, if i do it manually.

	Ingo

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] x86 ACPI: normalize segment descriptor register on resume
  2008-06-26  8:51             ` Ingo Molnar
  2008-06-26  8:56               ` Rafael J. Wysocki
@ 2008-06-26  8:56               ` Rafael J. Wysocki
  1 sibling, 0 replies; 22+ messages in thread
From: Rafael J. Wysocki @ 2008-06-26  8:56 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Andrew Morton, Pavel Machek, Len Brown, ACPI Devel Maling List,
	LKML, pm list

On Thursday, 26 of June 2008, Ingo Molnar wrote:
> 
> * Rafael J. Wysocki <rjw@sisk.pl> wrote:
> 
> > On Thursday, 26 of June 2008, Ingo Molnar wrote:
> > > 
> > > * Andrew Morton <akpm@linux-foundation.org> wrote:
> > > 
> > > > Len seems to think that Rafael seems to think that Ingo seems to think 
> > > > that this patch broke one of his boxes.
> > > > 
> > > > Is it so?
> > > 
> > > No! :-)
> > > 
> > > it found a pre-existing suspend+resume breakage on a testbox. (I.e. 
> > > the debug patch worked as i'd expect it to work. Every good debug 
> > > patch starts its lifetime with a sharp spike of breakages it finds.)
> > 
> > Does it mean that the $subject patch doesn't break your test box after 
> > all?
> 
> it doesnt break it - i get the same suspend+resume breakage without that 
> patch as well, if i do it manually.

Okay, so I think the $subject patch is good to go, then.

Thanks,
Rafael

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH] x86 ACPI: normalize segment descriptor register on resume
  2008-06-26  8:51             ` Ingo Molnar
@ 2008-06-26  8:56               ` Rafael J. Wysocki
  2008-06-26  8:56               ` Rafael J. Wysocki
  1 sibling, 0 replies; 22+ messages in thread
From: Rafael J. Wysocki @ 2008-06-26  8:56 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: LKML, ACPI Devel Maling List, Pavel Machek, Andrew Morton,
	pm list

On Thursday, 26 of June 2008, Ingo Molnar wrote:
> 
> * Rafael J. Wysocki <rjw@sisk.pl> wrote:
> 
> > On Thursday, 26 of June 2008, Ingo Molnar wrote:
> > > 
> > > * Andrew Morton <akpm@linux-foundation.org> wrote:
> > > 
> > > > Len seems to think that Rafael seems to think that Ingo seems to think 
> > > > that this patch broke one of his boxes.
> > > > 
> > > > Is it so?
> > > 
> > > No! :-)
> > > 
> > > it found a pre-existing suspend+resume breakage on a testbox. (I.e. 
> > > the debug patch worked as i'd expect it to work. Every good debug 
> > > patch starts its lifetime with a sharp spike of breakages it finds.)
> > 
> > Does it mean that the $subject patch doesn't break your test box after 
> > all?
> 
> it doesnt break it - i get the same suspend+resume breakage without that 
> patch as well, if i do it manually.

Okay, so I think the $subject patch is good to go, then.

Thanks,
Rafael

^ permalink raw reply	[flat|nested] 22+ messages in thread

end of thread, other threads:[~2008-06-26  8:56 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-06-24 21:03 [PATCH] x86 ACPI: normalize segment descriptor register on resume Rafael J. Wysocki
2008-06-24 21:46 ` Pavel Machek
2008-06-24 21:46 ` Pavel Machek
2008-06-25 17:01   ` Ingo Molnar
2008-06-25 17:01   ` Ingo Molnar
2008-06-25 20:17     ` Rafael J. Wysocki
2008-06-25 20:17     ` Rafael J. Wysocki
2008-06-26  8:17       ` Andrew Morton
2008-06-26  8:17       ` Andrew Morton
2008-06-26  8:29         ` Ingo Molnar
2008-06-26  8:29         ` Ingo Molnar
2008-06-26  8:39           ` Rafael J. Wysocki
2008-06-26  8:39           ` Rafael J. Wysocki
2008-06-26  8:51             ` Ingo Molnar
2008-06-26  8:56               ` Rafael J. Wysocki
2008-06-26  8:56               ` Rafael J. Wysocki
2008-06-26  8:51             ` Ingo Molnar
2008-06-26  8:35         ` Rafael J. Wysocki
2008-06-26  8:35         ` Rafael J. Wysocki
2008-06-24 21:47 ` Len Brown
2008-06-24 21:47 ` Len Brown
  -- strict thread matches above, loose matches on Subject: below --
2008-06-24 21:03 Rafael J. Wysocki

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.