On Fri, Dec 4, 2009 at 2:58 AM, Tarl Neustaedter Tarl.Neustaedter@sun.com wrote:
Mark Cave-Ayland wrote:
Tarl Neustaedter wrote:
Continuing to work on Milax, I've found out that the infinite loop bug I'm getting here is because of an MMU problem - two different virtual addresses appear to be mapped to the same physical address.
I believe that's legal. I know that OBP used to do that on sun4s systems.
Oh that's interesting to know; however in this case I'm fairly confident it's broken :( What happens is that first the volume descriptor is read from the ISO image into a special buffer, and subsequent reads for file entries should then go into a different buffer. Unfortunately the subsequent reads into the second buffer seem to be mapped to the same memory location
Ah. So the problem isn't that you have two virts->one phys, but that you expect your two virts to have different physical backing, and they don't.
Yup, that's a bug :-)
Enabling DEBUG_MMU (and fixing the bugs...) confirms the MMU problem: DMMU dump: [46] VA: 8000000, PA: 0, 8k, user, RW, unlocked, ctx 0 [53] VA: 8002000, PA: 0, 8k, user, RW, unlocked, ctx 0 [54] VA: 8004000, PA: 0, 8k, user, RW, unlocked, ctx 0
The physical address is the same (0) for all three VA entries. Why?