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
                        {


Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Xenomai-help mailing list
[email protected]
https://mail.gna.org/listinfo/xenomai-help

Reply via email to