On Mon, 2008-09-01 at 09:22 +0200, Zhou Rui wrote: > 在 2008-09-01一的 15:42 +1000,Benjamin Herrenschmidt写道: > > On Sun, 2008-08-31 at 13:50 +0200, Zhou Rui wrote: > > > Hi, all: > > > My problem seems basically solved. > > > We we used to call vmalloc() in the memory management part of our > > > source, but it seems to be the key unreliable point resulting in the > > > problem. vmalloc() always assigns some virtual addresses whose > > > corresponding physical addresses are out of memory size (there is only > > > 32MB DRAM in our 405 board). Once instructions try to access these > > > illegal physical address, machine check happens > > > > That should -never- happen. > > > > Have you verified, as I asked you a while ago, that you are actually > > passing the right amount of memory to your kernel from the device-tree > > or the bootloader ? > > > > Ben. > > I added "mem=32M" to linux command line of the bootloader, and got the > same machine check.
Paul spotted today that you are actually trying to use __pa() on addresses returned from vmalloc, that will not work. Those are virtual addresses in a non-linear mapping, _pa() only works on the linear mapping. Ben. _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev