A investigative hack that makes (for example) head -r356529 boot and operate normally an RPi4B (finally!): protect all armstub8-gic.bin's loaded content from replacement by the kernel

Kyle Evans kevans at freebsd.org
Thu Feb 13 13:50:05 UTC 2020


On Thu, Feb 13, 2020 at 7:43 AM Ralf Wenk <iz-rpi03 at hs-karlsruhe.de> wrote:
>
> On 2020-02-12 at 18:00 -0800 Mark Millard wrote via freebsd-arm:
> > [...]
> >
> > # svnlite diff /usr/src/sys/dev/fdt/fdt_common.c
> > Index: /usr/src/sys/dev/fdt/fdt_common.c
> > ===================================================================
> > --- /usr/src/sys/dev/fdt/fdt_common.c (revision 357529)
> > +++ /usr/src/sys/dev/fdt/fdt_common.c (working copy)
> > @@ -485,7 +485,18 @@
> >
> >       tuples = res_len / tuple_size;
> >       reservep = (pcell_t *)&reserve;
> > +#ifdef __aarch64__
> > +     //HACK!!!
> > +     // Reserve the first few pages, for example to
> > +     // preserve armstub8-gic.bin or armstub.bin
> > +     // content.
> > +     mr[0].mr_start= 0;
> > +     mr[0].mr_size= 2*4096;
> > +     tuples++;
> > +     for (i = 1; i < tuples; i++) {
> > +#else
> >       for (i = 0; i < tuples; i++) {
> > +#endif
> >
> >               rv = fdt_data_to_res(reservep, addr_cells, size_cells,
> >                       (u_long *)&mr[i].mr_start, (u_long *)&mr[i].mr_size);
> > @@ -512,6 +523,11 @@
> >
> >       root = OF_finddevice("/reserved-memory");
> >       if (root == -1) {
> > +             // Fail over to checking for and handling memreserve,
> > +             // such as for a RPi4B.
> > +             if (0 == fdt_get_reserved_regions(reserved,mreserved))
> > +                     return (0);
> > +
> >               return (ENXIO);
> >       }
> >
>
> I can confirm that with your patch(es) my RPi3 does not freeze any more
> when loading mac_ntpd.ko. The patches are applied against r357853M.
>

Have you tested the RPi3 with just this second hunk of patch to
fallover to memreserve, or is the first hunk definitely required as
well?

Thanks,

Kyle Evans


More information about the freebsd-arm mailing list