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


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 at os.inf.tu-dresden.de
  Lackorzynski         http://os.inf.tu-dresden.de/~adam/

More information about the l4-hackers mailing list