From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id B0603C624DA for ; Wed, 2 Sep 2026 16:42:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:Reply-To:List-Subscribe:List-Help: List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:From:Subject:Message-ID :References:Mime-Version:In-Reply-To:Date:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=p4eYZon23z1DNiKGE0NbONsY4/2+cMlkEi74y58Fu+I=; b=qRndc7fcGk0sJQ L4exivJ6dnA+4L2CkuYgjcEPi8c1Y9y0cZgbVVYX/Xh1z+jq/pjZg5Q0E7Rg/PMMtdzmEUJZDrS9h w4Mftv1donA3H2VTdnitayVZQRhqIDRMOfKrqmH/Ff3j/MIpxvp+xfEY0XaGdNglxmb27EdDnElg8 7gJoLtCjB+qEf7ciYvuWYcViNUpDtQ8d2eCtQJ/fPL6zvtpd8qi6cvbd65XlYuDRRPEgKs118qJJD OHlVStsdBVNRXvGjEWb9gsFNbX5ZeI3jAgS+zA6JTSPTG0vvlaIpkdOA98IpGnUssuu7C5+pCE9fb si39fWdNJsctSRoXyKsQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1x1o2F-0000000FF9x-1ppf; Wed, 02 Sep 2026 16:42:03 +0000 Received: from mail-pf1-x447.google.com ([2607:f8b0:4864:20::447]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1x1o1u-0000000FEOB-0Tc1 for linux-riscv@lists.infradead.org; Wed, 02 Sep 2026 16:41:45 +0000 Received: by mail-pf1-x447.google.com with SMTP id d2e1a72fcca58-84a251c2e3eso47301b3a.1 for ; Wed, 02 Sep 2026 09:41:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1788367298; x=1788972098; darn=lists.infradead.org; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:reply-to:from:to:cc:subject:date:message-id :reply-to:content-type; bh=OWxwiZu3iI1BKMOXY9Ac60kPARcqOSTNs6vsc+7jhyU=; b=UfKo/5dCocvkvwKG96rA0BZrPe8t74v1+L+hoiw6jA2nWpZG2QkIIZhmuE9xnVaG91 h2FOAlrsZRHpWqM+DXXrwe+EyN7W4mVivtti6shIS3qQDsvpaNpmO4fvhWi/FGOALEsE mvVOQZGTdTQze7giKWYOpFXojWTmhUmlkblYdsK2geoC1MgmOAzXenZlHe1qcqOs1jWt BGy2SPQmpF3SUXeKEXwcQb7Kp48Z6bIEvHJXpEkXyLq0kglijN2iQnmaVk/zOFXLdFl5 QjyhktiCplhbaPqEzgsjusq+rE2KXDFMad0GoRlnigQ3hdpwBqZougSc8HrZyXXNimi3 uWmg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788367298; x=1788972098; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:reply-to:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to:content-type; bh=OWxwiZu3iI1BKMOXY9Ac60kPARcqOSTNs6vsc+7jhyU=; b=kTLVAAxABgGqXu17qOWxDcCBudFr+e6XOPnsSHqQQ0Z+N17NcpkcAUVrBXdwvxfZUG OSU51ldSLOJT3ct7IiHEEo+lE9ajiwMtExLJr7a2C+VK6exHq6c3b1W1dQqMqxC6pUh/ lMPjS709q+Gq8LKLLYDQcBviPRJvuW4qvz584S/M4mRi89dSBXZ3yboHSWaHHKX2uPCO fyrPyks7kHjTjyL4SCyjQLCs2UF1Z0d6AcRYYGwGoymFujPK/oit5S5/lCmBxbYUuaED F42dZxZ4zjstqdpdKoBJW/VJBpzi53+Ub0di3okZSiVfNs3leVtcvaPsaTdz13BOv0+s CFFw== X-Forwarded-Encrypted: i=1; AKwUvBxkNV8e8xiPinU7D8as4PxI8Nfm6Nkg9BueU0x+uBtSc6w1WpmU3AU5GazQHAh7WkibN2Dh8P4ef+Lgbw==@lists.infradead.org X-Gm-Message-State: AFuF++kAga+AxoFE6olO1sTTRSGzSi9KxBFnWVFObr304zmC6C+/FW6X GgOulTMmPEuWw+OeTglJTyB4LMQ3ZwyPtNrGWV6nqhb5LiburYXmu8YLVBPE13KUvlpT/9Szm4F lwQ4D2g== X-Received: from pfbbm14.prod.google.com ([2002:a05:6a00:320e:b0:84c:2e88:693d]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a00:3d55:b0:84e:cd14:aeba with SMTP id d2e1a72fcca58-85ffbe960f2mr374778b3a.6.1788367298091; Wed, 02 Sep 2026 09:41:38 -0700 (PDT) Date: Wed, 2 Sep 2026 09:41:14 -0700 In-Reply-To: <20260902164123.2546762-1-seanjc@google.com> Mime-Version: 1.0 References: <20260902164123.2546762-1-seanjc@google.com> X-Mailer: git-send-email 2.55.0.966.g6673acef38-goog Message-ID: <20260902164123.2546762-12-seanjc@google.com> Subject: [PATCH v2 11/20] KVM: selftests: Initialize vm->memslots[] with invalid memslots during creation From: Sean Christopherson To: Marc Zyngier , Oliver Upton , Sean Christopherson , Paolo Bonzini , Tianrui Zhao , Bibo Mao , Huacai Chen , Anup Patel , Paul Walmsley , Palmer Dabbelt , Albert Ou , Christian Borntraeger , Janosch Frank , Claudio Imbrenda Cc: Fuad Tabba , Joey Gouly , Steffen Eiden , Suzuki K Poulose , Zenghui Yu , Atish Patra , Alexandre Ghiti , David Hildenbrand , linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, kvm@vger.kernel.org, loongarch@lists.linux.dev, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, Itaru Kitayama , Nicholas Piggin , Ritesh Harjani X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260902_094142_279429_813204B7 X-CRM114-Status: GOOD ( 13.50 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Sean Christopherson Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org Initialize vm->memslots[] with an invalid memslots value during very initial VM creation so that failure to configure the core memory regions generates an immediate assert instead of potential weirdness, e.g. if slot0 is coincidentally valid. This will also allow hardening the region APIs to guard overriding a region's memslot multiple times. Tested-by: Itaru Kitayama Signed-off-by: Sean Christopherson --- tools/testing/selftests/kvm/include/kvm_util.h | 2 ++ tools/testing/selftests/kvm/lib/kvm_util.c | 5 +++++ tools/testing/selftests/kvm/lib/x86/processor.c | 5 ++++- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/kvm/include/kvm_util.h b/tools/testing/selftests/kvm/include/kvm_util.h index c56f342b16fd..304ef6af3268 100644 --- a/tools/testing/selftests/kvm/include/kvm_util.h +++ b/tools/testing/selftests/kvm/include/kvm_util.h @@ -33,6 +33,8 @@ #define NSEC_PER_SEC 1000000000L +#define KVM_INVALID_MEMSLOT UINT_MAX + struct userspace_mem_region { struct kvm_userspace_memory_region2 region; struct sparsebit *unused_phy_pages; diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/selftests/kvm/lib/kvm_util.c index ce0d8fba4624..56df5b1d9c79 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -288,6 +288,7 @@ __weak void vm_populate_gva_bitmap(struct kvm_vm *vm) struct kvm_vm *____vm_create(struct vm_shape shape) { struct kvm_vm *vm; + int i; vm = calloc(1, sizeof(*vm)); TEST_ASSERT(vm != NULL, "Insufficient Memory"); @@ -296,6 +297,8 @@ struct kvm_vm *____vm_create(struct vm_shape shape) vm->regions.gpa_tree = RB_ROOT; vm->regions.hva_tree = RB_ROOT; hash_init(vm->regions.slot_hash); + for (i = 0; i < NR_MEM_REGIONS; i++) + vm->memslots[i] = KVM_INVALID_MEMSLOT; vm->mode = shape.mode; vm->type = shape.type; @@ -1190,6 +1193,8 @@ memslot2region(struct kvm_vm *vm, u32 memslot) { struct userspace_mem_region *region; + TEST_ASSERT(memslot != KVM_INVALID_MEMSLOT, "vm->memslots[] unpopulated?"); + hash_for_each_possible(vm->regions.slot_hash, region, slot_node, memslot) if (region->region.slot == memslot) diff --git a/tools/testing/selftests/kvm/lib/x86/processor.c b/tools/testing/selftests/kvm/lib/x86/processor.c index d31fa81ea075..ea5fa59888af 100644 --- a/tools/testing/selftests/kvm/lib/x86/processor.c +++ b/tools/testing/selftests/kvm/lib/x86/processor.c @@ -529,7 +529,10 @@ void tdp_identity_map_default_memslots(struct kvm_vm *vm) /* Only memslot 0 is mapped here, ensure it's the only one being used */ for (s = 0; s < NR_MEM_REGIONS; s++) - TEST_ASSERT_EQ(vm->memslots[s], 0); + TEST_ASSERT(!vm->memslots[s] || + vm->memslots[s] == KVM_INVALID_MEMSLOT, + "Unhandled memslot '%u' for type '%u'", + vm->memslots[s], s); i = (region->region.guest_phys_addr >> vm->page_shift) - 1; last = i + (region->region.memory_size >> vm->page_shift); -- 2.55.0.966.g6673acef38-goog _______________________________________________ linux-riscv mailing list linux-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-riscv