From 7deee978c5cc33c0e177b8c676dcdaebd846c1e8 Mon Sep 17 00:00:00 2001 From: Christian Helmuth Date: Wed, 26 Apr 2023 15:57:20 +0200 Subject: [PATCH] driver_manager: disable USB driver BIOS handoff We repeatedly experience issues with XHCI handoff in the USB host driver at runtime on modern systems. Mostly, these issues manifest as initialization delays with very high CPU load. Investigations show that during this time the handoff MMIO write does not return, which hints the firmware driver enters some spinning loop. I suspect the enabled IOMMU does not play well with the firmware due to insufficient RMRR information. Therefore, we disable USB handoff in Sculpt via the driver manager (as we do for dedicated devices already in other contexts). Note, UHCI and EHCI handoff is still done in the platform driver and succeeds on all our test hardware. Issue #4820 --- repos/gems/src/app/driver_manager/main.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/repos/gems/src/app/driver_manager/main.cc b/repos/gems/src/app/driver_manager/main.cc index b691af4898..27dd1b8267 100644 --- a/repos/gems/src/app/driver_manager/main.cc +++ b/repos/gems/src/app/driver_manager/main.cc @@ -721,7 +721,7 @@ void Driver_manager::Main::_generate_usb_drv_config(Reporter &usb_drv_config, { Reporter::Xml_generator xml(usb_drv_config, [&] () { - xml.attribute("bios_handoff", true); + xml.attribute("bios_handoff", false); xml.node("report", [&] () { xml.attribute("config", true);