Hi all,
> The bug was that the 3C905B with the Lucent chipset and some early prototypes
> ofthe 3C905C didn't map contents of the ROM properly - the ROM was remapped to
> the shadow memory after every 4K, not 8K as is commonly thought. Even the ROM
> couldn't be properly read directly using ASIC I/O access to the ROM - it
> produced the same remapping problem. Forcing the ASIC into MII mode solved the
> problem, but it was required that one restored the ASIC to its original setup
> afterwards.
That sounds like the issue :) Thanks for the additional info. Sounds like
some ROM authors had to go to extensive lengths to get this to work right....
When faced with finding a workaround, I considered quite a number of
possible alternatives. Something similar to what you suggested was one
of the alternatives. The way that Etherboot works around the issue is the
following:
1. The serial EEPROM is reprogrammed for MII mode, with autoselect bit
still set.
2. Machine is turned on, card enters MII mode, and everything works fine
with the Etherboot image being copied into RAM and executed.
3. Drivers for all OS's I've tested so far (including Etherboot to some
degree) boot the card, see the autoselect bit, and thus ignore the
MII setting (per 3com documentation), and reset the XcvrSelect value
to the right one automatically, per standard procedures. The new
XcvrSelect setting is in the register, not the EEPROM, so it is not
permanent.
4. If the user wants to pre-program an XcvrSelect value in etherboot,
etherboot stores the desired XcvrSelect value in the "Reserved for
LanWorks ROM" area in the serial EEPROM, and uses that to program
the XcvrSelect when etherboot comes up.
There are some minor caveats with this approach, but it seemed easiest,
most compatible with the existing Etherboot structure, and it works. To
implement a bootblock-mainblock type of structure that would be more
compatible with the ROM mapping problem would have required a major
overhaul of some of the internal etherboot modularity, and a lot of code
re-writing. So, path of least resistance :)
(the main caveat of this approach is that when the remote-booted O/S
autoselects the Xcvr, it may not choose the one you want. For instance,
if you are connected to a 10/100 unmanaged hub over low-end cabling, you
might want to go 10mbit not 100mbit, and will need to tell the OS to use
a different Xcvr. We had to do that here with Linux. But since we're
network-booting, we just had to make the change in *ONE* place <grin>)
Greg.
------------------------------------------------------------------------
Greg.Beeley@LightSys.org LightSys - Redeeming Technology...
http://www.LightSys.org For God's Kingdom.
------------------------------------------------------------------------
===========================================================================
This Mail was sent to netboot mailing list by:
Greg Beeley <Greg.Beeley@LightSys.org>
To get help about this list, send a mail with 'help' as the only string in
it's body to majordomo@baghira.han.de. If you have problems with this list,
send a mail to netboot-owner@baghira.han.de.
For requests or suggestions regarding this mailing list archive please write to netboot@gkminix.han.de.