Date: Thu, 07 Jun 2012 04:03:42 +0900 (JST) From: Mitsuru IWASAKI <iwasaki@jp.FreeBSD.org> To: avg@FreeBSD.org Cc: attilio@FreeBSD.org, freebsd-acpi@FreeBSD.org, freebsd-arch@FreeBSD.org Subject: Re: cpu stopping Message-ID: <20120607.040342.73368798.iwasaki@jp.FreeBSD.org> In-Reply-To: <4FCBBEDD.5000604@FreeBSD.org> References: <4FCB0FE5.4050607@FreeBSD.org> <20120603.234243.28389486.iwasaki@jp.FreeBSD.org> <4FCBBEDD.5000604@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Hi, I've created the patches of experimental implementation based on discussion so far. http://people.freebsd.org/~iwasaki/acpi/cpustop_hook-20120606.diff In acpi_wakeup.c, cpususpend_handler() and susppcbs are replaced with cpustop_handler() and stoppcbs. This is for RELENG_9 and only for i386 but I think it's enough for the start. From: Andriy Gapon <avg@FreeBSD.org> Subject: Re: cpu stopping Date: Sun, 03 Jun 2012 22:45:33 +0300 Message-ID: <4FCBBEDD.5000604@FreeBSD.org> > > Never mind :) What I'm trying to do in the patches is just to unify > > amd64/i386 independent part (acpi_wakeup.c) for the code maintenance, > > so please let's commit it first, then start re-design the > > cpususpend_handler(). > > In no way I am trying to delay your work :) > Just shared my view on the design of cpu stopping code. I got it :) > >> My view of how this should work is: > >> - there can be only one master CPU that controls all other (slave) CPUs > >> - the master sets entry and exit hooks > > > > Entry hook for suspending might be > > ---- > > ctx_fpusave(suspfpusave[cpu]); > > wbinvd(); > > CPU_SET_ATOMIC(cpu, &stopped_cpus); > > ---- > > > > and for stopping is > > ---- > > /* Indicate that we are stopped */ > > CPU_SET_ATOMIC(cpu, &stopped_cpus); > > ---- > > > > Correct? > > Yes. The only nit is that CPU_SET_ATOMIC(cpu, &stopped_cpus) could be part of > the wait loop prologue. No need to duplicate it in each hook. OK, I did so. I hope the patch is not far from your idea. Thanks!
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120607.040342.73368798.iwasaki>