[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CALCETrVc1rM5Wn17_42yX9Y5vtTu46R+tHybdMehBZA_fAJ6-Q@mail.gmail.com>
Date: Tue, 8 Mar 2016 11:11:09 -0800
From: Andy Lutomirski <luto@...capital.net>
To: "H. Peter Anvin" <hpa@...or.com>
Cc: Ingo Molnar <mingo@...nel.org>, Andy Lutomirski <luto@...nel.org>,
X86 ML <x86@...nel.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
Borislav Petkov <bp@...en8.de>,
Oleg Nesterov <oleg@...hat.com>,
Andrew Cooper <andrew.cooper3@...rix.com>,
Brian Gerst <brgerst@...il.com>,
Linus Torvalds <torvalds@...ux-foundation.org>,
Andrew Morton <akpm@...ux-foundation.org>,
Peter Zijlstra <a.p.zijlstra@...llo.nl>,
Thomas Gleixner <tglx@...utronix.de>
Subject: Re: [PATCH] x86/entry: Improve system call entry comments
On Tue, Mar 8, 2016 at 10:59 AM, H. Peter Anvin <hpa@...or.com> wrote:
> On 03/08/16 10:50, Andy Lutomirski wrote:
>> On Tue, Mar 8, 2016 at 10:47 AM, H. Peter Anvin <hpa@...or.com> wrote:
>>> On 03/08/16 10:45, Andy Lutomirski wrote:
>>>>
>>>> s/modern/most, perhaps?
>>>>
>>>> I'm hoping that some day Bionic goes away and gets replaced by musl.
>>>>
>>>> Of course, musl doesn't always use fast syscalls because it needs a
>>>> vdso facility that doesn't currently exist. I'll deal with that
>>>> eventually.
>>>>
>>>
>>> You don't actually need actual DSO support to support fast system calls
>>> on i386. Even klibc uses them now, and the additional code to support
>>> it is trivial.
>>
>> That's not the issue. The issue is that musl does something
>> crazy^Wclever to support POSIX pthread cancellation, and it involves
>> being able to tell whether a signal's ucontext points to a syscall
>> and, if so, what the return address is. This is straightforward with
>> an inlined int $0x80, but doing it reliably with the current vdso
>> design would requiring parsing the DWARF data, and I can't really
>> blame musl for not wanting to do that.
>>
>> There was a thread awhile back about adding a new vdso helper to do
>> this. I think I even had some code for it. If I find time, I'll try
>> to send patches for 4.7.
>>
>
> As far as I know, when we get a signal the EIP always points to int
> $0x80 as we don't support system call restart (being a rare case) for
> the fast system calls.
>
We actually fully support system call restart on fast syscalls as of
(IIRC) 4.5, even on AMD. Phew!
However, the nasty case for musl is when the cancellation signal
happens immediately before the actual kernel entry. The signal
handler needs some way to detect whether the thread is at a
cancellation point.
--Andy
-
Powered by blists - more mailing lists