[Etherboot-developers] Re: rtl_disable and random kernel crash.
Brought to you by:
marty_connor,
stefanhajnoczi
|
From: Ken Y. <ke...@nl...> - 2001-04-06 03:36:15
|
|Hello.
|
|My name is Hyun-Joon Cha, a Korean engineer of embedded Linux.
|
|I'm working on multiple booting of several industrial SBCs with your great et
>herboot.
|
|Network controllers of the SBCs are various such as 82559ER, RTL8139B and 813
>9C and all SBCs booted quite well except RTL8139B and C thing. SBCs with RTL8
>139B and C couldn't boot normally and they were crashed at random place of Li
>nux kernel and random time.
|
|So, me and my HW co-worker were trying to find the source of problem and we'v
>e been concluded that HW design is the culprit.
|
|After several times of HW rebuild, BIOS and kernel modification, we almost ga
>ve up and as a final attempt, we simulated same situation with 10 PCs equippe
>d RTL8139B NIC. And the result was same.
|
|So I've been starting walk around etherboot and found that there are no code
>within rtl_disable but eepro100_disable. And I've found your comment on *_dis
>able at ChangLog.
|
|Now, all SBCs boot well with rtl_disable and I thought that I have to report
>this. If you add a few lines of code - copied ;) - about rtl_disable at next
> release there will be no people meet the danger.
|
|
|-------------------------------------------
|static void rtl_disable(struct nic *nic)
|{
| int i;
|
| /* reset the chip */
| outb(CmdReset, ioaddr + ChipCmd);
|
| /* Check that the chip has finished the reset. */
| for (i = 1000; i > 0; i--)
| if ((inb(ioaddr + ChipCmd) & CmdReset) == 0)
| break;
|}
|-------------------------------------------
|
|Thanks and have a nice day.
Great, that confirms it. I will get it added to rom-o-matic.net. Thanks
Hyun-Joon!
|