On Sun, 5 Mar 2023 at 22:03, Michael van Elst <mlel...@serpens.de> wrote: > > On Sun, Mar 05, 2023 at 10:56:31PM +0100, Michael van Elst wrote: > > On Mon, Mar 06, 2023 at 07:44:20AM +1030, Brett Lymn wrote: > > > On Sun, Mar 05, 2023 at 03:01:02PM -0000, Michael van Elst wrote: > > > > > > > > - if (guid != NULL && len == 16) > > > > + if (guid == NULL || len == 16) > > > > + > > > > > > Shouldn't that be "len != 16"? > > > > Yes, and another error. The wedge device is 'dv' not 'dev'. > > > > Here is a patch that works for me: > > The first hunk was another local change. Please ignore.
I used the previous patch with the first hunk, it worked for me. Thanks for the quick response. Chavdar > Here is without: > > > Index: sys/arch/evbarm/fdt/fdt_machdep.c > =================================================================== > RCS file: /cvsroot/src/sys/arch/evbarm/fdt/fdt_machdep.c,v > retrieving revision 1.100 > diff -p -u -r1.100 fdt_machdep.c > --- sys/arch/evbarm/fdt/fdt_machdep.c 5 Feb 2023 22:42:39 -0000 1.100 > +++ sys/arch/evbarm/fdt/fdt_machdep.c 5 Mar 2023 21:59:49 -0000 > @@ -743,9 +743,6 @@ fdt_detect_root_device(device_t dev) > { > int error, len; > > - if (booted_device) > - return; > - > const int chosen = OF_finddevice("/chosen"); > if (chosen < 0) > return; > @@ -801,8 +798,15 @@ fdt_detect_root_device(device_t dev) > const struct uuid *guid = > fdtbus_get_prop(chosen, "netbsd,gpt-guid", &len); > > - if (guid != NULL && len == 16) > - booted_device = dev; > + if (guid == NULL || len != 16) > + return; > + > + char guidstr[UUID_STR_LEN]; > + uuid_snprintf(guidstr, sizeof(guidstr), guid); > + > + device_t dv = dkwedge_find_by_wname(guidstr); > + if (dv != NULL) > + booted_device = dv; > > return; > } > @@ -895,8 +899,7 @@ fdt_cpu_rootconf(void) > if (device_class(dev) != DV_DISK) > continue; > > - if (device_is_a(dev, "ld") || device_is_a(dev, "sd") || > device_is_a(dev, "wd")) > - fdt_detect_root_device(dev); > + fdt_detect_root_device(dev); > > if (booted_device != NULL) > break; -- ----