Hello Genodians
I have a UP Xtreme board on which I want to run Genode on. it has a Intel core i7 8xxx [1]. This platform only supports UEFI boot.
Starting Sculpt on the device from an USB stick works.
The main problem I have currently, is that I do not receive any serial output from the kernel. I also tested with other run scripts like `run/log`.
The device has two physical interfaces (COM1 & COM2) that I have enabled and configured, in the BIOS, to use the default IO/IRQ values for PCs.
If I start Ubuntu on the device with enabled serial console for GRUB2 and the kernel, I see the corresponding output on my `picocom` session.
Do you have any suggestions what could be the cause?
Best regards, Pirmin
[1] https://up-board.org/up-xtreme-edge-compute-enabling-kit/
Hello Primin,
Am 09.02.22 um 12:55 schrieb Duss Pirmin:
Hello Genodians
I have a UP Xtreme board on which I want to run Genode on. it has a Intel core i7 8xxx [1]. This platform only supports UEFI boot.
Starting Sculpt on the device from an USB stick works.
The main problem I have currently, is that I do not receive any serial output from the kernel. I also tested with other run scripts like `run/log`.
The device has two physical interfaces (COM1 & COM2) that I have enabled and configured, in the BIOS, to use the default IO/IRQ values for PCs.
I would suggest to add an message about the used i/o ports in the nova kernel at the end of Ec::bootstrap(). A trace message with the i/o values, as used in Console_serial class, will/should show up in the log when using Sculpt (next to the other kernel messages starting with [kernel] ...).
Maybe the wrong I/O ports are used or none, but that will reveal your instrumentation. In UEFI mode the 'bender' tool [0] will by default assume 0x3f8 if no PCI serial card is detected, maybe this is problematic in your case. Or 'bender' finds a PCI serial card (Intel AMT SOL) and the kernel is using that instead.
Hope the hints are useful.
Good luck,
Alex.
[0] see tool/boot/README about pointers about bender
If I start Ubuntu on the device with enabled serial console for GRUB2 and the kernel, I see the corresponding output on my `picocom` session.
Do you have any suggestions what could be the cause?
Best regards, Pirmin
[1] https://up-board.org/up-xtreme-edge-compute-enabling-kit/
Genode users mailing list users@lists.genode.org https://lists.genode.org/listinfo/users
Hello Alex
On 2/9/22 13:23, Alexander Boettcher wrote:
I would suggest to add an message about the used i/o ports in the nova kernel at the end of Ec::bootstrap(). A trace message with the i/o values, as used in Console_serial class, will/should show up in the log when using Sculpt (next to the other kernel messages starting with [kernel] ...).
Maybe the wrong I/O ports are used or none, but that will reveal your instrumentation. In UEFI mode the 'bender' tool [0] will by default assume 0x3f8 if no PCI serial card is detected, maybe this is problematic in your case. Or 'bender' finds a PCI serial card (Intel AMT SOL) and the kernel is using that instead.
Hope the hints are useful.
Using the patch below I get the following output:
``` serial mem address : 0xffffffffdf000000 serial mem+0x400 value: 0x239 serial mem+0x404 value: 0x0 ```
In the log I don't see any output from the constructors for `Console_vga` or `Console_serial`. This might be, because these are called before the log buffer is ready.
Disabling AMT SOL did not change the output produced.
I also changed the options set for bender in `boot/grub/grub.cfg` but this also did not help.
Pirmin
``` diff --git a/src/bootstrap.cpp b/src/bootstrap.cpp index f7b5de7..57850d4 100644 --- a/src/bootstrap.cpp +++ b/src/bootstrap.cpp @@ -51,5 +51,12 @@ void bootstrap() root_sc->remote_enqueue(); }
+ char *mem = static_cast<char *>(Hpt::remap (Pd::kern.quota, 0)); + Console::print(">>>> mem ptr : %p",mem); + unsigned base = *reinterpret_cast<uint16 *>(mem + 0x400); + Console::print(">>>> mem ptr mem+0x400: %x",base); + base = *reinterpret_cast<uint16 *>(mem + 0x402); + Console::print(">>>> mem ptr mem+0x402: %x",base); + Sc::schedule(); } diff --git a/src/console_mem.cpp b/src/console_mem.cpp index a9c1892..07375ca 100644 --- a/src/console_mem.cpp +++ b/src/console_mem.cpp @@ -25,6 +25,7 @@ mword PAGE_L = 0;
void Console_mem::setup() { + Console::print(">>>> %s() : %d",__func__,__LINE__); if (!PAGE_L) return;
diff --git a/src/console_serial.cpp b/src/console_serial.cpp index ea43701..1cde7d6 100644 --- a/src/console_serial.cpp +++ b/src/console_serial.cpp @@ -28,6 +28,7 @@ INIT_PRIORITY (PRIO_CONSOLE) Console_serial Console_serial::con;
Console_serial::Console_serial() { + Console::print(">>>> %s() : %d",__func__,__LINE__); if (!Cmdline::serial) return;
diff --git a/src/console_vga.cpp b/src/console_vga.cpp index 7dc7bc8..a517b16 100644 --- a/src/console_vga.cpp +++ b/src/console_vga.cpp @@ -26,6 +26,7 @@ INIT_PRIORITY (PRIO_CONSOLE) Console_vga Console_vga::con;
Console_vga::Console_vga() : num (25), row (0), col (0) { + Console::print(">>>> %s() : %d",__func__,__LINE__); if (Cmdline::novga) return; ```
Hello Alex
After I modified bender to always write `0x3f8` to the BDA (currently rather hackish), I'm able to see the serial output. The `serial_fallback` wasn't considered, as some serial device was found.
Would you be interested in a patch that adds an option to always write the value `0x3f8` if it is specified on the console. This in fact would be two commits (one for mobro and one for genode).
Best regards, Pirmin
Hello Pirmin,
On 10.02.22 13:14, Pirmin Duss wrote:
Hello Alex
After I modified bender to always write `0x3f8` to the BDA (currently rather hackish), I'm able to see the serial output. The `serial_fallback` wasn't considered, as some serial device was found.
Would you be interested in a patch that adds an option to always write the value `0x3f8` if it is specified on the console. This in fact would be two commits (one for mobro and one for genode).
I think we will have add some extensions to bender to make it UEFI aware. Some assumptions, e.g. that a EBDA exists, are wrong which leads to the non working options, e.g. your serial_fallback case. I would suggest to open a github issue, so that we can document it and potentially come up with a better solution.
Best,
Alex.
Best regards, Pirmin
Genode users mailing list users@lists.genode.org https://lists.genode.org/listinfo/users