On Sep 21, 2006, at 12:21 PM, Segher Boessenkool wrote:

+ /* these give iface errors because the address is ambiguous after
+     * the above bit dropping */
+    BUG_ON(addr == 0x8000);

Anything with the high bit set isn't available via SCOMC/SCOMD,
only via the external interfaces.

Thanks for clarifying that, will fix.

+ /* WARNING! older 970s (pre FX) shift the bits right 1 position */

They also don't have the exact same stuff at the exact same
registers -- SCOM is very CPU-specific, check every one you
want to use.  That is, if you do the fix for the shifted bits,
if not, don't bother ;-)

Just a note-to-self until I get my hands on the early docs.

+        if (c.bits.iface_error)
+            udelay(10);

Why the udelay()?

This is interesting, The docs say that you should "retry" on an iface error. When accessing the 0x8000 address above I get an iface error, then an immediate retry gives an addr|iface error. If I wait 10us (a number I made up) before the retry I get only iface consistently. I'm waiting to hear back on the expected behavior, I will adjust at that point.

+/* SCOMC addresses are 16bit but we are given 24 bits in the
+ * books. The low oerder 8 bits are some kinda parity thin and should
+ * be ignored */

The low bit is the odd parity of the other 23 bits; everything
accessible via SCOMC/SCOMD has bits 16..22 zero.
Interesting thanks for the heads up.

All these comments are pretty minor, congratz on finally having
it working Jimi :-)

yeah.. now for the payoff


Xen-ppc-devel mailing list

Reply via email to