From owner-freebsd-acpi@FreeBSD.ORG Wed Apr 9 13:02:13 2008 Return-Path: Delivered-To: freebsd-acpi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 022441065676 for ; Wed, 9 Apr 2008 13:02:13 +0000 (UTC) (envelope-from iwasaki@jp.FreeBSD.org) Received: from locore.org (ns01.locore.org [218.45.21.227]) by mx1.freebsd.org (Postfix) with ESMTP id B020D8FC1B for ; Wed, 9 Apr 2008 13:02:12 +0000 (UTC) (envelope-from iwasaki@jp.FreeBSD.org) Received: from localhost (celeron.v4.locore.org [192.168.0.10]) by locore.org (8.14.2/8.14.2/iwasaki) with ESMTP/inet id m39D28g4020415; Wed, 9 Apr 2008 22:02:08 +0900 (JST) (envelope-from iwasaki@jp.FreeBSD.org) Date: Wed, 09 Apr 2008 22:02:08 +0900 (JST) Message-Id: <20080409.220208.39498804.iwasaki@jp.FreeBSD.org> To: takawata@init-main.com From: Mitsuru IWASAKI In-Reply-To: <200804071539.m37FdLcT026089@sana.init-main.com> References: <200804071539.m37FdLcT026089@sana.init-main.com> X-Mailer: Mew version 3.3 on Emacs 20.7 / Mule 4.0 (HANANOEN) Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Cc: freebsd-acpi@freebsd.org Subject: Re: some problems in suspend/resume on ThinkPad X61 X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 Apr 2008 13:02:13 -0000 Hi, From: Takanori Watanabe Subject: some problems in suspend/resume on ThinkPad X61 Date: Tue, 08 Apr 2008 00:39:21 +0900 Message-ID: <200804071539.m37FdLcT026089@sana.init-main.com> > I bought a new laptop;ThinkPad X61 and I'm trying to hack > suspend/resume. Cool! You are trying to support suspend/resume on the dual core systems, right? It seems that all processors, but only one, need to be disabled (just like using UP kernel) before the sleeping, then enabled again on resume. I've just started investigating on the FreeBSD MP initialization code. I hope the following summary helps something. Good luck! BSP | AP ----------------------------------------+------------------------------------ cpu_mp_start() start_all_aps() install_ap_tramp() start_ap() lapic_ipi_raw() bootMP() MPentry() mp_begin() init_secondary() lapic_disable() [wait for 5 sec.] <------------------- mp_naps++; set_interrupt_apic_ids() while (!aps_ready) intr_add_cpu() ia32_pause(); mp_topology() release_aps() atomic_store_rel_int(&aps_ready, 1); --> lapic_setup(1) while (smp_started == 0) <-------------- atomic_store_rel_int(&smp_started, 1); ia32_pause(); sched_throw()