grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

EHCI handoff & AMI BIOS EHCI Handoff support.


From: Melki Christian (consultant)
Subject: EHCI handoff & AMI BIOS EHCI Handoff support.
Date: Mon, 14 Oct 2013 07:58:28 +0000

Hi.

Im having trouble on one machine which has an AMI-BIOS with a function called 
"EHCI Handoff support". Sometimes the machine hangs in usb controller init.
Technically I think the function is meant to support OS without proper handoff 
support (windows xp pre sp2 or something). The problem is that I dont know how 
they do it.
USB Legacy support is meant to be disabled once OS gets EHCI control otherwise 
all hell will break loose with two drivers managing one EHCI controller.
This function (I think) makes BIOS set OS_OWNED bit and release the control 
once it thinks someone is trying to manage the controller besides BIOS.
The problem (again, I think) is that GRUB does not do anything if the OS_OWNED 
flag is set thereby sending no signal at all, relying on BIOS getting it right 
to stop playing with the controller.
A solution would be in EHCI initialization instead of doing:

if (usblegsup & GRUB_EHCI_BIOS_OWNED)

it should be:

if (usblegsup & (GRUB_EHCI_BIOS_OWNED || GRUB_EHCI_OS_OWNED))

because technically, GRUB is running and nothing really should matter.
We could even do:

if (usblegsup) { ...}

Because all cases are the same. We need to send a signal, no matter the state 
of the current settings.
The relevant part is to test the settings once the signal has been sent, it 
should contain GRUB_EHCI_OS_OWNED only.
But I think we cannot ignore to write the register even if it's already set 
because of the above specified function.

regards,
Christian



reply via email to

[Prev in Thread] Current Thread [Next in Thread]