Subject: More on Viking cache lossage
To: None <port-sparc@NetBSD.ORG>
From: Jason Thorpe <thorpej@nas.nasa.gov>
List: port-sparc
Date: 04/08/1997 17:21:04
Ok, so I hadn't had a chance until to day to try a kernel w/ paul's latest
cache changes on my SS10.  I'm now dying in viking_pcache_flush_line()..

The SS10 is in the lab on the other end of the building, so I scribbled
down the following:

pc = f80b45dc, addr = 14440, sfsr = 126 <FAV>
panic: kernel fault

gdb tells me:

(kgdb) list *0xf80b45dc
0xf80b45dc is in viking_pcache_flush_line
    (../../../../arch/sparc/sparc/cache.c:671).
666                     cmask = (4096 << cshift) - 1;
667                     v = (char *)roundup((int)etext, NBPG) +
668                         (((va & cmask) >> cshift) << cshift);
669                     i = 5;
670                     while (i--) {
671                             (*(volatile int *)v);
672                             v += NBPG;
673                     }
674             }
675     
(kgdb) print etext
$1 = {int ()} 0xf80cdbb8 <etext>

I don't really understand how that is supposed to work, but it seems
as if we're getting some sort of overflow and deref'ing the resulting
bogus pointer?

Jason R. Thorpe                                       thorpej@nas.nasa.gov
NASA Ames Research Center                               Home: 408.866.1912
NAS: M/S 258-6                                          Work: 415.604.0935
Moffett Field, CA 94035                                Pager: 415.428.6939