Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 11 Aug 2012 00:53:40 +0800
From:      =?UTF-8?B?5LmU5qWa?= <honestqiao@gmail.com>
To:        Zack Breckenridge <zbrdge@gmail.com>
Cc:        freebsd-acpi <freebsd-acpi@freebsd.org>
Subject:   Re: Resume failed after Suspend on Thinkpad x201i
Message-ID:  <CAMAY4Vi-5yis3RGscL2PsAWsgFFmW0_ZR9vuyDTRhSO9k7oAew@mail.gmail.com>
In-Reply-To: <CA%2BXA1umDN1RZJbQ_aATETyvKUKUE6zaQ-Hb0TfC2qgPR-PrzvA@mail.gmail.com>
References:  <201207021729413382845@gmail.com> <4FF2599B.6050409@gmail.com> <201207031411248300207@gmail.com> <1341437029.4017.5.camel@localhost> <CALBk6yLgUUvbZUhEhNgbqKOz8bc5eAM9anuP0ZSDR=qd6SstUw@mail.gmail.com> <CALBk6yK1fSg2ksVP4hmQz1pN-NVqXVGb3enjcE9t-rq0qXQQfA@mail.gmail.com> <2012072016090861869410@gmail.com> <CA%2BXA1um8xQmdXsP%2B0qJuqnWoPUD-EHnM9vGTUTifE_8nChh-zg@mail.gmail.com> <CAMAY4VjDwTLLG3y0G0Z9X4=-=-F1pgaN=7vwJxsaNgikr8YzcQ@mail.gmail.com> <CA%2BXA1umP9AyncDO-OA-q_ntDjcqRYT7hs6fV3MTvo==3M9Kd5w@mail.gmail.com> <2012080201072126960020@gmail.com> <CA%2BXA1umRifYErG4CYTfZ6AZEH6KpF7dLfbt9Up7bJfLOYEmvTg@mail.gmail.com> <CAMAY4VhY8baF1B=VY0A%2BqX=jRRYSOeLRSWfSjT6VOTtOUkKh7g@mail.gmail.com> <501DA226.8000707@gmail.com> <CAMAY4Vgn%2BvYWVPbm%2B2_xjaKiRUi_dq6=J_DRPgvHT2c9T=TTMw@mail.gmail.com> <CA%2BXA1umDN1RZJbQ_aATETyvKUKUE6zaQ-Hb0TfC2qgPR-PrzvA@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
2012/8/6 Zack Breckenridge <zbrdge@gmail.com>:
> At this point, after having simply read through the sources and done
> some research, it looks like remote debugging might not be necessary,
> or even very useful, in this case after all (though it would be nice
> to have for future debugging endeavors so I will look into your
> suggestions, thank you).
>
> So once again, on my hardware and probably Honest Qiao's as well, the
> call the vesa_bios_post() on resume really boils down to:
>
>    x86bios_call(&regs, X86BIOS_PHYSTOSEG(vesa_bios_offs + 3),
> X86BIOS_PHYSTOOFF(vesa_bios_offs + 3));
>
> I think this is used to "normalize" the graphics card state [see:
> http://fxr.watson.org/fxr/source/dev/fb/vesa.c#L1506], before using
> VBE (real mode) state restore code to restore the state of the
> graphics device. All it's doing is executing the POST code in the VESA
> option ROM, copied to 0xc0000 by the BIOS (and this is an old "legacy"
> boot method, apparently. UEFI BIOSes support this for "backward
> compatibility"). So there's real mode code at this location and the
> x86emu library is used to execute it, etc. This call is what is
> causing my screen to "blank". However, it is also what is causing my
> display to power on after a resume. If I comment out the call to
> vesa_bios_post() in vesa_load_state(), then set
> debug.acpi.suspend_bounce=3D1 and go S3, everything just works. The
> screen even flashes when the VESA state restore code is executed and I
> can use the VESA driver as usual - for example I can change the video
> mode with "vidcontrol MODE_280".
>
> But if I actually let the machine power down, on resume the display
> never powers back on. I was hoping I could use the VESA DPMS driver to
> power it back on and everything would just work (though this would
> still be a temporary hack).
>
> So I'm looking for a general way of powering on the display after
> resume that works for everyone. Obviously this code worked for the
> original developer(s) hardware and may work well for a set of hardware
> out there. One line of inquiry I'm following is how i915kms powers the
> device on after a resume - because it does and works just fine.
>
> Zack
>
> On Sun, Aug 5, 2012 at 12:14 AM, =E4=B9=94=E6=A5=9A <honestqiao@gmail.com=
> wrote:
>> 2012/8/5 matt <sendtomatt@gmail.com>:
>>> On 08/03/12 23:39, =E4=B9=94=E6=A5=9A wrote:
>>>>
>>>> 2012/8/3 Zack Breckenridge <zbrdge@gmail.com>:
>>>>>
>>>>> First of all, let me note that the Kernel config file I posted was fo=
r
>>>>> 10.0-CURRENT (a few weeks back now though).
>>>>>
>>>>> I've been looking into it, but still haven't developed a patch yet. I
>>>>> have verified that the screen blanking issue, on my hardware, occurs
>>>>> somewhere in the vm86 mode emulation code (which is how VESA is
>>>>> implemented on amd64), ultimately called by vesa_bios_post(), which i=
s
>>>>> called in turn by vesa_load_state() on resume [see:
>>>>> http://fxr.watson.org/fxr/source/dev/fb/vesa.c?im=3D3#L1497].
>>>>> vesa_bios_post() ultimately calls x86bios_call() [see:
>>>>> http://fxr.watson.org/fxr/source/compat/x86bios/x86bios.c?im=3D10#L58=
4]
>>>>> and emulates the real mode VESA "initialization" code with a call to
>>>>> x86emu_exec_call().
>>>>>
>>>>> I think in order to figure out whats going on from here I will have t=
o
>>>>> do some DDB scripting and capture the output. I don't believe remote
>>>>> debugging will be possible with my hardware (no serial, no
>>>>> firewire)... Anyway, I'm working on it.
>>>>>
>>>>> So to verify that we are having the same issue, you can take the
>>>>> following steps:
>>>>>
>>>>> 1) build a kernel with debugging and VESA enabled:
>>>>>      options VESA
>>>>>      options KDB
>>>>>      options DDB
>>>>> 2) disable X, boot into the console and issue the following commands:
>>>>>      # sysctl debug.acpi.suspend_bounce=3D1
>>>>>      # sysctl debug.kdb.enter=3D1
>>>>>      db> break x86emu_exec_call
>>>>>      db> c
>>>>>      # zzz
>>>>>      [you should hit the breakpoint]
>>>>>      db> bt
>>>>>      x86emu_exec_call() ...
>>>>>      vesa_bios_post() ...
>>>>>      ... rest of backtrace ...
>>>>>      db> c
>>>>> 3) after hitting that last c, your screen should go black. Then you
>>>>> should be able to type "reboot" and reboot cleanly
>>>>
>>>> My screen go black, but type "reboot" no effect. I can be sure to type
>>>> "reboot" and return.
>>>> LED status:
>>>> 1. Disk LED is light, and off at a moment.
>>>> 2. "Z" LED is light, Battary and power LED is light.
>>>> 3. Wifi LED is light.
>>>>
>>>>> I'm pretty sure that if you get the same results, we are having the
>>>>> same issue, though I can make no guarantees.
>>>>>
>>>>>
>>>> When I shutdown from KDE, or type shutdown -p now from console, my
>>>> laptor can't shutdown complete.
>>>> The battary LED is light alawys, others LED is off, and vents of the
>>>> laptor has been blowing hot air.
>>>> _______________________________________________
>>>> freebsd-acpi@freebsd.org mailing list
>>>> http://lists.freebsd.org/mailman/listinfo/freebsd-acpi
>>>> To unsubscribe, send any mail to "freebsd-acpi-unsubscribe@freebsd.org=
"
>>>>
>>> Honest Qiao: Regarding hot air, are you running powerd? Try "powerd -a
>>> adaptive -b adaptive" as root and wait 5 minutes to see if the hot air
>>> stops. If it works, try "man powerd" for installation instructions. Len=
ovo
>>> laptops are thermally designed for low CPU utilization. I can almost bo=
il
>>> water on mine during buildworld. Without powerd, they run at full therm=
al
>>> profile and act as excellent hand warmers.
>>>
>>> Zack: Regarding remote debugging, do you have an expresscard/cardbus/et=
c
>>> slot? Although hard to find you may be able to find a firewire card for
>>> that. Not sure if that would work or not...same goes for a USB->Serial
>>> console, my guess is that it wouldn't work?
>>>
>>> Matt
>>
>> Regarding powerd:
>> I know powerd.
>> I also set it autostart in rc.conf:
>> powerd_enable=3D"YES"
>> powerd_flags=3D"-a adaptive -b adaptive"
>> And I know that sysctl named dev.cpu.0.freq will change between 333 to
>> 2333 with system load.
>>
>> But, When I shutdown the system, the battery indicator finally closed,
>> the fan also continue to operate;
>> Because the fan is in operation, and blow hot air, indicating that the
>> CPU does not really stop working.
>>
>> So my system did not really close.If I do not press the power button
>> to force shut down the power supply, the battery LED is always on,
>> whether connected to AC power.
>> If I accidentally put it in a laptor bag, he will become hot.
>>
>>
>> Regarding extend slot:
>> Lenovo thinkpad x201 only has USB slot. It hasn't Serial slot.
>> I also think that a USB =3D> serial can not be with the remote debugging=
.

Thank you for your hard work.

I want to know, is there any way to  solve problems that can not be
shutdown the system.
As I said earlier, command "shutdown -p now" can shutdown the os, but
it can not turn off the battery and can not real turn off CPU and fan.
This Problem made =E2=80=8B=E2=80=8Bme a headache. Every time I have to hol=
d the power
button to force shutdown.
I'm afraid that when forgotten, will lead to serious consequences.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAMAY4Vi-5yis3RGscL2PsAWsgFFmW0_ZR9vuyDTRhSO9k7oAew>