From owner-freebsd-sparc64@FreeBSD.ORG Sun Apr 29 15:36:43 2012 Return-Path: Delivered-To: sparc64@FreeBSD.ORG Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 7D66F1065676 for ; Sun, 29 Apr 2012 15:36:43 +0000 (UTC) (envelope-from masud.ahmed@in.bureauveritas.com) Received: from mail.prothom-alojobs.com (mail.prothom-alojobs.com [203.76.159.21]) by mx1.freebsd.org (Postfix) with ESMTP id 2F74F8FC08 for ; Sun, 29 Apr 2012 15:36:36 +0000 (UTC) Received: from PAJMES01 (unknown [192.168.110.19]) by mail.prothom-alojobs.com (Postfix) with SMTP id 65369A25294 for ; Sun, 29 Apr 2012 21:26:52 +0600 (BDT) From: Bureau Veritas To: Message-Id: <20120429212145.96346903@in.bureauveritas.com> Date: Sun, 29 Apr 2012 21:21:45 +0600 MIME-Version: 1.0 Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: 8bit X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Cc: Subject: Internal Auditor Course on Occupational Health & Safety Assessment Series (OHSAS 18001:2007) X-BeenThere: freebsd-sparc64@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to the Sparc List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 Apr 2012 15:36:43 -0000 From owner-freebsd-sparc64@FreeBSD.ORG Sun Apr 29 16:00:31 2012 Return-Path: Delivered-To: freebsd-sparc64@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4017B1065670 for ; Sun, 29 Apr 2012 16:00:31 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 2ADAD8FC16 for ; Sun, 29 Apr 2012 16:00:31 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.5/8.14.5) with ESMTP id q3TG0VTJ059620 for ; Sun, 29 Apr 2012 16:00:31 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.5/8.14.5/Submit) id q3TG0VJ9059619; Sun, 29 Apr 2012 16:00:31 GMT (envelope-from gnats) Date: Sun, 29 Apr 2012 16:00:31 GMT Message-Id: <201204291600.q3TG0VJ9059619@freefall.freebsd.org> To: freebsd-sparc64@FreeBSD.org From: dfilter@FreeBSD.ORG (dfilter service) Cc: Subject: Re: sparc64/165025: commit references a PR X-BeenThere: freebsd-sparc64@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: dfilter service List-Id: Porting FreeBSD to the Sparc List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 Apr 2012 16:00:31 -0000 The following reply was made to PR sparc64/165025; it has been noted by GNATS. From: dfilter@FreeBSD.ORG (dfilter service) To: bug-followup@FreeBSD.org Cc: Subject: Re: sparc64/165025: commit references a PR Date: Sun, 29 Apr 2012 15:54:50 +0000 (UTC) Author: marius Date: Sun Apr 29 15:54:40 2012 New Revision: 234789 URL: http://svn.freebsd.org/changeset/base/234789 Log: Add multiple inclusion protection. PR: 165025 Submitted by: Gavin Mu MFC after: 1 week Modified: head/sys/boot/common/bootstrap.h Modified: head/sys/boot/common/bootstrap.h ============================================================================== --- head/sys/boot/common/bootstrap.h Sun Apr 29 13:37:32 2012 (r234788) +++ head/sys/boot/common/bootstrap.h Sun Apr 29 15:54:40 2012 (r234789) @@ -26,6 +26,9 @@ * $FreeBSD$ */ +#ifndef _BOOTSTRAP_H_ +#define _BOOTSTRAP_H_ + #include #include #include @@ -323,3 +326,5 @@ void delay(int delay); void dev_cleanup(void); time_t time(time_t *tloc); + +#endif /* !_BOOTSTRAP_H_ */ _______________________________________________ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org" From owner-freebsd-sparc64@FreeBSD.ORG Sun Apr 29 16:30:15 2012 Return-Path: Delivered-To: freebsd-sparc64@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 4DACE1065687 for ; Sun, 29 Apr 2012 16:30:15 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 3813C8FC16 for ; Sun, 29 Apr 2012 16:30:15 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.5/8.14.5) with ESMTP id q3TGUFIq086679 for ; Sun, 29 Apr 2012 16:30:15 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.5/8.14.5/Submit) id q3TGUFaP086676; Sun, 29 Apr 2012 16:30:15 GMT (envelope-from gnats) Date: Sun, 29 Apr 2012 16:30:15 GMT Message-Id: <201204291630.q3TGUFaP086676@freefall.freebsd.org> To: freebsd-sparc64@FreeBSD.org From: Marius Strobl Cc: Subject: Re: sparc64/165025: [PATCH] zfsboot support for sparc64 X-BeenThere: freebsd-sparc64@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Marius Strobl List-Id: Porting FreeBSD to the Sparc List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 Apr 2012 16:30:15 -0000 The following reply was made to PR sparc64/165025; it has been noted by GNATS. From: Marius Strobl To: bug-followup@FreeBSD.org, gavin.mu@gmail.com Cc: Subject: Re: sparc64/165025: [PATCH] zfsboot support for sparc64 Date: Sun, 29 Apr 2012 18:10:19 +0200 On Sun, Apr 22, 2012 at 08:40:13PM +0000, Marius Strobl wrote: > The following reply was made to PR sparc64/165025; it has been noted by GNATS. > > From: Marius Strobl > To: Gavin Mu > Cc: bug-followup@freebsd.org, Kurt Lidl > Subject: Re: sparc64/165025: [PATCH] zfsboot support for sparc64 > Date: Sun, 22 Apr 2012 22:32:11 +0200 > > On Thu, Apr 12, 2012 at 10:27:31PM +0800, Gavin Mu wrote: > > On Mon, Mar 5, 2012 at 2:06 AM, Marius Strobl wrote: > > > Typically, opening and closing devices via OFW causes quite a delay, > > > the exact impact depends on the firmware version and the devices > > > involved though. Therefore, it would be advisable to keep using the > > > current approach of caching opened packages. In what way does this > > > fail with ZFS? > > The error message on Fire V100 is: Fast Data Access MMU Miss > > > > > Basically, IEEE 1275 just says that support for > > > opening a package more than once depends on the particular package > > > but nothing about concurrently opening different packages. Not > > > being able to concurrently open different packages also doesn't > > > make all that much of a sense as opening one package also means > > > to subsequentially open all the parents up to the root if not > > > already opened and I think to actually have tested opening disks > > > concurrently when writing the current code. Could this fail due > > > to one device actually being opened twice, once via the full path > > > and once via its alias? > > There is no such scene though the code lacks the checking for full > > path/devalias. > > I have tried many times to find the root cause but I think it is > > difficult without open firmware knowledge. > > currently I found that following scenes will cause this issue with my test code: > > 1. do OF_seek(ihandle_t a) just after OF_close(ihandle_t b). in real > > world, OF_seek(a) is the step to read ZFS data just after OF_close() > > another disk during zfs init/probe. > > 2. do OF_seek(ihandle_t a) just after OF_open("available controller > > without disk"). For example there is no disk3 on my machine though > > there is disk controller. OF_open("disk3:") will report: > > Can't read disk label. > > Can't open disk label package > > > > in ofw_disk.c, OF_close() has been commented out for powerpc > > architecture, and can not find detail reason from code history, so I > > am thinking if we need also disable OF_close() for sparc64. > > Hrm, some OFW implementations might have reference counting bugs, > causing OF_close() to also close some parent(s) when these in fact > are still used by another opened child device. Have you tried how > it works when just commenting out the OF_close() in ofwd_close() but > leaving the rest of ofw_disk.c as is? If that works, we probably > can add a cleanup handler which closes all opened disk devices > before leaving the loader, still taking advantage of caching opened > disks. > With the machines I have at hand, I can't reproduce this problem, i.e. ofw_disk.c as is works just fine for booting from a mirror. This suggests that what you are seeing actually is a bug in the specific firmware implementation rather than a general limitation imposed by OFW. Could you please give the following patch a try? It implements what I've described above, i.e. combines both caching opened devices and properly closing all opened disks when leaving the loader. http://people.freebsd.org/~marius/ofw_disk_close_on_cleanup.diff Marius From owner-freebsd-sparc64@FreeBSD.ORG Mon Apr 30 11:07:42 2012 Return-Path: Delivered-To: freebsd-sparc64@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 8C73610656D8 for ; Mon, 30 Apr 2012 11:07:42 +0000 (UTC) (envelope-from owner-bugmaster@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 76C898FC18 for ; Mon, 30 Apr 2012 11:07:42 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.5/8.14.5) with ESMTP id q3UB7g0w054030 for ; Mon, 30 Apr 2012 11:07:42 GMT (envelope-from owner-bugmaster@FreeBSD.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.5/8.14.5/Submit) id q3UB7fa9054028 for freebsd-sparc64@FreeBSD.org; Mon, 30 Apr 2012 11:07:41 GMT (envelope-from owner-bugmaster@FreeBSD.org) Date: Mon, 30 Apr 2012 11:07:41 GMT Message-Id: <201204301107.q3UB7fa9054028@freefall.freebsd.org> X-Authentication-Warning: freefall.freebsd.org: gnats set sender to owner-bugmaster@FreeBSD.org using -f From: FreeBSD bugmaster To: freebsd-sparc64@FreeBSD.org Cc: Subject: Current problem reports assigned to freebsd-sparc64@FreeBSD.org X-BeenThere: freebsd-sparc64@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to the Sparc List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Apr 2012 11:07:42 -0000 Note: to view an individual PR, use: http://www.freebsd.org/cgi/query-pr.cgi?pr=(number). The following is a listing of current problems submitted by FreeBSD users. These represent problem reports covering all versions including experimental development code and obsolete releases. S Tracker Resp. Description -------------------------------------------------------------------------------- o sparc/165025 sparc64 [PATCH] zfsboot support for sparc64 o sparc/164227 sparc64 [boot] Can't boot 9.0-RELEASE/sparc64 on Blade 1500 o sparc/164226 sparc64 [cd] Data corruption on 9.0-RELEASE when reading from o sparc/162513 sparc64 mpt(4), mptutil(8) reports variable, erroneous drive i o sparc/141918 sparc64 [ehci] ehci_interrupt: unrecoverable error, controller s sparc/139134 sparc64 kernel output corruption s sparc/107087 sparc64 [hang] system is hung during boot from CD o sparc/105048 sparc64 [trm] trm(4) panics on sparc64 o sparc/104428 sparc64 [nullfs] nullfs panics on E4500 (but not E420) o sparc/71729 sparc64 printf in kernel thread causes panic on SPARC 10 problems total. From owner-freebsd-sparc64@FreeBSD.ORG Mon Apr 30 13:30:10 2012 Return-Path: Delivered-To: freebsd-sparc64@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5D694106566B for ; Mon, 30 Apr 2012 13:30:10 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 3CCD38FC0A for ; Mon, 30 Apr 2012 13:30:10 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.5/8.14.5) with ESMTP id q3UDUAkh093138 for ; Mon, 30 Apr 2012 13:30:10 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.5/8.14.5/Submit) id q3UDU95f093133; Mon, 30 Apr 2012 13:30:09 GMT (envelope-from gnats) Date: Mon, 30 Apr 2012 13:30:09 GMT Message-Id: <201204301330.q3UDU95f093133@freefall.freebsd.org> To: freebsd-sparc64@FreeBSD.org From: Gavin Mu Cc: Subject: Re: sparc64/165025: [PATCH] zfsboot support for sparc64 X-BeenThere: freebsd-sparc64@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Gavin Mu List-Id: Porting FreeBSD to the Sparc List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Apr 2012 13:30:10 -0000 The following reply was made to PR sparc64/165025; it has been noted by GNATS. From: Gavin Mu To: Marius Strobl Cc: bug-followup@freebsd.org Subject: Re: sparc64/165025: [PATCH] zfsboot support for sparc64 Date: Mon, 30 Apr 2012 21:24:46 +0800 On Mon, Apr 30, 2012 at 12:10 AM, Marius Strobl wrote: > On Sun, Apr 22, 2012 at 08:40:13PM +0000, Marius Strobl wrote: >> The following reply was made to PR sparc64/165025; it has been noted by = GNATS. >> >> From: Marius Strobl >> To: Gavin Mu >> Cc: bug-followup@freebsd.org, Kurt Lidl >> Subject: Re: sparc64/165025: [PATCH] zfsboot support for sparc64 >> Date: Sun, 22 Apr 2012 22:32:11 +0200 >> >> =A0On Thu, Apr 12, 2012 at 10:27:31PM +0800, Gavin Mu wrote: >> =A0> On Mon, Mar 5, 2012 at 2:06 AM, Marius Strobl wrote: >> =A0> > Typically, opening and closing devices via OFW causes quite a del= ay, >> =A0> > the exact impact depends on the firmware version and the devices >> =A0> > involved though. Therefore, it would be advisable to keep using t= he >> =A0> > current approach of caching opened packages. In what way does thi= s >> =A0> > fail with ZFS? >> =A0> The error message on Fire V100 is: Fast Data Access MMU Miss >> =A0> >> =A0> > Basically, IEEE 1275 just says that support for >> =A0> > opening a package more than once depends on the particular packag= e >> =A0> > but nothing about concurrently opening different packages. Not >> =A0> > being able to concurrently open different packages also doesn't >> =A0> > make all that much of a sense as opening one package also means >> =A0> > to subsequentially open all the parents up to the root if not >> =A0> > already opened and I think to actually have tested opening disks >> =A0> > concurrently when writing the current code. Could this fail due >> =A0> > to one device actually being opened twice, once via the full path >> =A0> > and once via its alias? >> =A0> There is no such scene though the code lacks the checking for full >> =A0> path/devalias. >> =A0> I have tried many times to find the root cause but I think it is >> =A0> difficult without open firmware knowledge. >> =A0> currently I found that following scenes will cause this issue with = my test code: >> =A0> 1. do OF_seek(ihandle_t a) just after OF_close(ihandle_t b). in rea= l >> =A0> world, OF_seek(a) is the step to read ZFS data just after OF_close(= ) >> =A0> another disk during zfs init/probe. >> =A0> 2. do OF_seek(ihandle_t a) just after OF_open("available controller >> =A0> without disk"). For example there is no disk3 on my machine though >> =A0> there is disk controller. OF_open("disk3:") will report: >> =A0> Can't read disk label. >> =A0> Can't open disk label package >> =A0> >> =A0> in ofw_disk.c, OF_close() has been commented out for powerpc >> =A0> architecture, and can not find detail reason from code history, so = I >> =A0> am thinking if we need also disable OF_close() for sparc64. >> >> =A0Hrm, some OFW implementations might have reference counting bugs, >> =A0causing OF_close() to also close some parent(s) when these in fact >> =A0are still used by another opened child device. Have you tried how >> =A0it works when just commenting out the OF_close() in ofwd_close() but >> =A0leaving the rest of ofw_disk.c as is? If that works, we probably >> =A0can add a cleanup handler which closes all opened disk devices >> =A0before leaving the loader, still taking advantage of caching opened >> =A0disks. >> > > With the machines I have at hand, I can't reproduce this problem, > i.e. ofw_disk.c as is works just fine for booting from a mirror. > This suggests that what you are seeing actually is a bug in the > specific firmware implementation rather than a general limitation > imposed by OFW. Could you please give the following patch a try? > It implements what I've described above, i.e. combines both caching > opened devices and properly closing all opened disks when leaving > the loader. > http://people.freebsd.org/~marius/ofw_disk_close_on_cleanup.diff > > Marius > I am sorry that I have lost the access to the sparc machines since I am moving to a new job. I checked your modification and there should be an issue of opening a slice twice, one by the real dev path and the other by devalias. ofw_disk can not deal with such scene. My testing machine is Sun Fire V100, a very old machine, and with the latest firmware (surely it is also very old though). I am not sure if we can still find same machine to do the testing. or can we call for some testers on several different hardware models before committing the code? Regards, Gavin Mu From owner-freebsd-sparc64@FreeBSD.ORG Tue May 1 16:40:12 2012 Return-Path: Delivered-To: freebsd-sparc64@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 724AD106566B for ; Tue, 1 May 2012 16:40:12 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 5D3708FC15 for ; Tue, 1 May 2012 16:40:12 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.5/8.14.5) with ESMTP id q41GeC2J051070 for ; Tue, 1 May 2012 16:40:12 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.5/8.14.5/Submit) id q41GeC5t051069; Tue, 1 May 2012 16:40:12 GMT (envelope-from gnats) Date: Tue, 1 May 2012 16:40:12 GMT Message-Id: <201205011640.q41GeC5t051069@freefall.freebsd.org> To: freebsd-sparc64@FreeBSD.org From: dfilter@FreeBSD.ORG (dfilter service) Cc: Subject: Re: sparc64/165025: commit references a PR X-BeenThere: freebsd-sparc64@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: dfilter service List-Id: Porting FreeBSD to the Sparc List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 May 2012 16:40:12 -0000 The following reply was made to PR sparc64/165025; it has been noted by GNATS. From: dfilter@FreeBSD.ORG (dfilter service) To: bug-followup@FreeBSD.org Cc: Subject: Re: sparc64/165025: commit references a PR Date: Tue, 1 May 2012 16:38:50 +0000 (UTC) Author: marius Date: Tue May 1 16:38:33 2012 New Revision: 234897 URL: http://svn.freebsd.org/changeset/base/234897 Log: Add a command for showing the heap usage. PR: 165025 Submitted by: Gavin Mu MFC after: 1 week Modified: head/sys/boot/sparc64/loader/main.c Modified: head/sys/boot/sparc64/loader/main.c ============================================================================== --- head/sys/boot/sparc64/loader/main.c Tue May 1 16:18:38 2012 (r234896) +++ head/sys/boot/sparc64/loader/main.c Tue May 1 16:38:33 2012 (r234897) @@ -800,6 +800,18 @@ main(int (*openfirm)(void *)) return (1); } +COMMAND_SET(heap, "heap", "show heap usage", command_heap); + +static int +command_heap(int argc, char *argv[]) +{ + + mallocstats(); + printf("heap base at %p, top at %p, upper limit at %p\n", heapva, + sbrk(0), heapva + HEAPSZ); + return(CMD_OK); +} + COMMAND_SET(reboot, "reboot", "reboot the system", command_reboot); static int _______________________________________________ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org" From owner-freebsd-sparc64@FreeBSD.ORG Tue May 1 17:20:18 2012 Return-Path: Delivered-To: freebsd-sparc64@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 49726106564A for ; Tue, 1 May 2012 17:20:18 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 333488FC0A for ; Tue, 1 May 2012 17:20:18 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.5/8.14.5) with ESMTP id q41HKIni087187 for ; Tue, 1 May 2012 17:20:18 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.5/8.14.5/Submit) id q41HKIH2087186; Tue, 1 May 2012 17:20:18 GMT (envelope-from gnats) Date: Tue, 1 May 2012 17:20:18 GMT Message-Id: <201205011720.q41HKIH2087186@freefall.freebsd.org> To: freebsd-sparc64@FreeBSD.org From: dfilter@FreeBSD.ORG (dfilter service) Cc: Subject: Re: sparc64/165025: commit references a PR X-BeenThere: freebsd-sparc64@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: dfilter service List-Id: Porting FreeBSD to the Sparc List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 May 2012 17:20:18 -0000 The following reply was made to PR sparc64/165025; it has been noted by GNATS. From: dfilter@FreeBSD.ORG (dfilter service) To: bug-followup@FreeBSD.org Cc: Subject: Re: sparc64/165025: commit references a PR Date: Tue, 1 May 2012 17:16:12 +0000 (UTC) Author: marius Date: Tue May 1 17:16:01 2012 New Revision: 234898 URL: http://svn.freebsd.org/changeset/base/234898 Log: Add initial support for booting from ZFS on sparc64. At least on Sun Fire V100, the firmware is known to be broken and not allowing to simultaneously open disk devices, causing attempts to boot from a mirror or RAIDZ to cause a crash. This will be worked around later. The firmwares of newer sun4u models don't seem to exhibit this problem though. Steps for ZFS booting: 1. create VTOC8 label # gpart create -s vtoc8 da0 2. add partitions, f.e.: # gpart add -t freebsd-zfs -s 60g da0 # gpart add -t freebsd-swap da0 resulting in something like: # gpart show => 0 143331930 da0 VTOC8 (68G) 0 125821080 1 freebsd-zfs (60G) 125821080 17510850 2 freebsd-swap (8.4G) 3. create zpool # zpool create bunker da0a or for mirror/RAIDZ (after preparing additional disks as in steps 1. + 2.): # zpool create bunker mirror da0a da1a # zpool create bunker raidz da0a da1a da2a ... 4. set bootfs # zpool set bootfs=bunker bunker 5. install zfsboot # zpool export bunker # gpart bootcode -p /boot/zfsboot da0 6. write zfsloader to the ZFS Boot Block (so far, there's no dedicated tool for this, so dd(1) has to be used for this purpose) When using mirror/RAIDZ, step 4. and the dd(1) invocation should be repeated for the additional disks in order to be able to boot from another disk in case of failure. # sysctl kern.geom.debugflags=0x10 # dd if=/boot/zfsloader of=/dev/da0a bs=512 oseek=1024 conv=notrunc # zpool import bunker 7. install system on ZFS filesystem Don't forget to set 'zfs_load="YES"' and vfs.root.mountfrom="zfs:bunker" in loader.conf as well as 'zfs_enable="YES"'in rc.conf. 8. copy zpool.cache to the ZFS filesystem cp -p /boot/zfs/zpool.cache /bunker/boot/zfs/zpool.cache 9. set mountpoint # zfs set mountpoint=/ bunker 10. Now, given that aliases for all disks in the zpool exists (check with the `devalias` command on the boot monitor prompt) and disk0 corresponds to da0 (likewise for additional disks), the system can be booted from the ZFS with: {1} ok boot disk0 PR: 165025 Submitted by: Gavin Mu Added: head/sys/boot/sparc64/zfsboot/ head/sys/boot/sparc64/zfsboot/Makefile (contents, props changed) head/sys/boot/sparc64/zfsloader/ head/sys/boot/sparc64/zfsloader/Makefile (contents, props changed) Modified: head/sys/boot/ofw/libofw/devicename.c head/sys/boot/sparc64/Makefile head/sys/boot/sparc64/boot1/Makefile head/sys/boot/sparc64/boot1/boot1.c head/sys/boot/sparc64/loader/Makefile head/sys/boot/sparc64/loader/main.c head/sys/boot/zfs/zfs.c Modified: head/sys/boot/ofw/libofw/devicename.c ============================================================================== --- head/sys/boot/ofw/libofw/devicename.c Tue May 1 16:38:33 2012 (r234897) +++ head/sys/boot/ofw/libofw/devicename.c Tue May 1 17:16:01 2012 (r234898) @@ -28,6 +28,8 @@ __FBSDID("$FreeBSD$"); #include + +#include "bootstrap.h" #include "libofw.h" static int ofw_parsedev(struct ofw_devdesc **, const char *, const char **); @@ -76,6 +78,7 @@ ofw_parsedev(struct ofw_devdesc **dev, c phandle_t handle; const char *p; const char *s; + char *ep; char name[256]; char type[64]; int len; @@ -87,9 +90,10 @@ ofw_parsedev(struct ofw_devdesc **dev, c len = s - devspec; bcopy(devspec, name, len); name[len] = '\0'; - if ((handle = OF_finddevice(name)) == -1) - break; - if (OF_getprop(handle, "device_type", type, sizeof(type)) == -1) + if ((handle = OF_finddevice(name)) == -1) { + bcopy(name, type, len); + type[len] = '\0'; + } else if (OF_getprop(handle, "device_type", type, sizeof(type)) == -1) continue; for (i = 0; (dv = devsw[i]) != NULL; i++) { if (strncmp(dv->dv_name, type, strlen(dv->dv_name)) == 0) @@ -109,6 +113,18 @@ found: strcpy(idev->d_path, name); idev->d_dev = dv; idev->d_type = dv->dv_type; + if (idev->d_type == DEVT_ZFS) { + idev->d_unit = 0; + p = name + strlen(dv->dv_name); + if (*p && (*p != ':')) { + idev->d_unit = strtol(p, &ep, 0); + if (ep == p) { + free(idev); + return (EUNIT); + } + } + } + if (dev == NULL) { free(idev); } else { Modified: head/sys/boot/sparc64/Makefile ============================================================================== --- head/sys/boot/sparc64/Makefile Tue May 1 16:38:33 2012 (r234897) +++ head/sys/boot/sparc64/Makefile Tue May 1 17:16:01 2012 (r234898) @@ -1,5 +1,5 @@ # $FreeBSD$ -SUBDIR= boot1 loader +SUBDIR= boot1 loader zfsboot zfsloader .include Modified: head/sys/boot/sparc64/boot1/Makefile ============================================================================== --- head/sys/boot/sparc64/boot1/Makefile Tue May 1 16:38:33 2012 (r234897) +++ head/sys/boot/sparc64/boot1/Makefile Tue May 1 17:16:01 2012 (r234898) @@ -3,22 +3,23 @@ PROG= boot1.elf INTERNALPROG= NO_MAN= -FILES= boot1 +FILES?= boot1 SRCS= _start.s boot1.c +CLEANFILES+=boot1 boot1.aout BOOTBLOCKBASE= 0x4000 -CFLAGS= -mcmodel=medlow -Os -I${.CURDIR}/../../common +CFLAGS+=-mcmodel=medlow -Os -I${.CURDIR}/../../common LDFLAGS=-Ttext ${BOOTBLOCKBASE} -Wl,-N # Construct boot1. sunlabel expects it to contain zeroed-out space for the # label, and to be of the correct size. boot1: boot1.aout + @set -- `ls -l boot1.aout`; x=$$((7680-$$5)); \ + echo "$$x bytes available"; test $$x -ge 0 dd if=/dev/zero of=${.TARGET} bs=512 count=16 dd if=boot1.aout of=${.TARGET} bs=512 oseek=1 conv=notrunc -CLEANFILES= boot1.aout - boot1.aout: boot1.elf elf2aout -o ${.TARGET} ${.ALLSRC} Modified: head/sys/boot/sparc64/boot1/boot1.c ============================================================================== --- head/sys/boot/sparc64/boot1/boot1.c Tue May 1 16:38:33 2012 (r234897) +++ head/sys/boot/sparc64/boot1/boot1.c Tue May 1 17:16:01 2012 (r234898) @@ -20,11 +20,13 @@ __FBSDID("$FreeBSD$"); #include #include + #include #include -#define _PATH_LOADER "/boot/loader" -#define _PATH_KERNEL "/boot/kernel/kernel" +#define _PATH_LOADER "/boot/loader" +#define _PATH_KERNEL "/boot/kernel/kernel" +#define READ_BUF_SIZE 8192 typedef int putc_func_t(char c, void *arg); typedef int32_t ofwh_t; @@ -45,17 +47,21 @@ static ofwh_t bootdev; static uint32_t fs_off; int main(int ac, char **av); - static void exit(int) __dead2; -static void load(const char *); -static int dskread(void *, u_int64_t, int); - static void usage(void); +#ifdef ZFSBOOT +static void loadzfs(void); +static int zbread(char *buf, off_t off, size_t bytes); +#else +static void load(const char *); +#endif + static void bcopy(const void *src, void *dst, size_t len); static void bzero(void *b, size_t len); static int mount(const char *device); +static int dskread(void *buf, u_int64_t lba, int nblk); static void panic(const char *fmt, ...) __dead2; static int printf(const char *fmt, ...); @@ -312,8 +318,6 @@ strcmp(const char *s1, const char *s2) return ((u_char)*s1 - (u_char)*s2); } -#include "ufsread.c" - int main(int ac, char **av) { @@ -335,14 +339,22 @@ main(int ac, char **av) } } - printf(" \n>> FreeBSD/sparc64 boot block\n" - " Boot path: %s\n" - " Boot loader: %s\n", bootpath, path); +#ifdef ZFSBOOT + printf(" \n>> FreeBSD/sparc64 ZFS boot block\n Boot path: %s\n", + bootpath); +#else + printf(" \n>> FreeBSD/sparc64 boot block\n Boot path: %s\n" + " Boot loader: %s\n", "", bootpath, path); +#endif if (mount(bootpath) == -1) panic("mount"); +#ifdef ZFSBOOT + loadzfs(); +#else load(path); +#endif return (1); } @@ -361,24 +373,86 @@ exit(int code) ofw_exit(); } -static struct dmadat __dmadat; +#ifdef ZFSBOOT + +#define VDEV_BOOT_OFFSET (2 * 256 * 1024) +static char zbuf[READ_BUF_SIZE]; static int -mount(const char *device) +zbread(char *buf, off_t off, size_t bytes) { + size_t len; + off_t poff; + off_t soff; + char *p; + unsigned int nb; + unsigned int lb; - dmadat = &__dmadat; - if ((bootdev = ofw_open(device)) == -1) { - printf("mount: can't open device\n"); - return (-1); + p = buf; + soff = VDEV_BOOT_OFFSET + off; + lb = (soff + bytes + DEV_BSIZE - 1) / DEV_BSIZE; + poff = soff; + while (poff < soff + bytes) { + nb = lb - poff / DEV_BSIZE; + if (nb > READ_BUF_SIZE / DEV_BSIZE) + nb = READ_BUF_SIZE / DEV_BSIZE; + if (dskread(zbuf, poff / DEV_BSIZE, nb)) + break; + if ((poff / DEV_BSIZE + nb) * DEV_BSIZE > soff + bytes) + len = soff + bytes - poff; + else + len = (poff / DEV_BSIZE + nb) * DEV_BSIZE - poff; + memcpy(p, zbuf + poff % DEV_BSIZE, len); + p += len; + poff += len; } - if (fsread(0, NULL, 0)) { - printf("mount: can't read superblock\n"); - return (-1); + return (poff - soff); +} + +static void +loadzfs(void) +{ + Elf64_Ehdr eh; + Elf64_Phdr ph; + caddr_t p; + ino_t ino; + int i; + + if (zbread((char *)&eh, 0, sizeof(eh)) != sizeof(eh)) { + printf("Can't read elf header\n"); + return; } - return (0); + if (!IS_ELF(eh)) { + printf("Not an ELF file\n"); + return; + } + for (i = 0; i < eh.e_phnum; i++) { + fs_off = eh.e_phoff + i * eh.e_phentsize; + if (zbread((char *)&ph, fs_off, sizeof(ph)) != sizeof(ph)) { + printf("Can't read program header %d\n", i); + return; + } + if (ph.p_type != PT_LOAD) + continue; + fs_off = ph.p_offset; + p = (caddr_t)ph.p_vaddr; + if (zbread(p, fs_off, ph.p_filesz) != ph.p_filesz) { + printf("Can't read content of section %d\n", i); + return; + } + if (ph.p_filesz != ph.p_memsz) + bzero(p + ph.p_filesz, ph.p_memsz - ph.p_filesz); + } + ofw_close(bootdev); + (*(void (*)(int, int, int, int, ofwfp_t))eh.e_entry)(0, 0, 0, 0, ofw); } +#else + +#include "ufsread.c" + +static struct dmadat __dmadat; + static void load(const char *fname) { @@ -421,6 +495,26 @@ load(const char *fname) (*(void (*)(int, int, int, int, ofwfp_t))eh.e_entry)(0, 0, 0, 0, ofw); } +#endif /* ZFSBOOT */ + +static int +mount(const char *device) +{ + + if ((bootdev = ofw_open(device)) == -1) { + printf("mount: can't open device\n"); + return (-1); + } +#ifndef ZFSBOOT + dmadat = &__dmadat; + if (fsread(0, NULL, 0)) { + printf("mount: can't read superblock\n"); + return (-1); + } +#endif + return (0); +} + static int dskread(void *buf, u_int64_t lba, int nblk) { Modified: head/sys/boot/sparc64/loader/Makefile ============================================================================== --- head/sys/boot/sparc64/loader/Makefile Tue May 1 16:38:33 2012 (r234897) +++ head/sys/boot/sparc64/loader/Makefile Tue May 1 17:16:01 2012 (r234898) @@ -3,8 +3,8 @@ .include MK_SSP= no -PROG= loader -NEWVERSWHAT= "bootstrap loader" sparc64 +PROG?= loader +NEWVERSWHAT?= "bootstrap loader" sparc64 INSTALLFLAGS= -b # Architecture-specific loader code @@ -13,12 +13,17 @@ SRCS= locore.S main.c metadata.c vers.c LOADER_DISK_SUPPORT?= yes LOADER_UFS_SUPPORT?= yes LOADER_CD9660_SUPPORT?= yes +LOADER_ZFS_SUPPORT?= no LOADER_NET_SUPPORT?= yes LOADER_NFS_SUPPORT?= yes LOADER_TFTP_SUPPORT?= yes LOADER_GZIP_SUPPORT?= yes LOADER_BZIP2_SUPPORT?= no +LOADER_DEBUG?= no +.if ${LOADER_DEBUG} == "yes" +CFLAGS+= -DLOADER_DEBUG +.endif .if ${LOADER_DISK_SUPPORT} == "yes" CFLAGS+= -DLOADER_DISK_SUPPORT .endif @@ -28,6 +33,11 @@ CFLAGS+= -DLOADER_UFS_SUPPORT .if ${LOADER_CD9660_SUPPORT} == "yes" CFLAGS+= -DLOADER_CD9660_SUPPORT .endif +.if ${LOADER_ZFS_SUPPORT} == "yes" +CFLAGS+= -DLOADER_ZFS_SUPPORT +CFLAGS+= -I${.CURDIR}/../../zfs +CFLAGS+= -I${.CURDIR}/../../../cddl/boot/zfs +.endif .if ${LOADER_GZIP_SUPPORT} == "yes" CFLAGS+= -DLOADER_GZIP_SUPPORT .endif @@ -47,7 +57,8 @@ CFLAGS+= -DLOADER_TFTP_SUPPORT .if ${MK_FORTH} != "no" # Enable BootForth BOOT_FORTH= yes -CFLAGS+= -DBOOT_FORTH -I${.CURDIR}/../../ficl -I${.CURDIR}/../../ficl/sparc64 +CFLAGS+= -DBOOT_FORTH -I${.CURDIR}/../../ficl +CFLAGS+= -I${.CURDIR}/../../ficl/sparc64 LIBFICL= ${.OBJDIR}/../../ficl/libficl.a .endif @@ -75,8 +86,9 @@ CFLAGS+= -I${.CURDIR}/../../../../lib/li DPADD= ${LIBFICL} ${LIBOFW} ${LIBSTAND} LDADD= ${LIBFICL} ${LIBOFW} -lstand -vers.c: ${.CURDIR}/../../common/newvers.sh ${.CURDIR}/version - sh ${.CURDIR}/../../common/newvers.sh ${.CURDIR}/version ${NEWVERSWHAT} +vers.c: ${.CURDIR}/../../common/newvers.sh ${.CURDIR}/../loader/version + sh ${.CURDIR}/../../common/newvers.sh ${.CURDIR}/../loader/version \ + ${NEWVERSWHAT} loader.help: help.common help.sparc64 cat ${.ALLSRC} | \ Modified: head/sys/boot/sparc64/loader/main.c ============================================================================== --- head/sys/boot/sparc64/loader/main.c Tue May 1 16:38:33 2012 (r234897) +++ head/sys/boot/sparc64/loader/main.c Tue May 1 17:16:01 2012 (r234898) @@ -51,6 +51,9 @@ __FBSDID("$FreeBSD$"); #include #include #include +#ifdef LOADER_ZFS_SUPPORT +#include +#endif #include #include @@ -143,6 +146,11 @@ static vm_offset_t heapva; static phandle_t root; +#ifdef LOADER_ZFS_SUPPORT +static int zfs_dev_init(void); +#include "zfs.c" +#endif + /* * Machine dependent structures that the machine independent * loader part uses. @@ -154,6 +162,9 @@ struct devsw *devsw[] = { #ifdef LOADER_NET_SUPPORT &netdev, #endif +#ifdef LOADER_ZFS_SUPPORT + &zfs_dev, +#endif 0 }; struct arch_switch archsw; @@ -166,6 +177,7 @@ struct file_format *file_formats[] = { &sparc64_elf, 0 }; + struct fs_ops *file_system[] = { #ifdef LOADER_UFS_SUPPORT &ufs_fsops, @@ -173,6 +185,9 @@ struct fs_ops *file_system[] = { #ifdef LOADER_CD9660_SUPPORT &cd9660_fsops, #endif +#ifdef LOADER_ZFS_SUPPORT + &zfs_fsops, +#endif #ifdef LOADER_ZIP_SUPPORT &zipfs_fsops, #endif @@ -721,6 +736,82 @@ tlb_init_sun4u(void) panic("%s: can't allocate TLB store", __func__); } +#ifdef LOADER_ZFS_SUPPORT + +static int +zfs_dev_init(void) +{ + struct vtoc8 vtoc; + char devname[512]; + spa_t *spa; + vdev_t *vdev; + uint64_t guid; + int fd, part, unit; + + zfs_init(); + + guid = 0; + /* Get the GUID of the ZFS pool on the boot device. */ + fd = open(getenv("currdev"), O_RDONLY); + if (fd != -1) { + if (vdev_probe(vdev_read, (void *)(uintptr_t) fd, &spa) == 0) + guid = spa->spa_guid; + close(fd); + } + + /* Clean up the environment to let ZFS work. */ + while ((vdev = STAILQ_FIRST(&zfs_vdevs)) != NULL) { + STAILQ_REMOVE_HEAD(&zfs_vdevs, v_alllink); + free(vdev); + } + while ((spa = STAILQ_FIRST(&zfs_pools)) != NULL) { + STAILQ_REMOVE_HEAD(&zfs_pools, spa_link); + free(spa); + } + + for (unit = 0; unit < MAXBDDEV; unit++) { + /* Find freebsd-zfs slices in the VTOC. */ + sprintf(devname, "disk%d:", unit); + fd = open(devname, O_RDONLY); + if (fd == -1) + continue; + lseek(fd, 0, SEEK_SET); + if (read(fd, &vtoc, sizeof(vtoc)) != sizeof(vtoc)) { + close(fd); + continue; + } + close(fd); + + for (part = 0; part < 8; part++) { + if (part == 2 || vtoc.part[part].tag != + VTOC_TAG_FREEBSD_ZFS) + continue; + sprintf(devname, "disk%d:%c", unit, part + 'a'); + fd = open(devname, O_RDONLY); + if (fd == -1) + break; + + if (vdev_probe(vdev_read, (void*)(uintptr_t) fd, 0)) + close(fd); + } + } + + if (guid != 0) { + unit = zfs_guid_to_unit(guid); + if (unit >= 0) { + /* Update the environment for ZFS. */ + sprintf(devname, "zfs%d", unit); + env_setenv("currdev", EV_VOLATILE, devname, + ofw_setcurrdev, env_nounset); + env_setenv("loaddev", EV_VOLATILE, devname, + env_noset, env_nounset); + } + } + return (0); +} + +#endif /* LOADER_ZFS_SUPPORT */ + int main(int (*openfirm)(void *)) { @@ -756,14 +847,6 @@ main(int (*openfirm)(void *)) mmu_ops->tlb_init(); /* - * Initialize devices. - */ - for (dp = devsw; *dp != 0; dp++) { - if ((*dp)->dv_init != 0) - (*dp)->dv_init(); - } - - /* * Set up the current device. */ OF_getprop(chosen, "bootpath", bootpath, sizeof(bootpath)); @@ -780,7 +863,8 @@ main(int (*openfirm)(void *)) * needs to be altered. */ if (bootpath[strlen(bootpath) - 2] == ':' && - bootpath[strlen(bootpath) - 1] == 'f') { + bootpath[strlen(bootpath) - 1] == 'f' && + strstr(bootpath, "cdrom")) { bootpath[strlen(bootpath) - 1] = 'a'; printf("Boot path set to %s\n", bootpath); } @@ -790,6 +874,13 @@ main(int (*openfirm)(void *)) env_setenv("loaddev", EV_VOLATILE, bootpath, env_noset, env_nounset); + /* + * Initialize devices. + */ + for (dp = devsw; *dp != 0; dp++) + if ((*dp)->dv_init != 0) + (*dp)->dv_init(); + printf("\n"); printf("%s, Revision %s\n", bootprog_name, bootprog_rev); printf("(%s, %s)\n", bootprog_maker, bootprog_date); Added: head/sys/boot/sparc64/zfsboot/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/boot/sparc64/zfsboot/Makefile Tue May 1 17:16:01 2012 (r234898) @@ -0,0 +1,13 @@ +# $FreeBSD$ + +.PATH: ${.CURDIR}/../boot1 + +PROGNAME= zfsboot +CFLAGS+= -DZFSBOOT +FILES= zfsboot +CLEANFILES+= zfsboot + +zfsboot: boot1 + ln -s ${.ALLSRC} ${.TARGET} + +.include "${.CURDIR}/../boot1/Makefile" Added: head/sys/boot/sparc64/zfsloader/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/boot/sparc64/zfsloader/Makefile Tue May 1 17:16:01 2012 (r234898) @@ -0,0 +1,9 @@ +# $FreeBSD$ + +.PATH: ${.CURDIR}/../loader + +PROG= zfsloader +NEWVERSWHAT= "ZFS enabled bootstrap loader" sparc64 +LOADER_ZFS_SUPPORT=yes + +.include "${.CURDIR}/../loader/Makefile" Modified: head/sys/boot/zfs/zfs.c ============================================================================== --- head/sys/boot/zfs/zfs.c Tue May 1 16:38:33 2012 (r234897) +++ head/sys/boot/zfs/zfs.c Tue May 1 17:16:01 2012 (r234898) @@ -399,6 +399,7 @@ zfs_guid_to_unit(uint64_t guid) return (-1); } +#if defined(__amd64__) || defined(__i386__) static int zfs_dev_init(void) { @@ -441,6 +442,7 @@ zfs_dev_init(void) return (0); } +#endif /* * Print information about ZFS pools _______________________________________________ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org" From owner-freebsd-sparc64@FreeBSD.ORG Sat May 5 09:53:04 2012 Return-Path: Delivered-To: freebsd-sparc@freebsd.org Received: from hub.freebsd.org (localhost [127.0.0.1]) by hub.freebsd.org (Postfix) with ESMTP id 1CCF9106564A for ; Sat, 5 May 2012 09:53:04 +0000 (UTC) (envelope-from owner-freebsd-questions@freebsd.org) MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit From: owner-freebsd-questions@freebsd.org To: freebsd-sparc@freebsd.org Message-ID: Date: Sat, 05 May 2012 09:53:02 +0000 Precedence: bulk X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.5 X-List-Administrivia: yes Sender: owner-freebsd-questions@freebsd.org Errors-To: owner-freebsd-questions@freebsd.org Cc: Subject: Your message to freebsd-questions awaits moderator approval X-BeenThere: freebsd-sparc64@freebsd.org List-Id: Porting FreeBSD to the Sparc List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 05 May 2012 09:53:04 -0000 Your mail to 'freebsd-questions' with the subject Job offer match, respond to apply Is being held until the list moderator can review it for approval. The reason it is being held: SpamAssassin identified this message as possible spam Either the message will get posted to the list, or you will receive notification of the moderator's decision. If you would like to cancel this posting, please visit the following URL: http://lists.freebsd.org/mailman/confirm/freebsd-questions/3ce094ecd2cb0d9b44c57152f79540e6f1d5e9b0 PLEASE NOTE! If you would like to post freely to the list, please subscribe first. If you post from multiple addresses, you can subscribe each address and go into the options page and select 'no mail' for all but one address. This will allow you to post without delay in the future. Sorry for the hassle, but certain immature people made this necessary. From owner-freebsd-sparc64@FreeBSD.ORG Sat May 5 09:53:10 2012 Return-Path: Delivered-To: freebsd-sparc@freebsd.org Received: from hub.freebsd.org (localhost [127.0.0.1]) by hub.freebsd.org (Postfix) with ESMTP id 422AF1065670 for ; Sat, 5 May 2012 09:53:10 +0000 (UTC) (envelope-from owner-freebsd-hackers@freebsd.org) MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit From: owner-freebsd-hackers@freebsd.org To: freebsd-sparc@freebsd.org Message-ID: Date: Sat, 05 May 2012 09:53:08 +0000 Precedence: bulk X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 X-List-Administrivia: yes Sender: owner-freebsd-hackers@freebsd.org Errors-To: owner-freebsd-hackers@freebsd.org Cc: Subject: Your message to freebsd-hackers awaits moderator approval X-BeenThere: freebsd-sparc64@freebsd.org List-Id: Porting FreeBSD to the Sparc List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 05 May 2012 09:53:10 -0000 Your mail to 'freebsd-hackers' with the subject Job offer match, respond to apply Is being held until the list moderator can review it for approval. The reason it is being held: SpamAssassin identified this message as possible spam Either the message will get posted to the list, or you will receive notification of the moderator's decision. If you would like to cancel this posting, please visit the following URL: http://lists.freebsd.org/mailman/confirm/freebsd-hackers/779d7f56d71a8376bbe5465fc8b0a4fbdc696a9a PLEASE NOTE! If you would like to post freely to the list, please subscribe first. If you post from multiple addresses, you can subscribe each address and go into the options page and select 'no mail' for all but one address. This will allow you to post without delay in the future. Sorry for the hassle, but certain immature people made this necessary. From owner-freebsd-sparc64@FreeBSD.ORG Sat May 5 12:57:38 2012 Return-Path: Delivered-To: freebsd-sparc@freebsd.org Received: from hub.freebsd.org (localhost [127.0.0.1]) by hub.freebsd.org (Postfix) with ESMTP id 5A797106566B for ; Sat, 5 May 2012 12:57:38 +0000 (UTC) (envelope-from owner-freebsd-questions@freebsd.org) MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit From: owner-freebsd-questions@freebsd.org To: freebsd-sparc@freebsd.org Message-ID: Date: Sat, 05 May 2012 12:57:37 +0000 Precedence: bulk X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.5 X-List-Administrivia: yes Sender: owner-freebsd-questions@freebsd.org Errors-To: owner-freebsd-questions@freebsd.org Cc: Subject: Your message to freebsd-questions awaits moderator approval X-BeenThere: freebsd-sparc64@freebsd.org List-Id: Porting FreeBSD to the Sparc List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 05 May 2012 12:57:38 -0000 Your mail to 'freebsd-questions' with the subject Job ad - see details! Sent through Search engine Is being held until the list moderator can review it for approval. The reason it is being held: SpamAssassin identified this message as possible spam Either the message will get posted to the list, or you will receive notification of the moderator's decision. If you would like to cancel this posting, please visit the following URL: http://lists.freebsd.org/mailman/confirm/freebsd-questions/0c0751fe4fbe7d9ccee2b04d8c70e1dace21de10 PLEASE NOTE! If you would like to post freely to the list, please subscribe first. If you post from multiple addresses, you can subscribe each address and go into the options page and select 'no mail' for all but one address. This will allow you to post without delay in the future. Sorry for the hassle, but certain immature people made this necessary.