From nobody Sun Feb 8 21:12:31 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0F1D8C04A6A for ; Tue, 25 Jul 2023 08:37:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232789AbjGYIhl (ORCPT ); Tue, 25 Jul 2023 04:37:41 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55328 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232798AbjGYIhT (ORCPT ); Tue, 25 Jul 2023 04:37:19 -0400 Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B5D041BCD; Tue, 25 Jul 2023 01:37:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1690274221; x=1721810221; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ivkkKYOG5fPMg48VMRAb+46zuN4nZoOD9NsoOY3CH/E=; b=RjhCJwDl6MTaagY1yVvSlrYI7BB5WY0Xc9XgoBQkvcIp24xqegoo19Aw 4w8D3igiu5KDlHiZ0YJjx9XFOsVb2t/wwrV72xUa5m/3hCxbbRhas6AgD U+L9Qp8DPKJ1ry/UIcVJd2vWEMPUGNmUZKUBys8mRTRe1BtEiFCVzpyDg qrreyGK1is+0O1tW8inyr9Cnvgd7Nw94qIpjIHjAiJ+ZM27kaBhuOiZcf Ick/709FtTx97pkdYd8C3mXN3gUiuOjW/wNvgWtxwghTyqY21mVq8iUoe aoOWvdDt8oGdUaEEw2c4I2du/VXm+ixiNYOZ/oATCtqtvTpKPYYRrKMSU g==; X-IronPort-AV: E=McAfee;i="6600,9927,10781"; a="371264459" X-IronPort-AV: E=Sophos;i="6.01,230,1684825200"; d="scan'208";a="371264459" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Jul 2023 01:37:00 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10781"; a="761130258" X-IronPort-AV: E=Sophos;i="6.01,230,1684825200"; d="scan'208";a="761130258" Received: from haibo-optiplex-7090.sh.intel.com ([10.239.159.132]) by orsmga001-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Jul 2023 01:36:53 -0700 From: Haibo Xu Cc: xiaobo55x@gmail.com, haibo1.xu@intel.com, ajones@ventanamicro.com, maz@kernel.org, oliver.upton@linux.dev, seanjc@google.com, Paolo Bonzini , Jonathan Corbet , Anup Patel , Atish Patra , Paul Walmsley , Palmer Dabbelt , Albert Ou , Shuah Khan , James Morse , Suzuki K Poulose , Zenghui Yu , Ricardo Koller , Vishal Annapurve , Like Xu , Vipin Sharma , David Matlack , Colton Lewis , kvm@vger.kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-kselftest@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev Subject: [PATCH v6 04/13] KVM: arm64: selftests: Rename vcpu_config and add to kvm_util.h Date: Tue, 25 Jul 2023 16:41:30 +0800 Message-Id: <4c3a15ad6dcf7d58fcad5ca9bed56b30c539c358.1690273969.git.haibo1.xu@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable To: unlisted-recipients:; (no To-header on input) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Andrew Jones Rename vcpu_config to vcpu_reg_list to be more specific and add it to kvm_util.h. While it may not get used outside get-reg-list tests, exporting it doesn't hurt, as long as it has a unique enough name. This is a step in the direction of sharing most of the get- reg-list test code between architectures. Signed-off-by: Andrew Jones Signed-off-by: Haibo Xu --- .../selftests/kvm/aarch64/get-reg-list.c | 60 +++++++------------ .../selftests/kvm/include/kvm_util_base.h | 16 +++++ 2 files changed, 38 insertions(+), 38 deletions(-) diff --git a/tools/testing/selftests/kvm/aarch64/get-reg-list.c b/tools/tes= ting/selftests/kvm/aarch64/get-reg-list.c index c9412be3a04c..cb6b40e167d0 100644 --- a/tools/testing/selftests/kvm/aarch64/get-reg-list.c +++ b/tools/testing/selftests/kvm/aarch64/get-reg-list.c @@ -37,17 +37,6 @@ static struct kvm_reg_list *reg_list; static __u64 *blessed_reg, blessed_n; =20 -struct reg_sublist { - const char *name; - long capability; - int feature; - bool finalize; - __u64 *regs; - __u64 regs_n; - __u64 *rejects_set; - __u64 rejects_set_n; -}; - struct feature_id_reg { __u64 reg; __u64 id_reg; @@ -76,12 +65,7 @@ static struct feature_id_reg feat_id_regs[] =3D { } }; =20 -struct vcpu_config { - char *name; - struct reg_sublist sublists[]; -}; - -static struct vcpu_config *vcpu_configs[]; +static struct vcpu_reg_list *vcpu_configs[]; static int vcpu_configs_n; =20 #define for_each_sublist(c, s) \ @@ -103,9 +87,9 @@ static int vcpu_configs_n; for_each_reg_filtered(i) \ if (!find_reg(blessed_reg, blessed_n, reg_list->reg[i])) =20 -static const char *config_name(struct vcpu_config *c) +static const char *config_name(struct vcpu_reg_list *c) { - struct reg_sublist *s; + struct vcpu_reg_sublist *s; int len =3D 0; =20 if (c->name) @@ -390,18 +374,18 @@ static void core_reg_fixup(void) reg_list =3D tmp; } =20 -static void prepare_vcpu_init(struct vcpu_config *c, struct kvm_vcpu_init = *init) +static void prepare_vcpu_init(struct vcpu_reg_list *c, struct kvm_vcpu_ini= t *init) { - struct reg_sublist *s; + struct vcpu_reg_sublist *s; =20 for_each_sublist(c, s) if (s->capability) init->features[s->feature / 32] |=3D 1 << (s->feature % 32); } =20 -static void finalize_vcpu(struct kvm_vcpu *vcpu, struct vcpu_config *c) +static void finalize_vcpu(struct kvm_vcpu *vcpu, struct vcpu_reg_list *c) { - struct reg_sublist *s; + struct vcpu_reg_sublist *s; int feature; =20 for_each_sublist(c, s) { @@ -412,9 +396,9 @@ static void finalize_vcpu(struct kvm_vcpu *vcpu, struct= vcpu_config *c) } } =20 -static void check_supported(struct vcpu_config *c) +static void check_supported(struct vcpu_reg_list *c) { - struct reg_sublist *s; + struct vcpu_reg_sublist *s; =20 for_each_sublist(c, s) { if (!s->capability) @@ -430,14 +414,14 @@ static bool print_list; static bool print_filtered; static bool fixup_core_regs; =20 -static void run_test(struct vcpu_config *c) +static void run_test(struct vcpu_reg_list *c) { struct kvm_vcpu_init init =3D { .target =3D -1, }; int new_regs =3D 0, missing_regs =3D 0, i, n; int failed_get =3D 0, failed_set =3D 0, failed_reject =3D 0; struct kvm_vcpu *vcpu; struct kvm_vm *vm; - struct reg_sublist *s; + struct vcpu_reg_sublist *s; =20 check_supported(c); =20 @@ -574,7 +558,7 @@ static void run_test(struct vcpu_config *c) =20 static void help(void) { - struct vcpu_config *c; + struct vcpu_reg_list *c; int i; =20 printf( @@ -598,9 +582,9 @@ static void help(void) ); } =20 -static struct vcpu_config *parse_config(const char *config) +static struct vcpu_reg_list *parse_config(const char *config) { - struct vcpu_config *c; + struct vcpu_reg_list *c; int i; =20 if (config[8] !=3D '=3D') @@ -620,7 +604,7 @@ static struct vcpu_config *parse_config(const char *con= fig) =20 int main(int ac, char **av) { - struct vcpu_config *c, *sel =3D NULL; + struct vcpu_reg_list *c, *sel =3D NULL; int i, ret =3D 0; pid_t pid; =20 @@ -1104,14 +1088,14 @@ static __u64 pauth_generic_regs[] =3D { .regs_n =3D ARRAY_SIZE(pauth_generic_regs), \ } =20 -static struct vcpu_config vregs_config =3D { +static struct vcpu_reg_list vregs_config =3D { .sublists =3D { BASE_SUBLIST, VREGS_SUBLIST, {0}, }, }; -static struct vcpu_config vregs_pmu_config =3D { +static struct vcpu_reg_list vregs_pmu_config =3D { .sublists =3D { BASE_SUBLIST, VREGS_SUBLIST, @@ -1119,14 +1103,14 @@ static struct vcpu_config vregs_pmu_config =3D { {0}, }, }; -static struct vcpu_config sve_config =3D { +static struct vcpu_reg_list sve_config =3D { .sublists =3D { BASE_SUBLIST, SVE_SUBLIST, {0}, }, }; -static struct vcpu_config sve_pmu_config =3D { +static struct vcpu_reg_list sve_pmu_config =3D { .sublists =3D { BASE_SUBLIST, SVE_SUBLIST, @@ -1134,7 +1118,7 @@ static struct vcpu_config sve_pmu_config =3D { {0}, }, }; -static struct vcpu_config pauth_config =3D { +static struct vcpu_reg_list pauth_config =3D { .sublists =3D { BASE_SUBLIST, VREGS_SUBLIST, @@ -1142,7 +1126,7 @@ static struct vcpu_config pauth_config =3D { {0}, }, }; -static struct vcpu_config pauth_pmu_config =3D { +static struct vcpu_reg_list pauth_pmu_config =3D { .sublists =3D { BASE_SUBLIST, VREGS_SUBLIST, @@ -1152,7 +1136,7 @@ static struct vcpu_config pauth_pmu_config =3D { }, }; =20 -static struct vcpu_config *vcpu_configs[] =3D { +static struct vcpu_reg_list *vcpu_configs[] =3D { &vregs_config, &vregs_pmu_config, &sve_config, diff --git a/tools/testing/selftests/kvm/include/kvm_util_base.h b/tools/te= sting/selftests/kvm/include/kvm_util_base.h index 07732a157ccd..1a455511503e 100644 --- a/tools/testing/selftests/kvm/include/kvm_util_base.h +++ b/tools/testing/selftests/kvm/include/kvm_util_base.h @@ -15,6 +15,7 @@ #include #include #include "linux/rbtree.h" +#include =20 #include =20 @@ -124,6 +125,21 @@ struct kvm_vm { uint32_t memslots[NR_MEM_REGIONS]; }; =20 +struct vcpu_reg_sublist { + const char *name; + long capability; + int feature; + bool finalize; + __u64 *regs; + __u64 regs_n; + __u64 *rejects_set; + __u64 rejects_set_n; +}; + +struct vcpu_reg_list { + char *name; + struct vcpu_reg_sublist sublists[]; +}; =20 #define kvm_for_each_vcpu(vm, i, vcpu) \ for ((i) =3D 0; (i) <=3D (vm)->last_vcpu_id; (i)++) \ --=20 2.34.1