Suspend and ACPI call
In order to get more information, I used two workstation for analysis. One is the Ultra 20, the other is
IBM ThinkCenter A50P. The Solaris trial version of X86 PM can work well on Ultral 20, ie, the system can do suspend and resume properly.
Let's take a look on How ultra 20 works.
1)Setup the kmdb through serial line
2)active kmdb and set the breakpoint at AcpiEnterSleepState
3)Run command "uadmin 3 20"
the system stop at following stack:
acpica`AcpiEnterSleepState(ffffff00024a4b78)
acpippm`appm_ioctl+0x8f(de00000000, 4101, ffffff00024a4b78, 80200002,fffffffec2f0de18, 0)
cdev_ioctl+0x48(de00000000, 4101, ffffff00024a4b78, 80200002, fffffffec2f0de18, 0)
ldi_ioctl+0xac(fffffffec41e5f60, 4101, ffffff00024a4b78, 80000002, fffffffec2f0de18, 0)
ppm`ppm_manage_sx+0x88(ffffff00024a4b78, 1)
ppm`ppm_ctlops+0x121(fffffffec27eb458, fffffffec27fec78, 15, ffffff00024a4c88, ffffff00024a4cc4)
pm_ctlops+0x70(fffffffec27eb458, fffffffec27fec78, 15, ffffff00024a4c88, ffffff00024a4cc4)
cpr`i_cpr_power_down+0x2ff(3)
cpr`cpr_main+0x1aa(3)
cpr`cpr+0xdb(14)
stubs_common_code+0x51()
kadmin+0x179(3, 14, 0, fffffffed99f2d60)
uadmin+0xb1(3, 14, 0)
4) However, when I set the defering breakpoint, ie, "::bp cpr`cpr_main" or "::bp AcpiEnterSleepState" The system can stop.
On the other hand, when I did the same thing on the IBM A50P, It can only stop at "::bp cpr`cpr_main".
建议在你的“首选项页面中”,选择使用Rich Text Editor (Xinha)来进行编辑,enter会段<p></p>,shift+enter会插入</ br>。
Posted by Yong Sun on October 17, 2007 at 11:00 AM CST #