eric johnson | 1 Aug 05:36
Picon

interrupt registration

i m using a pistachio L4 kernel. ( with no operating system on top. )
I am running this on an emulator ( qemu) .  So i dont have a way of having real interrupts. There might be a way in qemu to do that , but i dont know how.

My question is : i figure there is an interrupt thread for every interrupt. ? Since i dont have any real hardware i would like to have a interrupt thread for a random interrupt no. How do i make sure that this interrupt thread is created ? I am trying to simulate the behaviour of an interrupt processing in L4.

suresh

_______________________________________________
l4-hackers mailing list
l4-hackers <at> os.inf.tu-dresden.de
http://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers
Stefan Kögel | 4 Aug 11:11
Picon
Picon

problems running l4linux No.2

Hi,

I am still trying to run l4linux on top of fiasco. I am running it on
top of a console system and configured L4Linux2.6 without any input
drivers. Thanks to your suggestion I am loading vmlinuz with a start script.

I can't tell you much, but once booted both serial and console are
spammed with

...
l4lx    | l4env_phys_to_virt: Could not translate phys. address 0x94140
l4lx    | l4env_phys_to_virt: Could not translate phys. address 0x94150
l4lx    | l4env_phys_to_virt: Could not translate phys. address 0x94160
...

messages.

Did I forget to configure some kind of memory translation unit?

Here is my grub config:

kernel /bin/svn453/bootstrap -serial
modaddr 0x03000000
module /bin/svn453/fiasco -nokdb -nowait -serial -comspeed 115200
-pcsampling -debug -sp 1000000
module /bin/svn453/sigma0
module /bin/svn453/roottask task modname "bmodfs" attached 7 modules
module /bin/svn453/dm_phys
module /bin/svn453/names --verbose 0 --logsrv logcon
module /bin/svn453/events
module /bin/svn453/simple_ts --events -t 300
module /bin/svn453/l4io
module /bin/svn453/bmodfs
 module /bin/svn453/l4linux26.cfg
 module /bin/svn453/libloader.s.so
 module /bin/svn453/libld-l4.s.so
 module /bin/svn453/logcon
 module /bin/svn453/run
 module /bin/svn453/vmlinuz
 module /bin/svn453/drops-rd.rd
module /bin/svn453/loader --events --fprov=BMODFS run l4linux26.cfg  logcon
module /bin/svn453/con --nolog
vbeset 0x117

Thanks for your help.

Kind Regards,
Stefan
Adam Lackorzynski | 4 Aug 22:40
Picon
Favicon

Re: problems running l4linux No.2

Hi,

On Tue Aug 04, 2009 at 11:11:15 +0200, Stefan Kögel wrote:
> I am still trying to run l4linux on top of fiasco. I am running it on
> top of a console system and configured L4Linux2.6 without any input
> drivers. Thanks to your suggestion I am loading vmlinuz with a start script.
> 
> I can't tell you much, but once booted both serial and console are
> spammed with
> 
> ...
> l4lx    | l4env_phys_to_virt: Could not translate phys. address 0x94140
> l4lx    | l4env_phys_to_virt: Could not translate phys. address 0x94150
> l4lx    | l4env_phys_to_virt: Could not translate phys. address 0x94160
> ...
> 
> messages.
> 
> Did I forget to configure some kind of memory translation unit?

No but I'd guess that there's some driver in the Linux that causes this.
Maybe you could start from the x86-ux or x86-native defconfigs and see
if the same happens?

Adam
--

-- 
Adam                 adam <at> os.inf.tu-dresden.de
  Lackorzynski         http://os.inf.tu-dresden.de/~adam/
Adam Lackorzynski | 4 Aug 22:42
Picon
Favicon

Re: compiling Fiasco trunk, Bison trouble


On Wed Jul 29, 2009 at 13:03:57 +0300, Roman Beslik wrote:
> Hello -- see the attachment.

Just for the diff of .yy files. The change is fine per se but
unfortunately breaks with older versions of bison which are still used.
One way could be to include the generated files in the distribution.

Adam
--

-- 
Adam                 adam <at> os.inf.tu-dresden.de
  Lackorzynski         http://os.inf.tu-dresden.de/~adam/
Adam Lackorzynski | 4 Aug 22:48
Picon
Favicon

Re: interrupt registration


On Fri Jul 31, 2009 at 20:36:37 -0700, eric johnson wrote:
> i m using a pistachio L4 kernel. ( with no operating system on top. )
> I am running this on an emulator ( qemu) .  So i dont have a way of having
> real interrupts. There might be a way in qemu to do that , but i dont know
> how.
> 
> My question is : i figure there is an interrupt thread for every interrupt.
> ? Since i dont have any real hardware i would like to have a interrupt
> thread for a random interrupt no. How do i make sure that this interrupt
> thread is created ? I am trying to simulate the behaviour of an interrupt
> processing in L4.

Why do you think that Qemu's interrupts are not real from the point of
view of the software running on it?

Adam
--

-- 
Adam                 adam <at> os.inf.tu-dresden.de
  Lackorzynski         http://os.inf.tu-dresden.de/~adam/
eric johnson | 5 Aug 01:56
Picon

Re: interrupt registration



On Tue, Aug 4, 2009 at 4:56 PM, eric johnson <eric.gd.johnson <at> gmail.com> wrote:


On Tue, Aug 4, 2009 at 1:48 PM, Adam Lackorzynski <adam <at> os.inf.tu-dresden.de> wrote:

On Fri Jul 31, 2009 at 20:36:37 -0700, eric johnson wrote:
> i m using a pistachio L4 kernel. ( with no operating system on top. )
> I am running this on an emulator ( qemu) .  So i dont have a way of having
> real interrupts. There might be a way in qemu to do that , but i dont know
> how.
>
> My question is : i figure there is an interrupt thread for every interrupt.
> ? Since i dont have any real hardware i would like to have a interrupt
> thread for a random interrupt no. How do i make sure that this interrupt
> thread is created ? I am trying to simulate the behaviour of an interrupt
> processing in L4.

Why do you think that Qemu's interrupts are not real from the point of
view of the software running on it?

I dont see any of L4's interrupt code path getting called, like irq_thread or handle_interrupt.

In any case when is an irq thread created ?







Adam
--
Adam                 adam <at> os.inf.tu-dresden.de
 Lackorzynski         http://os.inf.tu-dresden.de/~adam/

_______________________________________________
l4-hackers mailing list
l4-hackers <at> os.inf.tu-dresden.de
http://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers


_______________________________________________
l4-hackers mailing list
l4-hackers <at> os.inf.tu-dresden.de
http://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers
Stefan Kögel | 5 Aug 19:39
Picon
Picon

Re: problems running l4linux No.2

Hi,

I started from a default l4linux26 kernel config. I did not touch
anything, except for the things I had to, like acpi, apic, MTRR, MCE ..
and the stuff that is missing (olpc, scx200 and these things).
Everything else is default.
The problem still exists but I was able to gather some info.

Executing the l4linux26.cfg prints out:

loader  | sleeping for 1000 ms
loader  | vmlinuz: Starting application using libld-l4.s.so
loader  | vmlinuz,#11: Loading binary
loader  | vmlinuz,#11: Loading ldso
loader  | vmlinuz,#11: Starting libld-l4.s.so at 00013940 via 0000cc3c
loader  | DEBUG file = vmlinuz
l4lx    | ======> L4Linux 2.6 starting... <========
l4lx    | Linux version 2.6.30-l4 (stefan <at> scarface) (gcc version 4.3.2
(Ubuntu
l4lx    : 4.3.2-1ubuntu12) ) #10 Wed Aug 5 16:45:57 CEST 2009
l4lx    | Binary name: vmlinuz
l4lx    | Linux kernel command line (5 args): mem=64M load_ramdisk=1
ramdisk_si
l4lx    : ze=16384 root=/dev/ram l4env_rd=drops-rd.rd
l4lx    | Image: 00400000 - 00874000 [4560 KiB].
l4lx    | Areas: Text:     00400000 - 006fd000 [3060kB] (a bit longer)
l4lx    |        Data:     006fd000 - 007280e8 [172kB]
l4lx    |        Initdata: 0072c000 - 00770000 [272kB]
l4lx    |        BSS:      00772000 - 00853a94 [902kB]
l4lx    | l4lx_thread_create: Created thread 11.03 (tamer0)
l4lx    | Tamer0 is 11.03
l4lx    | Using tamed mode.
ROOT: Task #0c is not allowed to execute cli/sti
loader  | vmlinuz,#11: WARNING: Can't map I/O space, ROOT denies page
(result=0
loader  : 0004000)
loader  | vmlinuz,#11: Not allowed to perform any I/O
l4lx    | Got 0 out of 65536 I/O ports
l4lx    | Connecting to l4io server.
l4lx    | l4env_linux_startup thread 4.
l4lx    | l4lx_thread_create: Created thread 11.04 (cpu0)
l4lx    | main thread will be 11.04
l4lx    | l4env_register_pointer_section: addr = 0072a000 size = 290816
l4lx    |      sec-w-init: virt: 0x0072a000 to 0x00770fff [284 KiB]
l4lx    | Noncontiguous region for sec-w-init
l4lx    |      sec-w-init: Number of physical regions: 2, 290816 Bytes
l4lx    |      sec-w-init: 1: Phys: 0x014f0000 to 0x01500000, Size:    65536
l4lx    |      sec-w-init: 2: Phys: 0x013b5000 to 0x013ec000, Size:   225280
l4lx    | main thread: received startup message.
l4lx    | Main thread running, waiting...
l4lx    | memory_setup: mem=64M load_ramdisk=1 ramdisk_size=16384
root=/dev/ram
l4lx    :  l4env_rd=drops-rd.rd
l4lx    | setup_l4env_memory: Forcing superpages for main memory
l4lx    | Main memory size: 64MB
l4lx    |     Main memory: virt: 0x00c00000 to 0x04bfffff [65536 KiB]
l4lx    |     Main memory: Number of physical regions: 1, 67108864 Bytes
l4lx    |     Main memory: 1: Phys: 0x07400000 to 0x0b400000, Size: 67108864
l4lx    | Filling lower ptabs...
l4lx    | mainmem = c00000
l4lx    | Done (1864 entries).
l4lx    | l4env_register_pointer_section: addr = 00772000 size = 1056768
l4lx    |             end: virt: 0x00772000 to 0x00873fff [1032 KiB]
l4lx    |             end: Number of physical regions: 1, 1056768 Bytes
l4lx    |             end: 1: Phys: 0x06499000 to 0x0659b000, Size:  1056768
l4lx    | memory_setup done
l4lx    | l4env_rd_path: drops-rd.rd
l4lx    | Loading: drops-rd.rd
l4lx    | INITRD: Size of RAMdisk is 16384KiB
l4lx    | RAMdisk from 04c00000 to 05c00000 [16384KiB]
l4lx    | l4env_phys_to_virt: Could not translate phys. address 0x80000
l4lx    | l4env_phys_to_virt: Could not translate phys. address 0x80010
l4lx    | l4env_phys_to_virt: Could not translate phys. address 0x80020
...

and continues untiel physical address 0x9fff0 and ends with a lock up of
the computer.

I am wondering about these lines:

ROOT: Task #0c is not allowed to execute cli/sti
loader  | vmlinuz,#11: WARNING: Can't map I/O space, ROOT denies page
(result=0
loader  : 0004000)
loader  | vmlinuz,#11: Not allowed to perform any I/O

Could that be causing the error? How can I fix this?

Thank you for help.
Kind Regards,
Stefan
> Hi,
>
> On Tue Aug 04, 2009 at 11:11:15 +0200, Stefan K?gel wrote:
>   
>> I am still trying to run l4linux on top of fiasco. I am running it on
>> top of a console system and configured L4Linux2.6 without any input
>> drivers. Thanks to your suggestion I am loading vmlinuz with a start script.
>>
>> I can't tell you much, but once booted both serial and console are
>> spammed with
>>
>> ...
>> l4lx    | l4env_phys_to_virt: Could not translate phys. address 0x94140
>> l4lx    | l4env_phys_to_virt: Could not translate phys. address 0x94150
>> l4lx    | l4env_phys_to_virt: Could not translate phys. address 0x94160
>> ...
>>
>> messages.
>>
>> Did I forget to configure some kind of memory translation unit?
>>     
>
> No but I'd guess that there's some driver in the Linux that causes this.
> Maybe you could start from the x86-ux or x86-native defconfigs and see
> if the same happens?
>
>
>
> Adam
>   
Adam Lackorzynski | 6 Aug 23:48
Picon
Favicon

Re: problems running l4linux No.2

Hi,

On Wed Aug 05, 2009 at 19:39:00 +0200, Stefan Kögel wrote:
> I started from a default l4linux26 kernel config. I did not touch
> anything, except for the things I had to, like acpi, apic, MTRR, MCE ..
> and the stuff that is missing (olpc, scx200 and these things).
> Everything else is default.
> The problem still exists but I was able to gather some info.
> 
> Executing the l4linux26.cfg prints out:
> 
> l4lx    | l4env_phys_to_virt: Could not translate phys. address 0x80000
> l4lx    | l4env_phys_to_virt: Could not translate phys. address 0x80010
> l4lx    | l4env_phys_to_virt: Could not translate phys. address 0x80020
> ...
> 
> and continues untiel physical address 0x9fff0 and ends with a lock up of
> the computer.

L4Linux will not work but the system would still run.

My guess is that ISCSI_IBFT_FIND is enabled. This option causes scans
through physical memory, and the conversion functions in L4Linux are
built in a conservative way because if something goes wrong this can
lead to very subtle issues.
If my guess is wrong you should get a backtrace when you enable
earlyprintk on the kernel command line (i.e. it's already there but not
printed (yet)).

 
> I am wondering about these lines:
> 
> ROOT: Task #0c is not allowed to execute cli/sti
> loader  | vmlinuz,#11: WARNING: Can't map I/O space, ROOT denies page
> (result=0
> loader  : 0004000)
> loader  | vmlinuz,#11: Not allowed to perform any I/O
> 
> Could that be causing the error? How can I fix this?

Adding allow_cli as an option flag to the loader script will give
L4Linux all I/O rights and make the message go away.

Adam
--

-- 
Adam                 adam <at> os.inf.tu-dresden.de
  Lackorzynski         http://os.inf.tu-dresden.de/~adam/
Andre Puschmann | 10 Aug 09:26
Picon
Favicon

Re: Howto implement a periodic real-time task?

Hi Udo,

thanks so much for your reply and sorry for the delayed answer.
I will write a pure L4 based system trasher like you suggested.
However, as running a L4Lx next to the RT part of my system is a quite 
common use
case, I will also benchmark this part.
As I wrote in my last mail, I used hackbench [1]  (among others) to 
evaluate in legacy Linux system.
This is a quite evil tool that creates groups of tasks that communicate 
with each other via sockets.
Running this tool under L4Lx really block any other task (even with 
higher priority).
I am neither sure what exactly causes these interruption, nor how to 
eliminate them.
Any experience with these kind of tools or any other advice is highly 
appreciated?

Cheers,
Andre

[1] http://devresources.linux-foundation.org/craiger/hackbench/

Udo A. Steinberg wrote:
> On Tue, 21 Jul 2009 18:00:42 +0200 Andre Puschmann (AP) wrote:
>
> AP> I now want to put some load on the system as I did in native Linux with
> AP> tools like "hackbench" and "cache calibrator". Any suggestions how to
> AP> achieve this under L4? The same tools inside a L4Linux environment?
>
> Write some programs that continuously do IPC across task boundaries. If you
> want to trash the caches, memset contiguous regions of memory that are larger
> than the sum of all your cache sizes. The "pingpong" program should give you
> some ideas how to implement these kind of things.
>
> Cheers,
>
> 	- Udo
>   
Gernot Heiser | 17 Aug 03:26
Picon
Picon
Favicon

seL4 kernel is formally verified

Hi,

For those out there who missed the publicity (incl ./): NICTA
announced last week that the formal verification of our seL4 kernel
has been completed. This makes seL4 the first ever general-purpose OS
kernel with a formal proof that the implementation is consistent with
the specification.

A paper on the project will appear in this year's SOSP.

Details at http://ertos.nicta.com.au/news/home.pml#verified

Gernot

Gmane