Aborted L4linux due to CLI/STI

Masti Ramya Jayaram rmasti at inf.ethz.ch
Mon Sep 8 09:10:00 CEST 2014

Hey Adam,

> That's ok as long it's also ok for native Linux.

I am not sure what they did with native Linux but I know from the SCC forums that these instructions do not exist. So I guess that is ok.

> I'm wondering how did you end up with the code containing the cli? In L4Linux this part is replaced.

Well, I am not sure about that. I did force a couple of options though as I already mentioned. The reason was that when I tried to compile L4linux for pentium/i586, I saw that it would complain about CONFIG_X86_CMPXCHG64 not being enabled (this corresponds to the PAE option).  So I disabled this explicitly since the processors on the SCC do not contain PAE. I also disabled the CONFIG_X86_CMPXCHG and CONFIG_CMPXCHG_LOCAL options.

Attached is my l4linux config.  Just as a note, I am using quite an old build of L4linux. Do you know of any related bugs?

From: l4-hackers [l4-hackers-bounces at os.inf.tu-dresden.de] on behalf of Adam Lackorzynski [adam at os.inf.tu-dresden.de]
Sent: 08 September 2014 00:29
To: l4-hackers at os.inf.tu-dresden.de
Subject: Re: Aborted L4linux due to CLI/STI

On Fri Sep 05, 2014 at 16:21:34 +0000, Masti  Ramya Jayaram wrote:
> I forgot to mention that it also does not support the traditional
> cmpxchg instructions using the lock line. That is why I disabled it.

That's ok as long it's also ok for native Linux.

> > On 05 Sep 2014, at 18:16, "Masti  Ramya Jayaram" <rmasti at inf.ethz.ch> wrote:
> >
> > Dear all,
> >
> > I get an error during L4linux boot when I enter the debugger (using ESC) and resume:
> >
> > Aborted L4linux due to CLI/STI at 0x534911.
> >
> > When I disassemble this using gdb:
> >
> > (gdb) disassemble 0x534911
> > Dump of assembler code for function cmpxchg8b_emu:
> >   0x00534910 <+0>:    pushf
> >   0x00534911 <+1>:    cli
> >   0x00534912 <+2>:    cmp    (%esi),%eax
> >   0x00534914 <+4>:    jne    0x534922 <cmpxchg8b_emu+18>
> >   0x00534916 <+6>:    cmp    0x4(%esi),%edx
> >   0x00534919 <+9>:    jne    0x534924 <half_same>
> >   0x0053491b <+11>:    mov    %ebx,(%esi)
> >   0x0053491d <+13>:    mov    %ecx,0x4(%esi)
> >   0x00534920 <+16>:    popf
> >   0x00534921 <+17>:    ret
> >   0x00534922 <+18>:    mov    (%esi),%eax
> >   0x00534924 <+0>:    mov    0x4(%esi),%edx
> >   0x00534927 <+3>:    popf
> >   0x00534928 <+4>:    ret
> >
> > When I built l4linux, I had to disable CONFIG_X86_CMPXCHG,
> > CONFIG_CMPXCHG_LOCAL and  CONFIG_X86_CMPXCHG64 despite building for
> > the Pentium because my processor does not support PAE (which is the
> > option that enables this). I am guessing This is the reason it tries
> > to emulate the CMPXCHG instructions.
> >
> > What is the correct l4linux configuration to use for a machine that
> > does not support any of the atomic instructions like CMPXCHG8,
> > ATOMIC, etc.?

Which processor type did you select?
In L4Linux, there's an adapted version of the cmpxchg8b_emu code that is
enabled if CONFIG_X86_CMPXCHG64 is not set. I'm wondering how did you
end up with the code containing the cli? In L4Linux this part is

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
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: linux_config.txt
URL: <http://os.inf.tu-dresden.de/pipermail/l4-hackers/attachments/20140908/0b102592/attachment.txt>

More information about the l4-hackers mailing list