Date: Thu, 12 Apr 2012 14:30:19 GMT From: Gavin Mu <gavin.mu@gmail.com> To: freebsd-sparc64@FreeBSD.org Subject: Re: sparc64/165025: [PATCH] zfsboot support for sparc64 Message-ID: <201204121430.q3CEUJDk085743@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR sparc64/165025; it has been noted by GNATS. From: Gavin Mu <gavin.mu@gmail.com> To: Marius Strobl <marius@alchemy.franken.de> Cc: bug-followup@freebsd.org, Kurt Lidl <lidl@pix.net> Subject: Re: sparc64/165025: [PATCH] zfsboot support for sparc64 Date: Thu, 12 Apr 2012 22:27:31 +0800 On Mon, Mar 5, 2012 at 2:06 AM, Marius Strobl <marius@alchemy.franken.de> 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. for OF_open("normal disk controller without disk") issue, I did not find how to work around or fix yet. Is there any documents about how this open firmware work? I googled but can not find anything useful. Regards, Gavin Mu
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201204121430.q3CEUJDk085743>