Received: by 2002:a05:6358:1087:b0:cb:c9d3:cd90 with SMTP id j7csp1188807rwi; Mon, 10 Oct 2022 12:31:14 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7qozts3x2yk3Kxsnn/FnVilPM2LViwZeU/X6//OTnSb9YnChSbo9fstJkksZhP5I/nuUy9 X-Received: by 2002:a63:8bc8:0:b0:461:ff70:7546 with SMTP id j191-20020a638bc8000000b00461ff707546mr6938628pge.70.1665430274513; Mon, 10 Oct 2022 12:31:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1665430274; cv=none; d=google.com; s=arc-20160816; b=Jf1cq1Q5LF+QIEKlty8w6hxDp3k3DkNuCMYPVvM5DstcYzntRvpIMnl3E7aLhvXD9H GKonoHlaAjPjr9VQB2muYms9KV2jr/JeonibTglnBhctHfq2A+kOfa/uZ08ZID1qV5Ho /H1g1TTePCwFpEfituc7LfqX+cQ1rYogqVhbnaE2VSaSnmwX0OL1mXBQvCdRfEziGiSO F+NHYwMJf6ns9p6fj6q0ouXHI230XOuN6wYjU8+iVr9FH4Ae5ngYFReEuc996V2+En48 OWJ80ok9J6hZ1ivszDdtuTPP4dBkbd7lhmQXLVgztZ8IFOxESb0NmoLDwLe5HofWIEXV qvig== 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 :message-id:date:subject:cc:to:from:dkim-signature; bh=mXMu/pDbLCXu3Z8oeTJwF2/Zs+RQ9+YGNvs9dEH/kMg=; b=fgzsZ089djYQcFTywz20WZo0yCll75e/8fGCZF/Ni8GkdqXJu07moPhwuQ2aVqgY/6 KtXTZlclD1L32Ac32AW6VvvN5sKA7t8DiKseEbLatvuAU9/0bc4lOQXKSIv9lYZyVltI vNj6rlZ9+sg9oI0xpNbRIJ891aJxCrVLPTKfV2rzGK3AezUo9Kj1x7lO4TeC5K7iYPc2 3FfRDGc+qaq3PN0hOBUKOUkvssLhf35futgz+MCQHKSLJjGNZmfM5XKpXI+EvOjYyBWa 0UpiiVBu/yyt2PlRgzpNpBrxQt2jLdmxnMrCIlwh2UhvyMvDllpnt5eVQ1uWINFC9S56 mR6Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=MqudZyg6; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id q14-20020a17090ad38e00b0020bbfb294a1si11221615pju.174.2022.10.10.12.31.02; Mon, 10 Oct 2022 12:31:14 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=MqudZyg6; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229637AbiJJTXx (ORCPT + 99 others); Mon, 10 Oct 2022 15:23:53 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41624 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229445AbiJJTXv (ORCPT ); Mon, 10 Oct 2022 15:23:51 -0400 Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 48512606AB for ; Mon, 10 Oct 2022 12:23: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=1665429830; x=1696965830; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=wCdIkn+YX+UrU1fyn+gV+Wg4I8SspZqEi7jGk4S7OMU=; b=MqudZyg61TD5ao1AxAPCyQ1ybqqd++EuErIdMDwehuAGO2rqqGuUsfHf qIEJsmeGado8oyXgUurjcPAW53U2vuJ5bPNeA9eiodgzrFroeIZlmwXBR FPQkGZkmYCxTGoA/xWxKWWA494MUdyO0ezC3rdts1g997BZNSwbG3uNdL 4TfyGwhFwVnyaTKKINvpjpIaOsSzT35N+v29x4ZtGpr1+JCgQt7OGf95w CcqIfqsb48EDvjrSv7aK7wa/e7ji0PjlJNl/L0y7tRN/K7mcvnMrk/NEa NvcCrG3ylQEEdHmjRepllQgjhJ4rNbpZpm262v48t5/XFTH3HlFaivJQS A==; X-IronPort-AV: E=McAfee;i="6500,9779,10496"; a="284044526" X-IronPort-AV: E=Sophos;i="5.95,173,1661842800"; d="scan'208";a="284044526" Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Oct 2022 12:23:49 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10496"; a="694762686" X-IronPort-AV: E=Sophos;i="5.95,173,1661842800"; d="scan'208";a="694762686" Received: from unknown (HELO fred..) ([172.25.112.68]) by fmsmga004.fm.intel.com with ESMTP; 10 Oct 2022 12:23:49 -0700 From: Xin Li To: linux-kernel@vger.kernel.org, x86@kernel.org Cc: tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, hpa@zytor.com, peterz@infradead.org Subject: [PATCH v2 0/6] Enable LKGS instruction Date: Mon, 10 Oct 2022 12:01:53 -0700 Message-Id: <20221010190159.11920-1-xin3.li@intel.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_PASS,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 LKGS instruction is introduced with Intel FRED (flexible return and event delivery) specification https://cdrdv2.intel.com/v1/dl/getContent/678938. LKGS is independent of FRED, so we enable it as a standalone CPU feature. LKGS behaves like the MOV to GS instruction except that it loads the base address into the IA32_KERNEL_GS_BASE MSR instead of the GS segment’s descriptor cache, which is exactly what Linux kernel does to load user level GS base. Thus, with LKGS, there is no need to SWAPGS away from the kernel GS base. Changes since V1: * place fixup code into code section "__ex_table" instead of the obsoleted "fixup" section. * add a comment that states the LKGS_DI macro will be repalced with "lkgs %di" once the binutils support LKGS instruction. H. Peter Anvin (Intel) (6): x86/cpufeature: add cpu feature bit for LKGS x86/opcode: add LKGS instruction to x86-opcode-map x86/gsseg: make asm_load_gs_index() take an u16 x86/gsseg: move local_irq_save/restore() into asm_load_gs_index() x86/gsseg: move load_gs_index() to its own header file x86/gsseg: use the LKGS instruction if available for load_gs_index() arch/x86/entry/entry_64.S | 28 +++++++++--- arch/x86/ia32/ia32_signal.c | 1 + arch/x86/include/asm/cpufeatures.h | 1 + arch/x86/include/asm/gsseg.h | 57 ++++++++++++++++++++++++ arch/x86/include/asm/mmu_context.h | 1 + arch/x86/include/asm/special_insns.h | 21 --------- arch/x86/kernel/paravirt.c | 1 + arch/x86/kernel/tls.c | 1 + arch/x86/lib/x86-opcode-map.txt | 1 + tools/arch/x86/include/asm/cpufeatures.h | 1 + tools/arch/x86/lib/x86-opcode-map.txt | 1 + 11 files changed, 87 insertions(+), 27 deletions(-) create mode 100644 arch/x86/include/asm/gsseg.h -- 2.34.1