Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp955325pxb; Wed, 3 Mar 2021 22:24:55 -0800 (PST) X-Google-Smtp-Source: ABdhPJzMxlHmhfN0s0lSDB/dcQNirNxGz5Pv6SorG15rBrvDwTc0jSM1+/0+qTbU5vhLijI1blCw X-Received: by 2002:a17:906:9515:: with SMTP id u21mr2654179ejx.86.1614839094811; Wed, 03 Mar 2021 22:24:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614839094; cv=none; d=google.com; s=arc-20160816; b=vC0Fpk0xJV7bO81ggZ73JA3APy5idlqlv51ofscx2+iOOWUnQodYYaAZHAExr7xNex Ea5T9w2S8ZI2FQH8Q+qR/yp2KAkbm+Ms9ELEDr9dA4hdJtyerMjeQIO+LeUPaCpJZRM0 stkOmR0pgxZ9Pqk6T39l9yK/I4vmBjI3TgHoult891ajPPoLovboPHFpRcmxPFItPzRk eipc/RNT+NCnE2eUBe2cc4/4oDRMdLUgchQkj/+y2ag2uQNkv6B+3BRRjGSAV7gikp6y yJs6I1vTinUC0qB+73HkILvMHld+vumWuF2z5FE+A9DaYpPMGq3sOtNKFiB11X2+lRUl e/rg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from; bh=gyr30X61fRE6jAQnJ968BaYH5KIPnGjAhyJuAfBxARs=; b=napZU4uexFAvmXVZmrUB1zBHTHq6SQhY60I0JnY0I8YHA7kjqH2mTFziJ+5YD07RHb A6cz4MjyvkD578bYSFvfSUF/36NdX35un/K8N+0pdIGqqkzCARGGGGL/v82F+oOeNJqb QRZIRsnchjdusxqjR5EcZ0o/o5zPoZZWyl95Rp9ycbTyh9iaoVXqhuN5FjROpGqKv6HJ xTYiwx8cNqGy1tuel7Q0lPeIzi3vOkAQxmdXlRM25d2V7yuvwaeqT6LwmHPpBLc2JD8t l/xk72agSk3pb2nxry+lgcnyxcwhrsI7YL2n2f++LpUL/BFTiOwm4+xYm4ygRDyhglF1 TlmA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id v21si1431288ejg.648.2021.03.03.22.24.32; Wed, 03 Mar 2021 22:24:54 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1575747AbhCBPn7 (ORCPT + 99 others); Tue, 2 Mar 2021 10:43:59 -0500 Received: from szxga07-in.huawei.com ([45.249.212.35]:13836 "EHLO szxga07-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1350920AbhCBM7K (ORCPT ); Tue, 2 Mar 2021 07:59:10 -0500 Received: from DGGEMS412-HUB.china.huawei.com (unknown [172.30.72.60]) by szxga07-in.huawei.com (SkyGuard) with ESMTP id 4DqcZd3ckZz7sRV; Tue, 2 Mar 2021 20:56:25 +0800 (CST) Received: from DESKTOP-TMVL5KK.china.huawei.com (10.174.187.128) by DGGEMS412-HUB.china.huawei.com (10.3.19.212) with Microsoft SMTP Server id 14.3.498.0; Tue, 2 Mar 2021 20:57:58 +0800 From: Yanan Wang To: , , CC: Paolo Bonzini , Ben Gardon , "Sean Christopherson" , Vitaly Kuznetsov , Andrew Jones , Peter Xu , Marc Zyngier , Ingo Molnar , Adrian Hunter , Jiri Olsa , "Arnaldo Carvalho de Melo" , Arnd Bergmann , Michael Kerrisk , Thomas Gleixner , , , , Yanan Wang Subject: [RFC PATCH v4 4/9] KVM: selftests: Make a generic helper to get vm guest mode strings Date: Tue, 2 Mar 2021 20:57:46 +0800 Message-ID: <20210302125751.19080-5-wangyanan55@huawei.com> X-Mailer: git-send-email 2.8.4.windows.1 In-Reply-To: <20210302125751.19080-1-wangyanan55@huawei.com> References: <20210302125751.19080-1-wangyanan55@huawei.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.174.187.128] X-CFilter-Loop: Reflected Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org For generality and conciseness, make an API which can be used in all kvm libs and selftests to get vm guest mode strings. And the index i is checked in the API in case of possiable faults. Suggested-by: Sean Christopherson Signed-off-by: Yanan Wang Reviewed-by: Andrew Jones Reviewed-by: Ben Gardon --- .../testing/selftests/kvm/include/kvm_util.h | 4 +-- tools/testing/selftests/kvm/lib/kvm_util.c | 29 ++++++++++++------- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/tools/testing/selftests/kvm/include/kvm_util.h b/tools/testing/selftests/kvm/include/kvm_util.h index 2d7eb6989e83..f52a7492f47f 100644 --- a/tools/testing/selftests/kvm/include/kvm_util.h +++ b/tools/testing/selftests/kvm/include/kvm_util.h @@ -68,9 +68,6 @@ enum vm_guest_mode { #define MIN_PAGE_SIZE (1U << MIN_PAGE_SHIFT) #define PTES_PER_MIN_PAGE ptes_per_page(MIN_PAGE_SIZE) -#define vm_guest_mode_string(m) vm_guest_mode_string[m] -extern const char * const vm_guest_mode_string[]; - struct vm_guest_mode_params { unsigned int pa_bits; unsigned int va_bits; @@ -84,6 +81,7 @@ int vm_enable_cap(struct kvm_vm *vm, struct kvm_enable_cap *cap); int vcpu_enable_cap(struct kvm_vm *vm, uint32_t vcpu_id, struct kvm_enable_cap *cap); void vm_enable_dirty_ring(struct kvm_vm *vm, uint32_t ring_size); +const char *vm_guest_mode_string(uint32_t i); struct kvm_vm *vm_create(enum vm_guest_mode mode, uint64_t phy_pages, int perm); void kvm_vm_free(struct kvm_vm *vmp); diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/selftests/kvm/lib/kvm_util.c index d787cb802b4a..cc22c4ab7d67 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -141,17 +141,24 @@ static void vm_open(struct kvm_vm *vm, int perm) "rc: %i errno: %i", vm->fd, errno); } -const char * const vm_guest_mode_string[] = { - "PA-bits:52, VA-bits:48, 4K pages", - "PA-bits:52, VA-bits:48, 64K pages", - "PA-bits:48, VA-bits:48, 4K pages", - "PA-bits:48, VA-bits:48, 64K pages", - "PA-bits:40, VA-bits:48, 4K pages", - "PA-bits:40, VA-bits:48, 64K pages", - "PA-bits:ANY, VA-bits:48, 4K pages", -}; -_Static_assert(sizeof(vm_guest_mode_string)/sizeof(char *) == NUM_VM_MODES, - "Missing new mode strings?"); +const char *vm_guest_mode_string(uint32_t i) +{ + static const char * const strings[] = { + [VM_MODE_P52V48_4K] = "PA-bits:52, VA-bits:48, 4K pages", + [VM_MODE_P52V48_64K] = "PA-bits:52, VA-bits:48, 64K pages", + [VM_MODE_P48V48_4K] = "PA-bits:48, VA-bits:48, 4K pages", + [VM_MODE_P48V48_64K] = "PA-bits:48, VA-bits:48, 64K pages", + [VM_MODE_P40V48_4K] = "PA-bits:40, VA-bits:48, 4K pages", + [VM_MODE_P40V48_64K] = "PA-bits:40, VA-bits:48, 64K pages", + [VM_MODE_PXXV48_4K] = "PA-bits:ANY, VA-bits:48, 4K pages", + }; + _Static_assert(sizeof(strings)/sizeof(char *) == NUM_VM_MODES, + "Missing new mode strings?"); + + TEST_ASSERT(i < NUM_VM_MODES, "Guest mode ID %d too big", i); + + return strings[i]; +} const struct vm_guest_mode_params vm_guest_mode_params[] = { { 52, 48, 0x1000, 12 }, -- 2.23.0