diff --git a/repos/ports/ports/seoul.hash b/repos/ports/ports/seoul.hash
index 0ddf311f39..14296af26d 100644
--- a/repos/ports/ports/seoul.hash
+++ b/repos/ports/ports/seoul.hash
@@ -1 +1 @@
-02abcfcffb40098c98656bcf8ba3d88d4d709cf5
+cb9a134ba7d65887627d14beaaffbf0aa0c6b93b
diff --git a/repos/ports/ports/seoul.port b/repos/ports/ports/seoul.port
index 201533f87c..5ad3f39228 100644
--- a/repos/ports/ports/seoul.port
+++ b/repos/ports/ports/seoul.port
@@ -3,8 +3,8 @@ VERSION := git
DOWNLOADS := seoul.git
URL(seoul) := https://github.com/alex-ab/seoul.git
-# branch genode_17_05
-REV(seoul) := 878f0ea5593d0bc87bbbad3c5499c26d5f64d472
+# branch genode_18_05
+REV(seoul) := 253faafcfa7bbcf68732c9962d6a88052194a0d0
DIR(seoul) := src/app/seoul
#
diff --git a/repos/ports/run/seoul-disc.run b/repos/ports/run/seoul-disc.run
index eccff46909..9574c909ea 100644
--- a/repos/ports/run/seoul-disc.run
+++ b/repos/ports/run/seoul-disc.run
@@ -15,7 +15,7 @@ set use_model_ide 0
set use_block_ram 1
set use_block_sata 0
-set use_nic_session 0
+set use_nic_session 1
set use_nic_bridge 0
set use_usb 0
diff --git a/repos/ports/run/seoul.inc b/repos/ports/run/seoul.inc
index bda73fe77d..afff8fce63 100644
--- a/repos/ports/run/seoul.inc
+++ b/repos/ports/run/seoul.inc
@@ -193,7 +193,7 @@ append_if $use_block_sata config {
append_if $use_block_ram config {
-
+
}
diff --git a/repos/ports/src/app/seoul/console.cc b/repos/ports/src/app/seoul/console.cc
index 4ae97ef9d5..c425f9a9e4 100644
--- a/repos/ports/src/app/seoul/console.cc
+++ b/repos/ports/src/app/seoul/console.cc
@@ -27,6 +27,7 @@
#include
#include
+#include
/* local includes */
#include "console.h"
@@ -39,8 +40,9 @@ static struct {
Genode::uint64_t checksum2 = 0;
unsigned unchanged = 0;
bool cmp_even = 1;
- bool active = true;
+ bool active = false;
bool revoked = false;
+ bool vga_update= false; /* update indirectly by vbios */
} fb_state;
@@ -195,12 +197,24 @@ bool Seoul::Console::receive(MessageConsole &msg)
return true;
}
+void Screen::vga_updated()
+{
+ fb_state.vga_update = true;
+}
bool Seoul::Console::receive(MessageMemRegion &msg)
{
- if (msg.page >= 0xb8 && msg.page <= 0xbf) {
+ /* we had a fault in the text framebuffer */
+ bool reactivate = (msg.page >= 0xb8 && msg.page <= 0xbf);
- /* we had a fault in the text framebuffer */
+ /* vga memory got changed indirectly by vbios */
+ if (fb_state.vga_update) {
+ fb_state.vga_update = false;
+ if (!fb_state.active)
+ reactivate = true;
+ }
+
+ if (reactivate) {
if (!fb_state.active) fb_state.active = true;
Logging::printf("Reactivating text buffer loop.\n");