Booting Imac G5

Benjamin Herrenschmidt benh at kernel.crashing.org
Mon Nov 22 14:42:18 EST 2004


> I think I found the problem.
> While testing my RTC driver, I had some problems which seemed to be
> cache related.
> I made a try:
> in arch/ppc64/kernel/misc.S, in flush_dcache_range and
> flush_dcache_phys_range, I added a 
> dcbf 0,r6 just after the dcbst 0,r6.
> This fixed the problems I had in the RTC driver and I can notice that I
> got no more segfault using this patch (I even can now update my Gentoo
> under X11 using Gnome !).
> I guess I could remove the dcbst, as dcbz does the same plus L1 cache
> invalidation.
> I'm not completly sure of what the problem is, but I think it can be
> either the dbcst is not appropriate, as it does not invalidate the L1
> cache in 970FX, or HID registers are not well programmed.

Hrm... that's bad ... dcbf will actually invalidate the line from the
cache, not only flush it, which is not what we want (it's correct still,
but not optimal) and there may well be existing code using dcbst....
I'll investigate, but that is definitely not normal. What is your exact
PVR value ? (cpu rev.) and can you send me the values in HID0, HID1,
HID4 and HID5 ? (just add some printk("HIDx: %lx\n", mfspr(SPRN_HIDx));
somewhere in the kernel)

Ben.





More information about the Linuxppc64-dev mailing list