From patchwork Wed Dec 13 06:27:38 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: zhaotianrui X-Patchwork-Id: 17964 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:3b04:b0:fb:cd0c:d3e with SMTP id c4csp7584897dys; Tue, 12 Dec 2023 22:40:48 -0800 (PST) X-Google-Smtp-Source: AGHT+IE09mxn58iL5Rh5qOrC/ji74kxUiYLjlgwWG0Q5pvmS+7vr5c3gr0A8fR3+hViOdz8MZVLP X-Received: by 2002:a92:d686:0:b0:35d:5995:1d74 with SMTP id p6-20020a92d686000000b0035d59951d74mr8800002iln.57.1702449648764; Tue, 12 Dec 2023 22:40:48 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702449648; cv=none; d=google.com; s=arc-20160816; b=y8J0N8E1Mcmhhmp8hRRNfFX2WYsL8dSsTccUvLrbNARKabWFJwV+Bw0QDLId/S21DP aSQjyKtm1h+3J1Bb7rpGSWPtyLwlyjHLw+nbC+kIZns+BZW58LxXv5WJNLJOBUR0pF23 V6iirki30jO86IKDq/IRJKZf4X7MQtqfH++fVDt3nlKitEHJtQ49wzlqNPw7WfpFR/GV epjog0HuNfqN+HjSrUwxgABf0vcJ8IyGjjSmejznVB/2xX25QsC4ZDZW+r3+m1GC5OqS cglnPhtMsy+WhJ+KVN7L6FQ7UllXC61B2S90yd7tnUmdutKxvOLuZy9bZJ/FqfC6uvFd AAsQ== 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; bh=PAKIQX+TbuhMmrOj6Au3NfLnOyRgBm6xKwlYA0NLEAY=; fh=f6ooZv6UjLKGOCu2LJy27xByoBqvGep417I4c5GOaYE=; b=ZWseNTDFHXmnL4rphw+hkoaQHr3vJHenNnttsMC0kmPYLT5LvkE9OHocVwi602iK79 mQFl6SzpLOpTe1FaBgEqJu8HhMdzw4zwHPp15iCHXTckY8acErAornbWW+M3oARM3nts 1mS1do8qO3gdQRdN1Q3ZRDQH/NaATPuGSEYkTCdtDsOGqylORn90DheJY+na7enCD+9x PlQE42Ka8/atkqP3A1MW5LSWwHZqvkRl302E4SXmCd6bXdUuXB+y1IOpIw3a0O0tCwWk 0R29V/LYTBUDHtatApJ8jrvlMbc4v1XUu5Jd+QxOne3/W5VU4T6mLmJQKRVEgbPfg5QU dRsg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from groat.vger.email (groat.vger.email. [2620:137:e000::3:5]) by mx.google.com with ESMTPS id x9-20020a170902ec8900b001d0c1ce3428si9208049plg.262.2023.12.12.22.40.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Dec 2023 22:40:48 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) client-ip=2620:137:e000::3:5; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by groat.vger.email (Postfix) with ESMTP id 8CB30804437C; Tue, 12 Dec 2023 22:40:42 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at groat.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1378619AbjLMGkd (ORCPT + 99 others); Wed, 13 Dec 2023 01:40:33 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40352 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1378624AbjLMGkc (ORCPT ); Wed, 13 Dec 2023 01:40:32 -0500 Received: from mail.loongson.cn (mail.loongson.cn [114.242.206.163]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 0DACAAD; Tue, 12 Dec 2023 22:40:37 -0800 (PST) Received: from loongson.cn (unknown [10.2.5.185]) by gateway (Coremail) with SMTP id _____8AxZfDjUXll_pUAAA--.3703S3; Wed, 13 Dec 2023 14:40:35 +0800 (CST) Received: from localhost.localdomain (unknown [10.2.5.185]) by localhost.localdomain (Coremail) with SMTP id AQAAf8DxvnPhUXllJvMBAA--.12195S2; Wed, 13 Dec 2023 14:40:33 +0800 (CST) From: Tianrui Zhao To: Paolo Bonzini , Huacai Chen , maobibo@loongson.cn, linux-kernel@vger.kernel.org, kvm@vger.kernel.org Cc: WANG Xuerui , Greg Kroah-Hartman , loongarch@lists.linux.dev, Jens Axboe , Mark Brown , Alex Deucher , Oliver Upton , Xi Ruoyao , zhaotianrui@loongson.cn Subject: [PATCH v4 0/2] LoongArch: KVM: Add LSX,LASX support Date: Wed, 13 Dec 2023 14:27:38 +0800 Message-Id: <20231213062740.4175002-1-zhaotianrui@loongson.cn> X-Mailer: git-send-email 2.39.1 MIME-Version: 1.0 X-CM-TRANSID: AQAAf8DxvnPhUXllJvMBAA--.12195S2 X-CM-SenderInfo: p2kd03xldq233l6o00pqjv00gofq/ X-Coremail-Antispam: 1Uk129KBjDUn29KB7ZKAUJUUUUU529EdanIXcx71UUUUU7KY7 ZEXasCq-sGcSsGvfJ3UbIjqfuFe4nvWSU5nxnvy29KBjDU0xBIdaVrnUUvcSsGvfC2Kfnx nUUI43ZEXa7xR_UUUUUUUUU== X-Spam-Status: No, score=-0.8 required=5.0 tests=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 groat.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 (groat.vger.email [0.0.0.0]); Tue, 12 Dec 2023 22:40:42 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785147842907953423 X-GMAIL-MSGID: 1785147842907953423 This patch series add LSX,LASX support for LoongArch KVM. There will be LSX,LASX exception in KVM when guest use the LSX,LASX instructions. KVM will enable LSX,LASX and restore the vector registers for guest then return to guest to continue running. Changes for v4: 1. Supplement vcpu features checking when cpucfg2 is passed from user space. (1) The LLFTP must be set, as guest must has a constant timer. (2) Single and double float point must both be set when enable FP. (3) FP should be set when enable LSX. (4) LSX,FP should be set when enable LASX. Changes for v3: 1. Use KVM_GET_DEVICE_ATTR interface to return CPUCFG2 features which are supported by KVM to user space. 2. Remove version checking in kvm_check_cpucfg. Changes for v2: 1. Add interface to return CPUCFG2 features which have been supported by current KVM to user space. So that user space can get CPU features such as FPU,LSX,LASX whether support by KVM. 2. Add CPUCFG2 checking interface to check that if the value which is passed from user space has any errors. 3. Export both _restore_lsx_upper and _restore_lasx_upper to keep consistency. 4. Use "jr ra" instruction to repalce "jirl zero, ra, 0". Changes for v1: 1. Add LSX support for LoongArch KVM. 2. Add LASX support for LoongArch KVM. Tianrui Zhao (2): LoongArch: KVM: Add LSX support LoongArch: KVM: Add LASX support arch/loongarch/include/asm/kvm_host.h | 17 ++ arch/loongarch/include/asm/kvm_vcpu.h | 22 +++ arch/loongarch/include/uapi/asm/kvm.h | 1 + arch/loongarch/kernel/fpu.S | 2 + arch/loongarch/kvm/exit.c | 37 ++++ arch/loongarch/kvm/switch.S | 36 ++++ arch/loongarch/kvm/trace.h | 6 +- arch/loongarch/kvm/vcpu.c | 271 +++++++++++++++++++++++++- 8 files changed, 386 insertions(+), 6 deletions(-)