Hello, We are having issues being able to get the seL4test userland image to boot on x86 hardware. We have attempted to boot with syslinux off a USB, with PXELINUX, and with grub and see the same userland image loading issue across boot methods. Build steps: - Following https://docs.sel4.systems/Hardware/IA32 - Using "-DPLATFORM=x86_64" o Does not appear to boot (no serial output) - Using "-DPLATFORM=ia32" o Kernel boots but is unable to load userland image The manifest commit hash is: 01c11cfcd881c1da5b7520162fae40f6eae1c16b Hardware: - DELL Optiplex 980 with an Intel Core i7 860 processor We are seeing the following serial output: SYSLINUX 6.03 20171017 Copyright (C) 1994-2014 H. Peter Anvin et al Loading sel4kernel... ok Loading rootserver... ok Boot config: parsing cmdline 'sel4kernel' Boot config: console_port = 0x3f8 Boot config: debug_port = 0x3f8 Boot config: disable_iommu = false Detected 1 boot module(s): module #0: start=0x1d6000 end=0x4abdf4 size=0x2d5df4 name='rootserver' Parsing GRUB physical memory map Physical Memory Region from 0 size 9e400 type 1 Physical Memory Region from f0000 size 10000 type 2 Physical Memory Region from 100000 size df5cfc00 type 1 Adding physical memory region 0x100000-0x1fc00000 Physical Memory Region from df6cfc00 size 54000 type 4 Physical Memory Region from df723c00 size 2000 type 3 Physical Memory Region from df725c00 size 8da400 type 2 Physical Memory Region from f8000000 size 4000000 type 2 Physical Memory Region from fed00000 size 400 type 2 Physical Memory Region from fed20000 size 80000 type 2 Physical Memory Region from fec00000 size 100000 type 2 Physical Memory Region from fee00000 size 100000 type 2 Physical Memory Region from ffb00000 size 500000 type 2 Physical memory region not addressable Physical memory region not addressable Multiboot gave us no video information ACPI: RSDP paddr=0xfec00 ACPI: RSDP vaddr=0xdfcfec00 ACPI: RSDT paddr=0xfc790 ACPI: RSDT vaddr=0xdfcfc790 ***WARNING*** SKIM window not enabled, this machine is probably vulernable to Meltdown (https://www.meltdownattack.com), consider enabling Kernel loaded to: start=0x100000 end=0x13a000 size=0x3a000 entry=0x100076 ACPI: RSDT paddr=0xfc790 ACPI: RSDT vaddr=0xdfcfc790 ACPI: FADT paddr=0xfc85c ACPI: FADT vaddr=0xdfcfc85c ACPI: FADT flags=0xa5 ACPI: DMAR paddr=0xfcdde ACPI: DMAR vaddr=0xdfcfcdde ACPI: IOMMU host address width: 36 ACPI: registering RMRR entry for region for device: bus=0x0 dev=0x1d fun=0x0 ACPI: registering RMRR entry for region for device: bus=0x0 dev=0x1a fun=0x0 ACPI: 1 IOMMUs detected ACPI: MADT paddr=0xfc9c4 ACPI: MADT vaddr=0xdfcfc9c4 ACPI: MADT apic_addr=0xfee00000 ACPI: MADT flags=0x1 ACPI: MADT_APIC apic_id=0x0 ACPI: MADT_APIC apic_id=0x2 ACPI: Not recording this APIC, only support 1 ACPI: MADT_APIC apic_id=0x4 ACPI: Not recording this APIC, only support 1 ACPI: MADT_APIC apic_id=0x6 ACPI: Not recording this APIC, only support 1 ACPI: MADT_APIC apic_id=0x1 ACPI: Not recording this APIC, only support 1 ACPI: MADT_APIC apic_id=0x3 ACPI: Not recording this APIC, only support 1 ACPI: MADT_APIC apic_id=0x5 ACPI: Not recording this APIC, only support 1 ACPI: MADT_APIC apic_id=0x7 ACPI: Not recording this APIC, only support 1 ACPI: MADT_IOAPIC ioapic_id=8 ioapic_addr=0xfec00000 gsib=0 ACPI: MADT_ISO bus=0 source=0 gsi=2 flags=0x0 ACPI: MADT_ISO bus=0 source=9 gsi=9 flags=0xd ACPI: 1 CPU(s) detected ELF-loading userland images from boot modules: BOOT MODULE: 0x1d6000: 0x0 0x1d6010: 0x0 0x1d6020: 0x0 0x1d6030: 0x0 0x1d6040: 0x0 0x1d6050: 0x0 0x1d6060: 0x0 0x1d6070: 0x0 0x1d6080: 0x0 0x1d6090: 0x0 0x1d60a0: 0x0 Boot module does not contain a valid ELF image seL4 called fail at /host/sel4test/kernel/src/arch/x86/kernel/boot_sys.c:813 in function boot_sys, saying "boot_sys failed for some reason :(" halting... Kernel entry via Interrupt, irq 0 Thanks, Alex
Hi Alex,
Are you able to make your images available for me to download? Has this worked before for you and has recently stopped working? Do the images work in Qemu (you may have to rebuild with -DSIMULATION=ON)? We do most of our development using PXELINUX with the following configuration:
SERIAL 0 115200
default sel4
label sel4
kernel mboot.c32
append sel4kernel --- sel4rootserver
Kind regards,
Kent
________________________________
From: Devel
Hi Kent,
Thanks for the response. No this has not worked for us in the past. Yes, the images have been able to run on Qemu with no issue. Our initial attempts were with SYSLINUX on a usb drive but we have also attempted booting through PXELINUX with that same configuration. Here is a link to a box folder with the images:
https://app.box.com/s/mxd4mcd2w4b3y4ahyp83ha9xgj3pxkn3
Thanks,
Alex
From: Kent.Mcleod@data61.csiro.au
Hi Alex, I downloaded your images and ran them on one of our machines using pxeboot and all of the tests passed. I've attached a log for you. Given that you are constructing valid images, the error must be somewhere in the loading process. I notice that your log mentions loading "rootserver" but the file you sent me is called "sel4rootserver". You manage to successfully load the kernel, but then the file loaded as the roottask is empty (Assuming that BOOT MODULE is dumping the contents of the addresses that the root task is loaded at). Other things to check other than the filename is file permissions that both of the files have and whether the tftp server is serving every file in the same directory or just specific files. As for x86_64 not giving any output, are you also using -DRELEASE? I noticed that the images you sent had debug symbols stripped, which shouldn't be the case with only -DPLATFORM=ia32/x86_64 set. If the kernel is crashing before starting userlevel while in release mode you won't get any output. However, I'd probably try and get ia32 working before going back to debugging x86_64. Good luck. Kind regards, Kent.
Hi Alex, Since the kernel moved over to CMake, I saw some similar behaviour - maybe its related. I was also running apps fine on QEMU, but wouldn't get any output on real hardware (x86_64). Then I removed all kinds of "advanced" features by using "ccmake", and all of a sudden, I got serial output on bare metal. The notable items I changed were: KernelDebugBuild ON KernelHugePage OFF KernelSupportPCID OFF KernelX86MicroArch generic (to start with) Hope that helps. Joel On 10/30/18 2:03 PM, Kent.Mcleod@data61.csiro.au wrote:
Hi Alex,
I downloaded your images and ran them on one of our machines using pxeboot and all of the tests passed. I've attached a log for you.
Given that you are constructing valid images, the error must be somewhere in the loading process. I notice that your log mentions loading "rootserver" but the file you sent me is called "sel4rootserver". You manage to successfully load the kernel, but then the file loaded as the roottask is empty (Assuming that BOOT MODULE is dumping the contents of the addresses that the root task is loaded at). Other things to check other than the filename is file permissions that both of the files have and whether the tftp server is serving every file in the same directory or just specific files. As for x86_64 not giving any output, are you also using -DRELEASE? I noticed that the images you sent had debug symbols stripped, which shouldn't be the case with only -DPLATFORM=ia32/x86_64 set. If the kernel is crashing before starting userlevel while in release mode you won't get any output. However, I'd probably try and get ia32 working before going back to debugging x86_64.
Good luck.
Kind regards, Kent.
_______________________________________________ Devel mailing list Devel@sel4.systems https://sel4.systems/lists/listinfo/devel
participants (3)
-
Alex Pavey
-
Joel Nider
-
Kent.Mcleod@data61.csiro.au