Received: by 2002:a25:d7c1:0:0:0:0:0 with SMTP id o184csp1086271ybg; Wed, 23 Oct 2019 10:08:53 -0700 (PDT) X-Google-Smtp-Source: APXvYqz/0XsnLVNwsGWFn92J/c/NVZvGCVhzTvwUbLBLNbC7CPQ/oQs6gfnFk5Xb/gGkr5yiLvyu X-Received: by 2002:a05:6402:1b8a:: with SMTP id cc10mr39076462edb.202.1571850533784; Wed, 23 Oct 2019 10:08:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1571850533; cv=none; d=google.com; s=arc-20160816; b=jn/cE3BUA5/cT0H0SdlEdn4bI8YkWsQRds7dnNpfiHhQOCflUJGZmuZTUS+y0siAOv X/GgD8p48bdMV7WbhrWz4KD4E7oiFuMxerj4Bp9EBafGBPVOO8jYoBuRzo3we+hA0UVv N+Wg+/LLSS8oJikMgbYZpYef6GYO0uUzshBln1snDUVS+OjINrmP5qXtkCjBiQzmmmbn aJuCRONpUKA2MV5IBUTsz3jbP+xjC5SM7bBcvPt4d4CGRk34dE0IgCP04rntRmWtfkOa SpT8MbFlNbKqIZYwSHymMSWPrcuXP7LAgg92Qlf9jTmBisSl3CEcKGTchXcZwW4l0kAP VuvQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:subject:cc:to :from:date:user-agent:message-id; bh=SFUx7Fr7wf6HDAVtkvRYAS8Ph+s5yZHiJLQJfZcvFdI=; b=miPFYvSDCMAbr2vOZRD+wlbtnnAyHpqXtRpJ8AScPwAXkCVhqqBA7XANnn6vOkLJNj CE6i9pmgoBhZ0yAZ4jhfAxnhOvdQ3US/UOeQWll2ToXdk/0QIbnc7VbO75yGlRJOqsVX RNPvKsBea38bj+grZgtIXlWZTWGIarO6NZ7yh5f+1BU+8lboU7jwkCC3tWSCTNaygFQC h8gzFMGoQZ6oVGVQyL4DfxwVnHmHRQ+KRwrR7l7zKOpYJkf13mGqHaqeVg0Vg0nTpGQI XqFm8Xm2MvWyqk9GcyJpVmh4S+gxfH2AHx0N3wg55rK/gVil69FtnpxdCd0ldxOU/kvT BR5w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id i34si15525477ede.37.2019.10.23.10.08.28; Wed, 23 Oct 2019 10:08:53 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2391424AbfJWMbm (ORCPT + 99 others); Wed, 23 Oct 2019 08:31:42 -0400 Received: from Galois.linutronix.de ([193.142.43.55]:49100 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2389776AbfJWMbl (ORCPT ); Wed, 23 Oct 2019 08:31:41 -0400 Received: from localhost ([127.0.0.1] helo=nanos.tec.linutronix.de) by Galois.linutronix.de with esmtp (Exim 4.80) (envelope-from ) id 1iNFnd-00017N-B9; Wed, 23 Oct 2019 14:31:37 +0200 Message-Id: <20191023123118.191230255@linutronix.de> User-Agent: quilt/0.65 Date: Wed, 23 Oct 2019 14:27:11 +0200 From: Thomas Gleixner To: LKML Cc: x86@kernel.org, Peter Zijlstra , Andy Lutomirski , Will Deacon , Paolo Bonzini , kvm@vger.kernel.org, linux-arch@vger.kernel.org, Mike Rapoport , Josh Poimboeuf , Miroslav Benes Subject: [patch V2 06/17] x86/entry/32: Remove redundant interrupt disable References: <20191023122705.198339581@linutronix.de> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Now that the trap handlers return with interrupts disabled, the unconditional disabling of interrupts in the low level entry code can be removed along with the trace calls and the misnomed preempt_stop macro. As a consequence ret_from_exception and ret_from_intr collapse. Add a debug check to verify that interrupts are disabled depending on CONFIG_DEBUG_ENTRY. Signed-off-by: Thomas Gleixner --- arch/x86/entry/entry_32.S | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) --- a/arch/x86/entry/entry_32.S +++ b/arch/x86/entry/entry_32.S @@ -63,12 +63,6 @@ * enough to patch inline, increasing performance. */ -#ifdef CONFIG_PREEMPTION -# define preempt_stop(clobbers) DISABLE_INTERRUPTS(clobbers); TRACE_IRQS_OFF -#else -# define preempt_stop(clobbers) -#endif - .macro TRACE_IRQS_IRET #ifdef CONFIG_TRACE_IRQFLAGS testl $X86_EFLAGS_IF, PT_EFLAGS(%esp) # interrupts off? @@ -809,8 +803,7 @@ END(ret_from_fork) # userspace resumption stub bypassing syscall exit tracing ALIGN ret_from_exception: - preempt_stop(CLBR_ANY) -ret_from_intr: + DEBUG_ENTRY_ASSERT_IRQS_OFF #ifdef CONFIG_VM86 movl PT_EFLAGS(%esp), %eax # mix EFLAGS and CS movb PT_CS(%esp), %al @@ -825,8 +818,6 @@ END(ret_from_fork) cmpl $USER_RPL, %eax jb restore_all_kernel # not returning to v8086 or userspace - DISABLE_INTERRUPTS(CLBR_ANY) - TRACE_IRQS_OFF movl %esp, %eax call prepare_exit_to_usermode jmp restore_all @@ -1084,7 +1075,7 @@ ENTRY(entry_INT80_32) restore_all_kernel: #ifdef CONFIG_PREEMPTION - DISABLE_INTERRUPTS(CLBR_ANY) + /* Interrupts are disabled and debug-checked */ cmpl $0, PER_CPU_VAR(__preempt_count) jnz .Lno_preempt testl $X86_EFLAGS_IF, PT_EFLAGS(%esp) # interrupts off (exception path) ? @@ -1189,7 +1180,7 @@ END(spurious_entries_start) TRACE_IRQS_OFF movl %esp, %eax call smp_spurious_interrupt - jmp ret_from_intr + jmp ret_from_exception ENDPROC(common_spurious) #endif @@ -1207,7 +1198,7 @@ ENDPROC(common_spurious) TRACE_IRQS_OFF movl %esp, %eax call do_IRQ - jmp ret_from_intr + jmp ret_from_exception ENDPROC(common_interrupt) #define BUILD_INTERRUPT3(name, nr, fn) \ @@ -1219,7 +1210,7 @@ ENTRY(name) \ TRACE_IRQS_OFF \ movl %esp, %eax; \ call fn; \ - jmp ret_from_intr; \ + jmp ret_from_exception; \ ENDPROC(name) #define BUILD_INTERRUPT(name, nr) \ @@ -1366,7 +1357,7 @@ ENTRY(xen_do_upcall) #ifndef CONFIG_PREEMPTION call xen_maybe_preempt_hcall #endif - jmp ret_from_intr + jmp ret_from_exception ENDPROC(xen_hypervisor_callback) /*