Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753239AbcKTRwT (ORCPT ); Sun, 20 Nov 2016 12:52:19 -0500 Received: from mail-wm0-f66.google.com ([74.125.82.66]:35501 "EHLO mail-wm0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752553AbcKTRwR (ORCPT ); Sun, 20 Nov 2016 12:52:17 -0500 Date: Sun, 20 Nov 2016 23:52:07 +0600 From: Alexnader Kuleshov To: open list Cc: Thomas Gleixner , Ingo Molnar , Borislav Petkov , Andy Lutomirski , Paul Gortmaker , Jan Beulich , Tony Luck , Jianyu Zhan Subject: Question: goal of twice disabling of preemption in exception handlers Message-ID: <20161120175207.GA4354@localhost> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline X-Operating-System: Linux X-Date: Sun Nov 20 23:19:46 +06 2016 User-Agent: Mutt/1.6.0-rc0 ((null)) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 726 Lines: 14 Hello everyone, Exception handlers which may run on IST stack disable and enable preemption twice. For example do_int3() [1]. This one calls ist_enter() which disables preemption with preempt_disable() every time without any conditions. And later do_int3() calls preempt_disable() again [2] before do_trap(). Of course we decrement preemption counter in the end of such exception handlers twice too. But what's actual purpose of doing this two times? [1] https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git/tree/arch/x86/kernel/traps.c?id=refs/tags/next-20161117#n530 [2] https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git/tree/arch/x86/kernel/traps.c?id=refs/tags/next-20161117#n566 Thank you.