Subject: Kernel doesn't work on 200MHz Indy

From: [email-masked] (Alistair Lambie)
Date: Thu, 20 Jun 1996 23:02:58 +1200 (NZT)

Just incase anyone is interested:

I was able to boot Davids kernel on my Indy when I only had a 100MHz R4600PC,
but know I've upgraded to a 200MHz R4400SC it dies!  Looks like something
to do with the memory controller...

Here goes a bit of what comes out:

Bad pmd in pte_alloc_kernel: 00000000
Double fault caused by invalid entries in pgd:
Double fault address   : ffffffffe4000000
c0_epc                 : ffffffff88093ebc

Of course there was heaps more, but I couldn't get cut and paste to work :-)

I haven't had time to have a look at what's going on yet.

Cheers, Alistair

PS - It only gives a BogoMIPS reading of 103.63, which is around what I got
     when it was a 100MHz chip.

---

From: [email-masked] (William J. Earl)
Date: Thu, 20 Jun 1996 11:12:17 -0700

> to do with the memory controller...

      There is no way the kernel could work on an R4000 or R4400 without 
changes to the cache routines, as well as the addition of certain workarounds
for processor errata.  Stick to R4600 and R5000 processors for the time being.
I asked David to start with the R4600, because the workarounds for the errata
are far simpler, and because it and the R5000 are the volume processors for
Indy.  It will not be all that hard to add R4000 and R4400 support, but there
are several messy workarounds to implement, so it is more interesting to get
a complete system working on an R4600 or R5000.

...
 >      when it was a 100MHz chip.

      That is to be expected.  BogoMIPS is essentiall 2 times the number of
times one can execute a loop like this:

	la	a0,0x7FFFFFFF
1:	bltz	a0,1b
	addu	a0,-1

On an R3000, R4600, or R5000, the branch executes in two cycles (counting one
for the branch delay slot), so BogoMIPS equals the processor clock rate.
On an R4000 or R4400, the branch executes in four cycles (counting one for
the branch delay slot), so BogoMIPS equals one half the processor clock rate.
There appears to be a small error in the current logic for calibrating
the processor clock rate, which accounts for the BogoMIPS being 103.63 instead
of 100.00.

---

From: "David S. Miller" <[email-masked]>
Date: Fri, 21 Jun 1996 00:48:58 -0700

Date: Thu, 20 Jun 1996 11:12:17 -0700
   From: [email-masked] (William J. Earl)

	 There is no way the kernel could work on an R4000 or R4400
   without changes to the cache routines, as well as the addition of
   certain workarounds for processor errata.  Stick to R4600 and R5000
   processors for the time being.  I asked David to start with the
   R4600, because the workarounds for the errata are far simpler, and
   because it and the R5000 are the volume processors for Indy.  It
   will not be all that hard to add R4000 and R4400 support, but there
   are several messy workarounds to implement, so it is more
   interesting to get a complete system working on an R4600 or R5000.

Heh, I go the the UK and people are trying my kernel out all over the
place.  This is good.

I will work on the issues necessary for R4[40]00 processor support
certainly.  Take note that I worked to get a shell prompt on my target
machine "by all means necessary" as quickly as possible so that I
could have an early proof of concept to show everyone.  With this
there are some hard coded items in the tree that need to be attended
to, but I should be able to get it all to work.  One notable thing is
that machines not equipped with NEWPORT graphics cards, and instead
possess an INDY with the older EXPRESS graphics card, will not be able
to get things working until I get the serial console up or I write a
driver for the EXPRESS.  Both will happen in due time.

As you can see I am back from the UK, and will try to get back on
track this weekend.

Later,
David S. Miller
[email-masked]