On Fri, 25 Feb 2005 18:20:55 +1100
Benjamin Herrenschmidt <[EMAIL PROTECTED]> wrote:

> Ok, LTP dies on POWER5, investigation in progress ;)

I bet the address arg is incorrect in some case.  It is easy
to add debugging for this, for example in your set_pte_at()
implementation you can do something like:

static inline void set_pte_at(struct mm_struct *mm, unsigned long addr,
                              pte_t *ptep, pte_t pte)
{
#ifdef DEBUG_SET_PTE_AT
        {
                pgd_t *pgd_check = pgd_offset(mm, addr);
                pud_t *pud_check = pud_offset(pgd_check, addr);
                pmd_t *pmd_check = pmd_offset(pud_check, addr);
                pte_t *pte_check = pte_offset(pmd_check, addr);

                BUG_ON(pte_check != ptep);
        }
#endif
}

BUG_ON() may hinder debugging if you hit a range of such
incorrect calculations, so maybe a single printk which
just prints __builtin_return_address(0) or current_text_addr()
as well.

Reply via email to