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
Ralf Wenk
iz-rpi03 at hs-karlsruhe.de
Thu Feb 13 13:43:51 UTC 2020
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.
root at rpi3-b:~ # uname -a
FreeBSD rpi3-b 13.0-CURRENT FreeBSD 13.0-CURRENT #0 r357853M:
Thu Feb 13 11:46:46 CET 2020
root at rpi-3b:/usr/obj/usr/src/arm64.aarch64/sys/GENERIC arm64
root at rpi3-b:~ # kldload mac_ntpd
Security policy loaded: MAC/ntpd (mac_ntpd)
root at rpi3-b:~ # kldstat
Id Refs Address Size Name
1 21 0xffff000000000000 1512678 kernel
2 1 0xffff000001513000 2eedb0 zfs.ko
3 2 0xffff000001802000 284d8 opensolaris.ko
4 1 0xffff00005c600000 21000 uhid.ko
5 1 0xffff00005c621000 21000 wmt.ko
6 1 0xffff00005c642000 21000 mac_ntpd.ko
root at rpi3-b:~ #
Thank you.
Ralf
More information about the freebsd-arm
mailing list