From owner-freebsd-arch@FreeBSD.ORG Mon Jun 22 16:47:34 2009 Return-Path: Delivered-To: arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 302AC106567A; Mon, 22 Jun 2009 16:47:34 +0000 (UTC) (envelope-from sam@freebsd.org) Received: from ebb.errno.com (ebb.errno.com [69.12.149.25]) by mx1.freebsd.org (Postfix) with ESMTP id E6F0B8FC17; Mon, 22 Jun 2009 16:47:33 +0000 (UTC) (envelope-from sam@freebsd.org) Received: from trouble.errno.com (trouble.errno.com [10.0.0.248]) (authenticated bits=0) by ebb.errno.com (8.13.6/8.12.6) with ESMTP id n5MGVRsR014625 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 22 Jun 2009 09:31:28 -0700 (PDT) (envelope-from sam@freebsd.org) Message-ID: <4A3FB1DF.80006@freebsd.org> Date: Mon, 22 Jun 2009 09:31:27 -0700 From: Sam Leffler Organization: FreeBSD Project User-Agent: Thunderbird 2.0.0.21 (X11/20090411) MIME-Version: 1.0 To: Jeff Roberson References: <20090609201127.GA50903@alchemy.franken.de> <4A2F1148.9090706@freebsd.org> <20090621140312.GC71667@alchemy.franken.de> In-Reply-To: Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit X-DCC-sonic.net-Metrics: ebb.errno.com; whitelist Cc: arch@freebsd.org, Peter Grehan , Marius Strobl Subject: Re: Dynamic pcpu, arm, mips, powerpc, sun, etc. help needed X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 22 Jun 2009 16:47:34 -0000 Jeff Roberson wrote: > On Sun, 21 Jun 2009, Marius Strobl wrote: > >> On Wed, Jun 17, 2009 at 12:55:52PM -1000, Jeff Roberson wrote: >>> >>> On Tue, 9 Jun 2009, Peter Grehan wrote: >>> >>>>> As for sparc64 allocating the storage for the dynamic area >>>>> from end probably isn't a good idea as the pmap code assumes >>>>> that the range from KERNBASE to end is covered by the pages >>>>> allocated by and locked into the TLB for the kernel by the >>>>> loader >>>> >>>> Ditto for ppc. It's possible to get the additional space from >>>> within or >>>> after return from pmap_bootstrap() (like thread0's kstack, or the >>>> msgbuf). >>> >>> http://people.freebsd.org/~jeff/dpcpu.diff >>> >>> I have updated this patch based on feedback relating to various >>> architectures md code. I tried to model most architectures after the >>> way >>> msgbuf memory was taken. I have no capacity to test anything other than >>> i386 and amd64. ARM is reported to work with one minor diff. Apparently >>> sparc64 worked with the earlier diff but this should be cleaner. If >>> anyone can report back on sparc64, mips, or powerpc, I'd appreciate it. >>> >> >> The earlier patch worked on sparc64 as long as the kernel >> happened to leave enough room in the last 4MB page allocated >> for it. >> The new version unfortunately doesn't compile on sparc64 as >> pmap_bootstrap_alloc() is static to its pmap.c (I think it >> should also stay that way). Also the memory allocated with >> it isn't safe to be used before we've taken over the trap >> table. A kernel built with the sparc64 bits replaced with >> the following patch boots fine: >> http://people.freebsd.org/~marius/sparc64_dpcpu.diff >> Do you have some simple test case for DPCPU which can be >> used to verify that it actually works? > > Thanks very much Marius. I have updated the patch at: > > http://people.freebsd.org/~jeff/dpcpu.diff > > I intend to commit this, minus the kern_synch.c diff tomorrow. There > was an id in the previous patch that caused each area to be accessed > as it was added but you'd have to have done a 'show pcpu' in ddb after > boot to access the area. I added a counter in kern_synch.c as a better > test. > > new in this diff: > > 1) I made each access cheaper by one instruction by making the > pc_dynamic pointer relative to the start of the percpu area. > > 2) I added two helper functions for sysctl ints and quads that can be > used for stats. See the temporary kern_synch.c diff for an example. > > 3) sparc64/sun4v by marius > > 4) ia64 fixes suggested by marcel. Does not compile on !SMP systems (s/dpcpu_ptr/dcpu_off/ in sysctl_dpcpu_quad). Sam