Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp4186363pxf; Tue, 30 Mar 2021 01:11:06 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyBYRaqibI8sHY+L7Ep2y5IuXTkN76R/n1EEJ26sDbnTdY4djTg0Lzw01kpkWDsNfC5HYNM X-Received: by 2002:a17:907:8323:: with SMTP id mq35mr22171310ejc.109.1617091866044; Tue, 30 Mar 2021 01:11:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1617091866; cv=none; d=google.com; s=arc-20160816; b=t2QxOkl0p+fQ/Q9qNSJ7vjWd0LTbD1VOUOsXH3TUuMOaYP+m1Do8YbGYYz9KsrheG1 bxE85XHo7OuIGspqlHoSBxfPYJ3gLaHkLX9XIUnnmxes6RzAqKpZsGsk52d86TV0OoPk aDYW7EozA5Yji7+KO2xU+vtbijkVBxedBk3PdYeM82pou04CBRXQ3VWdkJwsCuWsvWf4 oHPWikSH5Yoqjain7ac1G972MqKEjFzz/oK2A4lsDEV/2YILegqHArqb8+sY6bl2r4Xm sEeyjBNDA6CVCaWmTWUMqCLWTV3ollWFtCa3HwG7O5LDSRm3CeiLtJm2rBgYTh+6YqZ6 VIjw== 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=uwHgyn0bnmE8hknGmXUfHDP0ESFNtFWAqDfoUoJQKWc=; b=eBFhFxqlN7HKsW6CXpdrxZ9rquA6MygMl1hGxx3ixGSqa+e88PW2KBgwzaitOzznRb WSayvYPA8pQ8fczVbHDM7hi/zev5UOXg7N2Iqlz1oJJsnl4SnPB6H8pXdJKtJjH6dIaf 7jqRXV0fZvEa4n2ZsUI/CKFBJ60daBX7IhliYoKfRoHax86QkJR/hfR4L8bMfAoEESB3 /3KDgwbyH7GiGcPzgoZrrwSdhodfWmjMWi5d0SzM4vmkXLhiqS8yS9P3qeEUjDmcLmPp Z4vjiW7QuhtXqEzmMsUJ/JW56W3JhNkE6JOzNx5k3BNlfxVjtuqsar9MuxsoYXCccoOv DX5A== 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 m23si14159602ejr.429.2021.03.30.01.10.43; Tue, 30 Mar 2021 01:11:06 -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 S231640AbhC3IJz (ORCPT + 99 others); Tue, 30 Mar 2021 04:09:55 -0400 Received: from szxga05-in.huawei.com ([45.249.212.191]:14959 "EHLO szxga05-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231246AbhC3IJR (ORCPT ); Tue, 30 Mar 2021 04:09:17 -0400 Received: from DGGEMS406-HUB.china.huawei.com (unknown [172.30.72.60]) by szxga05-in.huawei.com (SkyGuard) with ESMTP id 4F8hqy5YJ4zyNHZ; 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:07 +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 06/10] KVM: selftests: Add a helper to get system configured THP page size Date: Tue, 30 Mar 2021 16:08:52 +0800 Message-ID: <20210330080856.14940-7-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 If we want to have some tests about transparent hugepages, the system configured THP hugepage size should better be known by the tests, which can be used for kinds of alignment or guest memory accessing of vcpus... So it makes sense to add a helper to get the transparent hugepage size. With VM_MEM_SRC_ANONYMOUS_THP specified in vm_userspace_mem_region_add(), we now stat /sys/kernel/mm/transparent_hugepage to check whether THP is configured in the host kernel before madvise(). Based on this, we can also read file /sys/kernel/mm/transparent_hugepage/hpage_pmd_size to get THP hugepage size. Signed-off-by: Yanan Wang Reviewed-by: Ben Gardon Reviewed-by: Andrew Jones --- .../testing/selftests/kvm/include/test_util.h | 2 ++ tools/testing/selftests/kvm/lib/test_util.c | 29 +++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/tools/testing/selftests/kvm/include/test_util.h b/tools/testing/selftests/kvm/include/test_util.h index b7f41399f22c..ef24c76ba89a 100644 --- a/tools/testing/selftests/kvm/include/test_util.h +++ b/tools/testing/selftests/kvm/include/test_util.h @@ -78,6 +78,8 @@ struct vm_mem_backing_src_alias { enum vm_mem_backing_src_type type; }; +bool thp_configured(void); +size_t get_trans_hugepagesz(void); void backing_src_help(void); enum vm_mem_backing_src_type parse_backing_src_type(const char *type_name); diff --git a/tools/testing/selftests/kvm/lib/test_util.c b/tools/testing/selftests/kvm/lib/test_util.c index c7c0627c6842..efc1a7782de0 100644 --- a/tools/testing/selftests/kvm/lib/test_util.c +++ b/tools/testing/selftests/kvm/lib/test_util.c @@ -10,6 +10,7 @@ #include #include #include +#include #include "linux/kernel.h" #include "test_util.h" @@ -117,6 +118,34 @@ const struct vm_mem_backing_src_alias backing_src_aliases[] = { {"anonymous_hugetlb", VM_MEM_SRC_ANONYMOUS_HUGETLB,}, }; +bool thp_configured(void) +{ + int ret; + struct stat statbuf; + + ret = stat("/sys/kernel/mm/transparent_hugepage", &statbuf); + TEST_ASSERT(ret == 0 || (ret == -1 && errno == ENOENT), + "Error in stating /sys/kernel/mm/transparent_hugepage"); + + return ret == 0; +} + +size_t get_trans_hugepagesz(void) +{ + size_t size; + FILE *f; + + TEST_ASSERT(thp_configured(), "THP is not configured in host kernel"); + + f = fopen("/sys/kernel/mm/transparent_hugepage/hpage_pmd_size", "r"); + TEST_ASSERT(f != NULL, "Error in opening transparent_hugepage/hpage_pmd_size"); + + fscanf(f, "%ld", &size); + fclose(f); + + return size; +} + void backing_src_help(void) { int i; -- 2.19.1