Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1736618
| From | Dmitry Vyukov <dvyukov@google.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | Re: [PATCH 2/2] x86/asm: Fix inline asm call constraints for clang |
| Date | 2017-09-21 14:20 +0200 |
| Message-ID | <us8Cu-Sx-21@gated-at.bofh.it> (permalink) |
| References | (5 earlier) <urRBE-6yf-11@gated-at.bofh.it> <urUpP-8nU-19@gated-at.bofh.it> <urUzx-8sm-29@gated-at.bofh.it> <us4Se-6Mz-13@gated-at.bofh.it> <us8j8-vE-21@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
On Thu, Sep 21, 2017 at 1:52 PM, Brian Gerst <brgerst@gmail.com> wrote: >>>>>>> I think we need just the frame itself and RSP pointing below this >>>>>>> frame. If we don't have a frame, CALL instruction will smash whatever >>>>>>> RSP happens to point to. Compiler doesn't have to setup RSP to point >>>>>>> below used part of stack in leaf functions. >>>>>>> >>>>>> >>>>>> In the kernel it does. Redzoning is not allowed in the kernel, because >>>>>> interrupts or exceptions would also smash the redzone. >>>>> >>>>> I see... But it's the same for user-space signals, the first thing a >>>>> signal should do is to skip the redzone. I guess interrupt handlers >>>>> should switch to interrupt stack which avoids smashing redzone >>>>> altogether. Do you mean nested interrupts/exceptions in interrupts? >>>>> In my experience frames in leaf functions can have pretty large >>>>> performance penalty. Wonder if we have we considered changing >>>>> interrupt/exception handlers to avoid smashing redzones and disable >>>>> leaf frames? >>>> >>>> Currently, on x86-64, I believe all exceptions have their own dedicated >>>> stacks in the kernel, but IRQs still come in on the task's kernel stack. >>>> >>>> Andy, do you know if there's a reason why IRQs don't use a dedicated IST >>>> stack? >>>> >>> >>> Because IST is awful due to recursion issues. We immediately switch to an IRQ stack, though. >>> >>> If the kernel wanted a redzone, it would have to use IST for everything, which would entail a bunch of unpleasant hackery. >> >> Thanks. >> >> I guess it must be finite recursion, because we could not handle >> infinite with finite stack. I thing that solves it is simply: >> >> sub $256, %rsp >> ... do stuff ... >> add $256, %rsp >> >> Don't know if it's applicable to interrupts or not. > > No, it is not. The processor pushes 5 or 6 words of data on the stack > (the IRET frame plus an error code for certain exceptions) before the > interrupt handler gets control. So without using the IST for stack > switching on every interrupt, the redzone cannot be used in the kernel > as it will get smashed by the IRET frame. In addition, since the > kernel's stack is limited in size, skipping 128 bytes on every > interrupt would overrun the stack faster. The small gain from using > the redzone in the kernel is outweighed by these limitations. I see, thanks for educating.
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCH 2/2] x86/asm: Fix inline asm call constraints for clang Josh Poimboeuf <jpoimboe@redhat.com> - 2017-09-19 20:50 +0200
Re: [PATCH 2/2] x86/asm: Fix inline asm call constraints for clang Alexander Potapenko <glider@google.com> - 2017-09-20 00:00 +0200
Re: [PATCH 2/2] x86/asm: Fix inline asm call constraints for clang Alexander Potapenko <glider@google.com> - 2017-09-20 00:30 +0200
Re: [PATCH 2/2] x86/asm: Fix inline asm call constraints for clang Josh Poimboeuf <jpoimboe@redhat.com> - 2017-09-20 03:50 +0200
Re: [PATCH 2/2] x86/asm: Fix inline asm call constraints for clang Josh Poimboeuf <jpoimboe@redhat.com> - 2017-09-20 03:20 +0200
Re: [PATCH 2/2] x86/asm: Fix inline asm call constraints for clang Josh Poimboeuf <jpoimboe@redhat.com> - 2017-09-20 20:00 +0200
Re: [PATCH 2/2] x86/asm: Fix inline asm call constraints for clang Dmitry Vyukov <dvyukov@google.com> - 2017-09-20 19:40 +0200
Re: [PATCH 2/2] x86/asm: Fix inline asm call constraints for clang "H. Peter Anvin" <hpa@zytor.com> - 2017-09-20 20:00 +0200
Re: [PATCH 2/2] x86/asm: Fix inline asm call constraints for clang Dmitry Vyukov <dvyukov@google.com> - 2017-09-20 20:10 +0200
Re: [PATCH 2/2] x86/asm: Fix inline asm call constraints for clang Josh Poimboeuf <jpoimboe@redhat.com> - 2017-09-20 23:10 +0200
Re: [PATCH 2/2] x86/asm: Fix inline asm call constraints for clang Andy Lutomirski <luto@amacapital.net> - 2017-09-20 23:20 +0200
Re: [PATCH 2/2] x86/asm: Fix inline asm call constraints for clang Dmitry Vyukov <dvyukov@google.com> - 2017-09-21 10:20 +0200
Re: [PATCH 2/2] x86/asm: Fix inline asm call constraints for clang Brian Gerst <brgerst@gmail.com> - 2017-09-21 14:00 +0200
Re: [PATCH 2/2] x86/asm: Fix inline asm call constraints for clang Dmitry Vyukov <dvyukov@google.com> - 2017-09-21 14:20 +0200
Re: [PATCH 2/2] x86/asm: Fix inline asm call constraints for clang "H. Peter Anvin" <hpa@zytor.com> - 2017-09-20 19:50 +0200
Re: [PATCH 2/2] x86/asm: Fix inline asm call constraints for clang Josh Poimboeuf <jpoimboe@redhat.com> - 2017-09-20 20:00 +0200
Re: [PATCH 2/2] x86/asm: Fix inline asm call constraints for clang Ingo Molnar <mingo@kernel.org> - 2017-09-21 17:40 +0200
Re: [PATCH 2/2] x86/asm: Fix inline asm call constraints for clang Josh Poimboeuf <jpoimboe@redhat.com> - 2017-09-21 18:20 +0200
csiph-web