All of lore.kernel.org
 help / color / mirror / Atom feed
* [Xenomai-help] mpc8641d smp hangs on boot
@ 2008-09-03 11:56 Giulio Gaio
  2008-09-08  9:19 ` Philippe Gerum
  0 siblings, 1 reply; 2+ messages in thread
From: Giulio Gaio @ 2008-09-03 11:56 UTC (permalink / raw)
  To: xenomai

Hi all,
i have some problems with smp on mpc8641d (which equips a vme cpu board 
mvme7100).
I'm using linux-2.6.20 (which is the only version supported by the board 
manifacturer) patched with xenomai 2.4.3.
The cpu (which performs a tftpboot) boots fine in up mode.
Instead, when enabling smp, it freezes after enabling the ipipe ("I-pipe 
1.7-13: pipeline enabled");
I have inserted in the kernel code some printk's to find the point of 
freezing and i have found that it is located in kernel/printk.c in the 
acquire_console_sem() just before down(&console_sem). See the console 
output below of the boot.


Linux/PowerPC load: console=ttyS0,9600 root=/dev/nfs ip=::::::dhcp
Finalizing device tree... flat tree at 0x799000
Using MVME7100 machine description
Total memory = 1024MB; using 2048kB for hash table (at 8fe00000)
Linux version 2.6.20-xeno-2.4.3 (giulio@domain.hid) (gcc version 4.1.3 
20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)) #27 SMP PR8
kernel/printk.c - acquire_console_sem(): before BUG_ON(in_interrupt());
kernel/printk.c - acquire_console_sem(): after BUG_ON(in_interrupt());
kernel/printk.c - acquire_console_sem(): before  if (console_suspended)
kernel/printk.c - acquire_console_sem(): before down(&console_sem);
kernel/printk.c - acquire_console_sem(): after down(&console_sem);
kernel/printk.c - acquire_console_sem(): after console_may_schedule = 1;
Found FSL PCI host bridge at 0x00000000f1008000.Firmware bus number: 0->255
Found FSL PCI host bridge at 0x00000000f1009000.Firmware bus number: 0->255
MVME7100 board from Emerson Network Power - Embedded Computing
L2 cache enabled. L2CTL reg: 0xb0000000
Zone PFN ranges:
  DMA             0 ->   262144
  Normal     262144 ->   262144
  HighMem    262144 ->   262144
early_node_map[1] active PFN ranges
    0:        0 ->   262144
Built 1 zonelists.  Total pages: 260096
Kernel command line: console=ttyS0,9600 root=/dev/nfs ip=::::::dhcp
linux/init/main.c - start_kernel(): before sort_main_extable();
linux/init/main.c - start_kernel(): before trap_init();
linux/init/main.c - start_kernel(): before rcu_init();
linux/init/main.c - start_kernel(): before init_IRQ();
mpic: Setting up MPIC " MPIC     " version 1.2 at f1040000, max 2 CPUs
mpic: ISU size: 16, shift: 4, mask: f
mpic: Initializing for 80 sources
linux/init/main.c - start_kernel(): before pidhash_init();
PID hash table entries: 4096 (order: 12, 16384 bytes)
linux/init/main.c - start_kernel(): before init_timers();
linux/init/main.c - start_kernel(): before hrtimers_init();
linux/init/main.c - start_kernel(): before softirq_init();
linux/init/main.c - start_kernel(): before timekeeping_init();
linux/init/main.c - start_kernel(): before time_init();
linux/init/main.c - start_kernel(): before ipipe_init();
I-pipe 1.7-13: pipeline enabled.
linux/init/main.c - start_kernel(): before profile_init();
linux/init/main.c - start_kernel(): before if (!irqs_disabled());
linux/init/main.c  - start_kernel(): before local_irq_enable();
linux/init/main.c - start_kernel(): before console_init();
drivers/char/tty_io.c - console_init(void): before disable_early_printk()
arch/powerpc/kernel/udbg.c - disable_early_printk(): before 
unregister_console()
kernel/printk.c - unregister_console(): before acquire_console_sem();
kernel/printk.c - acquire_console_sem(): before BUG_ON(in_interrupt());
kernel/printk.c - acquire_console_sem(): after BUG_ON(in_interrupt());
kernel/printk.c - acquire_console_sem(): before  if (console_suspended)
kernel/printk.c -  : before down(&console_sem);
-------------- CPU freezed ---------------


I have found on the net that there are patches for printk.c due possible 
racing conditions during the boot in smp configuration (see 
http://www.ussg.iu.edu/hypermail/linux/kernel/0804.1/0258.html).
So this could be the problem.
But it could be also that the printk's, which i inserted, determined 
that the freezing point was in one of the printk.c functions and there 
is a more general problem of locking/unlocking resources in smp 
configuration.

In the end, in my case, vanilla linux-2.60.20-smp works, 
linux-2.60.20-smp-xenomai doesn't work, linux-2.60.20-up-xenomai works.

So my question (and my doubt) is: has anyone worked with mpc8641d with 
linux-2.60.20 smp and xenomai?

Any help will be appreciated.

    Giulio Gaio



^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [Xenomai-help] mpc8641d smp hangs on boot
  2008-09-03 11:56 [Xenomai-help] mpc8641d smp hangs on boot Giulio Gaio
@ 2008-09-08  9:19 ` Philippe Gerum
  0 siblings, 0 replies; 2+ messages in thread
From: Philippe Gerum @ 2008-09-08  9:19 UTC (permalink / raw)
  To: Giulio Gaio; +Cc: xenomai

Giulio Gaio wrote:
> Hi all,
> i have some problems with smp on mpc8641d (which equips a vme cpu board 
> mvme7100).
> I'm using linux-2.6.20 (which is the only version supported by the board 
> manifacturer) patched with xenomai 2.4.3.

Xenomai/Adeos support for powerpc/SMP systems starts with kernel 2.6.22. There
is no way you could use an Adeos patch for 2.6.20 in SMP mode.

> The cpu (which performs a tftpboot) boots fine in up mode.
> Instead, when enabling smp, it freezes after enabling the ipipe ("I-pipe 
> 1.7-13: pipeline enabled");
> I have inserted in the kernel code some printk's to find the point of 
> freezing and i have found that it is located in kernel/printk.c in the 
> acquire_console_sem() just before down(&console_sem). See the console 
> output below of the boot.
> 
> 
> Linux/PowerPC load: console=ttyS0,9600 root=/dev/nfs ip=::::::dhcp
> Finalizing device tree... flat tree at 0x799000
> Using MVME7100 machine description
> Total memory = 1024MB; using 2048kB for hash table (at 8fe00000)
> Linux version 2.6.20-xeno-2.4.3 (giulio@domain.hid) (gcc version 4.1.3 
> 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)) #27 SMP PR8
> kernel/printk.c - acquire_console_sem(): before BUG_ON(in_interrupt());
> kernel/printk.c - acquire_console_sem(): after BUG_ON(in_interrupt());
> kernel/printk.c - acquire_console_sem(): before  if (console_suspended)
> kernel/printk.c - acquire_console_sem(): before down(&console_sem);
> kernel/printk.c - acquire_console_sem(): after down(&console_sem);
> kernel/printk.c - acquire_console_sem(): after console_may_schedule = 1;
> Found FSL PCI host bridge at 0x00000000f1008000.Firmware bus number: 0->255
> Found FSL PCI host bridge at 0x00000000f1009000.Firmware bus number: 0->255
> MVME7100 board from Emerson Network Power - Embedded Computing
> L2 cache enabled. L2CTL reg: 0xb0000000
> Zone PFN ranges:
>   DMA             0 ->   262144
>   Normal     262144 ->   262144
>   HighMem    262144 ->   262144
> early_node_map[1] active PFN ranges
>     0:        0 ->   262144
> Built 1 zonelists.  Total pages: 260096
> Kernel command line: console=ttyS0,9600 root=/dev/nfs ip=::::::dhcp
> linux/init/main.c - start_kernel(): before sort_main_extable();
> linux/init/main.c - start_kernel(): before trap_init();
> linux/init/main.c - start_kernel(): before rcu_init();
> linux/init/main.c - start_kernel(): before init_IRQ();
> mpic: Setting up MPIC " MPIC     " version 1.2 at f1040000, max 2 CPUs
> mpic: ISU size: 16, shift: 4, mask: f
> mpic: Initializing for 80 sources
> linux/init/main.c - start_kernel(): before pidhash_init();
> PID hash table entries: 4096 (order: 12, 16384 bytes)
> linux/init/main.c - start_kernel(): before init_timers();
> linux/init/main.c - start_kernel(): before hrtimers_init();
> linux/init/main.c - start_kernel(): before softirq_init();
> linux/init/main.c - start_kernel(): before timekeeping_init();
> linux/init/main.c - start_kernel(): before time_init();
> linux/init/main.c - start_kernel(): before ipipe_init();
> I-pipe 1.7-13: pipeline enabled.
> linux/init/main.c - start_kernel(): before profile_init();
> linux/init/main.c - start_kernel(): before if (!irqs_disabled());
> linux/init/main.c  - start_kernel(): before local_irq_enable();
> linux/init/main.c - start_kernel(): before console_init();
> drivers/char/tty_io.c - console_init(void): before disable_early_printk()
> arch/powerpc/kernel/udbg.c - disable_early_printk(): before 
> unregister_console()
> kernel/printk.c - unregister_console(): before acquire_console_sem();
> kernel/printk.c - acquire_console_sem(): before BUG_ON(in_interrupt());
> kernel/printk.c - acquire_console_sem(): after BUG_ON(in_interrupt());
> kernel/printk.c - acquire_console_sem(): before  if (console_suspended)
> kernel/printk.c -  : before down(&console_sem);
> -------------- CPU freezed ---------------
> 
> 
> I have found on the net that there are patches for printk.c due possible 
> racing conditions during the boot in smp configuration (see 
> http://www.ussg.iu.edu/hypermail/linux/kernel/0804.1/0258.html).
> So this could be the problem.
> But it could be also that the printk's, which i inserted, determined 
> that the freezing point was in one of the printk.c functions and there 
> is a more general problem of locking/unlocking resources in smp 
> configuration.
> 
> In the end, in my case, vanilla linux-2.60.20-smp works, 
> linux-2.60.20-smp-xenomai doesn't work, linux-2.60.20-up-xenomai works.
> 
> So my question (and my doubt) is: has anyone worked with mpc8641d with 
> linux-2.60.20 smp and xenomai?
> 
> Any help will be appreciated.
> 
>     Giulio Gaio
> 
> 
> _______________________________________________
> Xenomai-help mailing list
> Xenomai-help@domain.hid
> https://mail.gna.org/listinfo/xenomai-help
> 


-- 
Philippe.



^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2008-09-08  9:19 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-09-03 11:56 [Xenomai-help] mpc8641d smp hangs on boot Giulio Gaio
2008-09-08  9:19 ` Philippe Gerum

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.