Date: Sun, 09 Sep 2007 14:16:23 -0700 From: Nate Lawson <nate@root.org> To: Mikael Ikivesi <mikael.ikivesi@pp.inet.fi> Cc: freebsd-acpi@freebsd.org Subject: Re: PATCH: ecng for 6.x and 7.x Message-ID: <46E462A7.4080802@root.org> In-Reply-To: <200709081054.14073.mikael.ikivesi@pp.inet.fi> References: <46E0777A.8070901@root.org> <200709081054.14073.mikael.ikivesi@pp.inet.fi>
next in thread | previous in thread | raw e-mail | index | archive | help
[-- Attachment #1 --]
Mikael Ikivesi wrote:
> Note still: If I try to suspend machine I get kernel panic. I dont know if it
> was you patch or some other update, but before I got only messages and bounce
> back to system without crashing. Because of the updates I cannot now access
> the messages but if I remember correctly they were something about:
> device physically ejected? and they had something to do with cardbus if I
> remember correctly...
> ...sorry for being so vague!
>
>
> BUT about that panic I can be more precise :)
>
>
> acpi_button0: sleep button pressed
> Kernel page fault with the following non-sleepable locks held:
> exclusive sleep mutex ACPI global lock r = 0 (0xffffffff808ac4a0) locked
> @ /usr/src/sys/dev/acpica/acpi.c:2222
> KDB: stack backtrace:
> db_trace_self_wrapper() at db_trace_self_wrapper+0x2a
> witness_warn() at witness_warn+0x248
> trap() at trap+0x25e
> calltrap() at calltrap+0x8
> --- trap 0xc, rip = 0xffffffff801d9cf4, rsp = 0xffffffff9ed4aa00, rbp =
> 0xffffffff9ed4aa30 ---
> acpi_AckSleepState() at acpi_AckSleepState+0x34
> devfs_ioctl_f() at devfs_ioctl_f+0x6d
> kern_ioctl() at kern_ioctl+0xa3
> ioctl() at ioctl+0xf9
> syscall() at syscall+0x1ce
> Xfast_syscall() at Xfast_syscall+0xab
> --- syscall (54, FreeBSD ELF64, ioctl), rip = 0x8007187ec, rsp =
> 0x7fffffffecd8, rbp = 0x7fffffffee50 ---
>
>
> Fatal trap 12: page fault while in kernel mode
> cpuid = 0; apic id = 00
> fault virtual address = 0x18
> fault code = supervisor read data, page not present
> instruction pointer = 0x8:0xffffffff801d9cf4
> stack pointer = 0x10:0xffffffff9ed4aa00
> frame pointer = 0x10:0xffffffff9ed4aa30
> code segment = base 0x0, limit 0xfffff, type 0x1b
> = DPL 0, pres 1, long 1, def32 0, gran 1
> processor eflags = interrupt enabled, resume, IOPL = 0
> current process = 748 (acpiconf)
Try the attached patch. It will reject suspend requests while still
allowing power-off. This will have to be this way until amd64
suspend/resume is implemented.
-Nate
[-- Attachment #2 --]
Index: sys/dev/acpica/acpi.c
===================================================================
RCS file: /home/ncvs/src/sys/dev/acpica/acpi.c,v
retrieving revision 1.241
diff -u -r1.241 acpi.c
--- sys/dev/acpica/acpi.c 30 Jun 2007 17:27:31 -0000 1.241
+++ sys/dev/acpica/acpi.c 9 Sep 2007 21:13:04 -0000
@@ -2173,6 +2173,11 @@
return (ENXIO);
}
+#if !defined(__i386__)
+ /* This platform does not support acpi suspend/resume. */
+ return (EOPNOTSUPP);
+#endif
+
/* If a suspend request is already in progress, just return. */
ACPI_LOCK(acpi);
if (sc->acpi_next_sstate != 0) {
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?46E462A7.4080802>
