Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 30 Nov 2008 22:10:52 +0200
From:      Alexander Motin <mav@FreeBSD.org>
To:        Jung-uk Kim <jkim@freebsd.org>
Cc:        freebsd-acpi@freebsd.org, freebsd-amd64@freebsd.org, peter@freebsd.org
Subject:   Re: Semi-working patch for amd64 suspend/resume
Message-ID:  <4932F34C.1040804@FreeBSD.org>
In-Reply-To: <1224728582.00028075.1224715806@10.7.7.3>
References:  <1224616985.00027652.1224606603@10.7.7.3> <1224728582.00028075.1224715806@10.7.7.3>

next in thread | previous in thread | raw e-mail | index | archive | help
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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4932F34C.1040804>