On Thu, 5 Aug 2010 11:33:44 -0700 Shawn Jin <shawnx...@gmail.com> wrote:
> >> > Before the flat tree was accessed, I checked the DTLB and didn't find > >> > any entry related to 0xc0be4300. After the exception, I found the > >> > following DTLBs. > >> > > >> > 30 : 02 c0be4000 4KB ------ -> 00000000 > >> > 31 : 00 fa000000 8MB VI-S-M -> fa000000 > >> > > >> > The DTLB#30 doesn't seem right. Why would it map to 0x0? I think this > >> > should be something like 00be4000? > > > > Note that the valid bit is clear -- it's not mapping to anything. > > Did the exception handler try to set a TLB here but the setting was > not completed? Probably. You won't have any page tables yet, much less an entry for the device tree. > >> I think the cause is clear now. But how to fix it? Two questions: > >> 2. If the DTLB miss exception handler is not the right guy to load a > >> proper TLB entry, how can I set one entry based on the link_address > >> and the address of the flat dt blob? > > > > Given how early in the boot process it is, it's probably going to need > > to be handled specially. > > What APIs can I use to set up DTLBs? I don't think there is one that works on 8xx. You'll could hack up initial_mmu, or else write some C code to insert an 8xx TLB entry. -Scott _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev