I'm seeing this with the current x86.git:

arch/x86/mm/built-in.o: In function `fix_to_virt': 
/home/jeremy/hg/xen/paravirt/linux-i386/include2/asm/fixmap_32.h:157: undefined 
reference to `__this_fixmap_does_not_exist'

It appears to be coming from ioremap_32.c.

I can't see any particular change which would have caused this, but this loop in early_ioremap_reset:

        for (idx = FIX_BTMAP_BEGIN; idx <= FIX_BTMAP_END; idx--) {
                addr = fix_to_virt(idx);
                pte = early_ioremap_pte(addr);
                if (!*pte & _PAGE_PRESENT) {
                        phys = *pte & PAGE_MASK;
                        set_fixmap(idx, phys);
                }
        }

seems incompatible with the test in fix_to_virt:

        /*
         * this branch gets completely eliminated after inlining,
         * except when someone tries to use fixaddr indices in an
         * illegal way. (such as mixing up address types or using
         * out-of-range indices).
         *
         * If it doesn't get removed, the linker will complain
         * loudly with a reasonably clear error message..
         */
        if (idx >= __end_of_fixed_addresses)
                __this_fixmap_does_not_exist();

While the compiler could prove that idx is within range here, it seems a bit much to require it to.

   J
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to