[SeaBIOS] usb ohci pipe free fix
Kevin O'Connor
kevin at koconnor.net
Thu Mar 22 00:31:06 CET 2012
On Wed, Mar 21, 2012 at 10:50:17PM +0100, Nils wrote:
> Op zaterdag 10-03-2012 om 14:05 uur [tijdzone -0500], schreef Kevin
> O'Connor:
> > It looks pretty clear that the controller doesn't like 9-segment nor
> > e-segment addresses. You could try "malloc_low() - 0x50000" to see
> > how the controller likes 4-segment address, but basically the only
> > hope of getting this to work is to see if you can fix the controller.
> I studied the datasheets and tried different things but had no result.
>
> Then i tried "malloc_low() - 0x100" and the controller seems to work.
>
> Could it be that some SeaBIOS parts overlap at LOWRAM_END ?
> ( ohci controller and (E)BDA ?)
The logs pretty clearly indicate that the ram is in the 9-segment and
not the a-segment. It may be a hardware bug that confuses addresses
that are close.
> Do you have any suggestions ?
>
> Attached log from latest git + debugging patch and log from same code
> but with "malloc_low() - 0x100" .
If it's just a 256 byte offset, you can add a "malloc_low(256)" to the
top of usb.c:usb_setup() to reserve the troublesome addresses. Note
though, the e-segment values we tested before seem to be also
impacted. I have a vague plan to change SeaBIOS in the future to use
e-segment addresses instead of 9-segment addresses.
-Kevin
More information about the SeaBIOS
mailing list