Using kexec on a dual-core arm processor (arm7), the non-boot CPU (CPU1) 
appears to be locking up during kexec.

The SoC is mach-transcede  
The kernel version is 3.0.51-rt75

The issue is localized to  linux-3.0.51/arch\arm/mach-transcede/hotplug.c.


                cpu_enter_lowpower();
            platform_do_lowpower(cpu, &spurious);
                cpu_leave_lowpower().                                      / *  
bring this CPU back into the world of cache  coherency, and then restore 
interrupts  */


static inline void platform_do_lowpower(unsigned int cpu, int *spurious)
{
                for (;;) {                                                      
              / * there is no power-control hardware on this platform, so all 
we can do is put the core into WFI; this is safe as the calling code will have 
already disabled interrupts */
                        wfe();
                                if (pen_release == cpu) {
                                                break;                          
                / * OK, proper wakeup, we're done */
                                }

                                (*spurious)++;                                  
       / * Getting here, means that we have come out of WFI without having been 
woken up - Just note it happening - when we're woken, we can report its 
occurrence.
                }
}



When the issue occurs the non-boot CPU (ie CPU 1) is entering the 
platform_do_lowpower sequence where it should wait until pren_release is set to 
1 by  CPU1 


Please note that  This failure is random. It usually happens somewhere between 
300 and 5000 kexec loops.

_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec

Reply via email to