Analysing a kernel panic

Guillaume Dargaud dargaud at lpsc.in2p3.fr
Fri Jul 8 17:26:47 EST 2011


> What is "Xad." ? (btw, coding style FAIL !)

That's the struct I use to access the control registers of the hardware.
About the coding style, don't worry it's never going to make it into mainstream as there's only one piece of that 
hardware ever built ! (which is also why I didn't respect things like allowing multiple devices, please don't nail me to 
the cross for that). And it's only my 2nd real Linux driver...

> Are you trying to write to HW registers using a structure like that
> without using the appropriate MMIO register accessors ?
> In that case, your accesses may happen our of order since you don't have
> memory barriers (among other potential problems).

Yes. I discovered the out() functions afterwards. But I insert asm(eieio) to avoid 'out of order' problems.
 
> The crash looks like you aren't properly clearing the interrupt
> condition on the HW, it remains asserted, tho it shouldn't overflow like
> that, something seems wrong with your PIC.

Is there some constraints I should tell the electronics guys ? Should the interrupt be raised for less than some max 
duration ? It's on a raising signal, so I don't see why that should be an issue.

> What HW is this ? What PIC ? It looks like the interrupt source isn't
> masked on the PIC itself while it's being handled or something...

The hardware is a heavily modified Xilinx ML405 derivative.
The PIC is a XPS_INTC (in VHDL)
-- 
Guillaume Dargaud
http://www.gdargaud.net/Antarctica/


More information about the Linuxppc-dev mailing list