regression suspend/resume on Lenovo T420
Manuel Stühn
freebsdnewbie at freenet.de
Mon May 15 18:51:19 UTC 2017
On Mon, 15 May 2017 12:56:47 +0300, Konstantin Belousov wrote
> On Sun, May 14, 2017 at 08:02:52PM +0000, Poul-Henning Kamp wrote:
>> --------
>> In message <20170514193006.GA1298 at brick>, Edward Tomasz =?utf-8?Q?Napiera=C5=82
>> a?= writes:
>>
>>> I've tried to verify that, and sadly it wasn't it for me. The commit
>>> that does break resume for me is r316767. The current -CURRENT with
>>> this one commit reverted ("svn merge -c -r316767 .") suspends and resumes
>>> correctly, at least in VT; I decided to take X out of the picture for
>>> now.
>>
>> I can confirm that this also makes resume work on my T430s running:
>>
>> FreeBSD 12.0-CURRENT #0 r318250M amd64
>
> Try this. If it works, I will write a proper patch.
>
> diff --git a/sys/amd64/amd64/cpu_switch.S b/sys/amd64/amd64/cpu_switch.S
> index 33437ad16e6..9c0cd05ebea 100644
> --- a/sys/amd64/amd64/cpu_switch.S
> +++ b/sys/amd64/amd64/cpu_switch.S
> @@ -369,6 +369,11 @@ END(savectx)
> * Resuming processor state from pcb.
> */
> ENTRY(resumectx)
> + movl $MSR_EFER,%ecx
> + rdmsr
> + orl $EFER_NXE,%eax
> + wrmsr
> +
> /* Switch to KPML4phys. */
> movq KPML4phys,%rax
> movq %rax,%cr3
>
This patch makes resume work on my machine also (at least in VT; X is
unfortunately still not working).
More information about the freebsd-current
mailing list