smartobjectoriented / soo

SOO - Smart Object Oriented - technology enables migration of Mobile Entities between Smart Objects in order to develop fully decentralized and autonomous embedded systems at large scale (https://smartobjectoriented.github.io/soo)
GNU General Public License v2.0
1 stars 1 forks source link

Boot sometimes blocked after vbus_vbstore_init #35

Open BasileCuneo opened 10 months ago

BasileCuneo commented 10 months ago

When booting SOO, the system sometimes blocks after the vbus_vbstore_init: done message.

Here is the full output:

34817866 bytes read in 2570 ms (12.9 MiB/s)
## Loading kernel from FIT Image at 30000000 ...
   Using 'agency_rpi4' configuration
   Trying 'avz' kernel subimage
     Description:  AVZ Hypervisor (64-bit)
     Type:         Kernel Image
     Compression:  uncompressed
     Data Start:   0x300000dc
     Data Size:    286800 Bytes = 280.1 KiB
     Architecture: AArch64
     OS:           Linux
     Load Address: 0x00080000
     Entry Point:  0x00080000
   Verifying Hash Integrity ... OK
## Loading ramdisk from FIT Image at 30000000 ...
   Using 'agency_rpi4' configuration
   Trying 'initrd' ramdisk subimage
     Description:  Agency initial rootfs (initrd)
     Type:         RAMDisk Image
     Compression:  uncompressed
     Data Start:   0x30faa5d4
     Data Size:    18390016 Bytes = 17.5 MiB
     Architecture: AArch64
     OS:           Linux
     Load Address: 0x10c00000
     Entry Point:  unavailable
   Verifying Hash Integrity ... OK
   Loading ramdisk from 0x30faa5d4 to 0x10c00000
## Loading fdt from FIT Image at 30000000 ...
   Using 'agency_rpi4' configuration
   Trying 'fdt' fdt subimage
     Description:  SOO Agency device tree blob
     Type:         Flat Device Tree
     Compression:  uncompressed
     Data Start:   0x30f9fe94
     Data Size:    42665 Bytes = 41.7 KiB
     Architecture: AArch64
     Load Address: 0x10a00000
   Verifying Hash Integrity ... OK
   Loading fdt from 0x30f9fe94 to 0x10a00000
   Booting using the fdt blob at 0x10a00000
## Loading loadables from FIT Image at 30000000 ...
   Trying 'avz_dt' loadables subimage
     Description:  Flattened Device Tree blob
     Type:         Unknown Image
     Compression:  uncompressed
     Data Start:   0x300461e0
     Data Size:    885 Bytes = 885 Bytes
   Verifying Hash Integrity ... OK
   Loading loadables from 0x300461e0 to 0x00f00000
## Loading loadables from FIT Image at 30000000 ...
   Trying 'linux' loadables subimage
     Description:  Agency Linux kernel
     Type:         Unknown Image
     Compression:  uncompressed
     Data Start:   0x300465e0
     Data Size:    16095240 Bytes = 15.3 MiB
   Verifying Hash Integrity ... OK
   Loading loadables from 0x300465e0 to 0x01000000
   Loading Kernel Image
   Using Device Tree in place at 0000000010a00000, end 0000000010a0d6a8

Starting kernel ...

ITB: Domain load addr = 0x1000000
  AVZ DT at physical address : f00000
  AVZ memory descriptor : found 1024 MB of RAM at 0x00000000

********** Smart Object Oriented technology - AVZ Hypervisor  **********
Copyright (c) 2014-2023 REDS Institute, HEIG-VD, Yverdon-les-Bains
Version 2023.6.0

Now bootstraping the hypervisor kernel ...
SO3: allocating a kernel heap of 8388552 bytes at address ffff7000000c8000.
memory_init: Device tree virt addr: f00000
memory_init: relocating the device tree from 0xf00000 to 0xffff700000a28000 (size of 885 bytes)
SO3 Memory information:
  - Memory size : 1073741824 bytes
  - Available pages: 259543 (3f5d7)
  - Kernel size without frame table is: 10653696 (0xa29000) bytes, 10 MB / 0xa29 PFNs
  - Kernel size including frame table is: 12730368 (0xc24000) bytes, 12 MB / 0xc24 PFNs
  - Number of available page frames: 0x3f5d7
  - Frame table size is: 2076344 bytes meaning 507 (0x1fb) page frames
  - Page frame number of the first available page: 0xa29
Init domain scheduler...
Initializing avz timer...
This configuration will spin up at most 4 total processors ...
***************************** Loading Agency Domain *****************************
-> Agency base address from ITB: 1000000
-> Max dom size 536870912
*** Setup page tables of the domain: ***
   v_start          : 0xffff800010000000
   map size (bytes) : 0x20000000
   phys address     : 0x1000000
AVZ Hypervisor vaddr: 0xffff700000000000
Agency FDT device tree: 0x10a00000 (phys)
Shared AVZ page is located at: ffff7000000fe000
###0
###1
## before new_thread
CPU #1 is the second CPU reserved for Agency realtime activity.
Starting ME CPU...
smp_boot_secondary: booting CPU: 3
CPU3: Booted secondary processor
CPU3 booted...
cpu_up finished waiting...
Brought secondary CPUs for AVZ (at the moment CPU #3, CPU #2 will be for later...)
Now, unpausing the agency domain and doing its bootstrap...
secondary stSOt kgency:Vinturligeid(e zoop...t info :
  - Hypercall addr: ffff700000088340
  - Total Pages allocated to this domain : 131072
  - Domain physical address : 0x1000000
  - FDT device tree paddr, if any: 10a00000
  - All right! AVZ setup successfull.
SOO Agency - start_kernel: HYPERVISOR_VIRT_START=ff000000,    __pa()=feffffff
SOO Agency - start_kernel: PAGE_OFFSET=ffff000000000000,              __pa()=ffffffffffffffff
SOO Agency - start_kernel: PHYS_OFFSET=ffffffffffffffff,              __va()=ffff000000000000
SOO Agency - start_kernel: VMALLOC_END=fffffdffbfff0000               __va()=fffffdffbfff0001
SOO Agency - start_kernel: _end=ffff800011070000                      __pa()=2070000
** Agency RT CPU gets invisible for Linux...
cp15 timer(s) running at 54.00MHz (virt).
__arch_timer_setup: found ARM arch timer IRQ 27
## Cobalt: system does NOT support SVE.
CPU1: Booted secondary processor 0x0000000001 [0x410fd083]
s* ondncy_st CP_kgene inwaitbng oor LU u fo.
tarting Xenomai initialization ...
CPU1: Agency RT CPU is CPU #1
[Xenomai] scheduling class idle registered.
[Xenomai] scheduling class rt registered.
Cobalt vSOO-1.1 (SOO-xeuo_initt  nitializing vbstore...
... vbstore SOO Agency setting up...
vbs_store_mkdir: creating backend entry for /backend virtual driver...
vbs_store_mkdir: creating backend entry for /device virtual driver...
vbs_store_mkdir: creating backend entry for /domain virtual driver...
vbs_store_mkdir: creating backend entry for /domain/gnttab virtual driver...
vbs_store_mkdir: creating backend entry for /domain/gnttab/0 virtual driver...
vbs_store_mkdir: creating backend entry for /domain/gnttab/1 virtual driver...
vbs_store_mkdir: creating backend entry for /domain/gnttab/2 virtual driver...
vbs_store_mkdir: creating backend entry for /domain/gnttab/3 virtual driver...
vbs_store_mkdir: creating backend entry for /domain/gnttab/4 virtual driver...
vbs_store_mkdir: creating backend entry for /domain/gnttab/5 virtual driver...
vbs_store_mkdir: creating backend entry for /domain/gnttab/6 virtual driver...
vbs_store_mkdir: creating backend entry for /soo virtual driver...
vbs_store_mkdir: creating backend entry for /soo/directcomm virtual driver...
vbs_store_mkdir: creating backend entry for /soo/directcomm/0 virtual driver...
vbs_store_mkdir: creating backend entry for /soo/directcomm/1 virtual driver...
vbs_store_mkdir: creating backend entry for /soo/directcomm/2 virtual driver...
vbs_store_mkdir: creating backend entry for /soo/directcomm/3 virtual driver...
vbs_store_mkdir: creating backend entry for /soo/directcomm/4 virtual driver...
vbs_store_mkdir: creating backend entry for /soo/directcomm/5 virtual driver...
vbs_store_mkdir: creating backend entry for /soo/directcomm/6 virtual driver...
vbs_store_mkdir: creating backend entry for /soo/me virtual driver...
vbs_store_mkdir: creating backend entry for /backend/vuihandler virtual driver...
vbs_store_mkdir: creating backend entry for /backend/vuart virtual driver...
vbs_store_mkdir: creating backend entry for /backend/vsenseled virtual driver...
vbs_store_mkdir: creating backend entry for /backend/vsensej virtual driver...
vbs_store_mkdir: creating backend entry for /backend/vwagoled virtual driver...
vbs_store_mkdir: creating backend entry for /backend/venocean virtual driver...
vbs_store_mkdir: creating backend entry for /backend/vknx virtual driver...
vbus_vbstore_init: done.
daniel-rossier commented 10 months ago

I was not able to reproduce on my board. Does it happen on SOO.mp v2 (with cm4)? Can you reproduce on other boards?

daniel-rossier commented 10 months ago

Can you just edit kernel/printk/printk.c and enable lprintk() like this (at line 2518):

#if 1 /* SOO.tech */
    {
        int ii;

        for (ii = 0; ii < len; ii++)
          lprintk("%c", text[ii]);
    }
#endif

.. and re-do the test