Subject: Indigo2 R4600 woes
To: None <port-sgimips@netbsd.org>
From: pascal dameme <netinet@freesurf.fr>
List: port-sgimips
Date: 04/13/2002 11:45:11
Hi Experts.

Last week, I rescued an R4600 Indigo2 "TEAL" from the trash, an tried to
install NetBSD on it.
With a current kernel (config taken from conf/TEAL), the L2 cache is
detected but the system hangs right after the message : "copying /sbin/init"
...
Can't get the debugger, I have to walk and reset the system ...

When I disable the L2 cache (setting the cache line to zero in
sgimips/sgimips/cpu.c), the system boots OK.

So I began to explore the code, added some printfs and noticed a few strange
things :
    - the mips generic code (in arch/mips/mips) does not detect the L2
cache,
    although it looks like the 4600 is handled ...
    I suspect the indigo2 L2 cache architecture is 'special' , is it the
reason ?
    - the ip22_cache.S functions seems not to be called at all ?
    - I took the plunge and hooked in the ip22_cache.S ip22_sdcache_do_wbinv
     (which look like sisters of the linux mips port) into the mips cache
handling vector
    (moc_sdcache_xxx), using home made wrappers ,
    and called ip22_sdcache_enable, from the ip22_cache_init function, with
not much success ...
    (various exceptions , which make me think I missed something).
    One thing that puzzle me is that the mips generic code wants an
invalidate function,
    which does not seem to exist in ip22 specific code (there is a writeback
and invalidate,
    but this is quite different ... ).

So,
    - Does anybody has link / can explain how to handle the L2 cache on the
indigo2 ?
    - Is there anybody working on the subject ? If someone has uncommitted
experimental code,
    I can test/debug  it.

I have some experience in kernel programming (doing that for a living, on
more or less friendly
    commercial operating systems that I will not dare to disclose here.
Quizz : one is blue, unix-like;
    the other you can open it when you need fresh air, vms-like,
monopolistic),
    so I am used to  crash/restart the machine :-), but I am new to mips;
    I can't promise much of my time, though ...

Regards,
Pascal.