From patchwork Fri Nov 18 14:15:04 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiaxi Chen X-Patchwork-Id: 22343 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp218582wrr; Fri, 18 Nov 2022 06:16:01 -0800 (PST) X-Google-Smtp-Source: AA0mqf54IkIt9TwvPLbYJPbA6sxwW1+BFq5QMKXC2z6POnbYZ654ax3Hpd0En/kll72EdJZMDzGt X-Received: by 2002:a17:902:bf06:b0:17b:d6ad:94c8 with SMTP id bi6-20020a170902bf0600b0017bd6ad94c8mr7807473plb.110.1668780961498; Fri, 18 Nov 2022 06:16:01 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1668780961; cv=none; d=google.com; s=arc-20160816; b=aEj7gGelD5EYTW0oee57DKO5aWb1FMQQxiZC76n4NMpmUgownIU/megTS+CgYO2i4S SEl3dVBc+j3TKbaX9FQCJzzkmZRrH3ttMLuxQO8NhkCnW27wHD13zlTlShRC82Dt96Zu iT4XpvWx2rzUuDrlCvIrAVw47uPUSdc1O4w49h8B71Ry5ZxhB0IdZWGTp6Ej5xiYr6kc LirdLFCc800J9kRdzCSUOLwB9MxBToc+SxoiBpKBeYHxYa+bfcDwIB1bURya4orHW2ug xjY+oeHJthxdKA+CSlfibQPo7KyK90R0lkHHw0JAk1kU/WouqTZxFD8x486+As1ge49s z17A== 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=Kltk2nD3Mrcnmy3G4qc76Cjad5bdzhp6gl4wQ9oDRTc=; b=kVZLt29WhzLdUDkIY38OQgc4qp78QtHAOGVggfYBsfmlu3Rw98Sd9C1Ij/Ajs01iJd g6Fe+fvg1qfpAyqk4UXjO84EQ+sZnBq9jBx+JzWMcXoo7gDC3br51oDpCk6VTZGKULSW K9blOVMIFEydsnR32kCK4uqxTWWXlxpJVKZee6odElXlOcte1hAE/HyW4dLnykE9CyuY 8T/oJ/blIZWWOZFsyCNYZp1lDwLae08dAcwL3yuImVRbCg6HINvOQRXvTfMEvw4/Sv25 oO2ExZGriHxg9kv6QIKaxpFT8jleoaO/74+B1auJ3lc+3nk46HMXCnNa2UcqeS+kvGH4 YI3w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=mfu4VgRd; 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: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id s7-20020a639247000000b0046ebaed8e45si3849057pgn.62.2022.11.18.06.15.46; Fri, 18 Nov 2022 06:16:01 -0800 (PST) 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=mfu4VgRd; 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 S242234AbiKROPT (ORCPT + 99 others); Fri, 18 Nov 2022 09:15:19 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48888 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242216AbiKROPM (ORCPT ); Fri, 18 Nov 2022 09:15:12 -0500 Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 27DB266C9C; Fri, 18 Nov 2022 06:15:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1668780912; x=1700316912; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=18jsSFYGJy6gbnsbxxDweHKGvPhAtMZ4eTFHplPUl9k=; b=mfu4VgRdZBG0idDlssInTmD6n3wPVWo0NT2uAT/dMnHEg1mIJ2GK6dJk MNQb0fCQiHQHn2ka6reQvwx2B7Szng+aO8Aa95KcgAUaUkjoDc789E7vy mUfHnF33lpK6AnDCg4Q6IG0yCO83cVctLCvvKETspi5W0jjC+ihb4LiHK Rc2GkShALVKCDswZMRJWtCmWwMGw0sW3/UC8CsAzA9uI8YBxEcQIgN5Kq OK6MSD3DESyE5RGbIcKZ8WUYJjWAQnBCuHAhqEZy+QbC6Ip7G8i4db5fW u4qXfnUi1ABoSZ3zuH/BgqWUZUsVAv6GTcRf84dNR2tp2DkWdPp4WBtjC Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10535"; a="292842728" X-IronPort-AV: E=Sophos;i="5.96,174,1665471600"; d="scan'208";a="292842728" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Nov 2022 06:15:11 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10535"; a="673204436" X-IronPort-AV: E=Sophos;i="5.96,174,1665471600"; d="scan'208";a="673204436" Received: from jiaxichen-precision-3650-tower.sh.intel.com ([10.239.159.75]) by orsmga001.jf.intel.com with ESMTP; 18 Nov 2022 06:15:06 -0800 From: Jiaxi Chen To: kvm@vger.kernel.org Cc: tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com, seanjc@google.com, pbonzini@redhat.com, ndesaulniers@google.com, alexandre.belloni@bootlin.com, peterz@infradead.org, jpoimboe@kernel.org, chang.seok.bae@intel.com, pawan.kumar.gupta@linux.intel.com, babu.moger@amd.com, jmattson@google.com, sandipan.das@amd.com, tony.luck@intel.com, sathyanarayanan.kuppuswamy@linux.intel.com, fenghua.yu@intel.com, keescook@chromium.org, nathan@kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v4 1/6] x86: KVM: Advertise CMPccXADD CPUID to user space Date: Fri, 18 Nov 2022 22:15:04 +0800 Message-Id: <20221118141509.489359-2-jiaxi.chen@linux.intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221118141509.489359-1-jiaxi.chen@linux.intel.com> References: <20221118141509.489359-1-jiaxi.chen@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1749843665455639061?= X-GMAIL-MSGID: =?utf-8?q?1749843665455639061?= CMPccXADD is a new set of instructions in the latest Intel platform Sierra Forest. This new instruction set includes a semaphore operation that can compare and add the operands if condition is met, which can improve database performance. The bit definition: CPUID.(EAX=7,ECX=1):EAX[bit 7] This CPUID is exposed to userspace. Besides, there is no other VMX control for this instruction. Signed-off-by: Jiaxi Chen --- arch/x86/include/asm/cpufeatures.h | 1 + arch/x86/kvm/cpuid.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/arch/x86/include/asm/cpufeatures.h b/arch/x86/include/asm/cpufeatures.h index b71f4f2ecdd5..19db3940f262 100644 --- a/arch/x86/include/asm/cpufeatures.h +++ b/arch/x86/include/asm/cpufeatures.h @@ -308,6 +308,7 @@ /* Intel-defined CPU features, CPUID level 0x00000007:1 (EAX), word 12 */ #define X86_FEATURE_AVX_VNNI (12*32+ 4) /* AVX VNNI instructions */ #define X86_FEATURE_AVX512_BF16 (12*32+ 5) /* AVX512 BFLOAT16 instructions */ +#define X86_FEATURE_CMPCCXADD (12*32+ 7) /* CMPccXADD instructions */ /* AMD-defined CPU features, CPUID level 0x80000008 (EBX), word 13 */ #define X86_FEATURE_CLZERO (13*32+ 0) /* CLZERO instruction */ diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c index 62bc7a01cecc..7ab7cc717b1c 100644 --- a/arch/x86/kvm/cpuid.c +++ b/arch/x86/kvm/cpuid.c @@ -657,7 +657,7 @@ void kvm_set_cpu_caps(void) kvm_cpu_cap_set(X86_FEATURE_SPEC_CTRL_SSBD); kvm_cpu_cap_mask(CPUID_7_1_EAX, - F(AVX_VNNI) | F(AVX512_BF16) + F(AVX_VNNI) | F(AVX512_BF16) | F(CMPCCXADD) ); kvm_cpu_cap_mask(CPUID_D_1_EAX, From patchwork Fri Nov 18 14:15:05 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiaxi Chen X-Patchwork-Id: 22344 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp218752wrr; Fri, 18 Nov 2022 06:16:17 -0800 (PST) X-Google-Smtp-Source: AA0mqf7EpxTDXV17mQtvIA3WYiu0/t94N1lYZCHdr1FiU+mzvRGv1q+alV/K9ALpBvAgwdncwHHJ X-Received: by 2002:a17:902:c141:b0:186:c958:64f with SMTP id 1-20020a170902c14100b00186c958064fmr7759210plj.33.1668780977255; Fri, 18 Nov 2022 06:16:17 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1668780977; cv=none; d=google.com; s=arc-20160816; b=VzwnlDCNObNu2s2O+xH8dCaP6WLrySdQAe9qtdk2SK0xHNO+yHfzx8mfp1GWcyotDO 4ac1XngPMYFZiaK2xNf0KH4+sVIUT9c+l+R0KQBgda9VcbpYedHWFFMNUHMVokiQgIed tp2yOMXwH1kjFPgdWG2sfUxbxeY5Hbk+F5FNLhqhAIJAbGpZtELNeFAPr3b7jxdrQUhV w5Ut0vOAcFBMCqfxgkqgxocRaACv123dyWc+zGrrsNMHhd8tqAdcpYruRy+la2+dmGyU OQPgM4jXkpTRXeGKGB0HIlGRTYEh93UaX+p3JWCPxWw0eQg9PP7Ui8K+wv2heNQx93+s xoPA== 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=eqnZ0eL0JRZ+7Q1PHMRjofiOYmmwqi7rGycjNL0u2Rk=; b=VZzKI85eHXspxBkJrm8jFVZxrNAcXPD7h6aK7T0j0i6q3J7dNUgWYXK+6q9gu+RjSI WuvTvs/Ind92rDtVs4CAZS4VJ5r+lfj9bY6e+pXb58gFXLyB0MAB8f3c1WUxuHCTKat+ wXsAPanrM0yxO3h4bbhuATPpdCInr6zrnucr1L5gQbkzYKD41wTrZbHyNhz97Tk5J+qZ HI1rPyVcfWz9Jg9o5PEQwVAW3vT/yFoISHvUduzeoQxokZfpdZ1XryVDQooD3Ir5MJBB /s2hP9fCJKOyrLtbnh1ApsvwOhADCRt/55/4sOmOCy+KuSxHNX4HAzw/8pWIkQPJ3pfW /v0w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=AauEr6fd; 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: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id n35-20020a635923000000b0047005e8d874si3997715pgb.9.2022.11.18.06.16.04; Fri, 18 Nov 2022 06:16:17 -0800 (PST) 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=AauEr6fd; 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 S235230AbiKROP0 (ORCPT + 99 others); Fri, 18 Nov 2022 09:15:26 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48988 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242243AbiKROPS (ORCPT ); Fri, 18 Nov 2022 09:15:18 -0500 Received: from mga06.intel.com (mga06b.intel.com [134.134.136.31]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8EB6466C9C; Fri, 18 Nov 2022 06:15:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1668780917; x=1700316917; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=7eAM8q8qML3zf4XzRteOiwU10raMhgqwldWA8Pl8eiY=; b=AauEr6fdbbzxO1R814EphrkuVhRUFarF4ryDwvHKQbCQt65rGTC8674X bRD9b2BcSuJkbhtLABoMPkp6qcxaNk81ocItYTLvdefLBi+GWPvQduH1F fR9ZFaz2e2mi3IAytHZtxpgA3bAFFTiqqYYYhTKgxvMM4ErmLchH79Ob8 cv1ZEAoyalGnwjMdyEykO5cq3yvRRjZ2P+TTT0BKxNXqVi2qBfPjtm3Zz wkT6Mz+eltEj3o8g7clM+GJbrYalpSApE1/IHxZEZnIvP/W8gsyuF/lKu e1F1vg2bjrXsfjri3JxegCC+BYCviw6vOPe+gwI3TzXOucBjvsXdowomJ w==; X-IronPort-AV: E=McAfee;i="6500,9779,10535"; a="375274252" X-IronPort-AV: E=Sophos;i="5.96,174,1665471600"; d="scan'208";a="375274252" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Nov 2022 06:15:17 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10535"; a="673204445" X-IronPort-AV: E=Sophos;i="5.96,174,1665471600"; d="scan'208";a="673204445" Received: from jiaxichen-precision-3650-tower.sh.intel.com ([10.239.159.75]) by orsmga001.jf.intel.com with ESMTP; 18 Nov 2022 06:15:11 -0800 From: Jiaxi Chen To: kvm@vger.kernel.org Cc: tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com, seanjc@google.com, pbonzini@redhat.com, ndesaulniers@google.com, alexandre.belloni@bootlin.com, peterz@infradead.org, jpoimboe@kernel.org, chang.seok.bae@intel.com, pawan.kumar.gupta@linux.intel.com, babu.moger@amd.com, jmattson@google.com, sandipan.das@amd.com, tony.luck@intel.com, sathyanarayanan.kuppuswamy@linux.intel.com, fenghua.yu@intel.com, keescook@chromium.org, nathan@kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v4 2/6] x86: KVM: Advertise AMX-FP16 CPUID to user space Date: Fri, 18 Nov 2022 22:15:05 +0800 Message-Id: <20221118141509.489359-3-jiaxi.chen@linux.intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221118141509.489359-1-jiaxi.chen@linux.intel.com> References: <20221118141509.489359-1-jiaxi.chen@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,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-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1749843682319026462?= X-GMAIL-MSGID: =?utf-8?q?1749843682319026462?= From: "Chang S. Bae" Latest Intel platform Granite Rapids has introduced a new instruction - AMX-FP16, which performs dot-products of two FP16 tiles and accumulates the results into a packed single precision tile. This instruction adds FP16 capability and also allows a FP16 GPU trained model to run faster without loss of accuracy or added SW overhead. The bit definition: CPUID.(EAX=7,ECX=1):EAX[bit 21] This CPUID is exposed to user space. Besides, there is no other VMX control for this instruction. Signed-off-by: Chang S. Bae Signed-off-by: Jiaxi Chen --- arch/x86/include/asm/cpufeatures.h | 1 + arch/x86/kvm/cpuid.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/arch/x86/include/asm/cpufeatures.h b/arch/x86/include/asm/cpufeatures.h index 19db3940f262..df4a7f7505a9 100644 --- a/arch/x86/include/asm/cpufeatures.h +++ b/arch/x86/include/asm/cpufeatures.h @@ -309,6 +309,7 @@ #define X86_FEATURE_AVX_VNNI (12*32+ 4) /* AVX VNNI instructions */ #define X86_FEATURE_AVX512_BF16 (12*32+ 5) /* AVX512 BFLOAT16 instructions */ #define X86_FEATURE_CMPCCXADD (12*32+ 7) /* CMPccXADD instructions */ +#define X86_FEATURE_AMX_FP16 (12*32+21) /* AMX fp16 Support */ /* AMD-defined CPU features, CPUID level 0x80000008 (EBX), word 13 */ #define X86_FEATURE_CLZERO (13*32+ 0) /* CLZERO instruction */ diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c index 7ab7cc717b1c..2a334d4cd04e 100644 --- a/arch/x86/kvm/cpuid.c +++ b/arch/x86/kvm/cpuid.c @@ -657,7 +657,7 @@ void kvm_set_cpu_caps(void) kvm_cpu_cap_set(X86_FEATURE_SPEC_CTRL_SSBD); kvm_cpu_cap_mask(CPUID_7_1_EAX, - F(AVX_VNNI) | F(AVX512_BF16) | F(CMPCCXADD) + F(AVX_VNNI) | F(AVX512_BF16) | F(CMPCCXADD) | F(AMX_FP16) ); kvm_cpu_cap_mask(CPUID_D_1_EAX, From patchwork Fri Nov 18 14:15:06 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiaxi Chen X-Patchwork-Id: 22345 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp218796wrr; Fri, 18 Nov 2022 06:16:21 -0800 (PST) X-Google-Smtp-Source: AA0mqf5JmjZeXpjCGu/nUPyhZgQc79chdLvBeutfuEetNBdrm3BfzOU6CVT2oGMfVvp3QtUHgCsT X-Received: by 2002:a63:4c4b:0:b0:476:a862:53c1 with SMTP id m11-20020a634c4b000000b00476a86253c1mr7022379pgl.197.1668780981515; Fri, 18 Nov 2022 06:16:21 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1668780981; cv=none; d=google.com; s=arc-20160816; b=i29MjrWvvEBPzF8b8RmidoTdnqCdmeTel3jYyx7bp3tbUInRvTZPneq2m2H6ajWcRu xJEdGNu4a777jFADc8qjch4AoUuUPl0Qhey61UlxBTDBicLyvwEPe4JxcBGplez1J9kp SxuHh7non962Ev7wncj5G2tB+9HndOfOE46uOkGqSIdCcHadOmfNJdmBpzpjMOy8b/oe 4b1OqpQtcyDn9XdNLn8YJ8y3I0kjjOaSCG0kY1ZCh3IMsdlQnU7IeF0dZfyNte0a5AoT /kmt7tb/TKZDvDwG0yrJc7tq/5MoUzi/K778NQ4g0hryjK5aAco4WkvKzELXzb9kNcUS yNPg== 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=y3NLSk2HriOfe47J6OtfIq9AhZVRv2EWjUTW8cPajuU=; b=FCH00hBxFnJVtqqsJbbA91pV2FhlvnExXV5JAT6J57MQsMaMW+APY8/oACjooowgFM NvBlqM+5t8ekS7kInjG2i7qyDMUV/n1Rvt/uYNiqJGK8LPsH7xkckv4rfjW7iYVW5Xoi nZgNh95j952GcPsm0SjI48DsfGgp9xMI34iQXD+jYhAN79j7M/uKEZkngTSi7y/sECuX TioeykxKfiUxgGAmiaJMftqMi/OPsTPXMh1wU64VcJEPcccaAE8iKgEvkmNx3lpPI/42 kwKNYSU7l3J7lYtg6AvvqaUz7mV2k3dBhGBdKRgf1Jp4QkNVFuq9ysWL2pvBblR/3PCh jnuw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=B97gtDVr; 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: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id a1-20020a63e401000000b0046afc3948c4si3938794pgi.707.2022.11.18.06.16.08; Fri, 18 Nov 2022 06:16:21 -0800 (PST) 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=B97gtDVr; 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 S242316AbiKROPo (ORCPT + 99 others); Fri, 18 Nov 2022 09:15:44 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49114 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242278AbiKROP2 (ORCPT ); Fri, 18 Nov 2022 09:15:28 -0500 Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 03D16FAC5; Fri, 18 Nov 2022 06:15:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1668780923; x=1700316923; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=QoJokPLTFXjsYrc+DOubFMFw2lxiEOQBtYJNpzvRAXw=; b=B97gtDVra3gOB3XMRgCrOwaW7ZvKuNwfX1+OTgWt9I7bLZ3RMvxE24/V 3y2ZoILGO3b/wmLAXLYpAG+fuwsZMKhOIAbsAkdajFJv+m+8N5OurfdMw CvDjZ1q5wrjknXBCitbMsnmmZf/u9XT4gTnp77sFFKLi1hToRdJ8oHGJI B6LdgkBg56UcXTv2fJRMXPU8HKdkf4gXH6N3xsqPa/6NWnogbi+EuCQrf kkNL2xbe/ro7+xCiC6COwY6tEgkRVYS91SVuiQf1bm3pwsRoxL93KGFoL Vw7C7P4EBuCUYS8PrxdwTsHif1FRMP2YZbptcEWdCxVkzUacCLjOhPNbS Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10535"; a="314292428" X-IronPort-AV: E=Sophos;i="5.96,174,1665471600"; d="scan'208";a="314292428" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Nov 2022 06:15:22 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10535"; a="673204453" X-IronPort-AV: E=Sophos;i="5.96,174,1665471600"; d="scan'208";a="673204453" Received: from jiaxichen-precision-3650-tower.sh.intel.com ([10.239.159.75]) by orsmga001.jf.intel.com with ESMTP; 18 Nov 2022 06:15:17 -0800 From: Jiaxi Chen To: kvm@vger.kernel.org Cc: tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com, seanjc@google.com, pbonzini@redhat.com, ndesaulniers@google.com, alexandre.belloni@bootlin.com, peterz@infradead.org, jpoimboe@kernel.org, chang.seok.bae@intel.com, pawan.kumar.gupta@linux.intel.com, babu.moger@amd.com, jmattson@google.com, sandipan.das@amd.com, tony.luck@intel.com, sathyanarayanan.kuppuswamy@linux.intel.com, fenghua.yu@intel.com, keescook@chromium.org, nathan@kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v4 3/6] x86: KVM: Advertise AVX-IFMA CPUID to user space Date: Fri, 18 Nov 2022 22:15:06 +0800 Message-Id: <20221118141509.489359-4-jiaxi.chen@linux.intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221118141509.489359-1-jiaxi.chen@linux.intel.com> References: <20221118141509.489359-1-jiaxi.chen@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,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-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1749843686500236960?= X-GMAIL-MSGID: =?utf-8?q?1749843686500236960?= AVX-IFMA is a new instruction in the latest Intel platform Sierra Forest. This instruction packed multiplies unsigned 52-bit integers and adds the low/high 52-bit products to Qword Accumulators. The bit definition: CPUID.(EAX=7,ECX=1):EAX[bit 23] This CPUID is exposed to user space. Besides, there is no other VMX control for this instruction. Signed-off-by: Jiaxi Chen --- arch/x86/include/asm/cpufeatures.h | 1 + arch/x86/kvm/cpuid.c | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/arch/x86/include/asm/cpufeatures.h b/arch/x86/include/asm/cpufeatures.h index df4a7f7505a9..159f8b9898bf 100644 --- a/arch/x86/include/asm/cpufeatures.h +++ b/arch/x86/include/asm/cpufeatures.h @@ -310,6 +310,7 @@ #define X86_FEATURE_AVX512_BF16 (12*32+ 5) /* AVX512 BFLOAT16 instructions */ #define X86_FEATURE_CMPCCXADD (12*32+ 7) /* CMPccXADD instructions */ #define X86_FEATURE_AMX_FP16 (12*32+21) /* AMX fp16 Support */ +#define X86_FEATURE_AVX_IFMA (12*32+23) /* Support for VPMADD52[H,L]UQ */ /* AMD-defined CPU features, CPUID level 0x80000008 (EBX), word 13 */ #define X86_FEATURE_CLZERO (13*32+ 0) /* CLZERO instruction */ diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c index 2a334d4cd04e..5726afb2d14c 100644 --- a/arch/x86/kvm/cpuid.c +++ b/arch/x86/kvm/cpuid.c @@ -657,8 +657,8 @@ void kvm_set_cpu_caps(void) kvm_cpu_cap_set(X86_FEATURE_SPEC_CTRL_SSBD); kvm_cpu_cap_mask(CPUID_7_1_EAX, - F(AVX_VNNI) | F(AVX512_BF16) | F(CMPCCXADD) | F(AMX_FP16) - ); + F(AVX_VNNI) | F(AVX512_BF16) | F(CMPCCXADD) | F(AMX_FP16) | + F(AVX_IFMA)); kvm_cpu_cap_mask(CPUID_D_1_EAX, F(XSAVEOPT) | F(XSAVEC) | F(XGETBV1) | F(XSAVES) | f_xfd From patchwork Fri Nov 18 14:15:07 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiaxi Chen X-Patchwork-Id: 22348 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp219662wrr; Fri, 18 Nov 2022 06:17:58 -0800 (PST) X-Google-Smtp-Source: AA0mqf73wHfl/PHMwo51hON+fJbGoaczFbKhFLcuLQE3NkNIbuft50p9XW7yRMA7eE9MPpuqyXEV X-Received: by 2002:a17:90b:2392:b0:218:8576:82eb with SMTP id mr18-20020a17090b239200b00218857682ebmr3688218pjb.101.1668781078641; Fri, 18 Nov 2022 06:17:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1668781078; cv=none; d=google.com; s=arc-20160816; b=IVANmM3vUKZRw8lfmfVm2SKsv73ihwRCzOjPtC4Rya4hPj0Mdah0/oM7DtKu8MHjvx KGjGWntl0CWQm6Q+NBsN0qzmGnnyxW6DyWSlEV23EUKmLefD2otS87+QzLs1jijQ+cfa RHmxHxVMTFxiuWtQnGH0e9Au66N17Vqs31E6bYbBEOZwm6IrHasZ3r71GAbeN65W/pun VqvKpEu50Zk04wnq2W/cTTDhdsEYnn62M+IjepbT2zj8meFgiG1pn+6UPmypL+VfbJHN t5xwelTjK7ql/HJibqrXMENAATlGSDj1fjdVetYl6EFE4ebUKlssnkYix6Mu9Z0iftFJ xedw== 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=dALaS78lI50EfsUxy4WZsUXP/7QxWJ4qzuY1q7sJWSA=; b=ymUjzNGcoMTb98BSDVTWjntGc9Imk4qomxwnyeDQXYJZws9ubgZJ6p99S93rLJzHCl ABki8mPajw4NwhnMdUr9nZYbEhD2tLT4l2VNMSje0X64b8vvoeSh2QUPa22rJ676PDVf YD75fuNWDocX7Yjmywa180CPpCpJ0Ih+VpC1EAKqQ/HqSySG8b2l1NqIFiS4cmWjdgYT ZVeNDl4ZP8+6k5n6II8HJdVAFpGsuYddBezxLOsaO+vAhpuEF/Fz0sa7e05mbDkGsPXg i+lyTDlckMw0r01Df3Goh5DCQL4agEM03S9M/8rP0rXT9Ei/wraI+yLXm50rm54y6V8U Sc2g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b="hy2/8xjy"; 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: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id x4-20020a17090a970400b002111270cb88si3346113pjo.166.2022.11.18.06.17.44; Fri, 18 Nov 2022 06:17:58 -0800 (PST) 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="hy2/8xjy"; 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 S242277AbiKRORJ (ORCPT + 99 others); Fri, 18 Nov 2022 09:17:09 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49310 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242304AbiKROQf (ORCPT ); Fri, 18 Nov 2022 09:16:35 -0500 Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 036858FE50; Fri, 18 Nov 2022 06:16:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1668780967; x=1700316967; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=tdQb8lheaUafNBHGo5rdSzubxZ0gxuJYJW12KQPBNgA=; b=hy2/8xjyUQmMQTKl5M9LScvdmBlCbpe5wFUTi1BFHgqrspQ0hEmhhg7z bbMti1dMZN3gxoFMdo7KtLtHuE0P4eyj+4zGVDkOHtN4i/SNSKkp03OSI 28Qv3DFrESV38SuyDEA3XJAbRN+wqN9enRpGCoaAeML+HeoolvqWVKjXu w2Mcbj94CUQysPDN9OeeAMMTnkhRBXi+y526Io3NapdRncIaPzilUJtlg Fo0h/IMjwpKMlIp9Gg2LqunxqqH93YqZry33iDvCB620YMZErmfxmQeYx PBnsWPw5oTZT9zsBchtak/beiEHz5x9jQUS0+XpVyemH1hVjmEyaK3EFQ A==; X-IronPort-AV: E=McAfee;i="6500,9779,10535"; a="399428618" X-IronPort-AV: E=Sophos;i="5.96,174,1665471600"; d="scan'208";a="399428618" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Nov 2022 06:15:28 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10535"; a="673204468" X-IronPort-AV: E=Sophos;i="5.96,174,1665471600"; d="scan'208";a="673204468" Received: from jiaxichen-precision-3650-tower.sh.intel.com ([10.239.159.75]) by orsmga001.jf.intel.com with ESMTP; 18 Nov 2022 06:15:22 -0800 From: Jiaxi Chen To: kvm@vger.kernel.org Cc: tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com, seanjc@google.com, pbonzini@redhat.com, ndesaulniers@google.com, alexandre.belloni@bootlin.com, peterz@infradead.org, jpoimboe@kernel.org, chang.seok.bae@intel.com, pawan.kumar.gupta@linux.intel.com, babu.moger@amd.com, jmattson@google.com, sandipan.das@amd.com, tony.luck@intel.com, sathyanarayanan.kuppuswamy@linux.intel.com, fenghua.yu@intel.com, keescook@chromium.org, nathan@kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v4 4/6] x86: KVM: Advertise AVX-VNNI-INT8 CPUID to user space Date: Fri, 18 Nov 2022 22:15:07 +0800 Message-Id: <20221118141509.489359-5-jiaxi.chen@linux.intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221118141509.489359-1-jiaxi.chen@linux.intel.com> References: <20221118141509.489359-1-jiaxi.chen@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,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-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1749843788524566614?= X-GMAIL-MSGID: =?utf-8?q?1749843788524566614?= AVX-VNNI-INT8 is a new set of instructions in the latest Intel platform Sierra Forest, aims for the platform to have superior AI capabilities. This instruction multiplies the individual bytes of two unsigned or unsigned source operands, then adds and accumulates the results into the destination dword element size operand. The bit definition: CPUID.(EAX=7,ECX=1):EDX[bit 4] This CPUID is exposed to user space. Besides, there is no other VMX control for this instruction. Signed-off-by: Jiaxi Chen --- arch/x86/kvm/cpuid.c | 5 ++++- arch/x86/kvm/reverse_cpuid.h | 5 +++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c index 5726afb2d14c..e2b8e5485474 100644 --- a/arch/x86/kvm/cpuid.c +++ b/arch/x86/kvm/cpuid.c @@ -660,6 +660,9 @@ void kvm_set_cpu_caps(void) F(AVX_VNNI) | F(AVX512_BF16) | F(CMPCCXADD) | F(AMX_FP16) | F(AVX_IFMA)); + kvm_cpu_cap_init_scattered(CPUID_7_1_EDX, + F(AVX_VNNI_INT8)); + kvm_cpu_cap_mask(CPUID_D_1_EAX, F(XSAVEOPT) | F(XSAVEC) | F(XGETBV1) | F(XSAVES) | f_xfd ); @@ -913,9 +916,9 @@ static inline int __do_cpuid_func(struct kvm_cpuid_array *array, u32 function) goto out; cpuid_entry_override(entry, CPUID_7_1_EAX); + cpuid_entry_override(entry, CPUID_7_1_EDX); entry->ebx = 0; entry->ecx = 0; - entry->edx = 0; } break; case 0xa: { /* Architectural Performance Monitoring */ diff --git a/arch/x86/kvm/reverse_cpuid.h b/arch/x86/kvm/reverse_cpuid.h index a19d473d0184..8357480b75d6 100644 --- a/arch/x86/kvm/reverse_cpuid.h +++ b/arch/x86/kvm/reverse_cpuid.h @@ -13,6 +13,7 @@ */ enum kvm_only_cpuid_leafs { CPUID_12_EAX = NCAPINTS, + CPUID_7_1_EDX, NR_KVM_CPU_CAPS, NKVMCAPINTS = NR_KVM_CPU_CAPS - NCAPINTS, @@ -24,6 +25,9 @@ enum kvm_only_cpuid_leafs { #define KVM_X86_FEATURE_SGX1 KVM_X86_FEATURE(CPUID_12_EAX, 0) #define KVM_X86_FEATURE_SGX2 KVM_X86_FEATURE(CPUID_12_EAX, 1) +/* Intel-defined sub-features, CPUID level 0x00000007:1 (EDX) */ +#define X86_FEATURE_AVX_VNNI_INT8 KVM_X86_FEATURE(CPUID_7_1_EDX, 4) + struct cpuid_reg { u32 function; u32 index; @@ -48,6 +52,7 @@ static const struct cpuid_reg reverse_cpuid[] = { [CPUID_7_1_EAX] = { 7, 1, CPUID_EAX}, [CPUID_12_EAX] = {0x00000012, 0, CPUID_EAX}, [CPUID_8000_001F_EAX] = {0x8000001f, 0, CPUID_EAX}, + [CPUID_7_1_EDX] = { 7, 1, CPUID_EDX}, }; /* From patchwork Fri Nov 18 14:15:08 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiaxi Chen X-Patchwork-Id: 22346 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp219392wrr; Fri, 18 Nov 2022 06:17:27 -0800 (PST) X-Google-Smtp-Source: AA0mqf54Nr1mmPeAwHwTwGAHzsMfYBYuPzAehf/Gnk+olo5z+24/+ZmKpD2RTeQUBeJlxcOmq7MN X-Received: by 2002:a17:902:f78c:b0:186:8c13:50b3 with SMTP id q12-20020a170902f78c00b001868c1350b3mr7630390pln.153.1668781047404; Fri, 18 Nov 2022 06:17:27 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1668781047; cv=none; d=google.com; s=arc-20160816; b=ZaqCpYEuQkyUW57ankFm5Y84/WG+UKZ0cMDwh7JbZFKNRYoAGAU4JYNvt/2bQg3HeH /wM+oHU9LCo4pBAVgIsn01PyxheOzb/xo38knD4FZ2PL3mis1vJwCEK18eKN5D8eV1E3 IdZFJY7gfI3gG5S0giX/2RkHiz+SLJFkbUJFp9D5n97MzdphKxzA1T9Qgtu8+lQviY8i eoYOdWFPcUMZ/bElndcloOiSrbNoSm3tMXnkDXRMWJbUqXb+arnHHSCXYP7kIL517WmY 0rZNZl5PyoPVK31hoSR90fXTfanCu08AyqXo1ea2wfrA0KYJhXJ7ZC9QQAGKuQXwd9qk HYTA== 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=whbPEbn8uCAahrYDnmAGJ+fZYPJWjSUjMX1d4pcscAo=; b=sbCSsZOfVdmm7E+tnNb9sI3abOSK7gC99zmKkaA+fJxN3GfsBiqc2MWxsTmmrtupZ9 PSwpuDTchWAy3Gx0AIcL+Z1oVLrAKjmA+qsn3xP9nhqqF4NZeISPJ0y8POHd3U7FdhPC v/ngmx21oASnIiub44X6lyUpghYKrfiCOwbfUXn5BTnYWD3ke7QTJViNlPtVp1sMuRT1 vThdheZvrwjWpjTyhqUouZcRnnrNT65S1J5/fRNzsq9z9CaBrm6bUkfcnfk/qGGSLqvq cl+XLn6IFV/aZkpIu3VzdMMSlXDxJqUoRqrcjuBpKKIcRQqn9bcGrQPPO2J0/TJ7bFEH vVhw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=O6ISyipG; 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: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id on10-20020a17090b1d0a00b00205e243b0a1si8135760pjb.170.2022.11.18.06.17.10; Fri, 18 Nov 2022 06:17:27 -0800 (PST) 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=O6ISyipG; 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 S242356AbiKROQG (ORCPT + 99 others); Fri, 18 Nov 2022 09:16:06 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49310 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242318AbiKROPo (ORCPT ); Fri, 18 Nov 2022 09:15:44 -0500 Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 058BB8D49C; Fri, 18 Nov 2022 06:15:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1668780934; x=1700316934; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=E78mPBT56iuZpMseRQ2hY1+suXL8PzPfFDv7KOMJuwA=; b=O6ISyipG24t9cFbPEoJNSQ/tUaFlPrsik+PN9w3Q9371uWngHEtFDLbI 3fqljmvH7K3iodoVSUVl7Wsv+J42v66G+/ppgsjXInSuTrBOdHi0fOlch lefog+kJwn9qvmHPZnJxiQsKLlG4xm6VrsrI/JJnqVzl3jxPYss/cHqvX B6PbGEnU2lOTIQ+xDHEfJ+2EmeszKjRXxuIbZRCjONMr8sF2BF0KAAx/8 /7OuB8gNsAlPzQk59h+mibniigLDZRsa+Ogi5eyCshu/GbZn2MR0HhQmy xYQzcA5m7pd7d/K4m+2NywEjiSnu9deKZHhK6LO5AsLxBay+sLf+ylLAo Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10535"; a="311845191" X-IronPort-AV: E=Sophos;i="5.96,174,1665471600"; d="scan'208";a="311845191" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Nov 2022 06:15:33 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10535"; a="673204483" X-IronPort-AV: E=Sophos;i="5.96,174,1665471600"; d="scan'208";a="673204483" Received: from jiaxichen-precision-3650-tower.sh.intel.com ([10.239.159.75]) by orsmga001.jf.intel.com with ESMTP; 18 Nov 2022 06:15:28 -0800 From: Jiaxi Chen To: kvm@vger.kernel.org Cc: tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com, seanjc@google.com, pbonzini@redhat.com, ndesaulniers@google.com, alexandre.belloni@bootlin.com, peterz@infradead.org, jpoimboe@kernel.org, chang.seok.bae@intel.com, pawan.kumar.gupta@linux.intel.com, babu.moger@amd.com, jmattson@google.com, sandipan.das@amd.com, tony.luck@intel.com, sathyanarayanan.kuppuswamy@linux.intel.com, fenghua.yu@intel.com, keescook@chromium.org, nathan@kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v4 5/6] x86: KVM: Advertise AVX-NE-CONVERT CPUID to user space Date: Fri, 18 Nov 2022 22:15:08 +0800 Message-Id: <20221118141509.489359-6-jiaxi.chen@linux.intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221118141509.489359-1-jiaxi.chen@linux.intel.com> References: <20221118141509.489359-1-jiaxi.chen@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,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-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1749843755966041921?= X-GMAIL-MSGID: =?utf-8?q?1749843755966041921?= AVX-NE-CONVERT is a new set of instructions which can convert low precision floating point like BF16/FP16 to high precision floating point FP32, and can also convert FP32 elements to BF16. This instruction allows the platform to have improved AI capabilities and better compatibility. The bit definition: CPUID.(EAX=7,ECX=1):EDX[bit 5] This CPUID is exposed to user space. Besides, there is no other VMX control for this instruction. Signed-off-by: Jiaxi Chen --- arch/x86/kvm/cpuid.c | 3 ++- arch/x86/kvm/reverse_cpuid.h | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c index e2b8e5485474..f87292ae69d2 100644 --- a/arch/x86/kvm/cpuid.c +++ b/arch/x86/kvm/cpuid.c @@ -661,7 +661,8 @@ void kvm_set_cpu_caps(void) F(AVX_IFMA)); kvm_cpu_cap_init_scattered(CPUID_7_1_EDX, - F(AVX_VNNI_INT8)); + F(AVX_VNNI_INT8) | F(AVX_NE_CONVERT) + ); kvm_cpu_cap_mask(CPUID_D_1_EAX, F(XSAVEOPT) | F(XSAVEC) | F(XGETBV1) | F(XSAVES) | f_xfd diff --git a/arch/x86/kvm/reverse_cpuid.h b/arch/x86/kvm/reverse_cpuid.h index 8357480b75d6..d0fc43c3b2fd 100644 --- a/arch/x86/kvm/reverse_cpuid.h +++ b/arch/x86/kvm/reverse_cpuid.h @@ -27,6 +27,7 @@ enum kvm_only_cpuid_leafs { /* Intel-defined sub-features, CPUID level 0x00000007:1 (EDX) */ #define X86_FEATURE_AVX_VNNI_INT8 KVM_X86_FEATURE(CPUID_7_1_EDX, 4) +#define X86_FEATURE_AVX_NE_CONVERT KVM_X86_FEATURE(CPUID_7_1_EDX, 5) struct cpuid_reg { u32 function; From patchwork Fri Nov 18 14:15:09 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiaxi Chen X-Patchwork-Id: 22347 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp219583wrr; Fri, 18 Nov 2022 06:17:51 -0800 (PST) X-Google-Smtp-Source: AA0mqf4uLIZn+nmCt2HF8HVNVBaovYQ7tn6yvtt8i4f63PJjtame0efYots/aXowG1MpJ9Qyp2UQ X-Received: by 2002:a17:90a:e2c5:b0:214:1648:687d with SMTP id fr5-20020a17090ae2c500b002141648687dmr14203893pjb.78.1668781070753; Fri, 18 Nov 2022 06:17:50 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1668781070; cv=none; d=google.com; s=arc-20160816; b=Y9ipPylSN5yyb3JPq2lpCZTEmjK1QUD9MWRweHFBtwGzIAs/F2rfKDwyUua71yDF+x 32/kO92cMz2EG+w9WOcygqC87LihnHAI11mUNXmGfuPDpMT9HUKE3agaCns87VSQgB+Z bN+FNw3Ch10hUYqOMcipLdQG2R0IViCOlqPLZUDrOeRE3VJChBX3/S0IjTUu1x2A0LZB g/yLlpXP04w15BYvjH6gjMwgo4BnOLHfL0hE5WuiXqcQ4pwW74s5e2GStFeJw+LluRmz gDarFYfqsx2g09jaQBJrW0uIDb85vxDO1R0i7tHOficbO5m5K2kO2eIXT5UMUsam482D TVGA== 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=o8odWnJIbDk5lkaJ+iVkMijWCkWvz7dvkFuicCuKQME=; b=FfWlq6EjQEiLqJNVJ0l7d71CFKgzgZxOLh1gDVqMMORje+SYS+0oNOuw2LZj1sp9Ju nR0vNQ+UEKFGOLHqVo5Q9qW/sZVf1/Hzt+6izLlwqVyaT/lqhrCvUwXr6a9Zqxve5EbZ rqSANhT0+sNQcE36YkE5pb8DbK/GtFo1wloFEXONfwaStNN6/SPcDdorgcNCiV612Jt8 oTkZYdwlSGLss9ycVQbxXTwiBojNtnebtRYx4hYSJUcf/2FHcHoRo/sY1RBJTz6mMuKZ 2kNyljeBFMtOyBRcQfLUR7EyU7FRwjXTnfvgd/2yvkjWE+YcKHfQ1y3m2K0iWG1VR4PW jTtA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b="Yqmj/TSH"; 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: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id b15-20020a65578f000000b0046b15902616si75372pgr.270.2022.11.18.06.17.33; Fri, 18 Nov 2022 06:17:50 -0800 (PST) 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="Yqmj/TSH"; 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 S242362AbiKROQY (ORCPT + 99 others); Fri, 18 Nov 2022 09:16:24 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50074 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242342AbiKROPx (ORCPT ); Fri, 18 Nov 2022 09:15:53 -0500 Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D37126E549; Fri, 18 Nov 2022 06:15:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1668780939; x=1700316939; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=iL9Gulkfj53aq2blQeCaJJySqTu7PhbaVSFImCV2Zpk=; b=Yqmj/TSHWbvo7nK1I9TFB8NVWgMCLLA0pf2+07M4vnLnqwt4aXyD7KN5 8/m3Hk4heoldE9DUfWfiyEHib5fkiqegGHxoWDsnSFG69QNOrk8Ob7DnW 1nYcRliW38acsDwvwp1rT+gWpWZZZjVx8Dw9cQiYKv9198iQQwAEa62f8 uUe8bmzCq7POa63W14aM2aEREVevB0QcxMKy5PdLY5bX8SjDg8iBM8RA8 QtY54sPE+bIMgbfZzrj2EsL2RxIyrgY3bTpZUVcH0QjEo7jYHiJ23mVXO G6SAPhjikvUo8QMzU+dHL+RmqpaAPsx1RuQsgZEPNt5zucT1Ck/PBOuSI w==; X-IronPort-AV: E=McAfee;i="6500,9779,10535"; a="339982428" X-IronPort-AV: E=Sophos;i="5.96,174,1665471600"; d="scan'208";a="339982428" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Nov 2022 06:15:39 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10535"; a="673204507" X-IronPort-AV: E=Sophos;i="5.96,174,1665471600"; d="scan'208";a="673204507" Received: from jiaxichen-precision-3650-tower.sh.intel.com ([10.239.159.75]) by orsmga001.jf.intel.com with ESMTP; 18 Nov 2022 06:15:33 -0800 From: Jiaxi Chen To: kvm@vger.kernel.org Cc: tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com, seanjc@google.com, pbonzini@redhat.com, ndesaulniers@google.com, alexandre.belloni@bootlin.com, peterz@infradead.org, jpoimboe@kernel.org, chang.seok.bae@intel.com, pawan.kumar.gupta@linux.intel.com, babu.moger@amd.com, jmattson@google.com, sandipan.das@amd.com, tony.luck@intel.com, sathyanarayanan.kuppuswamy@linux.intel.com, fenghua.yu@intel.com, keescook@chromium.org, nathan@kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v4 6/6] x86: KVM: Advertise PREFETCHIT0/1 CPUID to user space Date: Fri, 18 Nov 2022 22:15:09 +0800 Message-Id: <20221118141509.489359-7-jiaxi.chen@linux.intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221118141509.489359-1-jiaxi.chen@linux.intel.com> References: <20221118141509.489359-1-jiaxi.chen@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-7.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,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-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1749843779863020306?= X-GMAIL-MSGID: =?utf-8?q?1749843779863020306?= Latest Intel platform Granite Rapids has introduced a new instruction - PREFETCHIT0/1, which moves code to memory (cache) closer to the processor depending on specific hints. The bit definition: CPUID.(EAX=7,ECX=1):EDX[bit 14] This CPUID is exposed to user space. Besides, there is no other VMX control for this instruction. Signed-off-by: Jiaxi Chen --- arch/x86/kvm/cpuid.c | 2 +- arch/x86/kvm/reverse_cpuid.h | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c index f87292ae69d2..35eaee40c1bb 100644 --- a/arch/x86/kvm/cpuid.c +++ b/arch/x86/kvm/cpuid.c @@ -661,7 +661,7 @@ void kvm_set_cpu_caps(void) F(AVX_IFMA)); kvm_cpu_cap_init_scattered(CPUID_7_1_EDX, - F(AVX_VNNI_INT8) | F(AVX_NE_CONVERT) + F(AVX_VNNI_INT8) | F(AVX_NE_CONVERT) | F(PREFETCHITI) ); kvm_cpu_cap_mask(CPUID_D_1_EAX, diff --git a/arch/x86/kvm/reverse_cpuid.h b/arch/x86/kvm/reverse_cpuid.h index d0fc43c3b2fd..49bb06163fb4 100644 --- a/arch/x86/kvm/reverse_cpuid.h +++ b/arch/x86/kvm/reverse_cpuid.h @@ -28,6 +28,7 @@ enum kvm_only_cpuid_leafs { /* Intel-defined sub-features, CPUID level 0x00000007:1 (EDX) */ #define X86_FEATURE_AVX_VNNI_INT8 KVM_X86_FEATURE(CPUID_7_1_EDX, 4) #define X86_FEATURE_AVX_NE_CONVERT KVM_X86_FEATURE(CPUID_7_1_EDX, 5) +#define X86_FEATURE_PREFETCHITI KVM_X86_FEATURE(CPUID_7_1_EDX, 14) struct cpuid_reg { u32 function;