this can be still be caused by bad dram timing. Once you start caching, cache flush to ram will be a burst. If the dram timing is not right, you will get data corruption that will not occur with caching off. I used to have this happen very frequently.
So, I still think you have a memory configuration problem.
Thank you ron for your opinions. but here is a probem, if it's dram configuration that caused this, why when I set and enabled the fixed range mtrr, data wasn't corrupted? linuxbios ram part code runs in the 1MB memory range, so that's exactly the fixed range mtrr covers. If enbaling fixed mtrr doesn't cause data corruption, then it shouldn't be a dram configuration problem, am I right?