Re: Testing Fiasco.OC+L4re on ODROID-X2(Exynos4412)
Reinier Millo Sánchez <[email protected]>
| Newsgroups | gmane.comp.micro-kernel.l4.devel |
|---|---|
| Organization | Universidad Central "Marta Abreu" de Las Villas |
| Message-ID | <[email protected]> |
Hi Adam
On 05/26/2015 05:52 PM, Adam Lackorzynski wrote:
> 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.
I have tested using if(st) and the result is the same.
>
>> ++ 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?
The handler is called once, after that, the interrupt remains disabled.
Best regards
--
Lic. Reinier Millo Sánchez
Centro de Estudios de Informática
Universidad Central "Marta Abreu" de Las Villas
Carretera a Camajuanà Km 5 1/2
Santa Clara, Villa Clara, Cuba
CP 54830
"antes de discutir ... respira;
antes de hablar ... escucha;
antes de escribir ... piensa;
antes de herir ... siente;
antes de rendirte ... intenta;
antes de morir ... vive"
_______________________________________________
l4-hackers mailing list
[email protected]
http://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers
rmillo.vcf
(text/x-vcard, 515 B)
begin:vcard fn;quoted-printable:Reinier Millo S=C3=A1nchez n;quoted-printable:Millo S=C3=A1nchez;Reinier org;quoted-printable:Universidad Central "Marta Abreu" de Las Villas;Centro de Estudios de Inform=C3=A1tica adr;quoted-printable:;;Carretera a Camajuan=C3=AD Km 5 1/2;Santa Clara;Villa Clara;54830;Cuba email;internet:[email protected] title;quoted-printable:Lic. en Ciencia de la Computaci=C3=B3n tel;work:(0142)-226714 tel;home:(0143)-523119 x-mozilla-html:TRUE url:http://www.uclv.edu.cu version:2.1 end:vcard