Received: by 2002:a05:7412:3784:b0:e2:908c:2ebd with SMTP id jk4csp1777631rdb; Mon, 2 Oct 2023 23:59:07 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGCr/he3FtUJMHFJkYwewijIhHQLDb8JbTnuyN8vngRojDT7jbopaY95o6PLbDVi3a9AHR2 X-Received: by 2002:a05:6358:52c5:b0:141:162:b0cd with SMTP id z5-20020a05635852c500b001410162b0cdmr16299726rwz.19.1696316346656; Mon, 02 Oct 2023 23:59:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1696316346; cv=none; d=google.com; s=arc-20160816; b=JFxxeSvh8nUvDkAPALCnzFrc3rnjkSAmYlm5smNvwYex+ttV1aWr/59UNEkHYGnAQ+ JaJHsVIqP7Ew92nxoJ5IWMx153JgkY+SxnL4Eae2Ti0BiMqOsEDtY2Vk03ZkYCuvUPLY 9FREwjs2UwN2SzMSkEZsX7/tKPDUcsVgjQU2JrF8GyrGMsdh6f5aJL3QrXfdGlE0rcm/ cqwdSX2AfqXesi51e0COEstiTQrQaffdAz+gZuyBhceKdFytRyrhle0mHmFKhMq144tH bA1BFS5x5h5i0kQFzkzXIU8Zb60L4o4bY9Phn54KEL/PIIQzGx8mCRLnyVcgbry3cq5J 0Y2w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=MUjSuuJf1esYL112fJUv6ReeCiR3u5HkomuYdwl0API=; fh=Tb1p8S3iOxe/kX/WSNC3xEJzSVgGJ5DaxSrKb+pzH+4=; b=TKSLb5cqQrHS9rVqRKviC3XOdnkmeKi/bTco6Jk02TMR8z1JuoQz+4FJA3fnem9HNA SAQ6mAinnBs0niaoOxUZadRLX8vSty5AZRRV8Bao6L86IqtmpOw9JTOEEKJiRIhjoZnp qWhJL3XGKoRncIZEE1E4ZO+GO5EXFef2oZjvoMbewz0MNv6A/As8PNrwuW2azwOjE6rS oo3I4w3mCsbm693yEPj93ATgiEuOeDqAsV3/Pfueh1z4Vh/tXG8czmji2WEFdzQ4oX0h torP3/DWd+LgOAKnMDdPRwhR9oE9PMjwaH4YxtiU4Z8S2q+SxHr19VBmsltibquDEpLJ s8Jw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=Z1LAqzi+; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from snail.vger.email (snail.vger.email. [2620:137:e000::3:7]) by mx.google.com with ESMTPS id k63-20020a638442000000b0056da0ae25a0si794422pgd.441.2023.10.02.23.59.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Oct 2023 23:59:06 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) client-ip=2620:137:e000::3:7; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=Z1LAqzi+; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id B5A01813A593; Mon, 2 Oct 2023 23:59:05 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239408AbjJCG65 (ORCPT + 99 others); Tue, 3 Oct 2023 02:58:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44850 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239485AbjJCG6m (ORCPT ); Tue, 3 Oct 2023 02:58:42 -0400 Received: from mgamail.intel.com (mgamail.intel.com [134.134.136.126]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 69A2E2D4D; Mon, 2 Oct 2023 23:55:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1696316150; x=1727852150; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=KVAH30AJVp6O2e8FLYlwUzaPcwlh2ELK9dDq37AIdDs=; b=Z1LAqzi+Z3ye68zKOI2in3pIFKFY+Ay3dgi0OQrOWruDTJZoDjwpznfs N91WrtwrvnoRypg0vwvp1JFD8CjGAKv6xhQ/4y7u8Y2hrKDxNAK/hR7HH IOkNa0F13FTUIwYxHCxL45QrnTl3UtM8UC8A60bJwTQxu14i0aaeYAMm+ FmHM3gUN9V9NWWu7g1htpJzbBzg6nzS8suOkA0/9nz6WNFXtGsOF9kfJ5 ldjdyJEhSE+20+4JB6RTxLglKyiPpZ6leRrY+9zUvD+VU6PckhVpICGBY vHn74pxuUGt3FcZxt97J++g9GbmA+fT+2kkW06KZMVlPmQ1rvw0uVYz2D g==; X-IronPort-AV: E=McAfee;i="6600,9927,10851"; a="367858350" X-IronPort-AV: E=Sophos;i="6.03,196,1694761200"; d="scan'208";a="367858350" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Oct 2023 23:54:53 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10851"; a="1081901025" X-IronPort-AV: E=Sophos;i="6.03,196,1694761200"; d="scan'208";a="1081901025" Received: from unknown (HELO fred..) ([172.25.112.68]) by fmsmga005.fm.intel.com with ESMTP; 02 Oct 2023 23:54:52 -0700 From: Xin Li To: linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-edac@vger.kernel.org, linux-hyperv@vger.kernel.org, kvm@vger.kernel.org, xen-devel@lists.xenproject.org Cc: tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com, luto@kernel.org, pbonzini@redhat.com, seanjc@google.com, peterz@infradead.org, jgross@suse.com, ravi.v.shankar@intel.com, mhiramat@kernel.org, andrew.cooper3@citrix.com, jiangshanlai@gmail.com, nik.borisov@suse.com Subject: [PATCH v12 35/37] x86/syscall: Split IDT syscall setup code into idt_syscall_init() Date: Mon, 2 Oct 2023 23:24:56 -0700 Message-Id: <20231003062458.23552-36-xin3.li@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231003062458.23552-1-xin3.li@intel.com> References: <20231003062458.23552-1-xin3.li@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Mon, 02 Oct 2023 23:59:05 -0700 (PDT) Because FRED uses the ring 3 FRED entrypoint for SYSCALL and SYSENTER and ERETU is the only legit instruction to return to ring 3, there is NO need to setup SYSCALL and SYSENTER MSRs for FRED, except the IA32_STAR MSR. Split IDT syscall setup code into idt_syscall_init() to make it easy to skip syscall setup code when FRED is enabled. Suggested-by: Thomas Gleixner Tested-by: Shan Kang Signed-off-by: Xin Li --- arch/x86/kernel/cpu/common.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c index 9b1cb6c938c4..69f9bdab19a9 100644 --- a/arch/x86/kernel/cpu/common.c +++ b/arch/x86/kernel/cpu/common.c @@ -2078,10 +2078,8 @@ static void wrmsrl_cstar(unsigned long val) wrmsrl(MSR_CSTAR, val); } -/* May not be marked __init: used by software suspend */ -void syscall_init(void) +static inline void idt_syscall_init(void) { - wrmsr(MSR_STAR, 0, (__USER32_CS << 16) | __KERNEL_CS); wrmsrl(MSR_LSTAR, (unsigned long)entry_SYSCALL_64); if (ia32_enabled()) { @@ -2115,6 +2113,15 @@ void syscall_init(void) X86_EFLAGS_AC|X86_EFLAGS_ID); } +/* May not be marked __init: used by software suspend */ +void syscall_init(void) +{ + /* The default user and kernel segments */ + wrmsr(MSR_STAR, 0, (__USER32_CS << 16) | __KERNEL_CS); + + idt_syscall_init(); +} + #else /* CONFIG_X86_64 */ #ifdef CONFIG_STACKPROTECTOR -- 2.34.1