|
From: Heiko S. <hei...@in...> - 2007-10-30 09:24:27
|
Hello Paul,
Paul Mundt wrote:
> On Tue, Oct 30, 2007 at 09:50:08AM +0100, Heiko Schocher wrote:
>> Paul Mundt wrote:
>>> On Sat, Oct 27, 2007 at 08:19:54AM +0200, Heiko Schocher wrote:
>>>> After this I get an Intevent 0x1e0, and then nothing more works ...
>>>>
>>>> 1) Has somebody here an idea, where this intevent come from? How I can
>>>> prevent it?
>>>>
>>> It sounds like something is generating an interrupt that you aren't
>>> acking, for some reason it isn't being caught as spurious and disabled,
>>> and you are hanging as a result. If you want to hack around it, you can
>> Here the text ends ... I want to hack around it, what can I do?
>>
> I don't remember what I was writing here, I think it was in relation to
> the set_exception_table_evt() thing that was mentioned later :-)
:-)
>>> This is rather curious. EVT 0x1e0 implies IRQ -1, and you've simply
>>> wrapped, that shouldn't happen. You shouldn't even be entering the
>>> do_IRQ() path here, are you certain that this is an INTEVT value rather
>>> than an EXPEVT one?
>> Hm.. I get this value in the do_IRQ function, so I think it is an INTEVT
>> value.
>> Or is there a way do_IRQ () is called from an EXPEVT?
>
> In theory, no. In practice, you may have hit a bug in the interrupt
> exception dispatch. If you can trace the path through
> arch/sh/kernel/cpu/sh3/entry.S:handle_exception() and
> interrupt_exception() it might uncover some clues. Dumping out both the
> EXPEVT/INTEVT values would also help to see if something is getting
> mangled.
OK, I try this (but I have to say, I have no debugger ...)
> In any event, the evt2irq() math is correct. If there's nothing obvious
> in the exception dispatch, I'll dig out a SH7750R manual and see if there
> are some vectors that behave in a strange fashion. I suspect you're
> probably the first person to do much testing on SH7750R, SH7751R has had
> much more testing comparatively.
OK, I ll have a look in a SH7751R Manual, maybe there are some differences.
>> asmlinkage void do_1e0_restore(unsigned long r4, unsigned long r5,
>> unsigned long r6, unsigned long r7,
>> struct pt_regs __regs)
>> {
>> struct pt_regs *regs = RELOC_HIDE(&__regs, 0);
>> long ex;
>>
>> lookup_exception_vector(ex);
>> die_if_kernel("1e0 exception", regs, ex);
>> }
>>
>> no change in the output ...
>>
> How about just a printk()? If this triggers at all, the r4 and ex values
> would be interesting to see.
I tried this also with a printk, didnt get an output.
>> Must I use another gcc? I am actually using:
>> Linux version 2.6.24-rc1-g7d7b59ac-dirty (hs@Zeus) (gcc version 4.1.1
>> 20061011 (Red Hat 4.1.1-30)) #19 Tue Oct 30 09:29:07 CET 2007
>>
> This should be fine, though you can of course try a 3.x and a 4.2.x for
> comparison. I used to primarily use ST's 4.1.1 until it stopped being
> able to build the kernel on any interesting configurations.
>
> You can find 3.4.5 and 4.2.1 compilers respectively here:
>
> http://userweb.kernel.org/~lethal/sh4-gcc-3.4.5-glibc-2.3.5.tar.bz2
> http://userweb.kernel.org/~lethal/gnush4_linux_v0702_rc-1-1.i386.tar.gz
thanks!
(If this not helps, I try to build the complete Toolchain ... because this
"error" triggers just after running the init application, maybe there is
a problem with some headers ...)
> Both of those produce working code (at least as far as the kernel is
> concerned), so should easily verify whether you've hit a code generation
> problem or not.
>
>> Is there a board running with a SH7750R? Maybe there is some CPU
>> specific stuff to set up ...
>>
> Can you attach your entire .config? I don't have a SH7750R handy, but can
> probably dig one up if nothing else helps.
Here my complete config, maybe I made a mistake somewhere ...
thanks
Heiko
|