Hi, On Wed Sep 27, 2017 at 17:13:10 +0000, Yiyang Su wrote: > I created a new device tree based on the simple.dts file and the L4Linux > could be booted. > > But there is no progress with adding network device. > > > One problem is hwirq is too large for L4-icu such as: > > WARNING: CPU: 0 PID: 6 at > /home/yiyang/Workplace/Microkernel/l4re/src/l4linux/kernel/irq/irqdomain.c:342 > irq_domain_associate+0x13c/0x1c8 > error: hwirq 0x75 is too large for L4-icu
This typically indicates that the io configuration does not list that device because the largest interrupt number listed there is smaller than 0x75 (= 85 + 32). Might that be the case? > Modules linked in: > CPU: 0 PID: 6 Comm: kworker/u2:0 Tainted: G W 4.7.0-l4 #9 > Hardware name: L4Linux (DT) > > Another problem is: sun7i-dwmac 1c50000.ethernet: could not get tx clock > This problem may be explained by the comment in > l4linux/arch/arm/boot/dts/sun7i-a20.dtsi line 611 such as: > """ > The following two are dummy clocks, placeholders used in the gmac_tx clock. > The gmac driver will choose one parent > depending on the PHY interface mode, using clk_set_rate auto-reparenting. > The actual TX clock rate is not controlled > by the gmac_tx clock. > """ > Any suggestion is very appreciated. Same as indicated in the other mail. By any chance does the way via u-boot work? Adam > > > ---------- new dts file start ----------- > > /* > * Basic DT for L4Linux. > */ > > /dts-v1/; > > / { > interrupt-parent = <&intc>; > > model = "L4Linux (DT)"; > compatible = "L4Linux"; > > #address-cells = <1>; > #size-cells = <1>; > chosen { }; > aliases { > ethernet0 = &gmac; > }; > > intc: l4icu { > compatible = "l4,icu"; > interrupt-controller; > /* type can be 'gic' or 'single' currently */ > l4icu-type = "gic"; > #interrupt-cells = <3>; > /* > l4icu-type = "single"; > #interrupt-cells = <1>; > */ > }; > > clocks { > #address-cells = <1>; > #size-cells = <1>; > ranges; > > osc24M: clk@01c20050 { > #clock-cells = <0>; > compatible = "allwinner,sun4i-a10-osc-clk"; > reg = <0x01c20050 0x4>; > clock-frequency = <24000000>; > clock-output-names = "osc24M"; > }; > > osc32k: clk@0 { > #clock-cells = <0>; > compatible = "fixed-clock"; > clock-frequency = <32768>; > clock-output-names = "osc32k"; > }; > > pll1: clk@01c20000 { > #clock-cells = <0>; > compatible = "allwinner,sun4i-a10-pll1-clk"; > reg = <0x01c20000 0x4>; > clocks = <&osc24M>; > clock-output-names = "pll1"; > }; > > pll6: clk@01c20028 { > #clock-cells = <1>; > compatible = "allwinner,sun4i-a10-pll6-clk"; > reg = <0x01c20028 0x4>; > clocks = <&osc24M>; > clock-output-names = "pll6_sata", "pll6_other", "pll6", > "pll6_div_4"; > }; > > cpu: cpu@01c20054 { > #clock-cells = <0>; > compatible = "allwinner,sun4i-a10-cpu-clk"; > reg = <0x01c20054 0x4>; > clocks = <&osc32k>, <&osc24M>, <&pll1>, <&pll6 1>; > clock-output-names = "cpu"; > }; > > axi: axi@01c20054 { > #clock-cells = <0>; > compatible = "allwinner,sun4i-a10-axi-clk"; > reg = <0x01c20054 0x4>; > clocks = <&cpu>; > clock-output-names = "axi"; > }; > > ahb: ahb@01c20054 { > #clock-cells = <0>; > compatible = "allwinner,sun5i-a13-ahb-clk"; > reg = <0x01c20054 0x4>; > clocks = <&axi>, <&pll6 3>, <&pll6 1>; > clock-output-names = "ahb"; > /* > * Use PLL6 as parent, instead of CPU/AXI > * which has rate changes due to cpufreq > */ > assigned-clocks = <&ahb>; > assigned-clock-parents = <&pll6 3>; > }; > > ahb_gates: clk@01c20060 { > #clock-cells = <1>; > compatible = "allwinner,sun7i-a20-ahb-gates-clk"; > reg = <0x01c20060 0x8>; > clocks = <&ahb>; > clock-indices = <0>, <1>, > <2>, <3>, <4>, > <5>, <6>, <7>, <8>, > <9>, <10>, <11>, <12>, > <13>, <14>, <16>, > <17>, <18>, <20>, <21>, > <22>, <23>, <25>, > <28>, <32>, <33>, <34>, > <35>, <36>, <37>, <40>, > <41>, <42>, <43>, > <44>, <45>, <46>, > <47>, <49>, <50>, > <52>; > clock-output-names = "ahb_usb0", "ahb_ehci0", > "ahb_ohci0", "ahb_ehci1", "ahb_ohci1", > "ahb_ss", "ahb_dma", "ahb_bist", "ahb_mmc0", > "ahb_mmc1", "ahb_mmc2", "ahb_mmc3", "ahb_ms", > "ahb_nand", "ahb_sdram", "ahb_ace", > "ahb_emac", "ahb_ts", "ahb_spi0", "ahb_spi1", > "ahb_spi2", "ahb_spi3", "ahb_sata", > "ahb_hstimer", "ahb_ve", "ahb_tvd", "ahb_tve0", > "ahb_tve1", "ahb_lcd0", "ahb_lcd1", "ahb_csi0", > "ahb_csi1", "ahb_hdmi1", "ahb_hdmi0", > "ahb_de_be0", "ahb_de_be1", "ahb_de_fe0", > "ahb_de_fe1", "ahb_gmac", "ahb_mp", > "ahb_mali"; > }; > > apb0: apb0@01c20054 { > #clock-cells = <0>; > compatible = "allwinner,sun4i-a10-apb0-clk"; > reg = <0x01c20054 0x4>; > clocks = <&ahb>; > clock-output-names = "apb0"; > }; > > apb0_gates: clk@01c20068 { > #clock-cells = <1>; > compatible = "allwinner,sun7i-a20-apb0-gates-clk"; > reg = <0x01c20068 0x4>; > clocks = <&apb0>; > clock-indices = <0>, <1>, > <2>, <3>, <4>, > <5>, <6>, <7>, > <8>, <10>; > clock-output-names = "apb0_codec", "apb0_spdif", > "apb0_ac97", "apb0_iis0", "apb0_iis1", > "apb0_pio", "apb0_ir0", "apb0_ir1", > "apb0_iis2", "apb0_keypad"; > }; > > /* > * The following two are dummy clocks, placeholders > * used in the gmac_tx clock. The gmac driver will > * choose one parent depending on the PHY interface > * mode, using clk_set_rate auto-reparenting. > * > * The actual TX clock rate is not controlled by the > * gmac_tx clock. > */ > mii_phy_tx_clk: clk@2 { > #clock-cells = <0>; > compatible = "fixed-clock"; > clock-frequency = <25000000>; > clock-output-names = "mii_phy_tx"; > }; > > gmac_int_tx_clk: clk@3 { > #clock-cells = <0>; > compatible = "fixed-clock"; > clock-frequency = <125000000>; > clock-output-names = "gmac_int_tx"; > }; > > gmac_tx_clk: clk@01c20164 { > #clock-cells = <0>; > compatible = "allwinner,sun7i-a20-gmac-clk"; > reg = <0x01c20164 0x4>; > clocks = <&mii_phy_tx_clk>, <&gmac_int_tx_clk>; > clock-output-names = "gmac_tx"; > }; > }; > > soc@01c00000 { > compatible = "simple-bus"; > #address-cells = <1>; > #size-cells = <1>; > ranges; > > pio: pinctrl@01c20800 { > compatible = "allwinner,sun7i-a20-pinctrl"; > reg = <0x01c20800 0x400>; > > /** > * l4linux/include/dt-bindings/interrupt-controller/arm-gic.h > * #define GIC_SPI 0 > * l4linux/include/dt-bindings/interrupt-controller/irq.h > * #define IRQ_TYPE_LEVEL_HIGH 4 > */ > //interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>; > interrupts = <0 28 4>; > > clocks = <&apb0_gates 5>; > gpio-controller; > interrupt-controller; > #interrupt-cells = <3>; > #gpio-cells = <3>; > > gmac_pins_rgmii_a: gmac_rgmii@0 { > allwinner,pins = "PA0", "PA1", "PA2", > "PA3", "PA4", "PA5", "PA6", > "PA7", "PA8", "PA10", > "PA11", "PA12", "PA13", > "PA15", "PA16"; > allwinner,function = "gmac"; > /* > * data lines in RGMII mode use DDR mode > * and need a higher signal drive strength > */ > > /** > * l4linux/include/dt-bindings/pinctrl/sun4i-a10.h > * #define SUN4I_PINCTRL_40_MA 3 > * #define SUN4I_PINCTRL_NO_PULL 0 > */ > //allwinner,drive = <SUN4I_PINCTRL_40_MA>; > //allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; > allwinner,drive = <3>; > allwinner,pull = <0>; > }; > }; > > gmac: ethernet@01c50000 { > compatible = "allwinner,sun7i-a20-gmac"; > reg = <0x01c50000 0x10000>; > > /** > * l4linux/include/dt-bindings/interrupt-controller/arm-gic.h > * #define GIC_SPI 0 > * l4linux/include/dt-bindings/interrupt-controller/irq.h > * #define IRQ_TYPE_LEVEL_HIGH 4 > */ > //interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>; > interrupts = <0 85 4>; > interrupt-names = "macirq"; > clocks = <&ahb_gates 49>, <&gmac_tx_clk>; > clock-names = "stmmaceth", "allwinner_gmac_tx"; > snps,pbl = <2>; > snps,fixed-burst; > snps,force_sf_dma_mode; > #address-cells = <1>; > #size-cells = <0>; > > /** > * following refer to sun7i-a20-cubietruck.dts at &gmac > */ > pinctrl-names = "default"; > pinctrl-0 = <&gmac_pins_rgmii_a>; > phy = <&phy1>; > phy-mode = "rgmii"; > status = "okay"; > > phy1: ethernet-phy@1 { > reg = <1>; > }; > }; > }; > }; > > > ---------- new dts file end ----------- > > > ---------- boot log start ---------- > > L4 Bootstrapper > Build: #23 Mi 27. Sep 18:01:17 CEST 2017, 5.4.1 20170404 > 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 { 41a1b000-41a4c4ab } -> { 41b0b000-41b3c4ab } [201900] > moving module 01 { 41a09000-41a1a33f } -> { 41af9000-41b0a33f } [70464] > moving module 00 { 41986000-41a08b9b } -> { 41a76000-41af8b9b } [535452] > moving module 11 { 41686000-41985fff } -> { 41776000-41a75fff } [3145728] > moving module 10 { 41244000-41685487 } -> { 41334000-41775487 } [4461704] > moving module 09 { 41243000-412430fa } -> { 41333000-413330fa } [251] > moving module 08 { 41242000-41242363 } -> { 41332000-41332363 } [868] > moving module 07 { 41241000-4124139d } -> { 41331000-4133139d } [926] > moving module 06 { 4123f000-4124023d } -> { 4132f000-4133023d } [4670] > moving module 05 { 41094000-4123e8e7 } -> { 41184000-4132e8e7 } [1747176] > moving module 04 { 41032000-410936b3 } -> { 41122000-411836b3 } [399028] > moving module 03 { 41010000-4103146f } -> { 41100000-4112146f } [136304] > Loading fiasco > Loading sigma0 > Loading moe > find kernel info page... > found kernel info page (via ELF) at 40002000 > Regions of list 'regions' > [ 40000000, 400001c3] { 1c4} Root mbi_rt > [ 40001000, 40001a7f] { a80} Kern fiasco > [ 40002000, 40092fff] { 91000} Kern fiasco > [ 400c0000, 400ca3e7] { a3e8} Sigma0 sigma0 > [ 400d0000, 400d6177] { 6178} Sigma0 sigma0 > [ 40140000, 4016eb7b] { 2eb7c} Root moe > [ 40170000, 4017661b] { 661c} Root moe > [ 41000000, 4100f5cb] { f5cc} Boot bootstrap > [ 41100000, 41a75fff] { 976000} 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 400011bc > 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=213224466 > 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 5.4.1 20170404 for Allwinner A20 [] > Build: #5 Thu Sep 21 16:27:20 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:40093000;400bffff] > [0:400cb000;400cffff] > [0:400d7000;4013ffff] > [4:40140000;4016efff] > [0:4016f000;4016ffff] > [4:40170000;40176fff] > [0:40177000;410fffff] > [4:41100000;41a75fff] > [0:41a76000;7effffff] > IOMEM:---------------------- > [0:0;3fffffff] > [0:80000000;ffffffff] > mmap() called: unimplemented! > MOE: Hello world > MOE: found 1021628 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-41121470] [C:105000] l4re > BOOTFS: [41122000-411836b4] [C:107000] ned > BOOTFS: [41184000-4132e8e8] [C:109000] io > BOOTFS: [4132f000-4133023e] [C:10b000] cubietruck.dtb > BOOTFS: [41331000-4133139e] [C:10d000] l4lx-net-cubi.cfg > BOOTFS: [41332000-41332364] [C:10f000] l4lx-net-cubi.devs > BOOTFS: [41333000-413330fb] [C:111000] l4lx-net-cubi.io > BOOTFS: [41334000-41775488] [C:113000] vmlinuz > BOOTFS: [41776000-41a76000] [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 | IOMEM [00000001c50000-00000001c5ffff 10000] non-pref (32bit) > (align=ffff flags=2) > IO | IRQ [00000000000000-00000000000000 1] none (32bit) (align=0 > flags=1) > IO | IRQ [00000000000055-00000000000055 1] none (32bit) (align=0 > flags=1) > IO | IRQ [00000000000004-00000000000004 1] none (32bit) (align=0 > flags=1) > 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=0249973c > phys=02000000 ephys=0249973c > f_sz=00410653 memsz=0049973c > PH 1 offs=003cec78 flags=r-x PH-type=0x4 > virt=023bec78 evirt=023bec9c > phys=023bec78 ephys=023bec9c > 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=10 argv=0xafff4f7c *argv=0xb1007ff4 > argv0=rom/vmlinuz > External resolver is at 0xa80007f0 > ======> L4Linux starting... <======== > Linux version 4.7.0-l4 (yiyang@i85217) (gcc version 5.4.1 20170404 (Linaro > GCC 5.4-2017.05) ) #9 Thu Sep 21 16:20:48 CEST 2017 > Binary name: rom/vmlinuz > This is an AEABI build. > Linux kernel command line (9 args): mem=64M console=ttyLv0 earlyprintk=1 > l4x_rd=rom/ramdisk-arm.rd root=1:0 rw ramdisk_size=4000 > l4x_dtb=rom/cubietruck.dtb > ip=192.168.0.16::192.168.0.1:255.255.255.0:l4box:eth0:on > CPU mapping (l:p)[1]: 0:0 > Image: 02000000 - 02600000 [6144 KiB]. > Areas: Text: 02000000 - 023bec9c [3835kB] > RO-Data: 022ce000 - 023a9000 [876kB] > Data: 023e8000 - 0240bd80 [143kB] > Init: 023bf000 - 023e8000 [164kB] > BSS: 02410653 - 0249973c [548kB] > Device scan: > Device: L4ICU > Device: NIC > MEM: 01c50000 - 01c5ffff > IRQ: 00000000 - 00000000 > IRQ: 00000055 - 00000055 > IRQ: 00000004 - 00000004 > DMAD: 00000000 - 00000000 > Device scan done. > l4lx_thread_create: Created thread 41e (cpu0) (u:b3000e00, v:b3000c00, > sp:023e9fa4) > main thread will be 41e > L4x: section-with-init(-data): Virt: 0x2000000 to 0x2499fff [4712 KiB] > section-with-init(-data): Phys: 0x40273000 to 0x4070cfff, [4712 KiB] > L4x: section-with-init-text: Virt: 0x2000000 to 0x2499fff [4712 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 0x2499fff [4712 KiB] > error: failed to get physical address for 2000000. > Booting Linux on physical CPU 0x0 > Linux version 4.7.0-l4 (yiyang@i85217) (gcc version 5.4.1 20170404 (Linaro > GCC 5.4-2017.05) ) #9 Thu Sep 21 16:20:48 CEST 2017 > DTB: virt=02600100 phys=41c00100 > CPU: Fiasco [410fc074] revision 4 (ARMv7), cr=00400000 > CPU: div instructions available: patching division code > CPU: PIPT / VIPT nonaliasing data cache, VIPT nonaliasing instruction cache > Machine model: L4Linux (DT) > bootconsole [earlykdb0] enabled > Memory policy: Data cache writealloc > CPU: All CPU(s) started in SVC mode. > Loading: rom/ramdisk-arm.rd > INITRD: Size of RAMdisk is 3072KiB > INITRD: 00002000 - 00302000 > RAMdisk from 00002000 to 00302000 [3072KiB] > Built 1 zonelists in Zone order, mobility grouping on. Total pages: 17717 > Kernel command line: mem=64M console=ttyLv0 earlyprintk=1 > l4x_rd=rom/ramdisk-arm.rd root=1:0 rw ramdisk_size=4000 > l4x_dtb=rom/cubietruck.dtb > ip=192.168.0.16::192.168.0.1:255.255.255.0:l4box:eth0:on > PID hash table entries: 512 (order: -1, 2048 bytes) > Dentry cache hash table entries: 16384 (order: 4, 65536 bytes) > Inode-cache hash table entries: 8192 (order: 3, 32768 bytes) > Memory: 64752K/71684K available (2959K kernel code, 143K rwdata, 876K rodata, > 164K init, 548K bss, 6932K reserved, 0K cma-reserved) > Virtual kernel memory layout: > vector : 0xbffff000 - 0xc0000000 ( 4 kB) > fixmap : 0xffc00000 - 0xfff00000 (3072 kB) > vmalloc : 0x06600000 - 0x0e600000 ( 128 MB) > lowmem : 0x00000000 - 0x06600000 ( 102 MB) > modules : 0x01010000 - 0x02000000 ( 15 MB) > .text : 0x02000000 - 0x023bec9c (3836 kB) > .init : 0x023bf000 - 0x023e8000 ( 164 kB) > .data : 0x023e8000 - 0x0240bd80 ( 144 kB) > .bss : 0x02410653 - 0x0249973c ( 549 kB) > NR_IRQS:282 > clocksource: l4kipclk: mask: 0xffffffffffffffff max_cycles: 0x1d854df40, > max_idle_ns: 3526361616960 ns > l4timer: Using IRQ210 > l4lx_thread_create: Created thread 423 (timer0) (u:b3000a00, v:00000000, > sp:02431fa0) > sched_clock: 64 bits at 1000kHz, resolution 1000ns, wraps every > 2199023255500ns > Console: colour dummy device 80x30 > console [ttyLv0] enabled > console [ttyLv0] enabled > bootconsole [earlykdb0] disabled > bootconsole [earlykdb0] disabled > Calibrating delay loop... 1810.43 BogoMIPS (lpj=9052160) > pid_max: default: 32768 minimum: 301 > Mount-cache hash table entries: 1024 (order: 0, 4096 bytes) > Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes) > CPU: Testing write buffer coherency: ok > Setting up static identity map for 0x2000000 - 0x2000000 > VFP support v0.3: implementor 41 architecture 2 part 30 variant 7 rev 4 > clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: > 19112604462750000 ns > NET: Registered protocol family 16 > DMA: preallocated 256 KiB pool for atomic coherent allocations > L4IRQ: set irq type of 60 to 4 > ------------[ cut here ]------------ > WARNING: CPU: 0 PID: 1 at > /home/yiyang/Workplace/Microkernel/l4re/src/l4linux/kernel/irq/irqdomain.c:342 > irq_domain_associate+0x13c/0x1c8 > error: hwirq 0x75 is too large for L4-icu > Modules linked in: > CPU: 0 PID: 1 Comm: swapper Not tainted 4.7.0-l4 #9 > Hardware name: L4Linux (DT) > [<0200d5bc>] (unwind_backtrace) from [<02005a54>] (show_stack+0x10/0x14) > [<02005a54>] (show_stack) from [<0201f8f4>] (__warn+0xe4/0xfc) > [<0201f8f4>] (__warn) from [<0201f944>] (warn_slowpath_fmt+0x38/0x48) > [<0201f944>] (warn_slowpath_fmt) from [<0204eca8>] > (irq_domain_associate+0x13c/0x1c8) > [<0204eca8>] (irq_domain_associate) from [<0204f260>] > (irq_create_mapping+0x60/0xc4) > [<0204f260>] (irq_create_mapping) from [<0204f3a0>] > (irq_create_fwspec_mapping+0xdc/0x17c) > [<0204f3a0>] (irq_create_fwspec_mapping) from [<0204f494>] > (irq_create_of_mapping+0x54/0x5c) > [<0204f494>] (irq_create_of_mapping) from [<0221b320>] > (irq_of_parse_and_map+0x24/0x2c) > [<0221b320>] (irq_of_parse_and_map) from [<0221b340>] > (of_irq_to_resource+0x18/0xbc) > [<0221b340>] (of_irq_to_resource) from [<0221b420>] > (of_irq_to_resource_table+0x3c/0x54) > [<0221b420>] (of_irq_to_resource_table) from [<02219104>] > (of_device_alloc+0xf8/0x168) > [<02219104>] (of_device_alloc) from [<022191cc>] > (of_platform_device_create_pdata+0x58/0xdc) > [<022191cc>] (of_platform_device_create_pdata) from [<02219348>] > (of_platform_bus_create+0xec/0x378) > [<02219348>] (of_platform_bus_create) from [<022193a4>] > (of_platform_bus_create+0x148/0x378) > [<022193a4>] (of_platform_bus_create) from [<02219704>] > (of_platform_populate+0x5c/0xc0) > [<02219704>] (of_platform_populate) from [<023c340c>] > (customize_machine+0x20/0x40) > [<023c340c>] (customize_machine) from [<02000494>] > (do_one_initcall+0x44/0x174) > [<02000494>] (do_one_initcall) from [<023bf9f8>] > (kernel_init_freeable+0x130/0x1c0) > [<023bf9f8>] (kernel_init_freeable) from [<022c6684>] (kernel_init+0xc/0xec) > [<022c6684>] (kernel_init) from [<020080c0>] (ret_from_fork+0x14/0x20) > [<020080c0>] (ret_from_fork) from [<00000000>] ( (null)) > ---[ end trace 3e08f811161fcc2c ]--- > Failed to create "l4x" debugfs directory: 1 > pps_core: LinuxPPS API ver. 1 registered > pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti > <giome...@linux.it> > PTP clock support registered > l4vbus: is running > L4IRQ: set irq type of 212 to 1 > l4vbus-root :l4vbus-root:0: added vbus root driver > clocksource: Switched to clocksource l4kipclk > NET: Registered protocol family 2 > TCP established hash table entries: 1024 (order: 0, 4096 bytes) > TCP bind hash table entries: 1024 (order: 0, 4096 bytes) > TCP: Hash tables configured (established 1024 bind 1024) > UDP hash table entries: 256 (order: 0, 4096 bytes) > UDP-Lite hash table entries: 256 (order: 0, 4096 bytes) > NET: Registered protocol family 1 > Trying to unpack rootfs image as initramfs... > rootfs image is not initramfs (junk in compressed archive); looks like an > initrd > INITRD: Freeing memory. > l4x: Checks passed. > NetWinder Floating Point Emulator V0.97 (double precision) > futex hash table entries: 256 (order: -1, 3072 bytes) > workingset: timestamp_bits=29 max_order=14 bucket_order=0 > io scheduler noop registered > io scheduler deadline registered > io scheduler cfq registered (default) > l4fb.0: looking for capability 'fb' as goos session > l4fb.0: init failed err=-2 > could not allocate fb device: fb > L4 serial driver > serial-ttyLv.0: ttyLv0 at MMIO 0x1 (irq = 211, base_baud = 230400) is a > L4-vcon > l4ser_shm: L4 shared mem serial driver > l4cdds: No name given, not starting. > brd: module loaded > l4bdds: No name given, not starting. > ------------[ cut here ]------------ > WARNING: CPU: 0 PID: 1 at > /home/yiyang/Workplace/Microkernel/l4re/src/l4linux/kernel/irq/irqdomain.c:342 > irq_domain_associate+0x13c/0x1c8 > error: hwirq 0x75 is too large for L4-icu > Modules linked in: > CPU: 0 PID: 1 Comm: swapper Tainted: G W 4.7.0-l4 #9 > Hardware name: L4Linux (DT) > [<0200d5bc>] (unwind_backtrace) from [<02005a54>] (show_stack+0x10/0x14) > [<02005a54>] (show_stack) from [<0201f8f4>] (__warn+0xe4/0xfc) > [<0201f8f4>] (__warn) from [<0201f944>] (warn_slowpath_fmt+0x38/0x48) > [<0201f944>] (warn_slowpath_fmt) from [<0204eca8>] > (irq_domain_associate+0x13c/0x1c8) > [<0204eca8>] (irq_domain_associate) from [<0204f260>] > (irq_create_mapping+0x60/0xc4) > [<0204f260>] (irq_create_mapping) from [<0204f3a0>] > (irq_create_fwspec_mapping+0xdc/0x17c) > [<0204f3a0>] (irq_create_fwspec_mapping) from [<0204f494>] > (irq_create_of_mapping+0x54/0x5c) > [<0204f494>] (irq_create_of_mapping) from [<0221b490>] (of_irq_get+0x58/0x68) > [<0221b490>] (of_irq_get) from [<021ddc98>] > (platform_get_irq_byname+0x1c/0x58) > [<021ddc98>] (platform_get_irq_byname) from [<022007b4>] > (stmmac_get_platform_resources+0x28/0xdc) > [<022007b4>] (stmmac_get_platform_resources) from [<022009ec>] > (sun7i_gmac_probe+0x14/0x138) > [<022009ec>] (sun7i_gmac_probe) from [<021dd884>] > (platform_drv_probe+0x4c/0xb0) > [<021dd884>] (platform_drv_probe) from [<021dc0ac>] > (driver_probe_device+0x224/0x2b4) > [<021dc0ac>] (driver_probe_device) from [<021dc1f4>] > (__driver_attach+0xb8/0xbc) > [<021dc1f4>] (__driver_attach) from [<021da3f0>] (bus_for_each_dev+0x68/0x9c) > [<021da3f0>] (bus_for_each_dev) from [<021db534>] (bus_add_driver+0x1a0/0x218) > [<021db534>] (bus_add_driver) from [<021dc8e8>] (driver_register+0x78/0xf8) > [<021dc8e8>] (driver_register) from [<02000494>] (do_one_initcall+0x44/0x174) > [<02000494>] (do_one_initcall) from [<023bf9f8>] > (kernel_init_freeable+0x130/0x1c0) > [<023bf9f8>] (kernel_init_freeable) from [<022c6684>] (kernel_init+0xc/0xec) > [<022c6684>] (kernel_init) from [<020080c0>] (ret_from_fork+0x14/0x20) > [<020080c0>] (ret_from_fork) from [<00000000>] ( (null)) > ---[ end trace 3e08f811161fcc2d ]--- > IO | new iomem region: p=1c00000 v=400000 s=400000 (bmb=0x27628) > __l4x_ioremap: Mapping physaddr 01c50000 [0x10000 Bytes, 01c50000+010000] to > 00002000+000000 > sun7i-dwmac 1c50000.ethernet: could not get tx clock > mousedev: PS/2 mouse device common for all mice > NET: Registered protocol family 17 > ------------[ cut here ]------------ > WARNING: CPU: 0 PID: 6 at > /home/yiyang/Workplace/Microkernel/l4re/src/l4linux/kernel/irq/irqdomain.c:342 > irq_domain_associate+0x13c/0x1c8 > error: hwirq 0x75 is too large for L4-icu > Modules linked in: > CPU: 0 PID: 6 Comm: kworker/u2:0 Tainted: G W 4.7.0-l4 #9 > Hardware name: L4Linux (DT) > Workqueue: deferwq deferred_probe_work_func > [<0200d5bc>] (unwind_backtrace) from [<02005a54>] (show_stack+0x10/0x14) > [<02005a54>] (show_stack) from [<0201f8f4>] (__warn+0xe4/0xfc) > [<0201f8f4>] (__warn) from [<0201f944>] (warn_slowpath_fmt+0x38/0x48) > [<0201f944>] (warn_slowpath_fmt) from [<0204eca8>] > (irq_domain_associate+0x13c/0x1c8) > [<0204eca8>] (irq_domain_associate) from [<0204f260>] > (irq_create_mapping+0x60/0xc4) > [<0204f260>] (irq_create_mapping) from [<0204f3a0>] > (irq_create_fwspec_mapping+0xdc/0x17c) > [<0204f3a0>] (irq_create_fwspec_mapping) from [<0204f494>] > (irq_create_of_mapping+0x54/0x5c) > [<0204f494>] (irq_create_of_mapping) from [<0221b490>] (of_irq_get+0x58/0x68) > [<0221b490>] (of_irq_get) from [<021ddc98>] > (platform_get_irq_byname+0x1c/0x58) > [<021ddc98>] (platform_get_irq_byname) from [<022007b4>] > (stmmac_get_platform_resources+0x28/0xdc) > [<022007b4>] (stmmac_get_platform_resources) from [<022009ec>] > (sun7i_gmac_probe+0x14/0x138) > [<022009ec>] (sun7i_gmac_probe) from [<021dd884>] > (platform_drv_probe+0x4c/0xb0) > [<021dd884>] (platform_drv_probe) from [<021dc0ac>] > (driver_probe_device+0x224/0x2b4) > [<021dc0ac>] (driver_probe_device) from [<021da498>] > (bus_for_each_drv+0x60/0x94) > [<021da498>] (bus_for_each_drv) from [<021dbda8>] (__device_attach+0xb0/0x114) > [<021dbda8>] (__device_attach) from [<021db288>] (bus_probe_device+0x84/0x8c) > [<021db288>] (bus_probe_device) from [<021db718>] > (deferred_probe_work_func+0x68/0x94) > [<021db718>] (deferred_probe_work_func) from [<02031a64>] > (process_one_work+0x11c/0x3dc) > [<02031a64>] (process_one_work) from [<02031d5c>] (worker_thread+0x38/0x548) > [<02031d5c>] (worker_thread) from [<02036934>] (kthread+0xd4/0xec) > [<02036934>] (kthread) from [<020080c0>] (ret_from_fork+0x14/0x20) > [<020080c0>] (ret_from_fork) from [<00000000>] ( (null)) > ---[ end trace 3e08f811161fcc2f ]--- > __l4x_ioremap: Mapping physaddr 01c50000 [0x10000 Bytes, 01c50000+010000] to > 00002000+000000 > sun7i-dwmac 1c50000.ethernet: could not get tx clock > L4IRQ: set irq type of 211 to 1 > RAMDISK: ext2 filesystem found at block 0 > RAMDISK: Loading 3072KiB [1 disk] into ram disk... done. > EXT4-fs (ram0): couldn't mount as ext3 due to feature incompatibilities > EXT4-fs (ram0): mounting ext2 file system using the ext4 subsystem > EXT4-fs (ram0): mounted filesystem without journal. Opts: (null) > VFS: Mounted root (ext2 filesystem) on device 1:0. > Freeing unused kernel memory: 164K (023bf000 - 023e8000) > This architecture does not have kernel memory protection. > > Please press Enter to activate this console. > > > ---------- boot log end ---------- > > ________________________________ > From: Manolis Ragkousis <manolis...@gmail.com> > Sent: 23 September 2017 10:12 > To: l4-hackers@os.inf.tu-dresden.de > Cc: Yiyang Su > Subject: Re: Add network device to L4Linux > > Hello everyone, > > Yesterday with Yang we found why adding the device tree caused the > L4linux boot to fail on Cubietruck with "failed to get physical address > for 2000000". I am sharing this here for future references in case > anyone needs it. > > Yang was using the sun7i-a20-cubietruck.dts [1] device tree which is > normally supposed to be used by Linux running on bare-metal arm. In > L4Linux's case it's running on top of L4 which controls what L4linux can > see. As a result of using sun7i-a20-cubietruck.dts it tries to map a > physical address which it's not allowed to. > > Using what Matthias described in [2], one needs to create a new device > tree based on the simple.dts inside l4linux-source/arch/l4/boot/dts/ and > add the information about the ethernet device and its dependencies > there. Also don't forget to write the io configuration for those devices. > > Another mail from Matthias which serves as a really nice explanation of > the process is [3]. > > Thank you, > Manolis > > [1] > http://elixir.free-electrons.com/u-boot/latest/source/arch/arm/dts/sun7i-a20-cubietruck.dts > u-boot/arch/arm/dts/sun7i-a20-cubietruck.dts - Elixir - Free > Electrons<http://elixir.free-electrons.com/u-boot/latest/source/arch/arm/dts/sun7i-a20-cubietruck.dts> > elixir.free-electrons.com > Elixir Cross Referencer > > > [2] https://os.inf.tu-dresden.de/pipermail/l4-hackers/2016/007747.html > [3] https://os.inf.tu-dresden.de/pipermail/l4-hackers/2017/008069.html > _______________________________________________ > l4-hackers mailing list > l4-hackers@os.inf.tu-dresden.de > http://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers _______________________________________________ l4-hackers mailing list l4-hackers@os.inf.tu-dresden.de http://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers