Allowing i-side updates of TLB on 4xx/book-e

From: Kumar Gala <hidden>
Date: 2005-03-04 01:04:01

Paul,

I know its been forever since you looked at ppc32 and even longer for 4xx/booke :)  I did have a question regarding some code on the i-side TLB faults in do_page_fault:

                /* Since 4xx/Book-E supports per-page execute permission,
                 * we lazily flush dcache to icache. */
                ptep = NULL;
                if (get_pteptr(mm, address, &ptep) && pte_present(*ptep)) {
                        struct page *page = pte_page(*ptep);

                        if (! test_bit(PG_arch_1, &page->flags)) {
                                flush_dcache_icache_page(page);
                                set_bit(PG_arch_1, &page->flags);
                        }
                        pte_update(ptep, 0, _PAGE_HWEXEC);
                        _tlbie(address);
                        pte_unmap(ptep);
                        up_read(&mm->mmap_sem);
                        return 0;
                }

Is there a reason we don't allow preloading of the I-side TLB entry that we just updated, rather than doing the _tlbie?  We have to figure that we are about to take another I-TLB miss to reload the entry we just got this InstructionStorage fault for.  Is there something I'm missing?

thanks

- kumar
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help