M. Koehrer wrote: > Hi Philippe, > > I have applied the patches as proposed. > However, the kernel still freezes.
:(
> Here is the corresponding message.
>
OK, here is another instrumentation, hoping that the bug will not move
again and that we can nail down what piece of memory contains nonsense.
The next step would then be to narrow down the corruption window (or to
find the reason for filling in nonsense during initialisation).
Jan
Index: linux-2.6.20/arch/i386/kernel/ipipe.c
===================================================================
--- linux-2.6.20.orig/arch/i386/kernel/ipipe.c
+++ linux-2.6.20/arch/i386/kernel/ipipe.c
@@ -782,6 +782,13 @@ int __ipipe_handle_irq(struct pt_regs re
head = __ipipe_pipeline.next;
next_domain = list_entry(head, struct ipipe_domain, p_link);
+ if (irq==219) {
+ ipipe_set_printk_sync(next_domain);
+ printk("%s:%d\n", __FUNCTION__, __LINE__);
+ printk("%s:%d %lx %p %p\n", __FUNCTION__, __LINE__,
+ ipipe_root.irqs[irq].control,
ipipe_root.irqs[irq].acknowledge,
+ ipipe_root.irqs[irq].handler);
+ }
if (likely(test_bit(IPIPE_WIRED_FLAG,
&next_domain->irqs[irq].control))) {
if (!m_ack && next_domain->irqs[irq].acknowledge != NULL)
next_domain->irqs[irq].acknowledge(irq);
@@ -865,6 +872,10 @@ finalize:
* current domain in the pipeline.
*/
+ if (irq==219)
+ printk("%s:%d %lx %p %p\n", __FUNCTION__, __LINE__,
+ ipipe_root.irqs[irq].control,
ipipe_root.irqs[irq].acknowledge,
+ ipipe_root.irqs[irq].handler);
__ipipe_walk_pipeline(head, cpuid);
ipipe_load_cpuid();
Index: linux-2.6.20/kernel/ipipe/core.c
===================================================================
--- linux-2.6.20.orig/kernel/ipipe/core.c
+++ linux-2.6.20/kernel/ipipe/core.c
@@ -791,6 +791,11 @@ void fastcall __ipipe_sync_stage(unsigne
rank = __ipipe_ffnz(submask);
irq = (level << IPIPE_IRQ_ISHIFT) + rank;
+ if (irq==219)
+ printk("%s:%d %lx %p %p\n", __FUNCTION__,
__LINE__,
+ ipipe_root.irqs[irq].control,
+ ipipe_root.irqs[irq].acknowledge,
+ ipipe_root.irqs[irq].handler);
if (test_bit(IPIPE_LOCK_FLAG, &ipd->irqs[irq].control))
{
__clear_bit(rank,
&cpudata->irq_pending_lo[level]);
continue;
@@ -807,6 +812,8 @@ void fastcall __ipipe_sync_stage(unsigne
if (ipd == ipipe_root_domain)
trace_hardirqs_off();
+ if (irq==219)
+ printk("%s:%d\n", __FUNCTION__, __LINE__);
__ipipe_run_isr(ipd, irq, cpuid);
#ifdef CONFIG_SMP
{
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Xenomai-help mailing list [email protected] https://mail.gna.org/listinfo/xenomai-help
