Semi-working patch for amd64 suspend/resume
Alexander Motin
mav at FreeBSD.org
Sun Nov 30 12:10:57 PST 2008
Hi.
Alexander Motin wrote:
> Jung-uk Kim wrote:
>> I was working on suspend/resume support for amd64 and this is the
>> result. It works with a modified QEMU (QEMU does not support S3) but
>> real boxes that I have don't seem to like it (e.g., broken BIOSes).
>> If there is someone interested in finishing it off or giving it a try,
>> the patch is here:
>>
>> http://people.freebsd.org/~jkim/amd64_suspend.diff
>
> I have tried it on my Acer TM6292. S1/S2 are unsupported. On S3 system
> successfully got down, but on wakeup button, two seconds after power up,
> even without video initialization, it shut down, reset and then started
> usual boot. I have tried both original and updated BIOS, without any
> difference.
>
> Can I give you any other help?
I have spent a day investigating the problem. I was inserting empty
infinite loop into the different points of wakeup process trying to find
the place where system reboots. I just haven't found any other feedback
channel as video is not initialized and beeper is not working for some
reason.
As result, I have found, that if I am inserting:
qqq:
jmp qqq
lines before line 98 of acpi_switch.S:
movl $MSR_MTRRdefType, %ecx
movl WAKEUP_CTX(mtrr), %eax
wrmsr
system hangs, but if I insert it just after them - system reboots.
With just commenting this three lines I was able to get successful
suspend/resume with UP amd64 kernel!!!
Here is problems I still have now:
- SMP kernel resume is not working, system reboots while doing
acpi_wakeup_cpus();
- SATA controller does not resumes correctly, it dies for some reason,
reporting timeouts on any request;
- text mode video does not restores on resume, while Xorg graphic one
does. hw.acpi.reset_video=1 does not help, it just hanging resume process.
--
Alexander Motin
More information about the freebsd-amd64
mailing list