[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