Re: Add network device to L4Linux

Matthias Lange <[email protected]>
Newsgroups gmane.comp.micro-kernel.l4.devel
Message-ID <[email protected]>
Hi Yang,

I have to admit that I don't know what's going wrong yet. Your
configuration looks reasonable. I need a little bit more time to
reproduce your issue and to analyze the problem.

Regards,
Matthias.

On 09/13/2017 01:56 PM, Yiyang Su wrote:
> Hi,
> 
> 
> Starting from a previous work [1], I have succeeded in booting L4Linux on
> 
> Cubietruck with the snapshot (l4re-snapshot-2016082114). Then I have
> 
> been trying to configure L4Linux to access Ethernet device. With current
> 
> configuration I cannot boot L4Llinux anymore. Following is my configuration
> 
> and boot log:
> 
> 
> l4lx-net-cubi.devs
> 
> ===========================================
> 
> local Res = Io.Res
> local Hw = Io.Hw
> 
> Io.hw_add_devices(function()
>     NIC = Hw.Device(function()
>         Property.hid = "sun7ia20gmac";
>         compatible = {"allwinner,sun7i-a20-gmac"};
>         Resource.regs = Res.mmio(0x01c50000, 0x01c5ffff);
>         --Resource.irq = Res.irq(0);
>         Resource.irq = Res.irq(85);
>         --Resource.irq = Res.irq(4);
>         Property.flags = Io.Hw_device_DF_dma_supported;
>     end);
> end)
> 
> 
> 
> l4lx-net-cubi.io
> 
> ===========================================
> 
> local hw = Io.system_bus()
> 
> Io.add_vbus("l4linux", Io.Vi.System_bus
> {
>     NIC = wrap(hw:match("allwinner,sun7i-a20-gmac"));
> })
> 
> 
> l4lx-net-cubi.cfg
> 
> ===========================================
> 
> local L4 = require("L4");
> 
> local loader = L4.default_loader;
> 
> vbus_l4linux = loader:new_channel();
> 
> loader:start(
>     {
>         caps = {
>             icu = L4.Env.icu,
>             sigma0 = L4.cast(L4.Proto.Factory,
> L4.Env.sigma0):create(L4.Proto.Sigma0),
>             l4linux = vbus_l4linux:svr(),      
>         },
>         log = {"IO", "y"},
>         l4re_dbg = L4.Dbg.Warn,
>     },
>     "rom/io -vvv rom/l4lx-net-cubi.devs rom/l4lx-net-cubi.io"
> );
> 
> -- start L4Linux
> loader:start(
>     {
>         caps = {
>             vbus = vbus_l4linux,
>         },
>         --log = {"l4linux", "cyan"},
>         log = L4.Env.log:m("rws"),
>         l4re_dbg = L4.Dbg.Warn,
>     },
>     "rom/vmlinuz mem=64M console=ttyLv0 earlyprintk=1
> l4x_dtb=rom/sun7i-a20-cubietruck.dtb "
>     .. "l4x_rd=rom/ramdisk-" ..  L4.Info.arch() .. ".rd "
>     .. "root=1:0 rw ramdisk_size=4000"
> );
> 
> 
> modules.list
> ============================================
> entry L4Linux-net-cubi
> roottask moe rom/l4lx-net-cubi.cfg
> module l4re
> module ned
> module io
> module sun7i-a20-cubietruck.dtb
> module l4lx-net-cubi.cfg
> module l4lx-net-cubi.devs
> module l4lx-net-cubi.io
> module vmlinuz
> module[perl] "ramdisk-$ENV{ARCH}.rd"
> 
> 
> boot log
> ===================================
> U-Boot SPL 2017.03-rc3 (Aug 14 2017 - 13:26:17)
> DRAM: 2048 MiB
> CPU: 912000000Hz, AXI/AHB/APB: 3/2/2
> Trying to boot from MMC1
> 
> 
> U-Boot 2017.03-rc3 (Aug 14 2017 - 13:26:17 +0200) Allwinner Technology
> 
> CPU:   Allwinner A20 (SUN7I)
> Model: Cubietech Cubietruck
> I2C:   ready
> DRAM:  2 GiB
> MMC:   SUNXI SD/MMC: 0
> *** Warning - bad CRC, using default environment
> 
> Setting up a 1024x768 vga console (overscan 0x0)
> In:    serial
> Out:   vga
> Err:   vga
> SCSI:  SATA link 0 timeout.
> AHCI 0001.0100 32 slots 1 ports 3 Gbps 0x1 impl SATA mode
> flags: ncq stag pm led clo only pmp pio slum part ccc apst
> Net:   eth0: ethernet@01c50000
> starting USB...
> USB0:   USB EHCI 1.00
> USB1:   USB OHCI 1.0
> USB2:   USB EHCI 1.00
> USB3:   USB OHCI 1.0
> scanning bus 0 for devices... 1 USB Device(s) found
> scanning bus 2 for devices... 1 USB Device(s) found
>        scanning usb for storage devices... 0 Storage Device(s) found
> Hit any key to stop autoboot:  0
> switch to partitions #0, OK
> mmc0 is current device
> Scanning mmc 0:1...
> Found U-Boot script /boot/boot.scr
> reading /boot/boot.scr
> 1165 bytes read in 24 ms (46.9 KiB/s)
> ## Executing script at 43100000
> Failed to mount ext2 filesystem...
> ** Unrecognized filesystem type **
> reading boot/uImage
> 10481728 bytes read in 652 ms (15.3 MiB/s)
> ## Booting kernel from Legacy Image at 48000000 ...
>    Image Name:   L4 Image #32
>    Image Type:   ARM Linux Kernel Image (uncompressed)
>    Data Size:    10481664 Bytes = 10 MiB
>    Load Address: 41000000
>    Entry Point:  41000000
>    Verifying Checksum ... OK
>    Loading Kernel Image ... OK
> 
> Starting kernel ...
> 
> 
> L4 Bootstrapper
>   Build: #32 Mi 13. Sep 11:47:18 CEST 2017, 4.9.4
>   Scanning up to 1024 MB RAM, starting at offset 32MB
>   Memory size is 1024MB (40000000 - 7fffffff)
>   RAM: 0000000040000000 - 000000007fffffff: 1048576kB
>   Total RAM: 1024MB
>   Scanning fiasco
>   Scanning sigma0
>   Scanning moe
>   Moving up to 12 modules behind 41100000
>   moving module 02 { 419cd000-419fe49b } -> { 41abd000-41aee49b } [201884]
>   moving module 01 { 419bb000-419cc337 } -> { 41aab000-41abc337 } [70456]
>   moving module 00 { 4192d000-419ba98b } -> { 41a1d000-41aaa98b } [579980]
>   moving module 11 { 4162d000-4192cfff } -> { 4171d000-41a1cfff } [3145728]
>   moving module 10 { 4122b000-4162c473 } -> { 4131b000-4171c473 } [4199540]
>   moving module 09 { 4122a000-4122a0c2 } -> { 4131a000-4131a0c2 } [195]
>   moving module 08 { 41229000-412291ef } -> { 41319000-413191ef } [496]
>   moving module 07 { 41228000-4122835d } -> { 41318000-4131835d } [862]
>   moving module 06 { 4121f000-41227d73 } -> { 4130f000-41317d73 } [36212]
>   moving module 05 { 41094000-4121e8d3 } -> { 41184000-4130e8d3 } [1616084]
>   moving module 04 { 41032000-410936a7 } -> { 41122000-411836a7 } [399016]
>   moving module 03 { 41010000-4103145f } -> { 41100000-4112145f } [136288]
>   Loading fiasco
>   Loading sigma0
>   Loading moe
>   find kernel info page...
>   found kernel info page (via ELF) at 40002000
> Regions of list 'regions'
>     [ 40000000,  400001cf] {      1d0} Root   mbi_rt
>     [ 40001000,  40001a7f] {      a80} Kern   fiasco
>     [ 40002000,  4009afff] {    99000} Kern   fiasco
>     [ 400c0000,  400ca287] {     a288} Sigma0 sigma0
>     [ 400d0000,  400d6177] {     6178} Sigma0 sigma0
>     [ 40140000,  40168fcb] {    28fcc} Root   moe
>     [ 40170000,  40176ff3] {     6ff4} Root   moe
>     [ 41000000,  4100f5cb] {     f5cc} Boot   bootstrap
>     [ 41100000,  41a1cfff] {   91d000} Root   Module
>   found kernel options (via ELF) at 40003000
>   API Version: (87) experimental
>   Sigma0 config    ip:400c0100 sp:00000000
>   Roottask config  ip:40140210 sp:00000000
>   Starting kernel fiasco at 4000124c
>   Non-HYP kernel detected but running in HYP mode, switching back.
> Hello from Startup::stage2
> Number of IRQs available at this GIC: 160
> FPU: Initialize
> FPU0: Subarch: 2, Part: 30, Rev: 4, Var: 7, Impl: 41
> ARM generic timer: freq=24000000 interval=24000 cnt=212673046
> SERIAL ESC: allocated IRQ 33 for serial uart
> Not using serial hack in slow timer handler.
> Welcome to L4/Fiasco.OC!
> L4/Fiasco.OC microkernel on arm
> Rev: unknown compiled with gcc 4.9.4 for Allwinner A20    []
> Build: #4 Mon Sep 11 10:25:38 CEST 2017
> 
> Calibrating timer loop... done.
> MDB: use page size: 20
> MDB: use page size: 12
> SIGMA0: Hello!
>   KIP @ 40002000
>   allocated 4KB for maintenance structures
> SIGMA0: Dump of all resource maps
> RAM:------------------------
> [4:40000000;40000fff]
> [0:4009b000;400bffff]
> [0:400cb000;400cffff]
> [0:400d7000;4013ffff]
> [4:40140000;40168fff]
> [0:40169000;4016ffff]
> [4:40170000;40176fff]
> [0:40177000;410fffff]
> [4:41100000;41a1cfff]
> [0:41a1d000;7effffff]
> IOMEM:----------------------
> [0:0;3fffffff]
> [0:80000000;ffffffff]
> MOE: Hello world
> MOE: found 1021976 KByte free memory
> MOE: found RAM from 40000000 to 7f000000
> MOE: allocated 1008 KByte for the page array @0x40177000
> MOE: virtual user address space [0-bfffffff]
> MOE: rom name space cap -> [C:103000]
>   BOOTFS: [41100000-41121460] [C:105000] l4re
>   BOOTFS: [41122000-411836a8] [C:107000] ned
>   BOOTFS: [41184000-4130e8d4] [C:109000] io
>   BOOTFS: [4130f000-41317d74] [C:10b000] sun7i-a20-cubietruck.dtb
>   BOOTFS: [41318000-4131835e] [C:10d000] l4lx-net-cubi.cfg
>   BOOTFS: [41319000-413191f0] [C:10f000] l4lx-net-cubi.devs
>   BOOTFS: [4131a000-4131a0c3] [C:111000] l4lx-net-cubi.io
>   BOOTFS: [4131b000-4171c474] [C:113000] vmlinuz
>   BOOTFS: [4171d000-41a1d000] [C:115000] ramdisk-arm.rd
> MOE: cmdline: moe rom/l4lx-net-cubi.cfg
> MOE: Starting: rom/ned rom/l4lx-net-cubi.cfg
> MOE: loading 'rom/ned'
> Ned says: Hi World!
> Ned: loading file: 'rom/l4lx-net-cubi.cfg'
> IO      | Io service
> IO      | Verboseness level: 4
> IO      | unused physical memory space:
> IO      |   [00000000000000-0000003fffffff]
> IO      |   [00000080000000-000000ffffffff]
> IO      | no 'iommu' capability found use CPU-phys for DMA
> IO      | Loading: config 'rom/l4lx-net-cubi.devs'
> IO      | warning: inconsistent fixed resource @ device: /System Bus/
> IO      |   : hid=sun7ia20gmac
> IO      |   DMADOM  [00000000000000-00000000000000 1] non-pref (32bit)
> (align=0 flags=6)
> IO      | Loading: config 'rom/l4lx-net-cubi.io'
> IO      | Real Hardware -----------------------------------
> IO      | System Bus: hid=
> IO      |   Resources: ==== start ====
> IO      |   DMADOM  [00000000000000-00000000000000 1] non-pref (32bit)
> (align=0 flags=6)
> IO      |   Resources: ===== end =====
> IO      |   NIC: hid=sun7ia20gmac
> IO      |     Clients: ===== start ====
> IO      |       NIC: [N2Vi9Proxy_devE]
> IO      |     Clients: ===== end ====
> IO      |     Resources: ==== start ====
> IO      |     IRQ     [00000000000055-00000000000055 1] none (32bit)
> (align=0 flags=1)
> IO      |     IOMEM   [00000001c50000-00000001c5ffff 10000] non-pref
> (32bit) (align=ffff flags=2)
> IO      |     DMADOM  [00000000000000-00000000000000 1] non-pref (32bit)
> (align=0 flags=6)
> IO      |     Resources: ===== end =====
> IO      | warning: could not register control interface at cap
> 'platform_ctl'
> IO      | Ready. Waiting for request.
> PH  0 offs=00010000 flags=rwx PH-type=0x1
>       virt=02000000 evirt=0245b5dc
>       phys=02000000 ephys=0245b5dc
>       f_sz=003d3653 memsz=0045b5dc
> PH  1 offs=00394898 flags=r-x PH-type=0x4
>       virt=02384898 evirt=023848bc
>       phys=02384898 ephys=023848bc
>       f_sz=00000024 memsz=00000024
> PH  2 offs=00000000 flags=rwx PH-type=0x6474e551
>       virt=00000000 evirt=00000000
>       phys=00000000 ephys=00000000
>       f_sz=00000000 memsz=00000000
> Starting binary at 0x2000330, argc=9 argv=0xafff4f84 *argv=0xb1007ff4
> argv0=rom/vmlinuz
> External resolver is at 0xa80007cc
> ======> L4Linux starting... <========
> Linux version 4.7.0-l4 (yiyang@i85217) (gcc version 4.9.4 (Linaro GCC
> 4.9-2017.01) ) #4 Wed Sep 13 11:18:30 CEST 2017
> Binary name: rom/vmlinuz
>    This is an AEABI build.
> Linux kernel command line (8 args): mem=64M console=ttyLv0 earlyprintk=1
> l4x_dtb=rom/sun7i-a20-cubietruck.dtb l4x_rd=rom/ramdisk-arm.rd root=1:0
> rw ramdisk_size=4000
> CPU mapping (l:p)[1]: 0:0
> Image: 02000000 - 02600000 [6144 KiB].
> Areas: Text:     02000000 - 023848bc [3602kB]
>        RO-Data:  022ad000 - 02370000 [780kB]
>        Data:     023ac000 - 023cefe0 [139kB]
>        Init:     02385000 - 023ac000 [156kB]
>        BSS:      023d3653 - 0245b5dc [543kB]
> Device scan:
>   Device: L4ICU
>   Device: NIC
>     IRQ: 00000055 - 00000055
>     MEM: 01c50000 - 01c5ffff
>     DMAD: 00000000 - 00000000
> Device scan done.
> l4lx_thread_create: Created thread 41e (cpu0) (u:b3000e00, v:b3000c00,
> sp:023adfa4)
> main thread will be 41e
> L4x: section-with-init(-data): Virt: 0x2000000 to 0x245bfff [4464 KiB]
> section-with-init(-data): Phys: 0x40273000 to 0x406cefff, [4464 KiB]
> L4x: section-with-init-text: Virt: 0x2000000 to 0x245bfff [4464 KiB]
> error: failed to get physical address for 2000000.
> L4x: Main thread running, waiting...
> L4x: Memory size: 64MB
> L4x: Setting superpages for main memory
> L4x: Adjusted memory start: 02000000
> L4x:     Main memory: Virt: 0x2600000 to 0x65fffff [65536 KiB]
>     Main memory: Phys: 0x41c00000 to 0x45bfffff, [65536 KiB]
> l4x: vmalloc area: 06600000 - 0e600000
> L4x:            text: Virt: 0x2000000 to 0x245bfff [4464 KiB]
> error: failed to get physical address for 2000000.
> 
> 
> The boot process stops at this point. Compare with other boot logs in
> archives the following step could
> be the loading ramdisk and device tree blob. Then I delete the
> "l4x_dtb=rom/sun7i-a20-cubietruck.dtb"
> from the cmdline, it can boot the L4Linux again. Does it mean there is a
> problem with loading the device tree blob?
> 
> Any suggestion is very appreciated. Thanks.
> 
> Best regards,
> Yang
> 
> 
> [1] http://os.inf.tu-dresden.de/pipermail/l4-hackers/2017/008120.html
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.