Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp4186599pxf; Tue, 30 Mar 2021 01:11:30 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwWAOm+6fCrwHYuFMTWM0TPdi87xddUO+23g8I5GZn2Yex+pKX14WAXu0V8Uozi2aRpbgMh X-Received: by 2002:aa7:d448:: with SMTP id q8mr32511321edr.345.1617091890515; Tue, 30 Mar 2021 01:11:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1617091890; cv=none; d=google.com; s=arc-20160816; b=E1CRO46QEhik/NUkb5sucOiiYp3Ar97mj6lOVELjFRpyQk1pVCRUdm4pJ8KblNxHbq mEm7AolUaAtaGkc6u53O/JO26qpKP65LDwYZqBuFaGr+GuiopphIkiajY05XyciFflot ygKhZnJ6Y+grOKN9z4L7KmqvO9vBptu/e5u9VaN0mKIpKKRGwq6K4oaDh+x9uif5zMzN 8fCtFgJ0dTLeyrSqF5GfW4NZxaOxrkcNFjuXzQVZb1k+47LKK0uWVE7ZBTOCFvF44lhZ eOIjrIwxq72beeQTk9MLpzEC9XyYECzmZvYlnez1RPcxo5HLcIlXCH59Uti5RZxkAN5s 5eiQ== 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=nD+UqoIIBSW982OjYJFRaV2Za+D94rub9WdIoXHguLs=; b=uZDlaFsJuD1DzZ9ppM0cHan7u2fFvWS90DN4ALw2wMoF9G1MPeb+AStTCdM5tshW0Q Je8B/Bt6KviLC/JWYl4i3FiF0dJpeFW10yxcMssOQsz+m3VeYW71ZRrX1fuNai5kUDJ8 F8zHY9DL9cjX8v5ES/WpbPSkAtdbjih/ZBwBf8A8MMdi2peHCppVqjhKtKobHBo/cevH alr+MrvfILL9V9Gz13jC+rQMeMGIsJOYm/Rr15R4Wo17QmMPe3z6sd8pZbDHIMrzDwcC R9YAiPZTGS81gVomkICMBFiRt4i3sYTgRclFsABJsxSe8kPSp5gNq5BiYEjJebi6eEmM zflw== 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=huawei.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id o9si15092264edc.244.2021.03.30.01.11.08; Tue, 30 Mar 2021 01:11:30 -0700 (PDT) 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=huawei.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231676AbhC3IJ6 (ORCPT + 99 others); Tue, 30 Mar 2021 04:09:58 -0400 Received: from szxga05-in.huawei.com ([45.249.212.191]:14961 "EHLO szxga05-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231430AbhC3IJS (ORCPT ); Tue, 30 Mar 2021 04:09:18 -0400 Received: from DGGEMS406-HUB.china.huawei.com (unknown [172.30.72.60]) by szxga05-in.huawei.com (SkyGuard) with ESMTP id 4F8hqy6PQNzyNJ7; Tue, 30 Mar 2021 16:07:10 +0800 (CST) Received: from DESKTOP-TMVL5KK.china.huawei.com (10.174.187.128) by DGGEMS406-HUB.china.huawei.com (10.3.19.206) with Microsoft SMTP Server id 14.3.498.0; Tue, 30 Mar 2021 16:09:06 +0800 From: Yanan Wang To: Paolo Bonzini , Andrew Jones , , , CC: Ben Gardon , Sean Christopherson , Vitaly Kuznetsov , Peter Xu , "Ingo Molnar" , Adrian Hunter , Jiri Olsa , Arnaldo Carvalho de Melo , Arnd Bergmann , Michael Kerrisk , Thomas Gleixner , , , Yanan Wang Subject: [PATCH v6 05/10] KVM: selftests: Make a generic helper to get vm guest mode strings Date: Tue, 30 Mar 2021 16:08:51 +0800 Message-ID: <20210330080856.14940-6-wangyanan55@huawei.com> X-Mailer: git-send-email 2.8.4.windows.1 In-Reply-To: <20210330080856.14940-1-wangyanan55@huawei.com> References: <20210330080856.14940-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: Ben Gardon Reviewed-by: Andrew Jones --- .../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 e5fbf16f725b..2ea837fe03af 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -143,17 +143,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.19.1