[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: External interrupt



Hi Petr!

Sorry for the late reply. The IRP contains 0x6003fae4 when the bus
fault triggers. This is the instruction _after_ the offending
instruction. This means that the following instruction is doing
an illegal access:

6003fae2:	d10b                	move.w r0,[r1]

This implies that move.d [600d6d88 <_port_csp0_addr>],r1 
puts an  illegal address in r1. The port_csp0_addr is set
up when init_ioremap(void) is called. Make sure that this
function is called during boot (normally this is called
from the  device drivers that needs access to csp0).

Regards
/Mikael
-----Original Message-----
From: root@xxxxxxx.se]On">mailto:root@xxxxxxx.se]On Behalf Of
Petr Jerabek
Sent: Friday, February 01, 2002 12:43 PM
To: Mikael Starvik; dev_etrax@xxxxxxx.com
Subject: Re: External interrupt


Thank you for your prompt answer.

I make the change, but the result is still the same. 
Even after interrupt handler to IRQ37 using flag SA_INTERRUPT
registration (request_irq) as well.

Do you have any idea about  other possible errors?
Is there any handler for externall vectors of interrupts, that we can
use?

Regards,

Petr


OOPS:
Unable to handle kernel NULL pointer dereference at virtual address
00000000
Oops: 0000
IRP: 6003fae4 SRP: 60006772 CCR: 00000400 USP: 20200000 MOF: 00000000
 r0: 00000020  r1: 00000018  r2: 00000035  r3: 600e3c4f
 r4: 600e3c85  r5: 00000001  r6: 00000036  r7: 00000420
 r8: b0000080  r9: b0000100 r10: 600c2d24 r11: 400e3c4f
r12: 600e3c85 r13: b00001ea oR10: 600c2d24
Process swapper (pid: 1, stackpage=602d8000)
00000000 602d9efc 602d9efc 6003ee54 6000660a 60041622 b0000080 00000420 
       00000036 00000001 600e3c85 600e3c4f 00000035 602d9efc 60002000
602d9ec8 
       6010f318 00030001 602d9eb4 602d9ea0 6009311e 00000000 41e00000
1dc00000 
Call Trace: [<6003ee54>] [<6000660a>] [<60041622>] [<6009311e>]
[<60093276>] [<60045c0a>] [<60041438>] 
       [<6003ebac>] [<60006772>] [<6003fae4>] [<60006772>] [<6000679a>]
[<600b689e>] [<6000660a>] [<600b6868>] 
       [<600b683c>] [<60004098>] [<6003ecaa>] <0>Kernel panic: Attempted
to kill init!

Unable to handle kernel NULL pointer dereference at virtual address
00000000
Oops: 0000
IRP: 6003fae4 SRP: 6003fd6c CCR: 00000400 USP: 20200000 MOF: 0000001d
 r0: 00000020  r1: 00000018  r2: 00000009  r3: 602d9d9c
 r4: 602d8000  r5: 00000000  r6: 00000000  r7: 00000420
 r8: 00000000  r9: 00000000 r10: 00000002 r11: 600d406c
r12: 600d4060 r13: fffffffe oR10: 00000002
Process swapper (pid: 1, stackpage=602d8000)
00000009 602d9cc0 602d9cc0 6003ee54 6000660a 60041622 00000000 00000420 
       00000000 00000000 602d8000 602d9d9c 00000009 602d9cc0 60002000
612d9dfc 
       602d9d80 00030001 602d9d40 00000224 602d9c78 00000001 682d9cf8
00100000 
Call Trace: [<6003ee54>] [<6000660a>] [<60041622>] [<6009bcb4>]
[<60041438>] [<6003ebac>] [<6003fd6c>] 
       [<6003fae4>] [<6003fd6c>] [<600085ca>] [<6003fd6c>] [<6000660a>]
[<6003ef36>] [<6000660a>] [<600062c8>] 
       [<60006318>] [<6000660a>] [<600062c8>] [<6000750a>] [<60094600>]
[<6003ee5c>] [<6000660a>] [<60041622>] 
       [<6009311e>] [<60093276>] [<60045c0a>] [<60041438>] [<6003ebac>]
[<60006772>] [<6003fae4>] [<60006772>] 
       [<6000679a>] [<600b689e>] [<6000660a>] [<600b6868>] [<600b683c>]
[<60004098>] [<6003ecaa>] <0>Kernel pan.Ctrl-C
Warning (Oops_read): Code line not seen, dumping what data is available

>>???; 6003fae4 <_sIRQ37_interrupt+16/40>   <=====
>>IRP; 6003fae4 <_sIRQ37_interrupt+16/40>
>>SRP; 60006772 <_printk+168/1a4>
>>CCR; 00000400 Before first symbol
>>USP; 20200000 Before first symbol
>>MOF; 00000000 Before first symbol
>>r3; 600e3c4e <_buf+2/400>
>>r4; 600e3c84 <_buf+38/400>
>>r7; 00000420 Before first symbol
>>r8; b0000080 <END_OF_CODE+4f000080/????>
>>r9; b0000100 <END_OF_CODE+4f000100/????>
>>r10; 600c2d24 <_log_wait+0/c>
>>r11; 400e3c4e Before first symbol
>>r12; 600e3c84 <_buf+38/400>
>>r13; b00001ea <END_OF_CODE+4f0001ea/????>
>>oR10 600c2d24 <_log_wait+0/c>
Trace; 6003ee54 <_die_if_kernel+34/40>
Trace; 6000660a <_printk+0/1a4>
Trace; 60041622 <_do_page_fault+1e6/274>
Trace; 6009311e <___unpack_d+0/10c>
Trace; 60093276 <___fixunsdfsi+4c/50>
Trace; 60045c0a <_klav_timer_handler+96/9a>
Trace; 60041438 <_handle_mmu_bus_fault+94/98>
Trace; 6003ebac <_mmu_bus_fault+2a/30>
Trace; 60006772 <_printk+168/1a4>
Trace; 6003fae4 <_sIRQ37_interrupt+16/40>
Trace; 60006772 <_printk+168/1a4>
Trace; 6000679a <_printk+190/1a4>
Trace; 600b689e <_i2c_name+62/e8>
Trace; 6000660a <_printk+0/1a4>
Trace; 600b6868 <_i2c_name+2c/e8>
Trace; 600b683c <_i2c_name+0/e8>
Trace; 60004098 <_init+a/126>
Trace; 6003ecaa <_kernel_thread+1c/2a>

>>???; 6003fae4 <_sIRQ37_interrupt+16/40>   <=====
>>IRP; 6003fae4 <_sIRQ37_interrupt+16/40>
>>SRP; 6003fd6c <_do_IRQ+84/88>
>>CCR; 00000400 Before first symbol
>>USP; 20200000 Before first symbol
>>MOF; 0000001c Before first symbol
>>r3; 602d9d9c <_end+1c1f9c/ee8200>
>>r4; 602d8000 <_end+1c0200/ee8200>
>>r7; 00000420 Before first symbol
>>r11; 600d406c <_irq_stat+c/20>
>>r12; 600d4060 <_irq_stat+0/20>
>>r13; fffffffe <END_OF_CODE+9efffffe/????>
Trace; 6003ee54 <_die_if_kernel+34/40>
Trace; 6000660a <_printk+0/1a4>
Trace; 60041622 <_do_page_fault+1e6/274>
Trace; 6009bcb4 <_cplext+78/7c>
Trace; 60041438 <_handle_mmu_bus_fault+94/98>
Trace; 6003ebac <_mmu_bus_fault+2a/30>
Trace; 6003fd6c <_do_IRQ+84/88>
Trace; 6003fae4 <_sIRQ37_interrupt+16/40>
Trace; 6003fd6c <_do_IRQ+84/88>
Trace; 600085ca <_do_softirq+3e/6e>
Trace; 6003fd6c <_do_IRQ+84/88>
Trace; 6000660a <_printk+0/1a4>
Trace; 6003ef36 <_sIRQ2_interrupt+18/2e>
Trace; 6000660a <_printk+0/1a4>
Trace; 600062c8 <_panic+94/e8>
Trace; 60006318 <_panic+e4/e8>
Trace; 6000660a <_printk+0/1a4>
Trace; 600062c8 <_panic+94/e8>
Trace; 6000750a <_do_exit+56/240>
Trace; 60094600 <___fpcmp_parts_d+df4/1620>
Trace; 6003ee5c <_die_if_kernel+3c/40>
Trace; 6000660a <_printk+0/1a4>
Trace; 60041622 <_do_page_fault+1e6/274>
Trace; 6009311e <___unpack_d+0/10c>
Trace; 60093276 <___fixunsdfsi+4c/50>
Trace; 60045c0a <_klav_timer_handler+96/9a>
Trace; 60041438 <_handle_mmu_bus_fault+94/98>
Trace; 6003ebac <_mmu_bus_fault+2a/30>
Trace; 60006772 <_printk+168/1a4>
Trace; 6003fae4 <_sIRQ37_interrupt+16/40>
Trace; 60006772 <_printk+168/1a4>
Trace; 6000679a <_printk+190/1a4>
Trace; 600b689e <_i2c_name+62/e8>
Trace; 6000660a <_printk+0/1a4>
Trace; 600b6868 <_i2c_name+2c/e8>
Trace; 600b683c <_i2c_name+0/e8>
Trace; 60004098 <_init+a/126>
Trace; 6003ecaa <_kernel_thread+1c/2a>


Mikael Starvik wrote:
> 
> Hi!
> 
> 0x90000000 is the uncached physical addres of chip select 0. You
> should use the virtual address instead. The virtual address is
> stored in the global variable port_csp0_addr. The code could
> look something like this:
> 
> #define BLOCK_IRQ_EXT(mask,nr) \
>   "move.d " #mask ",r0\n\t" \
>   "move.d [_port_csp0_addr], r1
>   "add.d  24, r1"
>   "move.d r0,[r1]\n\t"  /*register for disable external INT*/
> 
> Regards
> /Mikael