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
Mark Millard
marklmi at yahoo.com
Thu Feb 13 21:32:25 UTC 2020
On 2020-Feb-13, at 12:51, Klaus Küchemann <maciphone2 at googlemail.com> wrote:
>
>> Am 13.02.2020 um 17:50 schrieb Mark Millard via freebsd-arm <freebsd-arm at freebsd.org>:
>>
>> There is the cpu-rlease-addr information that seems
>> to refer to some 1st memory page content:
>>
>> cpus {
>> #address-cells = <0x00000001>;
>> #size-cells = <0x00000000>;
>> enable-method = "brcm,bcm2836-smp";
>> phandle = <0x000000be>;
>> cpu at 0 {
>> device_type = "cpu";
>> compatible = "arm,cortex-a72";
>> reg = <0x00000000>;
>> enable-method = "spin-table";
>> cpu-release-addr = <0x00000000 0x000000d8>;
>> phandle = <0x0000001d>;
>> };
>> cpu at 1 {
>> device_type = "cpu";
>> compatible = "arm,cortex-a72";
>> reg = <0x00000001>;
>> enable-method = "spin-table";
>> cpu-release-addr = <0x00000000 0x000000e0>;
>> phandle = <0x0000001e>;
>> };
>> cpu at 2 {
>> device_type = "cpu";
>> compatible = "arm,cortex-a72";
>> reg = <0x00000002>;
>> enable-method = "spin-table";
>> cpu-release-addr = <0x00000000 0x000000e8>;
>> phandle = <0x0000001f>;
>> };
>> cpu at 3 {
>> device_type = "cpu";
>> compatible = "arm,cortex-a72";
>> reg = <0x00000003>;
>> enable-method = "spin-table";
>> cpu-release-addr = <0x00000000 0x000000f0>;
>> phandle = <0x00000020>;
>> };
>> };
>>
>>
>
>
> Although I didn’t have yet time to step into debugging just a sidenote :
> , the above table shown from you is for bcm2836
> Where for bcm-2711 dtsi :
Do not confuse the .dtsi with the live DTB reported
by the RPi4B u-boot itself (the address as reported
during a prior boot sequence). I show more extraction
context this time:
U-Boot> fdt addr 0x7ef2000
U-Boot> fdt print
/ {
. . .
cpus {
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
enable-method = "brcm,bcm2836-smp";
phandle = <0x000000be>;
cpu at 0 {
device_type = "cpu";
compatible = "arm,cortex-a72";
reg = <0x00000000>;
enable-method = "spin-table";
cpu-release-addr = <0x00000000 0x000000d8>;
phandle = <0x0000001d>;
};
cpu at 1 {
device_type = "cpu";
compatible = "arm,cortex-a72";
reg = <0x00000001>;
enable-method = "spin-table";
cpu-release-addr = <0x00000000 0x000000e0>;
phandle = <0x0000001e>;
};
cpu at 2 {
device_type = "cpu";
compatible = "arm,cortex-a72";
reg = <0x00000002>;
enable-method = "spin-table";
cpu-release-addr = <0x00000000 0x000000e8>;
phandle = <0x0000001f>;
};
cpu at 3 {
device_type = "cpu";
compatible = "arm,cortex-a72";
reg = <0x00000003>;
enable-method = "spin-table";
cpu-release-addr = <0x00000000 0x000000f0>;
phandle = <0x00000020>;
};
};
. . .
Yes, the live RPi4B u-boot reports: brcm,bcm2836-smp
I've no clue if this is a problem.
>
> cpu0: cpu at 0 {
> device_type = "cpu";
> compatible = "arm,cortex-a72";
> reg = <0>;
> enable-method = "spin-table";
> cpu-release-addr = <0x0 0x000000d8>;
> };
>
> cpu1: cpu at 1 {
> device_type = "cpu";
> compatible = "arm,cortex-a72";
> reg = <1>;
> enable-method = "spin-table";
> cpu-release-addr = <0x0 0x000000e0>;
> };
>
> cpu2: cpu at 2 {
> device_type = "cpu";
> compatible = "arm,cortex-a72";
> reg = <2>;
> enable-method = "spin-table";
> cpu-release-addr = <0x0 0x000000e8>;
> };
>
> cpu3: cpu at 3 {
> device_type = "cpu";
> compatible = "arm,cortex-a72";
> reg = <3>;
> enable-method = "spin-table";
> cpu-release-addr = <0x0 0x000000f0>;
> };
> };
This source code seems to be irrelevant to what I reported
about the live DTB in use.
===
Mark Millard
marklmi at yahoo.com
( dsl-only.net went
away in early 2018-Mar)
More information about the freebsd-arm
mailing list