This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Foundation Model for ARMv8

Hello. I am using ARMv8 foundation model for my project. When configure foundation model with multi cores (cores=4) my code does not run. Can you lease help me solve this problem?

Parents
  • I just boot Linux kernel(v4.7-rc2) on the Foundation model(v9.6).

    Here is the cat /proc/interrupts output which shows many interrupts are

    working including architected timers.

           CPU0   CPU1   CPU2   CPU3 
      1:      0      0      0      0 GICv3  25 Edge  vgic
      4:      0      0      0      0 GICv3  27 Edge  kvm guest timer
      5:   1216   1304   1184   1243 GICv3  26 Edge  arch_timer
      6:     81     63     52     46 GICv3  58 Level arch_mem_timer
    13:     32      0      0      0 GICv3  37 Level uart-pl011
    17:      0      0      0      0 GICv3  74 Level virtio0
    IPI0:   796    936    372    642   Rescheduling interrupts
    IPI1:    10     13     14      5   Function call interrupts
    IPI2:     0      0      0      0   CPU stop interrupts
    IPI3:    17     27     26     25   Timer broadcast interrupts
    IPI4:     0      0      0      0   IRQ work interrupts
    IPI5:     0      0      0      0   CPU wake-up interrupts
    Err:      0

    I haven't check SP804 yet. But why do you need that when you have both

    sysreg and memory mapped architected timers working.

    Regards,

    Sudeep

Reply
  • I just boot Linux kernel(v4.7-rc2) on the Foundation model(v9.6).

    Here is the cat /proc/interrupts output which shows many interrupts are

    working including architected timers.

           CPU0   CPU1   CPU2   CPU3 
      1:      0      0      0      0 GICv3  25 Edge  vgic
      4:      0      0      0      0 GICv3  27 Edge  kvm guest timer
      5:   1216   1304   1184   1243 GICv3  26 Edge  arch_timer
      6:     81     63     52     46 GICv3  58 Level arch_mem_timer
    13:     32      0      0      0 GICv3  37 Level uart-pl011
    17:      0      0      0      0 GICv3  74 Level virtio0
    IPI0:   796    936    372    642   Rescheduling interrupts
    IPI1:    10     13     14      5   Function call interrupts
    IPI2:     0      0      0      0   CPU stop interrupts
    IPI3:    17     27     26     25   Timer broadcast interrupts
    IPI4:     0      0      0      0   IRQ work interrupts
    IPI5:     0      0      0      0   CPU wake-up interrupts
    Err:      0

    I haven't check SP804 yet. But why do you need that when you have both

    sysreg and memory mapped architected timers working.

    Regards,

    Sudeep

Children
  • Hi Sudeep,

    I have successfully boot linux 4.4-rc4 on the Foundation_Model using boot-wrappers but fail to wrapper the latest kernel 4.8-rc2 as it warns "FATAL ERROR: Unable to parse input  tree". How to correctly boot the latest linux kernel (from git.kernel.org not linaro's) on Foundation_Model? Could you share your procedures and some boot arguments? Thank you very much!

  • Hi,

    Could you share more details on the model version and logs where you get the error.

    I just tried mainline kernel(v4.8-rc2 and the tip as of today), both works (not done any

    extensive testing but boots fine)

    Regards,

    Sudeep

  • Well, kernel codes cloned from here (git://git.kernel.org/pub/scm/linux/kernel/git/cmarinas/linux-aarch64.git) and boot-wrapper fetched from virtualopensystem (git://github.com/virtualopensystems/boot-wrapper.git) worked fine together. I could generate an axf file and boot it on Foundation Model embedded in DS-5 24.1. The foundation model here is build 9.6.43.

    But after cross-compiling v4.8-rc2 codes, I wrap Image using boot-wrappers above mentioned, the output suggested a FATAL ERROR when parsing dts and I thought it was "dtc" executable that complained.

    boot-wrapper git:(aarch64) ✗ make -f ./Makefile ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-  \

    BOOTARGS='"root=/dev/vda ip=dhcp rw console=ttyAMA0 maxcpus=1"' \

    FDT_SRC=foundation-v8.dts IMAGE=image-foundation_img.axf

    ( echo "/include/ \"foundation-v8.dts\"" ; echo "/ { chosen { bootargs = \""root=/dev/vda ip=dhcp rw console=ttyAMA0 maxcpus=1"\"; }; };" ) |  ./dtc -O dtb -o fdt.dtb -

    Error: foundation-v8.dts:7.1-2 syntax error

    FATAL ERROR: Unable to parse input tree

    Makefile:78: recipe for target 'fdt.dtb' failed

    make: *** [fdt.dtb] Error 1

  • Yes, it's indeed dtc issue.

    It could be more related to the path and how the files are included.

    relative vs absolute paths ? Mainline kernel and boot-wrapper works out of box.

    It could be some issue with that specific bootwrapper.

    The bootwrapper now decompiles the one build in the kernel and modifies it.

    ( dtc -O dts -I dtb build/arch/arm64/boot/dts/arm/foundation-v8.dtb ; echo "/ { chosen { bootargs = \"root=/dev/vda1 rootwait consolelog=9 rw console=ttyAMA0; };   };" ) | dtc -O dtb -o fdt.dtb -

  • This specific wrapper deals with dts in almost the same way by using dts but dtb.

    fdt.dtb: $(FDT_DEPS) Makefile
    ( echo "/include/ \"$(FDT_SRC)\"" ; echo "/ { $(CHOSEN_NODE) };" ) | $(DTC) -O dtb -o $@ -

    And FDT_SRC is assigned to foundation-v8.dts. So this specific wrapper seems to resemble the one you mentioned at least at this point. Actually I have adapted the common boot-wrapper to the new dts directory, still it failed and gave no error info.

    I wonder if this booting method is rather old fashioned and out of favor, should I adopt Linaro's approach which could be found in Linaro's deliverables? Thank you so much!