Suspend/Resume on AMD64

Miguel Lopes Santos Ramos miguel at anjos.strangled.net
Mon Sep 1 21:13:45 UTC 2008


This is pretty scary...
There's much more to be done than I thought.

Well, I'm editing code without paying attention to consequences.
It can't hurt anyone until it runs...

I'm starting with the easyest part: adding the extra registers (r8-r15, cool!, I
wish I had these back in my days of assembly programming).

I am also taking a look at amd64/amd64/mpboot.S, which contains protected mode
and 64-bit mode initialization, needed for wakeup.

It is too early to need help.
I'm still learning about AMD64 and refreshing my memory of control registers.

I will contact you again in a week or so, if it's ok.

Miguel

> From takawata at init-main.com  Sat Aug 30 20:10:23 2008
>
> In message <200808301751.m7UHprcc023311 at satan.anjos.strangled.net>, Miguel Lope
> s Santos Ramos wrote:
> >
> >Hi,
> >
> >I'm running amd64 on my laptop since early 2005.
> >Had a bunch of problems, ehci, radeon, etc, but most were fixed by someone sin
> >ce then.
> >One thing I still miss though is ACPI suspend/resume.
> >Browsing through dev/acpica I found out that this feature set is simply disabl
> >ed outside i386
> >(several #ifndef __i386__) and figured that maybe that's just because no one a
> >ppeared to test it.
>
> The code is in i386/acpica/acpi_wakeup.c, i386/acpica/acpi_wakecode.S
>
>
> >Well, I hereby volunteer to test this.
> >I have already removed the ifndefs and achieved a machine hang when tried to s
> >uspend.
> >
> >I have some experience with 80386 initialization (almost obsolete),
> >I am a capable programmer (able to keep the indentation of an existing source 
> >file),
> >and may be able to develop some new code if someone points me to the right
> >documents at Intel or AMD.
> >I am partially available on weekends.
> >
> >Will someone involved with suspend/resume on i386 help me on this?
>
> You called me? :-)
>
> >Would it be necessary to move to -CURRENT?
> >Where should I start?
>
> Copy the code to amd64/acpica/ then try to run as it is.
> In amd64, you have to preserve many registers than i386, so
> the code should be more ABI aware.
> http://2008.asiabsdcon.org/papers/P9A-paper.pdf
>
> To debug lowest part of resume code, you may want to use 
> BEEP debug. 
>
> I wrote incomplete SMP suspend/resume code 3 months ago.
> http://lists.freebsd.org/pipermail/freebsd-acpi/2008-May/004879.html
>
> Indeed, I reserve 10GB partition to my primary laptop 
> to develop amd64 suspend/resume.But I don't even install it yet.
> So if you implement it, I'm willing to test it :-P.


More information about the freebsd-acpi mailing list