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