From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pj1-f46.google.com (mail-pj1-f46.google.com [209.85.216.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CC33E468C36 for ; Tue, 18 Aug 2026 11:29:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.46 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787052573; cv=none; b=S+tKnG7370vILKLgmj7atnbjVtBE5Lt/GZouJLSTCLfT5eMfICtTkfQV9lthfEVzwCkF3Ksgtl2hKXSgCFaOXAXth1gQeYqu0qi07loGz46o+5d2TxAxWOalBelPK9D/fRb7qe2ePYrWfOgLrK+RqazNXKJquQvwfOIceBoPlrg= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787052573; c=relaxed/simple; bh=zgB3+8JK5YhFAdN3TgJqt08umXKZZZGiuhUx5GAOPx8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=k6cIKf8O97T6een+02ti6roL03pfFqR9D8XdiUmWXR/mfVP53Z8Vdx82QuPKQV1RSqYWQkIBkho0ZUUXjmAfqYmpCPkdDIPAR1tYUhWQNDB37VzInampOrBVlblN9ivrdXU2USWLKyWSE8wZERR3WCXlLxcd4g5x8z9/ewIFGc0= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=SWJ15eLd; arc=none smtp.client-ip=209.85.216.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="SWJ15eLd" Received: by mail-pj1-f46.google.com with SMTP id 98e67ed59e1d1-38dcbade417so4485265a91.1 for ; Tue, 18 Aug 2026 04:29:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1787052570; x=1787657370; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=Uzcibn+mdIhChgrhZtZVfO5SLMtBxjTCSvRPL8WbSo4=; b=SWJ15eLd1LnmPLMJueNinYYTja78NGz8jChxNt4hGkuU6RzuAUUYdWGSrb5+TsvREU hqqsWZxjM9CV1u8n1TQ29gkD5HMVhJIdxKMUMR9uReFnG4xXYbw+bypHGaujESxd2zbo oYoFyyi+A35PeK5EM4GXv3qNkzsHOEFmUR6jvX+LhidManVHmivKGtR6Et6bSXgwpgwj 9CXH8DbK5oQUh7oEiNjaaudn/jBZzBLB71K7mBaXPcZwlj3+U00OyhXmy0jk+3ORHnoj PmtQddmPcSSkCltlsgqhgYXPZjLt2AIGY+g5dOtMykFfM7XxGTB9ze7FuepQcRYZkDH7 8kqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787052570; x=1787657370; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=Uzcibn+mdIhChgrhZtZVfO5SLMtBxjTCSvRPL8WbSo4=; b=hYOOfYIQk4QYxjwRd5A0RRM2DU44TPHCIQoVgcK+jCxo14S1P9cYljfSq0CQO/vtMY e3uFueaw1iojEMtRj5SOQ8fY3qn4CnzMWsU+BkyWkp37Ab1rqvqK+A3Oho2nknX03zjq s8kWgAZTDELMHbytV34YdXT9xb/8Hg5jLmrZXVT87DyY9XJUMmN4uyUedEUKDcDBzXmu UniegUtkrXz/YB2MBFGWGPro5t/iGmdp+jwhS14diybDQ9TIqp+6k+8D2xZnCnanNeme fiCip7SeCASt3eYKfGic1vRmasPQ59jfTX0jfF1/td3y9ric6MoogAnQS6ITrhjOR6Oh 7cDA== X-Forwarded-Encrypted: i=1; AHgh+RozZ+a0Y5CN5QvuLFqnaxSJnpOxz8/tednZ55i+xXOgYMoQ7ddObpfY6wQPrp6AbQpXK62G86sSeleCFck=@vger.kernel.org X-Gm-Message-State: AOJu0Yzw7YKtCfht+JwmWG5AtitT4RSSy9O8OQLOd8R9ipxCkE9KLKLH TL2X9ycsxlGH4h8C/ghdDVwIRVZKYokVd0TVs4z9I6yGzfSAd3E5RjvL X-Gm-Gg: AR+sD11RELYEQpFKb4x3IvsOoO8B6WetW281aEK6sxbxaY9g2RbACSkLFUZFqt9h8bB PUPwU2tPgRqS5HFdzH4MmuRPmjTJeVaZOX7Ex6Ubu9vIxPdAHdCxqkSs9z3CoJzoXRjcH74f+Yf 6l1mTQvJxMd5ck0zhCrt86RP9ftCNCylw0kL/w8gkhjDFquPRUmsF3IXPgY4ehIeVHuGfNQzLxN ZvCgCRjMO5LMGiQy4VxZ/lURh81mH3/ZHmwK+dTHY08XU2xlP+zO7fgmskGtKAfo82b172z3Bnk mkdPJjF437hpbcOsAML+KykSyFksrzoEfLwCWhgaqj4VyVLGIr4d+rEFCsyHAe3V9j/nBzwu4ey YJkkdYbXDpDK999KnF7o6mF/0uD0Zhka6fPSLpcQkXurtRJVSTP1OH8bI4iJx5R4WODq13tWOtm GCdGRGOhg+nZpArqk1UMPOVeNeeDXfQwjYqpw3AJwicZRBiTXRloynGia0iU5rtg+bzZUH1SR+0 Txi X-Received: by 2002:a17:90b:2802:b0:38e:9e9d:9209 with SMTP id 98e67ed59e1d1-3955aa42a2amr9926813a91.17.1787052570004; Tue, 18 Aug 2026 04:29:30 -0700 (PDT) Received: from LIKEXU-MC4 ([43.132.141.24]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-39531e31a9dsm8423420a91.4.2026.08.18.04.29.28 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 18 Aug 2026 04:29:29 -0700 (PDT) From: Like Xu X-Google-Original-From: Like Xu To: Marc Zyngier , Oliver Upton Cc: jiaqiyan@google.com, kvmarm@lists.linux.dev, Paolo Bonzini , kvm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 2/3] KVM: selftests: arm64: Skip sea_to_user without 1GB hugepages Date: Tue, 18 Aug 2026 19:29:19 +0800 Message-ID: <20260818112920.26252-3-likexu@tencent.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260818112920.26252-1-likexu@tencent.com> References: <20260818112920.26252-1-likexu@tencent.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit sea_to_user backs guest memory with 1GB hugepages but never checks that any are reserved. On a host with an empty pool it aborts instead of skipping: kvm_syscalls.h:68: mem != MAP_FAILED, errno=12 (ENOMEM) not ok 1 selftests: kvm: sea_to_user # exit=254 The mmap() of the hugetlb region fails with -ENOMEM because no 1GB pages are available, and the test treats that as a hard failure even though it simply cannot run without the backing pages. Check the free 1GB hugepage count up front and skip cleanly when the host cannot satisfy the region. Signed-off-by: Like Xu --- tools/testing/selftests/kvm/arm64/sea_to_user.c | 6 ++++++ tools/testing/selftests/kvm/include/test_util.h | 1 + tools/testing/selftests/kvm/lib/test_util.c | 15 +++++++++++++++ 3 files changed, 22 insertions(+) diff --git a/tools/testing/selftests/kvm/arm64/sea_to_user.c b/tools/testing/selftests/kvm/arm64/sea_to_user.c index 1c2a743ca8e23..7cf95da8e594d 100644 --- a/tools/testing/selftests/kvm/arm64/sea_to_user.c +++ b/tools/testing/selftests/kvm/arm64/sea_to_user.c @@ -281,6 +281,12 @@ static struct kvm_vm *vm_create_with_sea_handler(struct kvm_vcpu **vcpu) alignment = max(backing_page_size, guest_page_size); num_guest_pages = VM_MEM_SIZE / guest_page_size; + /* + * The region is backed by 1GB hugepages; skip gracefully rather than + * failing with mmap() -ENOMEM if the host has none reserved. + */ + TEST_REQUIRE(get_free_hugepages(backing_page_size) >= VM_MEM_SIZE); + vm = __vm_create_with_one_vcpu(vcpu, num_guest_pages, guest_code); vm_init_descriptor_tables(vm); vcpu_init_descriptor_tables(*vcpu); diff --git a/tools/testing/selftests/kvm/include/test_util.h b/tools/testing/selftests/kvm/include/test_util.h index a56271c237ae9..0624922c2735d 100644 --- a/tools/testing/selftests/kvm/include/test_util.h +++ b/tools/testing/selftests/kvm/include/test_util.h @@ -168,6 +168,7 @@ struct vm_mem_backing_src_alias { bool thp_configured(void); size_t get_trans_hugepagesz(void); size_t get_def_hugetlb_pagesz(void); +size_t get_free_hugepages(size_t page_size); const struct vm_mem_backing_src_alias *vm_mem_backing_src_alias(u32 i); size_t get_backing_src_pagesz(u32 i); bool is_backing_src_hugetlb(u32 i); diff --git a/tools/testing/selftests/kvm/lib/test_util.c b/tools/testing/selftests/kvm/lib/test_util.c index bab1bd2b775b6..29f9c1d60b1b7 100644 --- a/tools/testing/selftests/kvm/lib/test_util.c +++ b/tools/testing/selftests/kvm/lib/test_util.c @@ -222,6 +222,21 @@ size_t get_def_hugetlb_pagesz(void) TEST_FAIL("Error in reading /proc/meminfo"); } +size_t get_free_hugepages(size_t page_size) +{ + char path[128]; + size_t free; + + snprintf(path, sizeof(path), + "/sys/kernel/mm/hugepages/hugepages-%zukB/free_hugepages", + page_size >> 10); + if (!test_sysfs_path(path)) + return 0; + + free = get_sysfs_val(path); + return free * page_size; +} + #define ANON_FLAGS (MAP_PRIVATE | MAP_ANONYMOUS) #define ANON_HUGE_FLAGS (ANON_FLAGS | MAP_HUGETLB) -- 2.50.1 (Apple Git-155)