use a parameter like "devtree=<virtual-address>" on the command line, passed
in any way the bootloader likes.

Some u-boots for non-mips platforms pass it in the environment of
the bootm protocol.
I would say to pass the pointer to the DTB in the environment, but
not all platforms (like powertv) have an environment. So I guess
the command line has to do.

I'm OK with this as long as we can define 'the environment' to include
what I am currently doing on Octeon.

3) Iff 1) and 2) fail, use builtin DTB.

Also I think we should pass the physical address of the DTB, not the
virtual address. It would be the kernel's responsibility to figure
out what the virtual address is.

I like the basic idea - but ... Most firmware will only use KSEG0 / XKPHYS
mappings so there should be no aliasing issue but still there could be
conflicting cache modes. So we should also specify that firmware should
writeback and invalidate the DTB from caches.
Ralf