Received: by 2002:a25:ef43:0:0:0:0:0 with SMTP id w3csp591378ybm; Wed, 27 May 2020 03:12:19 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwyccs8rC9TYjaELQIvRS57Tb6aqJvqUeO0TshBd/2NDbyu1+EjF4sWkSkCZX7wNRaVfXx8 X-Received: by 2002:aa7:d999:: with SMTP id u25mr23811800eds.339.1590574339425; Wed, 27 May 2020 03:12:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1590574339; cv=none; d=google.com; s=arc-20160816; b=TxhRMVQmb/fTUU3wly9Ouoyi7z8/MjX4BNdRvDHbcusD88A7Vwjktb3k9dAQRpTg0R wD2rlfpUsAhCCmqe5MLjiuLCEYp7UhhfoDu32QcqEtnwWlXEQUycThTleePsDsqyr1m/ ygv5wIfLtA1WneZqzBC+K1MCNDzLC0d46PoKFrbWInW4rN383Wz4yOhzpnqheBWXWSeT j8tg314unY2lJOMWW7DwgfXQG1ZOttS5HCFEgwTdcCkiBnw6bnFoj0vCpX1HykZCQ1UY o6w0iIGWw2Cis0wzRr1V+JFzBRe+HjDjxfh2dC80w0yhIPXW3RP4t47Z58sY7hcUJMnG 1Qcg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=dpZ4NqRNEMxeIVAhk6uE16QvzKEoLLJOpTFIMFxy7cY=; b=QNCG2tUIIIQely4AoNTGOWn/5a/etfKNxsrQu/OnmL+wy5TeFQSShnTQphCNfkVrnJ pCWmn8ZWoDnKnKKR7SNsN1z6/Pv5jhP6RwckwNvhcrvf3iGuQHQjcZfVlz7vHluH11Ws 73RIW4SOSsREtMj4Dwu9acL+HdhKPch8ZTto2AkM96rz2cnKz8+k5HuGX++YCAQ4m0ck hURyPvLOSSz2hJ9Ia0HHsL469KX1/wQs/ByDvKHOTloF8FOhozwsK/MXm5xm3CALKLgN 6h4Hg9OBAh5ANEsdE/YL29X97PaP1BJuHbmer4UIus1SThI3jDkR9HxTzkxdguTgXSy+ UMQw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=alibaba.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id p23si1624360eju.299.2020.05.27.03.11.55; Wed, 27 May 2020 03:12:19 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=alibaba.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729290AbgE0HbQ (ORCPT + 99 others); Wed, 27 May 2020 03:31:16 -0400 Received: from out30-130.freemail.mail.aliyun.com ([115.124.30.130]:38328 "EHLO out30-130.freemail.mail.aliyun.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728303AbgE0HbP (ORCPT ); Wed, 27 May 2020 03:31:15 -0400 X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R201e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=e01e07425;MF=laijs@linux.alibaba.com;NM=1;PH=DS;RN=13;SR=0;TI=SMTPD_---0TzmxyRy_1590564671; Received: from localhost(mailfrom:laijs@linux.alibaba.com fp:SMTPD_---0TzmxyRy_1590564671) by smtp.aliyun-inc.com(127.0.0.1); Wed, 27 May 2020 15:31:12 +0800 From: Lai Jiangshan To: linux-kernel@vger.kernel.org Cc: Lai Jiangshan , Andy Lutomirski , Thomas Gleixner , Ingo Molnar , Borislav Petkov , x86@kernel.org, "H. Peter Anvin" , Peter Zijlstra , Alexandre Chartre , "Eric W. Biederman" , Jann Horn , Dave Hansen Subject: [PATCH 0/5] x86/entry: simply stack switching when exception on userspace Date: Wed, 27 May 2020 07:31:02 +0000 Message-Id: <20200527073107.2127-1-laijs@linux.alibaba.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 7f2590a110b8("x86/entry/64: Use a per-CPU trampoline stack for IDT entries") has resulted that when exception on userspace, the kernel (error_entry) always push the pt_regs to entry stack(sp0), and then copy them to the kernel stack. This is a hot path (for example page fault) and interrupt_entry directly switches to kernel stack and pushes pt_regs to kernel stack. We should do it for error_entry. This is the job of patch1,2. Patch 3-5 simply stack switching for .Lerror_bad_iret by just doing all the work in one function (fixup_bad_iret()). The patch set is based on tip/master (c021d3d8fe45) (Mon May 25). The diffstat is "66 insertions(+), 66 deletions(-)", but actually it mainly adds comments and deletes code. Cc: Andy Lutomirski , Cc: Thomas Gleixner , Cc: Ingo Molnar , Cc: Borislav Petkov , Cc: x86@kernel.org, Cc: "H. Peter Anvin" , Cc: Peter Zijlstra , Cc: Alexandre Chartre , Cc: "Eric W. Biederman" , Cc: Jann Horn , Cc: Dave Hansen Lai Jiangshan (5): x86/entry: introduce macro idtentry_swapgs_and_switch_to_kernel_stack x86/entry: avoid calling into sync_regs() when entering from userspace x86/entry: directly switch to kernel stack when .Lerror_bad_iret x86/entry: remove unused sync_regs() x86/entry: don't copy to tmp in fixup_bad_iret arch/x86/entry/entry_64.S | 89 ++++++++++++++++++++---------------- arch/x86/include/asm/traps.h | 1 - arch/x86/kernel/traps.c | 42 +++++++---------- 3 files changed, 66 insertions(+), 66 deletions(-) -- 2.20.1