thoughts and questions on 8xx patches
dan at embeddededge.com
Tue Sep 21 08:10:41 EST 2004
On Sep 20, 2004, at 4:05 PM, Robert P. J. Day wrote:
> 1) am i to assume that the two chunks of microcode written to these
> two different addresses are run independently?
Nope. Don't ever assume anything. Read the microcode patch
instructions, load the code where it says, set registers as it says.
> 2) in cpm_load_patch(), before writing microcode into dpmem, the
> RCCR register is set to disable microcode:
> commproc->cp_rccr = 0;
> and is reactivated later. is this necessary while you're
> installing ucode?
Some boot roms install versions of microcode patches that
we know nothing about. This is the way to remove them and
install what our Linux drivers know.
> 3) next, in micropatch.c, microcode is directly copied from the
> patch arrays patch_2000 and patch_2f00 into the respective
> addresses in dpmem. but who's to say that these arrays are
> always guaranteed to exist?
Those were the locations used for the microcode patches known
at the time. Again, it's where the instructions said to load the
patches. We know nothing more about it.
> .....notice above that there could very
> well exist a patch that writes to 2000 and 2e00 instead.
When that happens, we'll have to adjust for it.
> ...... i'm not even going to ask what that
> does, but it will come up later. i'm just going to accept it as
> magic and move on.
Don't ask later. It's all magic. Just follow the instructions.
Stop trying to understand the undocumented details of the CPM :-)
There have been many patches over the years, some may not
be available anymore, some we may have never used. The
current Linux drivers may not be up to date with the more recent
versions of microcode patches.
At one time, we had a bunch of little patches. IIC only, SMC only,
USB SOF. Then, some of them were combined so you could do
multiple relocations at once, like IIC and SMCs. I don't know if
we have ever done that. I know Wolfgang has been keeping
more up to date with his development trees, so it wouldn't hurt
to look there.
More information about the Linuxppc-dev