From be868a43185826b02bf6d091019bb779678525bb Mon Sep 17 00:00:00 2001 From: salmonik Date: Mon, 17 Aug 2026 14:53:52 +0200 Subject: USB2/1.1 (EHCI/UHCI) drivers + real-hardware bring-up hardening - Add polled EHCI (USB2) and UHCI (USB1.1) host-controller drivers with HID boot mouse support, wired into cursor polling and the 'usb' shell cmd - Add USB Legacy ownership handoff (claim_usb_legacy) plus config_write_byte - Harden boot: verify the PIT/timer ticks before shell entry, EOI stray interrupts in the LAPIC to stop interrupt storms, bound PS/2 controller waits, and INTx-disable AHCI (polled driver) - Add boot stage markers, klog screen echo, and QR lock; scheduler mark_shell_running; NO_USB stopgap to keep BIOS USB-Legacy input alive - alloc_pages_above for DMA buffers that must avoid low conventional memory - Expand DEBUG_NOTES with EHCI/QEMU bring-up findings --- rsnix/src/klog.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'rsnix/src/klog.rs') diff --git a/rsnix/src/klog.rs b/rsnix/src/klog.rs index 2e1fc82..300a597 100644 --- a/rsnix/src/klog.rs +++ b/rsnix/src/klog.rs @@ -95,6 +95,16 @@ pub fn emit(args: core::fmt::Arguments<'_>) { crate::serial::write_raw(line.as_str()); crate::serial::write_raw("\r\n"); append(line.as_str(), ms); + // Screen echo: mirror the serial line to the VGA console, so the whole + // boot log is visible on real hardware without a serial console. The + // last line on screen when the machine freezes is exactly where boot + // stopped (far more precise than the stage marker). Skipped while a + // fault dump is rendering its own band (row 0 = boot marker, terminal + // lives below it). + if crate::vt::ready() && !crate::interrupts::in_dump() && !crate::gop::qr_locked() { + crate::vt::write_str(line.as_str()); + crate::vt::write_str("\n"); + } crate::sched::unlock(); } -- cgit v1.2.3