
Tom Rini wrote:
On Tue, Jun 17, 2003 at 03:43:34PM +0300, Pantelis Antoniou wrote:
The u-boot loader upon finishing the decompression of the kernel image it just jumps into the kernel without resetting the CP. The kernel however resets the CP only when configured to apply a u-patch. The UART in the CP is still active however, and the descriptors in dpram end up overlapping.
I believe that the assumption here, which other firmwares follow, is that this would be taken care of already. Dan, do you recall making any assumptions about this either way?
[snip]
This is only a bandaid however, because under network load at the time of booting, i.e. broadcast packets or rebooting after a crash and another end sending non TCP packets, we still crash.
[snip]
The proper way to address the problem is for the loader to stop any DMA capable peripherals before executing the kernel.
Does doing this fix, fix all of your problems?
Yes, this fixed my problems. But this is mostly luck.
It just happens that the reception buffer for the ethernet packet is high enough in memory that no memory corruption takes place. I'm not sure however if we're completely safe in all cases.
I think it's just proper defensive programming to always do a CP reset in that case, and as soon as possible. The best thing we could do is do the reset at head_8xx.S.
Regards
Pantelis