Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp181555pxb; Wed, 24 Feb 2021 22:50:37 -0800 (PST) X-Google-Smtp-Source: ABdhPJw0FiuMFnPVG4VJRLrUvN4/21clHD/iusHGZKwAypW1hzSsvPrdINFungjTy7bnqgL7kooz X-Received: by 2002:aa7:dd49:: with SMTP id o9mr1465944edw.14.1614235836900; Wed, 24 Feb 2021 22:50:36 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614235836; cv=none; d=google.com; s=arc-20160816; b=odkKZV2sHRCvdUBbCC5f3P3ZfLG8QSy5IWOh8P2DM00vSavSEXOHdP4+IRp/j07tim KGGQjYy0XWX/79cAenbCcp5cyR6F4cjtfmmlxzG5pOhY+jfyyyp6yVmhehTc4tAJT/hU o891nuR/CNmJuDJCUgtYGRUU0yyB7Ba1GYTpahcJzP2kRm4VsSK8ZKXezWARo55PgFT4 A/qToLDSUdpRKJ+q3pAoxXIwj1ms0XAOhrKbwSy8alPUDWVtOtwwaqpcH09P3VLSyhQQ 4vaisIT4Rg2TWeoCMLN4nxfcMQglE56sA7zA45NBFZZNE953Mce4NUCKpRp+gz4WcLC3 z3sA== 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=JHsyNZca8OWHpzwBlZwMrSDG2/9ZFneU3lVMiRGj9R8=; b=KcPLCJVjXTXfnlN/hnxi3sZg5uBqpFzOBkAthtIMbn4gh6QhyLflurqvZO/dLCj6ZX 1aFSv8decEwcxA5WXFvcCkTSDkmGZbEr9lOER61ILdwPu27sxk3oMlBxcOSD4a5E+tF3 2xwrhmHGuc99Y+6PE/4hFrXfRdBHcdfvcxnxl31sxPj8buQ/LSrJL/3DX+cRBn1gn1na Uc40T1Qn+IoEQ5XCHw8xWF/pBIJT3o8uJL7X6jTsBR67cMhyL/nO6fT/BW+PFMMRFSB1 wt8Wkr8nBFBvXrz3zJV42DKYp94sz40gqxCj/SaHN44PwP6+m2qOOUwyc4m2cmwab0zs pyOQ== 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 s11si2639858edr.584.2021.02.24.22.50.14; Wed, 24 Feb 2021 22:50:36 -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 S235371AbhBYGAn (ORCPT + 99 others); Thu, 25 Feb 2021 01:00:43 -0500 Received: from szxga04-in.huawei.com ([45.249.212.190]:12205 "EHLO szxga04-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235037AbhBYGAh (ORCPT ); Thu, 25 Feb 2021 01:00:37 -0500 Received: from DGGEMS408-HUB.china.huawei.com (unknown [172.30.72.58]) by szxga04-in.huawei.com (SkyGuard) with ESMTP id 4DmMWz4KhlzlPwW; Thu, 25 Feb 2021 13:57:51 +0800 (CST) Received: from DESKTOP-TMVL5KK.china.huawei.com (10.174.187.128) by DGGEMS408-HUB.china.huawei.com (10.3.19.208) with Microsoft SMTP Server id 14.3.498.0; Thu, 25 Feb 2021 13:59:45 +0800 From: Yanan Wang To: , , CC: Paolo Bonzini , Ben Gardon , "Sean Christopherson" , Vitaly Kuznetsov , Arnaldo Carvalho de Melo , Ingo Molnar , Andrew Jones , Peter Xu , Marc Zyngier , , , "Yanan Wang" Subject: [RFC PATCH v2 3/7] KVM: selftests: Make a generic helper to get vm guest mode strings Date: Thu, 25 Feb 2021 13:59:36 +0800 Message-ID: <20210225055940.18748-4-wangyanan55@huawei.com> X-Mailer: git-send-email 2.8.4.windows.1 In-Reply-To: <20210225055940.18748-1-wangyanan55@huawei.com> References: <20210225055940.18748-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. Signed-off-by: Yanan Wang --- .../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.19.1