[LinuxBIOS] retrieving MAC from romstrap
c-d.hailfinger.devel.2006 at gmx.net
Thu Sep 27 15:43:51 CEST 2007
On 26.09.2007 23:07, Ward Vandewege wrote:
> On Wed, Sep 26, 2007 at 05:02:33PM -0400, Tom Sylla wrote:
>> On 9/26/07, Robert Millan <rmh at aybabtu.com> wrote:
>>> unsigned long mac_pos;
>>> mac_pos = 0xffffffd0; // refer to romstrap.inc and romstrap.lds
>>> mac_l = readl(mac_pos) + nic_index;
>>> mac_h = readl(mac_pos + 4);
>>> and can't understand what is this romstrap and why it retrieves the MAC from
>>> it in runtime. Is this some kind of legacy interface? Wouldn't it be simpler
>>> to just hardcode it during build? E.g. see attached patch.
>> Maybe simpler, but not really correct. What if you have 2 of your
>> boards? With your patch, you have to compile twice. That's not
>> elegant. If you can make just one ROM image, and then automatically
>> change the MAC at a specified location inside of it for each
>> individual motherboard, things work better. (AMI/award/etc do this,
>> when you use their flash utilities, it does not overwrite the MAC so
>> you don't lose it)
>> Your solution is ok if you want to just support your single board on
>> your desktop, but for anybody trying to make a commercial product with
>> LB, they won't want to be recompiling for each unit shipped.
> Agreed. MACs are a bit of a pain (also on the MCP55), and we currently do not
> have a good way to deal with them. I have MCP55-based LinuxBIOS machines in
> production that have 00:00:00:00:00:00 as MAC address for each interface, and
> I need to force the MAC manually in /etc/network/interfaces. Not elegant, and
> not ideal. The kernel does not like it either, on startup it says 'complain
> to your bios vendor' ;)
Hahaha. I added that warning to the forcedeth driver. However, after
printing that warning forcedeth _should_ auto-generate a random MAC
address for the card. No idea if that part of the still works.
> I would like a way to change the MAC address for a rom image with some tool -
> ideally as an option to flashrom, I guess. Keep in mind that there can be
> multiple addresses on a board!
Yes, but usually only one of them is in the MCP55 part.
More information about the coreboot