kernel 2.6.14 on MPC8272ADS
Vitaly Bordug
vbordug at ru.mvista.com
Tue Nov 29 00:09:59 EST 2005
Ingo Hornberger wrote:
> Hi Bracha,
>
> I assume that you're using an 8xx!?
>
> This code isn't completely updated yet, but here is a small patch which
> should be more or less working...
>
There is a patch, that did what you are attempting to do below correct way.
mfspr(SPRN_IMMR) does not correctly identify the board, you need to define BOARD_CHIP_NAME
somewhere in board-specific code to get it defined. The <>_device.c and <>_sys.c pair is
in the linus git tree currently, and error message below will not appear even if
BOARD_CHIP_NAME is undefined.
You might want to try more recent kernel.
> regards,
> Ingo
>
> On Sun, 2005-11-27 at 12:22 +0200, Landau, Bracha wrote:
>> I'm trying to move to the latest kernel release from linux 2.6.13.4 on the MPC8272ADS board.
>> 2.6.13.4 works, but from 2.6.14 and up (I don't know where from 2.6.13.4 to 2.6.14 the problem starts) the kernel crashes on bootup with the message
>> "Kernel BUG in ppc_sys_init at arch/ppc/syslib/ppc_sys_init.c:131"
>> Anyone know how to fix this problem?
>>
>> _______________________________________________
>> Linuxppc-embedded mailing list
>> Linuxppc-embedded at ozlabs.org
>> https://ozlabs.org/mailman/listinfo/linuxppc-embedded
>>
>>
>> ------------------------------------------------------------------------
>>
>> diff -Nurb a/arch/ppc/syslib/m8xx_setup.c b/arch/ppc/syslib/m8xx_setup.c
>> --- a/arch/ppc/syslib/m8xx_setup.c 2005-10-28 02:02:08.000000000 +0200
>> +++ b/arch/ppc/syslib/m8xx_setup.c 2005-11-25 11:11:03.000000000 +0100
>> @@ -82,7 +82,7 @@
>> ROOT_DEV = Root_HDA1; /* hda1 */
>> #endif
>>
>> -#ifdef CONFIG_BLK_DEV_INITRD
>> +#if defined(CONFIG_BLK_DEV_INITRD) || defined(CONFIG_EXTRACT_ROOTFS)
>> #if 0
>> ROOT_DEV = Root_FD0; /* floppy */
>> rd_prompt = 1;
>> @@ -389,7 +389,7 @@
>> m8xx_setup_pci_ptrs();
>> #endif
>>
>> -#ifdef CONFIG_BLK_DEV_INITRD
>> +#if defined(CONFIG_BLK_DEV_INITRD) || defined(CONFIG_EXTRACT_ROOTFS)
>> /* take care of initrd if we have one */
>> if ( r4 )
>> {
>> @@ -404,6 +404,15 @@
>> strcpy(cmd_line, (char *)(r6+KERNELBASE));
>> }
>>
>> + /*
>> + * Check if we are really on a Power QUICC CPU.
>> + * Note, that we do not halt the Kernel at this point,
>> + * because we won't get any output here otherwise.
>> + */
>> + if( (mfspr(SPRN_PVR) >> 16) != 0x0050 )
>> + printk( KERN_ERR "ERROR: %s: %d: Wrong CPU Type! (We assumed a Power QUICC CPU)\n" );
>> + identify_ppc_sys_by_id(mfspr(SPRN_IMMR));
>> +
>> ppc_md.setup_arch = m8xx_setup_arch;
>> ppc_md.show_percpuinfo = m8xx_show_percpuinfo;
>> ppc_md.irq_canonicalize = NULL;
>> diff -Nurb a/arch/ppc/syslib/mpc8xx_sys.c b/arch/ppc/syslib/mpc8xx_sys.c
>> --- a/arch/ppc/syslib/mpc8xx_sys.c 2005-10-28 02:02:08.000000000 +0200
>> +++ b/arch/ppc/syslib/mpc8xx_sys.c 2005-11-25 11:11:03.000000000 +0100
>> @@ -20,9 +20,16 @@
>>
>> struct ppc_sys_spec *cur_ppc_sys_spec;
>> struct ppc_sys_spec ppc_sys_specs[] = {
>> + /* The mpc85x and 86x, all have the system ID 0x00.
>> + * And as it seems that even the 885 has the ID 0x00,
>> + * I assume 0x00 for all MPC8XX systems.
>> + * For other cases, you should add a new entry above the
>> + * MPC8XX. You could use the first 8 bits to make
>> + * a more specific match for your system.
>> + */
>> {
>> - .ppc_sys_name = "MPC86X",
>> - .mask = 0xFFFFFFFF,
>> + .ppc_sys_name = "MPC8XX",
>> + .mask = 0x00FF0000,
>> .value = 0x00000000,
>> .num_devices = 2,
>> .device_list = (enum ppc_sys_devices[])
>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> Linuxppc-embedded mailing list
>> Linuxppc-embedded at ozlabs.org
>> https://ozlabs.org/mailman/listinfo/linuxppc-embedded
--
Sincerely,
Vitaly
More information about the Linuxppc-embedded
mailing list