On Sat, Dec 13, 2003 at 06:07:51PM +0100, Ralf Baechle wrote:
> On Fri, Dec 12, 2003 at 10:45:08AM +0000, Peter Horton wrote:
>
> > More info on the random segmentation faults and data corruption on my Qube2.
> >
> > 2.4.21 from CVS is the first kernel to exhibit the problem. I tracked it
> > down to the cache handling changes that went in between 2.4.20 and 2.4.21.
> >
> > By (not very scientifically) removing flush_dcache_page() and
> > re-instating flush_page_to_ram() I managed to get the 2.4.21 kernel
> > stable (see attached patch). Applying a similiar patch to 2.4.23 (CVS
> > HEAD) allows me to run 2.4.23 too.
> >
> > I don't know how to track the problem any further - the kernel's cache
> > handling is a bit out of my league.
> >
> > Anyone got a clue stick they can point me in the right direction with ?
>
> Can you put a printk into c-r4k.c and print the value of the
> shm_align_mask variable? I want to make sure it's got a sane value on
> your box. Also the first few lines of your bootup messages with the
> processor and cache stuff would be useful.
>
See below. All the cache settings and the shm_align_mask look fine
according to the RM5231 data sheet I have here.
At the moment the only change I make from the linux_2_4 HEAD kernel is
to update include/asm-mips/cacheflush.h so:
-#define flush_page_to_ram(page) do { } while(0)
+#define flush_page_to_ram(page) flush_dcache_page(page)
This single change gives me a rock solid kernel, so it masks the problem
somehow.
P.
CPU revision is: 000028a0
FPU revision is: 000028a0
D-cache:
size 32768
linesz 32
sets 512
ways 2
waysize 16384
waybit 14
I-cache:
size 32768
linesz 32
sets 512
ways 2
waysize 16384
waybit 14
Primary instruction cache 32kB, physically tagged, 2-way, linesize 32 bytes.
Primary data cache 32kB 2-way, linesize 32 bytes.
shm_align_mask 0x3fff
Linux version 2.4.23 (pdh@skeleton-jack) (gcc version 2.95.4 20011002 (Debian
prerelease)) #6 Sat Dec 13 18:13:09 GMT 2003
Determined physical RAM map:
memory: 02000000 @ 00000000 (usable)
On node 0 totalpages: 8192
zone(0): 8192 pages.
zone(1): 0 pages.
zone(2): 0 pages.
Kernel command line: console=ttyS0,115200 ide1=noprobe root=/dev/hda2
ide_setup: ide1=noprobe
Calibrating delay loop... 249.03 BogoMIPS
Memory: 30380k/32768k available (1147k kernel code, 2388k reserved, 168k data,
100k init, 0k highmem)
...
|