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
This commit is contained in:
Christian Helmuth 2023-04-26 15:57:20 +02:00
parent d68f5446b1
commit 7deee978c5

View File

@ -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);