Re: [linux-pm] Tyan S2923-E suspend to ram fails to resume

Previous thread: [RFC/PATCH] SLUB: dynamic per-cache MIN_PARTIAL by Pekka J Enberg on Monday, August 4, 2008 - 2:39 pm. (4 messages)

Next thread: none
From: Simon Arlott
Date: Monday, August 4, 2008 - 2:56 pm

My system (Tyan S2923-E, dmesg attached) suspends ok in all pm_test modes, but it 
won't resume with pm_test "none".

[    6.423515] mem full: hash matches

When I press the power button, the port 80 display shows:
 FF D0 23 01 D0 ... DE
(and again each time I press it)

If I force it to turn off, then on again:
 FF D0 23 01 D0 ... FF D0 23 01 D0 ... (D2?) D3 00 01 D5 D6 <normal boot>

Any ideas? (onboard SAS is disabled, watchdog is disabled, everything else is 
enabled, PCI-E graphics card)

-- 
Simon Arlott
From: Pavel Machek
Date: Friday, August 8, 2008 - 12:14 am

Try verifying if it reaches assembly code under realmode/ ...


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

From: Simon Arlott
Date: Friday, August 8, 2008 - 4:20 am

I was looking at the acpi code last night but I couldn't figure
out where the last code before the actual suspend is or where it
starts executing again.

I'm also not sure how to do it, could you provide a quick patch
that immediately writes something to port 80 before doing
anything else?


-- 
Simon Arlott
--

From: Simon Arlott
Date: Saturday, August 9, 2008 - 7:42 am

I've tried acpi_sleep=s3_beep, and this:

diff --git a/arch/x86/kernel/acpi/realmode/wakeup.S b/arch/x86/kernel/acpi/realmode/wakeup.S
index 3355973..50e50df 100644
--- a/arch/x86/kernel/acpi/realmode/wakeup.S
+++ b/arch/x86/kernel/acpi/realmode/wakeup.S
@@ -37,6 +37,11 @@ signature:	.long	0x51ee1111
	.code16
wakeup_code:
_start:
+	movb $0xC1, %al
+	outb %al, $0x80
+	cli
+	hlt
+
	cli
	cld


Which doesn't work either.

-- 
Simon Arlott

--

From: Pavel Machek
Date: Tuesday, August 12, 2008 - 3:31 am

Yep, that should work. When it does not, it means BIOS is not
returning to our real mode code :-(. You may want to try disabling
APIC and similar stuff, in hope of working around BIOS bug you are
hitting, but ...
									Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
--

From: Simon Arlott
Date: Saturday, August 23, 2008 - 9:47 am

I've tried the simplest possible 32-bit UP kernel I could come up 
with (.config attached) and it still doesn't work.

(I modified post_init() to call pm_suspend(PM_SUSPEND_MEM).)

Disassembly of the BIOS shows that DE is indeed part of 0xDEAD, 
but I haven't been able to tell what it's doing between D0 and 
there... not all of the port 80 codes that are displayed are 
easily visible.

I've tried disabling all the CPU options in the BIOS, e.g. microcode 
update, VM, NMI but it doesn't help. I'm wondering if D0 is the right 
start point for the system - there's a DC code for S3 resume:


-- 
Simon Arlott

From: Pavel Machek
Date: Tuesday, September 2, 2008 - 1:07 am

...you did a lot of work, but these issues are hard.

Do Windows suspend/resume on same hardware? BSD?
									Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
--

From: Simon Arlott
Date: Tuesday, September 2, 2008 - 4:20 am

Tyan is going to look into it based them being able to use a common Linux
system (Knoppix 5.1.1) that fails to resume for me.

I've tried Windows XP 64-bit SP2C, that will only go to S1.
Vista Ultimate 64-bit will only go to S1 too.

I've yet to try a BSD, but it'll be a couple of weeks before I can do
that.

-- 
Simon Arlott
--

Previous thread: [RFC/PATCH] SLUB: dynamic per-cache MIN_PARTIAL by Pekka J Enberg on Monday, August 4, 2008 - 2:39 pm. (4 messages)

Next thread: none