Hi,
I'm experimenting with the TuD Snapshot release 2020.07.1 and can compile and run Fiasco, L4re and L4Linux in their basic configurations (amd64 architecture) using the default l4lx.cfg file of the distribution.
As this is not all that useful, I was looking in getting the system use the available hardware. Based on snippets I found on the internet and the example config files, I created the following cfg and devs files, but now L4Linux immediately runs into an unhandled exception (full boot log at the end of this eMail).
Was wondering if someone from the mailing list can share a set of config files which would allow to get L4Linux up and using at least some of the basic hardware like network and disks on a typical PC board. In my current experiments I'm using the following config files (see below).
Any help or pointers are appreciated!
Andreas
File x86-legacy.devs is unchanged from ~l4/pkg/io/io/config.
=============l4lx.cfg==================
local L4 = require("L4");
loader = L4.default_loader;
vbus_l4linux = loader:new_channel(); vbus_input = loader:new_channel();
loader:start( { caps = { sigma0 = L4.cast(L4.Proto.Factory, L4.Env.sigma0):create(L4.Proto.Sigma0); icu = L4.Env.icu; l4linux = vbus_l4linux:svr(); }, log = {"IO", "y"}, l4re_dbg = L4.Dbg.Warn, }, "rom/io rom/x86-legacy.devs rom/l4lx-x86.io");
loader:start( { caps = { vbus = vbus_l4linux; }, log = L4.Env.log:m("rws"), }, "rom/vmlinuz mem=1024M console=ttyLv0 earlyprintk=1 l4x_rd=rom/ramdisk-amd64.rd root=1:0 ramdisk_size=4000"); ====================================
=============l4lx-x86.io==================
local hw = Io.system_bus()
Io.add_vbusses { input = Io.Vi.System_bus { ps2dev = wrap(hw:match("PNP0[3F]??")); };
fbdrv = Io.Vi.System_bus { PCI0 = Io.Vi.PCI_bus_ident { dummy = Io.Vi.PCI_dummy_device(); pci_gfx = wrap(hw:match("PCI/display")); };
x1 = wrap(hw:match("BIOS")); x2 = wrap(hw:match("PNP0900")); x3 = wrap(hw:match("PNP0100")); };
l4linux = Io.Vi.System_bus { -- Add a new virtual PCI root bridge PCI0 = Io.Vi.PCI_bus { pci_l4x = wrap(hw:match("PCI/network", "PCI/storage", "PCI/media")); }; }; } ==========================================
GRUB Loading /bootstrap /bootstrap -modaddr 0x01100000 Loading /fiasco fiasco -serial_esc Loading /sigma0 sigma0 Loading /moe moe rom/l4lx.cfg goading /l4lx.cfg l4lx.cfg Loading /l4re l4re Loading /io io Loading /ned ned Loading /x86-legacy.devs x86-legacy.devs Loading /l4lx-x86.io l4lx-x86.io Loading /vmlinuz vmlinuz Loading /ramdisk-amd64.rd ramdisk-amd64.rd Done, booting... error: Can't get controller info. L4 Bootstrapper Build: #1 Mon Aug 17 10:28:54 PDT 2020, x86-64, 7.5.0 RAM: 0000000000000000 - 000000000009fbff: 639kB RAM: 0000000000100000 - 00000000cfe87fff: 3405344kB RAM: 0000000100000000 - 000000012effffff: 770048kB Total RAM: 4078MB Scanning fiasco -serial_esc Scanning sigma0 Scanning moe rom/l4lx.cfg need 456 bytes to copy MBI reserved 456 bytes at 0x2000 Moving up to 11 modules behind 1100000 moving module 10 { 2443000-2742fff } -> { 260c000-290bfff } [3145728] moving module 09 { 1521000-2442faf } -> { 16ea000-260bfaf } [15867824] moving module 05 { 124a000-1520ea7 } -> { 1413000-16e9ea7 } [2977448] moving module 00 { 1021000-124954f } -> { 11ea000-141254f } [2262352] moving module 08 { 1ea000-1ea25e } -> { 11e9000-11e925e } [607] moving module 07 { 1e9000-1e9337 } -> { 11e8000-11e8337 } [824] moving module 06 { 170000-1e89ef } -> { 116f000-11e79ef } [494064] moving module 04 { 152000-16f72f } -> { 1151000-116e72f } [120624] moving module 03 { 151000-15133d } -> { 1150000-115033d } [830] moving module 02 { 10e000-15075f } -> { 110d000-114f75f } [272224] moving module 01 { 101000-10d48f } -> { 1100000-110c48f } [50320] Loading fiasco Loading sigma0 Loading moe find kernel info page... found kernel info page (via ELF) at 400000 Regions of list 'regions' [ 0, fff] { 1000} Arch BIOS [ 1000, 1fff] { 1000} Kern fiasco [ 2000, 21c7] { 1c8} Root mbi_rt [ 9fc00, 9ffff] { 400} Arch BIOS [ f0000, fffff] { 10000} Arch BIOS [ 100000, 1122ff] { 12300} Sigma0 sigma0 [ 140000, 17fb0b] { 3fb0c} Root moe [ 181030, 192f67] { 11f38} Root moe [ 2d0400, 2e10d7] { 10cd8} Boot bootstrap [ 300000, 34afff] { 4b000} Kern fiasco [ 400000, 4010ab] { 10ac} Kern fiasco [ 600000, 83bfff] { 23c000} Kern fiasco [ 1019000, 101efff] { 6000} Boot bootstrap-ptab64 [ 1150000, 11e9fff] { 9a000} Root Module [ 1413000, 290bfff] { 14f9000} Root Module [ cfe88000, cfffffff] { 178000} Arch BIOS [ f8000000, fbffffff] { 4000000} Arch BIOS [ fed40000, fed44fff] { 5000} Arch BIOS found kernel options (via ELF) at 401000 Sigma0 config ip:00000000001004a0 sp:0000000000000000 Roottask config ip:00000000001418dd sp:0000000000000000 Starting kernel fiasco at 0000000000300910
Welcome to L4/Fiasco.OC! L4/Fiasco.OC microkernel on amd64 Rev: unknown compiled with gcc 7.5.0 for x86-64 [] Build: #2 Mon Aug 17 16:30:24 PDT 2020
Performance-critical config option(s) detected: CONFIG_NDEBUG is off
Superpages: yes ACPI: RSDP[0xf3af0] r02 OEM:COREv4 FPU0: SSE AVX ACPI: FACS phys=cfe9d240 virt=0x2009d240 ACPI: HW sig=0 SERIAL ESC: allocated IRQ 4 for serial uart Enable MSI support: chained IRQ mgr @ 0xffffffff10156d20 SERIAL ESC: allocated IRQ 4 for serial uart Not using serial hack in slow timer handler. CPU[0]: AuthenticAMD (16:30:1:0)[00730f01] Model: AMD GX-412TC SOC at 998MHz
32/512 Entry I TLB (4K pages) 8 Entry I TLB (4M pages) 40/512 Entry D TLB (4K pages) 8/256 Entry D TLB (4M pages) 32 KB L1 I Cache (2-way associative, 64 bytes per line) 32 KB L1 D Cache (8-way associative, 64 bytes per line) 2048 KB L2 U Cache (8-way associative, 64 bytes per line)
Freeing init code/data: 4096 bytes (1 pages)
SVM: enabled SVM: nested paging supported SVM: NASID: 8. MP: detecting APs... Calibrating timer loop... SVM: enabled SVM: enabled SVM: enabled done. SVM: nested paging supported SVM: nested paging supported MDB: use page size: 30 SVM: NASID: 8. SVM: nested paging supported SVM: NASID: 8. SVM: NASID: 8. MDB: use page size: 21 MDB: use page size: 12 SIGMA0: Hello! KIP @ 400000 allocated 4KB for maintenance structures SIGMA0: Dump of all resource maps RAM:------------------------ [4:RWX:2000;2fff] [0:RWX:3000;9efff] [0:RWX:113000;13ffff] [4:R-X:140000;17ffff] [0:RWX:180000;180fff] [4:RW-:181000;192fff] [0:RWX:193000;3fffff] [0:RWX:402000;5fffff] [0:RWX:83c000;114ffff] [4:RWX:1150000;11e9fff] [0:RWX:11ea000;1412fff] [4:RWX:1413000;290bfff] [0:RWX:290c000;cfe87fff] [0:RWX:100000000;11fb4efff] IOMEM:---------------------- [0:RW-:0;fff] [0:RW-:9f000;fffff] [0:RW-:cfe88000;febfffff] [0:RW-:fec01000;fec1ffff] [0:RWX:fec21000;fedfffff] [0:RWX:fee01000;ffffffff] [0:RWX:12f000000;ffffffffffffffff] IO PORTS-------------------------- [0:RW-:0;fffffff] MOE: Hello world MOE: found 3900664 KByte free memory MOE: found RAM from 2000 to 11fb4f000 MOE: allocated 4603 KByte for the page array @0x83c000 MOE: virtual user address space [0-7fffffffffff] MOE: rom name space cap -> [C:103000] MOE: rwfs name space cap -> [C:105000] BOOTFS: [1150000-115033e] [C:107000] l4lx.cfg BOOTFS: [1151000-116e730] [C:109000] l4re BOOTFS: [1413000-16e9ea8] [C:10b000] io BOOTFS: [116f000-11e79f0] [C:10d000] ned BOOTFS: [11e8000-11e8338] [C:10f000] x86-legacy.devs BOOTFS: [11e9000-11e925f] [C:111000] l4lx-x86.io BOOTFS: [16ea000-260bfb0] [C:113000] vmlinuz BOOTFS: [260c000-290c000] [C:115000] ramdisk-amd64.rd MOE: cmdline: moe rom/l4lx.cfg MOE: Starting: rom/ned rom/l4lx.cfg MOE: loading 'rom/ned' Ned says: Hi World! Ned: loading file: 'rom/l4lx.cfg' IO | Io service IO | Find root Pointer IO | Found root Pointer: f3af0 IO | ACPI: RSDP 0x00000000000F3AF0 000024 (v02 COREv4) IO | ACPI: XSDT 0x00000000CFE9D0E0 00007C (v01 COREv4 COREBOOT 00000000 CORE 20180531) IO | ACPI: FACP 0x00000000CFE9EE40 000114 (v06 COREv4 COREBOOT 00000000 CORE 20180531) IO | ACPI: DSDT 0x00000000CFE9D280 001BB3 (v02 COREv4 COREBOOT 00010001 INTL 20180531) IO | ACPI: FACS 0x00000000CFE9D240 000040 IO | ACPI: SSDT 0x00000000CFE9EF60 0001F8 (v02 COREv4 COREBOOT 0000002A CORE 20180531) IO | ACPI: MCFG 0x00000000CFE9F160 00003C (v01 COREv4 COREBOOT 00000000 CORE 20180531) IO | ACPI: TPM2 0x00000000CFE9F1A0 00004C (v04 COREv4 COREBOOT 00000000 CORE 20180531) IO | ACPI: APIC 0x00000000CFE9F1F0 00007E (v03 COREv4 COREBOOT 00000000 CORE 20180531) IO | ACPI: HEST 0x00000000CFE9F270 0001D0 (v01 COREv4 COREBOOT 00000000 CORE 20180531) IO | ACPI: IVRS 0x00000000CFE9F440 0000E0 (v01 COREv4 COREBOOT 00000000 CORE 20180531) IO | ACPI: SSDT 0x00000000CFE9F520 0048A6 (v02 AMD AGESA 00000002 MSFT 04000000) IO | ACPI: SSDT 0x00000000CFEA3DD0 0007C8 (v01 AMD AGESA 00000001 AMD 00000001) IO | ACPI: DRTM 0x00000000CFEA45A0 00007C (v01 COREv4 COREBOOT 00000000 CORE 20180531) IO | ACPI: HPET 0x00000000CFEA4620 000038 (v01 COREv4 COREBOOT 00000000 CORE 20180531) IO | IO | ACPI table initialization: IO | Table [DSDT: COREBOOT] (id 01) - 379 Objects with 45 Devices, 15 Regions, 80 Methods (20/60/19 Serial/Non/Cvt) IO | Table [SSDT: COREBOOT] (id 02) - 14 Objects with 2 Devices, 0 Regions, 3 Methods (1/2/0 Serial/Non/Cvt) IO | Table [SSDT: AGESA ] (id 03) - 411 Objects with 6 Devices, 18 Regions, 143 Methods (25/118/14 Serial/Non/Cvt) IO | Table [SSDT: AGESA ] (id 04) - 28 Objects with 0 Devices, 0 Regions, 4 Methods (0/4/0 Serial/Non/Cvt) IO | ACPI: 4 ACPI AML tables successfully acquired and loaded IO | Final data object initialization: Namespace contains 841 (0x349) objects IO | evxfevnt-0204 Enable : System is already in ACPI mode IO | Initializing General Purpose Events (GPEs): IO | Initialized GPE 00 to 1F [_GPE] 4 regs on interrupt 0x9 (SCI) IO | Initializing Device/Processor/Thermal objects and executing _INI/_STA methods: IO | Executed 7 _INI methods requiring 1 _STA executions (examined 64 objects) IO | ACPICA-Version:20190816, System in ACPI MODE, 24bit timer IO | ACPI: Enabled 7 GPEs in block 00 to 1F IO | Ready. Waiting for request. PH 0 offs=0000000000200000 flags=r-x PH-type=0x1 virt=0000000000200000 evirt=0000000000b08f78 phys=0000000000200000 ephys=0000000000b08f78 f_sz=0000000000908f78 memsz=0000000000908f78 PH 1 offs=0000000000c00000 flags=rw- PH-type=0x1 virt=0000000000c00000 evirt=0000000000e15000 phys=0000000000c00000 ephys=0000000000e15000 f_sz=0000000000215000 memsz=0000000000215000 PH 2 offs=0000000000e15000 flags=rwx PH-type=0x1 virt=0000000000e15000 evirt=0000000001016000 phys=0000000000e15000 ephys=0000000001016000 f_sz=0000000000081000 memsz=0000000000201000 PH 3 offs=0000000000b08f3c flags=--- PH-type=0x4 virt=0000000000b08f3c evirt=0000000000b08f78 phys=0000000000b08f3c ephys=0000000000b08f78 f_sz=000000000000003c memsz=000000000000003c Starting binary at 0x200000, argc=7 argv=0xafff5f18 *argv=0x7100fff4 argv0=rom/vmlinuz External resolver is at 0x68000d30 ======> L4Linux starting... <======== Linux version 5.7.0-l4 (andreas@deepl) (gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04), GNU ld (GNU Binutils for Ubuntu) 2.30) #3 Mon Aug0 Binary name: rom/vmlinuz Linux kernel command line (6 args): mem=1024M console=ttyLv0 earlyprintk=1 l4x_rd=rom/ramdisk-amd64.rd root=1:0 ramdisk_size=4000 CPU mapping (l:p)[1]: 0:0 Image: 00200000 - 01016000 [14424 KiB]. Areas: Text: 00200000 - 008006f1 [6145kB] --------------------------------------------------------------------- CPU 0 [fffffffff021e0ba]: IRQ ENTRY CPU(s) 0-3 entered JDB jdb: z RO-Data: 00a00000 - 00b09000 [1060kB] Data: 00c00000 - 00c95b80 [598kB] Init: 00e15000 - 00e95000 [512kB] BSS: 00e98000 - 01000000 [1440kB] Device scan: Device: L4ICU Device: PCI0 Device: pci_l4x[1] L4Re: rom/vmlinuz: Unhandled exception: PC=0x68008698 PFA=0x0 LdrFlgs=0x0