Received: by 2002:a05:7412:419a:b0:f3:1519:9f41 with SMTP id i26csp893470rdh; Thu, 23 Nov 2023 23:59:04 -0800 (PST) X-Google-Smtp-Source: AGHT+IHkDojODbdNWL/t9KcpjqlX9emDVQeaoCfOv0GxlqXh/1QxOaWmR3lSUfiHAf22w7ZvmVrD X-Received: by 2002:a17:90b:4ac6:b0:280:1dca:f699 with SMTP id mh6-20020a17090b4ac600b002801dcaf699mr1736847pjb.42.1700812743965; Thu, 23 Nov 2023 23:59:03 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700812743; cv=none; d=google.com; s=arc-20160816; b=Gk5sTx5gvd5+JcOL4fcPIORF4gTHwGhkydnFrW/omUKB6zjPdGI+3goftJQ6Ys7aJc auCfV035sIfybR5oVlycXTvzFbmFiXttVAcon6QL0xWlRB1t3NSafH9QmNKaurk3SroE Hv7WjUY5+wbLV54ugp5QlnT+JMPJ+Y8AipdJJaQlfKrvbL2OabU7beRCRRLcESs4M8Xn FAXdxgQoXbWIpt90rvv7uGcSKmISmB6o8T6Q2qrYxPVjNJBzxgnoKxeQXn412VfKzyv8 oKtBpBnFaeypMBo4x/CDb70s8lVII2fezgxJOq0xiJ44+gBaIw1OeGNXjm7QPCvBZiP9 yERg== 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=OjAp6ntHsD0rU4FZV2WoUopxtQ1keagAcJRwHB1nnRM=; fh=uy0EBGgYIm8+MgsxUvKHUXUo3s9z4H9hdLwRv8YoeJU=; b=XI50NrFhSgTPuy9nchm8CbCz5LIUfI6zEF1krdQ0A6ovTftCg4Kfx0346D2r88aT/n 0tm1YCUAEqXDErwVAVCIn4Ofs2ts7nCzX9HjZxDFwyzvaorgnMl57GqgBkaU+5uCSj7x pwlwctNJz7ItMBK0k2K2TK+Uib6aYInT3zeoMp4nrcSGCkpDSyeVX1RpIhbMubVGLAO5 LMO12btxqUys/E288QwTretMZtZHDrqxXmLrC59gY04WQwCsDWabhe/KVo9utVKR+8QL MK1DbX3HbGaAHIoChZZvwm4QE3kqyRa2fIeemuP7hnxOcYft4Yjgpw28/U4a8DA6pwJW 9KhA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=HJZIRBVU; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 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 howler.vger.email (howler.vger.email. [23.128.96.34]) by mx.google.com with ESMTPS id d6-20020a17090a8d8600b00285196ac998si2936473pjo.104.2023.11.23.23.59.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Nov 2023 23:59:03 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 as permitted sender) client-ip=23.128.96.34; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=HJZIRBVU; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 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 howler.vger.email (Postfix) with ESMTP id 47C3180A979E; Thu, 23 Nov 2023 23:59:00 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at howler.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344815AbjKXH6o (ORCPT + 99 others); Fri, 24 Nov 2023 02:58:44 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46130 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232058AbjKXH6d (ORCPT ); Fri, 24 Nov 2023 02:58:33 -0500 Received: from mgamail.intel.com (mgamail.intel.com [134.134.136.100]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2FA7F1709; Thu, 23 Nov 2023 23:58:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1700812718; x=1732348718; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=OdZD38yweQWB0vjlPzQLn4oLXiqKkJKeoiDZAwo7txU=; b=HJZIRBVUmhkgaFHdfjlmjnDn15iwL82UY2p1inbICSWsT1uZ8a3+cixG N1NplYqUeNux60Zsdv8Zbub8BbmSxQD7qax/WUxyBhA5U9KnPyjWAOymO 9XFXyrEy3e875eU+/MIs0f7VdImJOEHZxhEdPPDi//wvYQWwXm4cw5qHe +x2ypX9roMSnTcYd/FEQGsFhFUs3n/055qrEvWu6v91WVLSK4V/tU8WGU QaV4aaoBRKLsONo3pB93TqcJx40+VETkWd21z+potpEORtdH0Hp4FGyef G7QMxftIj3gX5lwOzcyOjakDn1gCrfKPAQasgemJ857fILbRGmnm35kpv w==; X-IronPort-AV: E=McAfee;i="6600,9927,10902"; a="458872275" X-IronPort-AV: E=Sophos;i="6.04,223,1695711600"; d="scan'208";a="458872275" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Nov 2023 23:58:35 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10902"; a="833629795" X-IronPort-AV: E=Sophos;i="6.04,223,1695711600"; d="scan'208";a="833629795" Received: from unknown (HELO embargo.jf.intel.com) ([10.165.9.183]) by fmsmga008-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Nov 2023 23:58:35 -0800 From: Yang Weijiang To: seanjc@google.com, pbonzini@redhat.com, dave.hansen@intel.com, kvm@vger.kernel.org, linux-kernel@vger.kernel.org Cc: peterz@infradead.org, chao.gao@intel.com, rick.p.edgecombe@intel.com, mlevitsk@redhat.com, john.allen@amd.com, weijiang.yang@intel.com Subject: [PATCH v7 02/26] x86/fpu/xstate: Refine CET user xstate bit enabling Date: Fri, 24 Nov 2023 00:53:06 -0500 Message-Id: <20231124055330.138870-3-weijiang.yang@intel.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20231124055330.138870-1-weijiang.yang@intel.com> References: <20231124055330.138870-1-weijiang.yang@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on howler.vger.email 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 (howler.vger.email [0.0.0.0]); Thu, 23 Nov 2023 23:59:00 -0800 (PST) Remove XFEATURE_CET_USER entry from dependency array as the entry doesn't reflect true dependency between CET features and the user xstate bit. Enable the bit in fpu_kernel_cfg.max_features when either SHSTK or IBT is available. Both user mode shadow stack and indirect branch tracking features depend on XFEATURE_CET_USER bit in XSS to automatically save/restore user mode xstate registers, i.e., IA32_U_CET and IA32_PL3_SSP whenever necessary. Note, the issue, i.e., CPUID only enumerates IBT but no SHSTK is resulted from CET KVM series which synthesizes guest CPUIDs based on userspace settings,in real world the case is rare. In other words, the exitings dependency check is correct when only user mode SHSTK is available. Signed-off-by: Yang Weijiang Reviewed-by: Rick Edgecombe Tested-by: Rick Edgecombe --- arch/x86/kernel/fpu/xstate.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/arch/x86/kernel/fpu/xstate.c b/arch/x86/kernel/fpu/xstate.c index 73f6bc00d178..6e50a4251e2b 100644 --- a/arch/x86/kernel/fpu/xstate.c +++ b/arch/x86/kernel/fpu/xstate.c @@ -73,7 +73,6 @@ static unsigned short xsave_cpuid_features[] __initdata = { [XFEATURE_PT_UNIMPLEMENTED_SO_FAR] = X86_FEATURE_INTEL_PT, [XFEATURE_PKRU] = X86_FEATURE_OSPKE, [XFEATURE_PASID] = X86_FEATURE_ENQCMD, - [XFEATURE_CET_USER] = X86_FEATURE_SHSTK, [XFEATURE_XTILE_CFG] = X86_FEATURE_AMX_TILE, [XFEATURE_XTILE_DATA] = X86_FEATURE_AMX_TILE, }; @@ -798,6 +797,14 @@ void __init fpu__init_system_xstate(unsigned int legacy_size) fpu_kernel_cfg.max_features &= ~BIT_ULL(i); } + /* + * CET user mode xstate bit has been cleared by above sanity check. + * Now pick it up if either SHSTK or IBT is available. Either feature + * depends on the xstate bit to save/restore user mode states. + */ + if (boot_cpu_has(X86_FEATURE_SHSTK) || boot_cpu_has(X86_FEATURE_IBT)) + fpu_kernel_cfg.max_features |= BIT_ULL(XFEATURE_CET_USER); + if (!cpu_feature_enabled(X86_FEATURE_XFD)) fpu_kernel_cfg.max_features &= ~XFEATURE_MASK_USER_DYNAMIC; -- 2.27.0