Skip to contentSkip to conversation

Alchemy: fix interrupt routing

PATCH Applied Sergei Shtylyov 3 participants 7 messages Dec 5, 2007 MIPS

lore
Share & tools
lore
#0 lore raw

cover Alchemy: fix interrupt routing

Hello.

The two following patches together fix the interrupt routing currently broken
and causing boot failure with such messages:

unexpected IRQ # 8
irq 8, desc: 80406dd0, depth: 1, count: 0, unhandled: 0 ->handle_irq(): 80157d70, handle_bad_irq+0x0/0x38c ->chip(): 804016d0, 0x804016d0
->action(): 00000000
IRQ_DISABLED set

The patches are against the Linus' tree...

WBR, Sergei

#1 lore raw

Sergei,

Quoted 12 lines · Sergei Shtylyov

Hello.

The two following patches together fix the interrupt routing currently broken
and causing boot failure with such messages:

unexpected IRQ # 8
irq 8, desc: 80406dd0, depth: 1, count: 0, unhandled: 0 ->handle_irq(): 80157d70, handle_bad_irq+0x0/0x38c ->chip(): 804016d0, 0x804016d0
->action(): 00000000
IRQ_DISABLED set

Quoted 3 lines

The patches are against the Linus' tree...

WBR, Sergei

Thanks a billion!
Finally I can boot linux-2.6.24-rc on my Au1200 again!

Signature · 2 lines
Manuel Lauss
HSSE / FH Hagenberg
#2 lore raw
Quoted 2 lines · Manuel Lauss

Thanks a billion!
Finally I can boot linux-2.6.24-rc on my Au1200 again!

And with a bit of luck Alchemy will now support tickless, too.

Ralf

#3 lore raw
Quoted 4 lines · Ralf Baechle
Quoted 2 lines

Thanks a billion!
Finally I can boot linux-2.6.24-rc on my Au1200 again!

And with a bit of luck Alchemy will now support tickless, too.

Sigh. If only it had working PCI... :-(

Quoted 1 line

Ralf

WBR, Sergei

#4 lore raw
In reply to Ralf Baechle
Quoted 4 lines · Ralf Baechle
Quoted 2 lines

Thanks a billion!
Finally I can boot linux-2.6.24-rc on my Au1200 again!

And with a bit of luck Alchemy will now support tickless, too.

It works:

Timer Stats Version: v0.2
Sample period: 8.024 s

    8,     1 swapper          __netdev_watchdog_up (dev_watchdog)
    8,     1 swapper          phy_connect (phy_timer)
    8,     1 swapper          phy_connect (phy_timer)
    7,     0 swapper          receive_chars (delayed_work_timer_fn)
    1,     1 swapper          cache_register (delayed_work_timer_fn)
    1,     1 swapper          neigh_table_init_no_netlink (neigh_periodic_timer)
    4,     1 swapper          queue_delayed_work_on (delayed_work_timer_fn)
    2,   866 mvltd            schedule_timeout (process_timeout)
    1,     0 swapper          page_writeback_init (wb_timer_fn)
    1,     1 init             schedule_timeout (process_timeout)

41 total events, 5.109 events/sec

Quoted 1 line

Ralf

WBR, Sergei

#5 lore raw
Quoted 3 lines · Sergei Shtylyov

It works:

41 total events, 5.109 events/sec

That's the expected behaviour, good.

One of the remaining problems on some platforms with tickless kernels is that not all clocksource / clockevent driver combinations are playing nicely with each other. You can switch the clocksource driver manually at runtime. First let's see what clocksource we have:

  # cd /sys/devices/system/clocksource/clocksource0/
  # cat available_clocksource 
  MIPS pit jiffies 
  # cat current_clocksource 
  MIPS 

MIPS is the CP0 count register. pit is the i8259 and jiffies simply counts interrupts like in the old days so has problems with lost timer interrupts and generally not such a great idea for tickless. You should be able to switch between all these drivers by something like:

  # echo jiffies > current_clocksource
  Time: jiffies clocksource has been installed.
  #

Try switching between all the available clocksources a few times to see if that's working right also.

Ralf

#6 lore raw
Quoted 6 lines · Ralf Baechle
Quoted 3 lines

It works:

41 total events, 5.109 events/sec

That's the expected behaviour, good.

Quoted 8 lines

One of the remaining problems on some platforms with tickless kernels is that not all clocksource / clockevent driver combinations are playing nicely with each other. You can switch the clocksource driver manually at runtime. First let's see what clocksource we have:

  # cd /sys/devices/system/clocksource/clocksource0/
  # cat available_clocksource 
  MIPS pit jiffies 

I only have MIPS and jiffies of course. :-)

Quoted 8 lines
  # cat current_clocksource 
  MIPS 

MIPS is the CP0 count register. pit is the i8259 and jiffies simply counts interrupts like in the old days so has problems with lost timer interrupts and generally not such a great idea for tickless. You should be able to switch between all these drivers by something like:

Quoted 6 lines
  # echo jiffies > current_clocksource
  Time: jiffies clocksource has been installed.
  #

Try switching between all the available clocksources a few times to see if that's working right also.

It died after I selected jiffies.

Quoted 1 line

Ralf

WBR, Sergei