Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: GENERIC64 aarch64 failure to autoboot



On Sun, 5 Mar 2023 at 22:03, Michael van Elst <mlelstv%serpens.de@localhost> 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;



-- 
----


Home | Main Index | Thread Index | Old Index