nova serial log output

Pirmin Duss pirmin.duss at gapfruit.com
Thu Feb 10 10:25:38 CET 2022


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;
```




More information about the users mailing list