On Wed, 2007-09-19 at 10:51 +0200, Jan Kiszka wrote:
> Hi,
> 
> IRQ hit counters are broken in latest I-pipe 1.10-x for the wired path. 
> This patch moves the counter maintenance out of __ipipe_set_irq_pending 
> and instead makes it explicit at the required spots.

I would rather add the missing accounting code as below. Marking an
interrupt as pending using the __ipipe_set_irq_pending() interface
should implicitely be paired with proper accounting.

--- a/kernel/ipipe/core.c
+++ b/kernel/ipipe/core.c
@@ -786,6 +786,7 @@ int fastcall __ipipe_dispatch_wired(struct ipipe_domain 
*head_domain, unsigned i
        old = ipipe_current_domain;
        ipipe_current_domain = head_domain; /* Switch to the head domain. */
 
+       ipipe_cpudom_var(head_domain, irqall)[irq]++;
        __set_bit(IPIPE_STALL_FLAG, &ipipe_cpudom_var(head_domain, status));
        head_domain->irqs[irq].handler(irq, head_domain->irqs[irq].cookie); /* 
Call the ISR. */
        __ipipe_run_irqtail();

> 
> Note that this patch also unexports __ipipe_set_irq_pending because I 
> found no reason why it should be used outside the i-pipe core. Please 
> correct me if I'm wrong on this.
> 

That's correct. This export became useless as soon as
__ipipe_unlock_irq() and friends moved out of line, and started fiddling
directly with the interrupt bitmap internally.

> Jan
> 
-- 
Philippe.



_______________________________________________
Adeos-main mailing list
[email protected]
https://mail.gna.org/listinfo/adeos-main

Reply via email to