hoo boy, interrupt Handling on BGQ

3 messages, 3 authors, 2012-11-15 · open the first message on its own page

hoo boy, interrupt Handling on BGQ

From: Jimi Xenidis <hidden>
Date: 2012-11-12 21:33:24

So interrupts need to go to FW before Linux, please let not talk about =
how silly that is.
Lets talk about something far more silly...
In order to get to the Linux exception handlers, we have to tell FW =
where the interrupt page is, and then it _copies_ it.

IFAICT, this means that each vectors on the "copied" page must:
1) construct an 64-bit absolute address to a per vector stub
2) leap at the (with bctr or blr)
3) restore CTR or LR and anything else that (1) messed up
4) normal branch to the actual vector

This is what I'll be working on, but I'd love to hear any other ideas.
-jx

Re: hoo boy, interrupt Handling on BGQ

From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date: 2012-11-12 22:19:37

On Mon, 2012-11-12 at 15:33 -0600, Jimi Xenidis wrote:
So interrupts need to go to FW before Linux, please let not talk about how silly that is.
Lets talk about something far more silly...
In order to get to the Linux exception handlers, we have to tell FW where the interrupt page is, and then it _copies_ it.

IFAICT, this means that each vectors on the "copied" page must:
1) construct an 64-bit absolute address to a per vector stub
2) leap at the (with bctr or blr)
3) restore CTR or LR and anything else that (1) messed up
4) normal branch to the actual vector

This is what I'll be working on, but I'd love to hear any other ideas.
Replace the firmware with something sane ?

Cheers,
Ben.

Re: hoo boy, interrupt Handling on BGQ

From: Segher Boessenkool <hidden>
Date: 2012-11-15 06:51:25

So interrupts need to go to FW before Linux, please let not talk  
about how silly that is.
Lets talk about something far more silly...
In order to get to the Linux exception handlers, we have to tell FW  
where the interrupt page is, and then it _copies_ it.

IFAICT, this means that each vectors on the "copied" page must:
1) construct an 64-bit absolute address to a per vector stub
2) leap at the (with bctr or blr)
3) restore CTR or LR and anything else that (1) messed up
4) normal branch to the actual vector

This is what I'll be working on, but I'd love to hear any other ideas.
If you Linux exception handlers are at low (or high) real addresses, as
usual, you can just "ba" to them?


Segher
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help