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
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 --
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 --
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 --
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 --
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
...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 --
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 --
