[BUG] flash failure with CONFIG_RTAS_FLASH=m

Nathan Lynch ntl at pobox.com
Fri Jan 5 10:49:51 EST 2007


Hi-

Was trying to flash firmware on a JS20 with the rtas flash code built
modular and I got the "kernel bug" printk in rtas_flash_firmware:

        /* NOTE: the "first" block list is a global var with no data
         * blocks in the kernel data segment.  We do this because
         * we want to ensure this block_list addr is under 4GB.
         */
        rtas_firmware_flash_list.num_blocks = 0;
        flist = (struct flash_block_list *)&rtas_firmware_flash_list;
        rtas_block_list = virt_to_abs(flist);
        if (rtas_block_list >= 4UL*1024*1024*1024) {
                printk(KERN_ALERT "FLASH: kernel bug...flash list
        header addr above 4GB\n");
                return;
        }

The problem doesn't happen if CONFIG_RTAS_FLASH=y.

What's the best way to fix this?  Should rtas_firmware_flash_list be
defined in some non-modular code and exported?




More information about the Linuxppc-dev mailing list