Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 25 Nov 2008 20:37:49 +0100
From:      "Paul B. Mahol" <onemda@gmail.com>
To:        freebsd-acpi@freebsd.org
Subject:   Re: Resume on hp nx7300
Message-ID:  <3a142e750811251137se5091f8vc1ca13e5469413c3@mail.gmail.com>
In-Reply-To: <3a142e750811241658i39097018x3c6f49aa62805fa7@mail.gmail.com>
References:  <3a142e750811240748o1923fdc4xca1ae55f44bf664d@mail.gmail.com> <3a142e750811241658i39097018x3c6f49aa62805fa7@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On 11/25/08, Paul B. Mahol <onemda@gmail.com> wrote:
> On 11/24/08, Paul B. Mahol <onemda@gmail.com> wrote:
>> Hi,
>>
>> I managed somehow to succesfully resume laptop from suspend,
>> setting hw.acpi.osname="Windows 2001"
> It appears that it's not required at all.
>
>> but lcd output is off and can not be turned on.
>
> It will work if vesa is kldloaded _before_ suspend.
> Also kldload i915 (agp+drm+i915) _before_ suspend will do it.
>
>> sysctl hw.acpi.reset_video=1 does'nt work, instead to resume, machine
>> remain in unknown state, keyboard input doesnt work.
>>
>> Also if powerd + cpufreq combination is used, some time after resume
>> system will reboot itself:
>>
>> db:0:kdb.enter.unknown>  show pcpu
>> cpuid        = 0
>> curthread    = 0xc3ff0240: pid 667 "powerd"
>> curpcb       = 0xc3a72d90
>> fpcurthread  = none
>> idlethread   = 0xc3d2fd80: pid 10 "idle: cpu0"
>> APIC ID      = 0
>> currentldt   = 0x50
>> spin locks held:
>> db:0:kdb.enter.unknown>  bt
>> Tracing pid 667 tid 100036 td 0xc3ff0240
>> mtrash_ctor(c3e21000,400,0,1,0,...) at mtrash_ctor+0x60
>> uma_zalloc_arg(c108ba20,0,1,0,c3e2c400,...) at uma_zalloc_arg+0x137
>> malloc(36c,c06d1bc0,1,210,c049b0c3,...) at malloc+0xcb
>> cf_levels_method(c3e0ae80,c446f000,c3a72b4c,c3a72ba8,c446f3b4,...) at
>> cf_levels_method+0x23d
>> cpufreq_curr_sysctl(c3e414c0,c3e4f000,0,c3a72ba8,c3a72ba8,4,4,c3e414c0)
>> at cpufreq_curr_sysctl+0x169
>> sysctl_root(c3a72ba8,0,c069a48a,587,c3ff0240,...) at sysctl_root+0x138
>> userland_sysctl(c3ff0240,c3a72c14,4,0,0,...) at userland_sysctl+0x115
>> __sysctl(c3ff0240,c3a72cf8,18,c06a0480,c06ce1b0,...) at __sysctl+0xb7
>> syscall(c3a72d38) at syscall+0x261
>> Xint0x80_syscall() at Xint0x80_syscall+0x20
>> --- syscall (202, FreeBSD ELF32, __sysctl), eip = 0x28172533, esp =
>> 0xbfbfe84c, ebp = 0xbfbfe878 ---
>>
>>
>> acpi_ec0: wait timed out (response), forcing polled mode
>> <5>wakeup from sleeping state (slept 00:00:14)
>> acpi_tz0: _CRT value is absurd, ignored (256.0C)
>> agp0: <Intel 82945GM (945GM GMCH) SVGA controller> on vgapci0
>> agp0: detected 7932k stolen memory
>> agp0: aperture size is 256M
>> Memory modified after free 0xc3e21000(1020) val=0 @ 0xc3e21000
>>
>
> powerd + cpufreq combination just works, above panic
> probably happened because agp is loaded _after_ resume.
>
>>
>> Fatal trap 12: page fault while in kernel mode
>> cpuid = 0; apic id = 00
>> fault virtual address   = 0xffff0020
>> fault code              = supervisor read, page not present
>> instruction pointer     = 0x20:0xc062c350
>> stack pointer           = 0x28:0xc3a72a04
>> frame pointer           = 0x28:0xc3a72a24
>> code segment            = base 0x0, limit 0xfffff, type 0x1b
>>                         = DPL 0, pres 1, def32 1, gran 1
>> processor eflags        = interrupt enabled, resume, IOPL = 0
>> current process         = 667 (powerd)
>> exclusive sx cpufreq lock (cpufreq lock) r = 0 (0xc3e4f000) locked @
>> /usr/src/sys/kern/kern_cpu.c:528
>> exclusive sx sysctl lock (sysctl lock) r = 0 (0xc070f404) locked @
>> /usr/src/sys/kern/kern_sysctl.c:1415
>> exclusive sleep mutex Giant (Giant) r = 0 (0xc070edf0) locked @
>> /usr/src/sys/kern/kern_sysctl.c:1353
>> exclusive sx cpufreq lock (cpufreq lock) r = 0 (0xc3e4f000) locked @
>> /usr/src/sys/kern/kern_cpu.c:528
>> exclusive sx sysctl lock (sysctl lock) r = 0 (0xc070f404) locked @
>> /usr/src/sys/kern/kern_sysctl.c:1415
>> exclusive sleep mutex Giant (Giant) r = 0 (0xc070edf0) locked @
>> /usr/src/sys/kern/kern_sysctl.c:1353
>>
>>
>> Do I need to build/install UP kernel, or I can use SMP one with smp
>> disabled via loader.conf?
>
> kern.smp.disabled="1" just works, and disabling dual core from bios is
> not required.
>
> Restarting moused after resume is must.
> pccard and ndis powered broadcom card do not work after resume,
> even if right driver was never loaded during/after boot - before suspend.
>
> Main problem is that shutdown button (S5) doesnt work after resume.
> Is there any know reason why that could happen?

Problem with cardbus controller appears to be that it never got into D3 state,
because its hdr=0x02

I encountered also that setting hw.pci.do_power_nodriver=2 in /boot/loader.conf
have same nasty effect when using it with suspend/resume.

After resume all devices will be put back into D0 state, but if you kldunload
one driver, for example snd_hda and kldload it again, all devices that
do not have
driver attached (and with hdr=0x00) will be put into D3 again.

Same scenario happen when unloading driver, device will remain in D0 state
until some other driver is loaded/attached to correct device.

Current devices power state can be monitored with "pciconf -lvc".

I think this is more general problem.

-- 
Paul



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