Subject: Re: Help needed to fix NetBSD/shark
To: Izumi Tsutsui <tsutsui@ceres.dti.ne.jp>
From: Julio M. Merino Vidal <jmmv84@gmail.com>
List: port-arm
Date: 08/01/2007 17:38:35
On 30/07/2007, at 16:14, Izumi Tsutsui wrote:

> jmmv84@gmail.com wrote:
>
>> According to the PR, delivering events through a serial
>> console may show some progress (which I believe and will explain
>> below), but I don't have one to try.
>
> ddb trace after break on serial console shows:

Hmm, didn't think of ddb.  I have made the keyboard interrupt work  
(as explained earlier, by adding a very gross hack to  
isa_irqhandler.c) and could get output very similar to yours.

Breaking into ddb tells me:

evcnt type 1: soft clock = 290
evcnt type 1: isa irq 1 = 24
evcnt type 1: isa irq 14 = 22

Then, using 'cont' and returning to ddb after a minute or so does not  
show any changes to the above values except for the irq 1 being  
incremented by three or so.  Which makes me assume that irq 1 is the  
keyboard.

[...]
> evcnt type 1: soft clock = 17
> evcnt type 1: soft net = 1
> evcnt type 1: soft serial = 12
> evcnt type 1: isa irq  4 = 12
> evcnt type 1: isa irq  5 = 2
> db>
>
> Looks a kernel jumps into cpu_idle(9) at IPL_CLOCK?

I don't know... I added some checks (a global var) to see if cpu_idle  
was being called from somewhere inside clockintr and that was not the  
case.

However, adding a printf to cpu_idle also fixes the problem as  
strange as it may seem.  But removing the contents of the current  
cpu_idle function does not help (to avoid the power management it  
attempts).

-- 
Julio M. Merino Vidal <jmmv84@gmail.com>