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