From: Tulio A M Mendes Date: Sat, 14 Feb 2026 06:54:50 +0000 (-0300) Subject: fix: restore immediate VGA flush in vga_write_buf to fix ring3 display hang X-Git-Url: https://projects.tadryanom.me/docs/POSIX_ROADMAP.md?a=commitdiff_plain;h=7c445159a6925232ce01761633ca202fd70cd8c0;p=AdrOS.git fix: restore immediate VGA flush in vga_write_buf to fix ring3 display hang The deferred-only VGA flush (timer tick at 50Hz) caused VGA output to stop updating when the ring3 test was active. Restoring the immediate flush after each write batch fixes the issue. The shadow buffer still provides the key performance wins: - Scrolling in RAM (memmove on shadow, not MMIO) - Single cursor update per write batch (not per character) - Dirty-region tracking (only modified cells flushed) Tests: 20/20 smoke (11s), 16/16 battery, cppcheck clean. --- diff --git a/src/drivers/vga_console.c b/src/drivers/vga_console.c index 3b550d3..52e4cf7 100644 --- a/src/drivers/vga_console.c +++ b/src/drivers/vga_console.c @@ -194,7 +194,7 @@ void vga_write_buf(const char* buf, uint32_t len) { for (uint32_t i = 0; i < len; i++) { vga_put_char_unlocked(buf[i]); } - /* No MMIO flush here — deferred to vga_flush() on timer tick */ + vga_flush_to_hw(); spin_unlock_irqrestore(&vga_lock, flags); }