Testing Fiasco.OC+L4re on ODROID-X2(Exynos4412)
Adam Lackorzynski
adam at os.inf.tu-dresden.de
Tue May 26 23:52:55 CEST 2015
Hi,
On Fri May 22, 2015 at 02:03:24 -0400, Reinier Millo Sánchez wrote:
> I've been testing somethings on the Odroid-X2(Exynos4412). It seems that the
> IRQ handler only handles the first IRQ and disables the IRQs. I have added
> the following code to check the IRQs in the function
> Kernel_thread::bootstrap() in the file
> src/kernel/fiasco/src/kern/kernel_thread.cpp
>
> Per_cpu_data::run_late_ctors(Cpu::invalid());
> bootstrap_arch();
>
> Timer_tick::enable(current_cpu());
> Proc::sti();
>
> ++ Proc::Status st = Proc::interrupts();
> ++ if(st & Proc::Status_interrupts_disabled)
> ++ printf("IRQs are enabled\n");
Just use if (st) ... , Proc::interrupts() is returning a boolean.
> ++ else
> ++ printf("IRQs are disabled\n");
>
> Watchdog::enable();
>
> I'm trying to check that the IRQs are enabled. The Proc::sti() must activate
> the IRQs in the CPSR registers, and Proc::interrupts() must return if the
> interrupts are enabled, but always i'm getting "IRQs are disabled". I have
> tested the hardware with a Linux kernel and it's working fine. I have tested
> "CPSIE i" and "CPSIE f" to enable the interrupts and get the same result.
> I have incremented the warn level on Fiasco.OC, i'm getting:
>
> KERNEL: Warning Buddy:alloc Size mismatch: a80 v 1000
>
> I have also tested the local timers on the Exynos4412. The local timer at
> CPU0 is working fine. It has been configured to auto-reload with 12000 as
> interval. The local counter decrements the value and reload when arrives
> zero, but don't raises the interrupt.
> To test the interrupts have created an small buffer to store the
> Kip::k()->clock on every interrupt. I have used the buffer to avoid the call
> of an interrupt inside another interrupt. I have tried to print the values
> on the function Delay::mesaure(), but it only stores one value. The same
> thing happens if I use a interrupt counter.
> Now i'm trying to check the IRQ handler caller, from the general mechanism
> to the specific interrupt handler, to catch the point where the IRQs are
> been disabled.
> Anyone have any suggestions?
So the handler is actually called all the time right?
Adam
--
Adam adam at os.inf.tu-dresden.de
Lackorzynski http://os.inf.tu-dresden.de/~adam/
More information about the l4-hackers
mailing list