From patchwork Fri Feb 21 16:07:20 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Roy X-Patchwork-Id: 13985873 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 kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 06875C021B3 for ; Fri, 21 Feb 2025 16:10:22 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 91184280010; Fri, 21 Feb 2025 11:10:21 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 899FA280001; Fri, 21 Feb 2025 11:10:21 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 73B2C280010; Fri, 21 Feb 2025 11:10:21 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 502D6280001 for ; Fri, 21 Feb 2025 11:10:21 -0500 (EST) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id D7ABE141768 for ; Fri, 21 Feb 2025 16:10:20 +0000 (UTC) X-FDA: 83144439000.19.1595FAA Received: from smtp-fw-52002.amazon.com (smtp-fw-52002.amazon.com [52.119.213.150]) by imf10.hostedemail.com (Postfix) with ESMTP id E2FBBC0029 for ; Fri, 21 Feb 2025 16:10:18 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=amazon.co.uk header.s=amazon201209 header.b="l/PhpzyC"; spf=pass (imf10.hostedemail.com: domain of "prvs=140b82bcc=roypat@amazon.co.uk" designates 52.119.213.150 as permitted sender) smtp.mailfrom="prvs=140b82bcc=roypat@amazon.co.uk"; dmarc=pass (policy=quarantine) header.from=amazon.co.uk ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1740154219; a=rsa-sha256; cv=none; b=YMTWZZ5x3mdcqFK3Lg2f4EQK3pNV4MhNhzl2MEiQ7KVbQhhGEfagCsZ1raPrRb8HLfTqtO oRV4VhGVCSOufYHJ4yqCXW1OmytPNR+nYxvXRSzDyyGMXX4N1RLotFAiMdwKkyHfMgxSHT ljMESIGxsgpy/MpQQW30eWZezQ2cmG4= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=pass header.d=amazon.co.uk header.s=amazon201209 header.b="l/PhpzyC"; spf=pass (imf10.hostedemail.com: domain of "prvs=140b82bcc=roypat@amazon.co.uk" designates 52.119.213.150 as permitted sender) smtp.mailfrom="prvs=140b82bcc=roypat@amazon.co.uk"; dmarc=pass (policy=quarantine) header.from=amazon.co.uk ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1740154219; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=fTeO7fM5OXcvlrI4w+CQtL7i/X1oLAgYLsigYYriVEA=; b=V2UBR3k1rfqStfHIxUyDUFHGs+b1zQAN+ngK8WFTXNK1u4onz1MiTWDsE3Ryly4ecoGNDk 6s4H0+gQfuaskjT26ijvSeXppapHOIEsFsdi23A5UJIWCtMne35pwxTGAr5GpCBATg6RWk L9KkV2RR79uAYGUE61SSe75Wf6t8o78= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.co.uk; i=@amazon.co.uk; q=dns/txt; s=amazon201209; t=1740154219; x=1771690219; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=fTeO7fM5OXcvlrI4w+CQtL7i/X1oLAgYLsigYYriVEA=; b=l/PhpzyC7+bZdRR1u5upWjbV1rDPe7CUUIKCmjdYYw4JZ5qtZiqzZ25g FKEJShLRE4JteF25OubvqpmOHhzyiMtYMlQNi//7n7o8YgZijQAZYE+9v 0lTfqFAT2ssqnNg43D1f3HIFdJ33u0hrw5ml4ZQhPE7aHq4mQMbN/USL9 Y=; X-IronPort-AV: E=Sophos;i="6.13,305,1732579200"; d="scan'208";a="699167547" Received: from iad12-co-svc-p1-lb1-vlan3.amazon.com (HELO smtpout.prod.us-west-2.prod.farcaster.email.amazon.dev) ([10.43.8.6]) by smtp-border-fw-52002.iad7.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Feb 2025 16:10:16 +0000 Received: from EX19MTAUWC002.ant.amazon.com [10.0.21.151:13311] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.35.58:2525] with esmtp (Farcaster) id 8a833927-0542-4e93-bbef-d01ab08ea01f; Fri, 21 Feb 2025 16:10:15 +0000 (UTC) X-Farcaster-Flow-ID: 8a833927-0542-4e93-bbef-d01ab08ea01f Received: from EX19D003UWC002.ant.amazon.com (10.13.138.169) by EX19MTAUWC002.ant.amazon.com (10.250.64.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.1258.39; Fri, 21 Feb 2025 16:10:00 +0000 Received: from EX19MTAUWC002.ant.amazon.com (10.250.64.143) by EX19D003UWC002.ant.amazon.com (10.13.138.169) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.1544.14; Fri, 21 Feb 2025 16:10:00 +0000 Received: from email-imr-corp-prod-pdx-all-2b-c1559d0e.us-west-2.amazon.com (10.25.36.210) by mail-relay.amazon.com (10.250.64.149) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.1258.39 via Frontend Transport; Fri, 21 Feb 2025 16:10:00 +0000 Received: from ua2d7e1a6107c5b.ant.amazon.com (dev-dsk-roypat-1c-dbe2a224.eu-west-1.amazon.com [172.19.88.180]) by email-imr-corp-prod-pdx-all-2b-c1559d0e.us-west-2.amazon.com (Postfix) with ESMTPS id 6B722404D5; Fri, 21 Feb 2025 16:09:52 +0000 (UTC) From: Patrick Roy To: , , CC: Patrick Roy , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , Subject: [PATCH v4 07/12] KVM: selftests: set KVM_MEM_GUEST_MEMFD in vm_mem_add() if guest_memfd != -1 Date: Fri, 21 Feb 2025 16:07:20 +0000 Message-ID: <20250221160728.1584559-8-roypat@amazon.co.uk> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250221160728.1584559-1-roypat@amazon.co.uk> References: <20250221160728.1584559-1-roypat@amazon.co.uk> MIME-Version: 1.0 X-Rspamd-Queue-Id: E2FBBC0029 X-Stat-Signature: hpyb6g6cyesep48xdhz597r1ap6aogmu X-Rspam-User: X-Rspamd-Server: rspam10 X-HE-Tag: 1740154218-222653 X-HE-Meta: U2FsdGVkX1+dWsRVrE8ljRGIS5rIhNiL8x0CGmF8F4Lq7pqZYgqq0qkvIa+MsYJ9qzf4oj52iaY6O+8d3gQj93xcg/ymHuTF0n5nxOasMBErBQe9EKYy6zzznu79erkxVGFh0w3SDCtJPjgkgt6DYwa9k/Co/IOfCy443PRzn9dp4hakukToLTwPbOxH1UP1zPlke78g5IrylplExZSMPLfPZdpNLzdm4Vh+B/OUbK1ww/fs/6wP/LmyF3/kG0ycNFKLkUUZ+N3U4/qrWfJO0tcOVMB1xzu3FKPvjSp7GS2/pEgxS+cU0/HoHlM7FILuoxQ/uOhdaW89/Mtxcuh7tQrpMRImiJszi19iP88+YDf2WQBVBDI3A1VCSjDmyjKVKfGyfygTdBLXjHaMsHXj5Aupgwl6M58wqO4YFjSAi3FGQQ2mW20Hxs4T/RcJJVu17zabexVLM8jLR+uudz0DCG/zty01+bjflUxjO8ZHgTs8V3VcpsgsUCkP0U6mnT7vSv7VMGfeHXWypjO3rVUQkwNbVYi4N4t/ktJG/WInWjahGRY1k+n664QSvGFX+OtdXALxUDROYGe8IUHOivDZn/8ADxlyg4sUDN81S2J6VBhxhBgWFhwLnn/EoUHkfsANuBn9mjM/ALBIHTQYOpiPZOoJOsyEQ/+/QXmHS6hJZ2yRwCXO7hZ5W/i4GNZQK+6WoMKwARP1J7GT08lEoDwFyoDZDIA+OidhgX9lgc0dWyo0pI1FvFWV+AEQsG27K+OpxhCyzE2WI5OG3ufFL9bTWVN1rPb/pRb3jShSX+pwExg6W8vP1NeL8fJnjHiZmhQUdcrKQA2ML3o/9lVosSoYIW4EioABN9d6aUoTd0czL/xg+opXfA+XbHUiMiYiZ4sXu8UREkaYVCsAOfh4oooomRZGHRwOqzsT3+/CeY7j1kGxwjg3oMQlOwUJaRkXe71EUBTo25dx3YickTrHFoz tnk6ugDr 8+c6ytdo+hBrq/U/gpszqvbkuIcvN8IUzTbbsY6U18t3GQW72kdDPUa4O8ha/CkHTxu7DSaYARFjmWg/hnJxaNotz/a4aW/O6BAmf91likRJkl3k7CEnjMZqHRRXuk9TLUTz1XM6XgWjWZTJiWf+9aXQoWUFc3vgoxierVYQv2AKlSXFwJXFysqEM5TXAvakEKfqu10T6qK2sfzN0jBvvlsgnr/aiWl8d6aXnV9pStcuAv1SElFpmA0A1oL3avKmVuvXAjiLEraSUC7BcXya7Lz8+wwTtZ0QD73DdRhoU8ihsJ0RsKuwQtYOSBZpkhjRlR4XthgWYtWkd8jQ/FPCYKvqdCe2pkAFqI/F6l2dP5rttxxnCwU+IFJDC5KdUweOlKqCo8B0kftmlWxsLc8dRSmmdnx2NaB9FpBJAWhmy6cIL5y/O26uemBOfigGjZ4W4vcgQuT48juIbCViQyfDRN3Z8J0a+dfKkLMqshCMFp07RI2yIPPIWTlRTi7+Bui7OGUbdrEXX4NgjbgSRQ5ND0apv9fsftmk8eeaj8c6C03fzBA8= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Have vm_mem_add() always set KVM_MEM_GUEST_MEMFD in the memslot flags if a guest_memfd is passed in as an argument. This eliminates the possibility where a guest_memfd instance is passed to vm_mem_add(), but it ends up being ignored because the flags argument does not specify KVM_MEM_GUEST_MEMFD at the same time. This makes it easy to support more scenarios in which no vm_mem_add() is not passed a guest_memfd instance, but is expected to allocate one. Currently, this only happens if guest_memfd == -1 but flags & KVM_MEM_GUEST_MEMFD != 0, but later vm_mem_add() will gain support for loading the test code itself into guest_memfd (via KVM_GMEM_SHARED_MEM) if requested via a special vm_mem_backing_src_type, at which point having to make sure the src_type and flags are in-sync becomes cumbersome. Signed-off-by: Patrick Roy --- tools/testing/selftests/kvm/lib/kvm_util.c | 26 +++++++++++++--------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/selftests/kvm/lib/kvm_util.c index 33fefeb3ca44..ebdf38e2983b 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -1017,22 +1017,26 @@ void vm_mem_add(struct kvm_vm *vm, enum vm_mem_backing_src_type src_type, region->backing_src_type = src_type; - if (flags & KVM_MEM_GUEST_MEMFD) { - if (guest_memfd < 0) { + if (guest_memfd < 0) { + if (flags & KVM_MEM_GUEST_MEMFD) { uint32_t guest_memfd_flags = 0; TEST_ASSERT(!guest_memfd_offset, "Offset must be zero when creating new guest_memfd"); guest_memfd = vm_create_guest_memfd(vm, mem_size, guest_memfd_flags); - } else { - /* - * Install a unique fd for each memslot so that the fd - * can be closed when the region is deleted without - * needing to track if the fd is owned by the framework - * or by the caller. - */ - guest_memfd = dup(guest_memfd); - TEST_ASSERT(guest_memfd >= 0, __KVM_SYSCALL_ERROR("dup()", guest_memfd)); } + } else { + /* + * Install a unique fd for each memslot so that the fd + * can be closed when the region is deleted without + * needing to track if the fd is owned by the framework + * or by the caller. + */ + guest_memfd = dup(guest_memfd); + TEST_ASSERT(guest_memfd >= 0, __KVM_SYSCALL_ERROR("dup()", guest_memfd)); + } + + if (guest_memfd > 0) { + flags |= KVM_MEM_GUEST_MEMFD; region->region.guest_memfd = guest_memfd; region->region.guest_memfd_offset = guest_memfd_offset;