Re: IA64 kexec/kdump 2.6.18-rc5 patch

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 2006-09-13 at 01:13, Jack Steiner wrote:
> > Hi,
> > 	Below is the IA64 kexec/kdump patch against 2.6.18-rc5.
> > 
> ...
> > 3. put AP to a loop of hint.pause instead of call pal_halt_light.
> > diff -Nraup linux-2.6.18-rc5/arch/ia64/kernel/smp.c linux-2.6.18-rc5-kdump/arch/ia64/kernel/smp.c
> > --- linux-2.6.18-rc5/arch/ia64/kernel/smp.c	2006-06-18 09:49:35.000000000 +0800
> > +++ linux-2.6.18-rc5-kdump/arch/ia64/kernel/smp.c	2006-08-30 10:36:01.000000000 +0800
> ...
> > +void
> > +kexec_stop_this_cpu (void *func)
> > +{
> > +	unsigned long pta, impl_va_bits, pal_base;
> > +
> > +	/*
> > +	 * Remove this CPU by putting it into fake SAL rendezvous
> > +	 */
> > +	cpu_clear(smp_processor_id(), cpu_online_map);
> > +	max_xtp();
> > +	ia64_eoi();
> > +
> > +	/* Disable VHPT */
> > +	impl_va_bits = ffz(~(local_cpu_data->unimpl_va_mask | (7UL << 61)));
> > +	pta = POW2(61) - POW2(vmlpt_bits);
> > +	ia64_set_pta(pta | (0 << 8) | (vmlpt_bits << 2) | 0);
> > +
> > +	local_irq_disable();
> > +	pal_base = __get_cpu_var(ia64_mca_pal_base);
> > +	kexec_fake_sal_rendez(func, ap_wakeup_vector, pal_base);
> > +}
> > +#endif
> 
> What was the reason for introducing the kexec_fake_sal_rendez() function instead of
> actually returning to the real SAL slave loop. The HOTPLUG_CPU code in play_dead()
> in arch/ia64/kernel/process.c is very similar to what is needed.
> 

  the fake_sal_rendez code is from Aziz to be used at time of kexec -l
if CONFIG_HOTPLUG_CPU is not defined. They are not executed at the time
of crash dump.

> 
> I'm sure the problem is platform specific, but on the SN platform, the other cpus must be
> sent back to the real SAL slave loops. Otherwise, targeting of IO interrupts
> will not work correctly in the new kexec'd kernel. 
> 
> IO interrupts are distributed across cpus that are not in the SAL slave loop. If 
> cpus are idled in the OS instead of SAL, interrrupts are incorrected targeted
> to cpus that cannot respond.
> 
> 
  At the time of crash, neither fake nor real SAL rendez state are
entered. I just put all the other cpus into cpu_relax loop to simplify
the code. Does it work on SN2 if you call ia64_jump_to_sal at
kdump_cpu_freeze? 

Thanks
Zou Nan hai
> 
> -- jack
-
To unsubscribe from this list: send the line "unsubscribe linux-ia64" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel]     [Sparc Linux]     [DCCP]     [Linux ARM]     [Yosemite News]     [Linux SCSI]     [Linux x86_64]     [Linux for Ham Radio]

  Powered by Linux