Add network device to L4Linux
Adam Lackorzynski
adam at os.inf.tu-dresden.de
Thu Oct 5 00:34:50 CEST 2017
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 at 01c20050 {
> #clock-cells = <0>;
> compatible = "allwinner,sun4i-a10-osc-clk";
> reg = <0x01c20050 0x4>;
> clock-frequency = <24000000>;
> clock-output-names = "osc24M";
> };
>
> osc32k: clk at 0 {
> #clock-cells = <0>;
> compatible = "fixed-clock";
> clock-frequency = <32768>;
> clock-output-names = "osc32k";
> };
>
> pll1: clk at 01c20000 {
> #clock-cells = <0>;
> compatible = "allwinner,sun4i-a10-pll1-clk";
> reg = <0x01c20000 0x4>;
> clocks = <&osc24M>;
> clock-output-names = "pll1";
> };
>
> pll6: clk at 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 at 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 at 01c20054 {
> #clock-cells = <0>;
> compatible = "allwinner,sun4i-a10-axi-clk";
> reg = <0x01c20054 0x4>;
> clocks = <&cpu>;
> clock-output-names = "axi";
> };
>
> ahb: ahb at 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 at 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 at 01c20054 {
> #clock-cells = <0>;
> compatible = "allwinner,sun4i-a10-apb0-clk";
> reg = <0x01c20054 0x4>;
> clocks = <&ahb>;
> clock-output-names = "apb0";
> };
>
> apb0_gates: clk at 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 at 2 {
> #clock-cells = <0>;
> compatible = "fixed-clock";
> clock-frequency = <25000000>;
> clock-output-names = "mii_phy_tx";
> };
>
> gmac_int_tx_clk: clk at 3 {
> #clock-cells = <0>;
> compatible = "fixed-clock";
> clock-frequency = <125000000>;
> clock-output-names = "gmac_int_tx";
> };
>
> gmac_tx_clk: clk at 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 at 01c00000 {
> compatible = "simple-bus";
> #address-cells = <1>;
> #size-cells = <1>;
> ranges;
>
> pio: pinctrl at 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 at 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 at 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 at 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 at 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 at 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 <giometti at 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 <manolis837 at gmail.com>
> Sent: 23 September 2017 10:12
> To: l4-hackers at 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 at os.inf.tu-dresden.de
> http://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers
More information about the l4-hackers
mailing list