From patchwork Mon Oct 23 19:15:28 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 157047 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:ce89:0:b0:403:3b70:6f57 with SMTP id p9csp1501066vqx; Mon, 23 Oct 2023 12:16:09 -0700 (PDT) X-Google-Smtp-Source: AGHT+IET3SDTXbe2/n7LWtojFPBS1Nt8nbM4GV0tjetqe/jbQHFTE/tiQnxcMxyhEmO0VpmSo0vE X-Received: by 2002:a05:6a21:3383:b0:15a:836:7239 with SMTP id yy3-20020a056a21338300b0015a08367239mr679999pzb.11.1698088568935; Mon, 23 Oct 2023 12:16:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698088568; cv=none; d=google.com; s=arc-20160816; b=s/t4I0yCh14qkaCIHmZCesxDSTUMRsJfZNlLYhb4FpNNAJ4ii3GxzC7Ttg0EryO9Ip PFuFxfYavNlDY4udrhVRRfiIlds5jmkSTXS+oSfgIKzUUC/IwvFvR6ezpxqibCznf0uN ybkee5bkZBm9mubecEFfLJJ7khL6UlbFshmibr5LOWKgspKWV1IKmoZ47dBIz6tdbnXy Sb4Uc1g0h+47w0HsjBq1HlME1XZX0NXuetbaOzyTVMt0Z21iQ7DHF0pqoS+9UUKTl8M/ iHV5aqH0uGbdpgPuFMOn+dEr5zMuhDz3RDDUuQTw45Qgz8AF6PJHBH9ZQ742Mv82Lvde HlVA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:reply-to:dkim-signature; bh=FrhDwJ6cDjwpQACgZMKp9PJVi2cWnjnpG+wp7ryYIv8=; fh=2IGrByZwJJHppcQOSnWVEv1kEE7zhmjxO9HROc9niOY=; b=LSv/ejFfTlZ/V5j3Nwh+bH/cPMa+YRP5rgAC+8OxCvBcbYdFksC0IE1OMPkv5cbxjD +uM1I6Hv7zX9lUuld/dsio7CQ8PNzjrOjf7XaOnkwiGMx9xcMFEcMz7NRRKu2JlhyxOa iM+BF+Rx7Jc0tpRjsa/oqUt4cfPJcdUAB68v2sJlwsT5HqvJK4iEWILDP8m1j0Tr6cKQ T3LQaCrj1urNY9ojZe/+LTJIWqnErtOGCPLR2f/wX9lMuyXhlIaI50NBZ89F3d31zyms g80U5yz+ICACDCSqTxIxyJlWjjWxEfOsmeZAIWKZ+pOJQcqRC7sqClHWkh2PD9EkQFmP JWCg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=J65eiusC; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from lipwig.vger.email (lipwig.vger.email. [23.128.96.33]) by mx.google.com with ESMTPS id s24-20020aa78bd8000000b006b5273b8d14si6815460pfd.72.2023.10.23.12.16.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Oct 2023 12:16:08 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) client-ip=23.128.96.33; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=J65eiusC; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id F356580873CD; Mon, 23 Oct 2023 12:16:05 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231686AbjJWTPn (ORCPT + 27 others); Mon, 23 Oct 2023 15:15:43 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42944 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231558AbjJWTPk (ORCPT ); Mon, 23 Oct 2023 15:15:40 -0400 Received: from mail-yw1-x114a.google.com (mail-yw1-x114a.google.com [IPv6:2607:f8b0:4864:20::114a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 413F5103 for ; Mon, 23 Oct 2023 12:15:38 -0700 (PDT) Received: by mail-yw1-x114a.google.com with SMTP id 00721157ae682-5a7b10c488cso45801677b3.2 for ; Mon, 23 Oct 2023 12:15:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1698088537; x=1698693337; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:from:to:cc:subject:date:message-id:reply-to; bh=FrhDwJ6cDjwpQACgZMKp9PJVi2cWnjnpG+wp7ryYIv8=; b=J65eiusCzrq37X4c4slf2jxxOzcFONjs8B1agN+AOntfVQcnwCN++SF8XF9FlcscUK KGNkY5m0tjBMsdZxczypp/qkGGzzQex4ysRC0Fm92Wc1xsiV8xsL9Z5tbaHCJYLNXmUI tgyeGo3Ibi7ySK7yuMM/62eVupeH/9th1ns3LmvlM/mzo1RkKzF97zWoUTtscBApTIo9 DoL3/MrJTbaaPNVIXudvHy0KqM4oVqDEp1aadtXjr3KCuOudypz8orpBdRPu5I/aaIIC aBR18v0J97E7CmNBsJiyGpGf6S0u9gVnZkKdLZ5GMhhSmDhJzixst5XScRBFgiCzB8Fn XGGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698088537; x=1698693337; h=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; bh=FrhDwJ6cDjwpQACgZMKp9PJVi2cWnjnpG+wp7ryYIv8=; b=fIqiOAuAVwxTeN4WdQFlkKQ/yDVgysbaXRGYuVWG3uA3YQnVR48q8YL74ISG08wgXf S48eDgiOdb/0klvUy3eOXpnM9Yu7fU0LeyKSkNY4uod6z+ucjRMtZKtxys3xHGhMpvnR 3ck2s0T9rUUg8TPMCv9Mh/loDzdiRbk+1cwtwJsmfBRQ/o0fS6PTaVVSR7cQ6zSj8pXV hnL9InDUtml6tgnHAQdpbLs9W3DOiXSc/GhQroufWIPnyIw0GRNPH8/seEIaQK9kkYZu 7nhV978uj3m9w4/wwWfVtnX0IZIxwhPsTTnhCHR5XND9MBjySMR70b1zIkdHGkukrKUX EyRg== X-Gm-Message-State: AOJu0YxRNgWQQdu+jo4slgkpTZ4QMTlngEabx47CGc3L9BsIp42+E6hH ketPvZbzOJfLWp24OQdhZ5XiWfKTzXU= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a25:42c9:0:b0:d9a:bce6:acf3 with SMTP id p192-20020a2542c9000000b00d9abce6acf3mr190144yba.0.1698088537502; Mon, 23 Oct 2023 12:15:37 -0700 (PDT) Reply-To: Sean Christopherson Date: Mon, 23 Oct 2023 12:15:28 -0700 In-Reply-To: <20231023191532.2405326-1-seanjc@google.com> Mime-Version: 1.0 References: <20231023191532.2405326-1-seanjc@google.com> X-Mailer: git-send-email 2.42.0.758.gaed0368e0e-goog Message-ID: <20231023191532.2405326-2-seanjc@google.com> Subject: [PATCH gmem 1/5] KVM: selftests: Rework fallocate() helper to work across multiple memslots From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Michael Roth X-Spam-Status: No, score=-8.4 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_IN_DEF_DKIM_WL autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (lipwig.vger.email [0.0.0.0]); Mon, 23 Oct 2023 12:16:06 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1780574919258091409 X-GMAIL-MSGID: 1780574919258091409 Rework vm_guest_mem_fallocate() to play nice with ranges that cover more than one memslot. Converting a range that covers multiple memslots is most definitely an interesting testcase, and there's no reason to force the caller to manually shatter the range, especially since the size of the region might not be known by the caller. Signed-off-by: Sean Christopherson --- tools/testing/selftests/kvm/lib/kvm_util.c | 34 ++++++++++++---------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/selftests/kvm/lib/kvm_util.c index 8fc70c021c1c..33bc2c6be970 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -1206,30 +1206,32 @@ void vm_mem_region_delete(struct kvm_vm *vm, uint32_t slot) __vm_mem_region_delete(vm, memslot2region(vm, slot), true); } -void vm_guest_mem_fallocate(struct kvm_vm *vm, uint64_t gpa, uint64_t size, +void vm_guest_mem_fallocate(struct kvm_vm *vm, uint64_t base, uint64_t size, bool punch_hole) { + const int mode = FALLOC_FL_KEEP_SIZE | (punch_hole ? FALLOC_FL_PUNCH_HOLE : 0); struct userspace_mem_region *region; - uint64_t end = gpa + size - 1; + uint64_t end = base + size; + uint64_t gpa, len; off_t fd_offset; - int mode, ret; + int ret; - region = userspace_mem_region_find(vm, gpa, gpa); - TEST_ASSERT(region && region->region.flags & KVM_MEM_PRIVATE, - "Private memory region not found for GPA 0x%lx", gpa); + for (gpa = base; gpa < end; gpa += len) { + uint64_t offset; - TEST_ASSERT(region == userspace_mem_region_find(vm, end, end), - "fallocate() for guest_memfd must act on a single memslot"); + region = userspace_mem_region_find(vm, gpa, gpa); + TEST_ASSERT(region && region->region.flags & KVM_MEM_PRIVATE, + "Private memory region not found for GPA 0x%lx", gpa); - fd_offset = region->region.gmem_offset + - (gpa - region->region.guest_phys_addr); + offset = (gpa - region->region.guest_phys_addr); + fd_offset = region->region.gmem_offset + offset; + len = min_t(uint64_t, end - gpa, region->region.memory_size - offset); - mode = FALLOC_FL_KEEP_SIZE | (punch_hole ? FALLOC_FL_PUNCH_HOLE : 0); - - ret = fallocate(region->region.gmem_fd, mode, fd_offset, size); - TEST_ASSERT(!ret, "fallocate() failed to %s at %lx[%lu], fd = %d, mode = %x, offset = %lx\n", - punch_hole ? "punch hole" : "allocate", gpa, size, - region->region.gmem_fd, mode, fd_offset); + ret = fallocate(region->region.gmem_fd, mode, fd_offset, len); + TEST_ASSERT(!ret, "fallocate() failed to %s at %lx (len = %lu), fd = %d, mode = %x, offset = %lx\n", + punch_hole ? "punch hole" : "allocate", gpa, len, + region->region.gmem_fd, mode, fd_offset); + } } /* Returns the size of a vCPU's kvm_run structure. */ From patchwork Mon Oct 23 19:15:29 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 157048 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:ce89:0:b0:403:3b70:6f57 with SMTP id p9csp1501092vqx; Mon, 23 Oct 2023 12:16:13 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGfRUHTDD1CvUM6cIzIrjLgKFRdJPpsw0/MiyJZ+xaRZAeYxD+BQ3nQjozVHNov5yoYNFzS X-Received: by 2002:a05:6300:8005:b0:133:f0b9:856d with SMTP id an5-20020a056300800500b00133f0b9856dmr473238pzc.17.1698088573151; Mon, 23 Oct 2023 12:16:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698088573; cv=none; d=google.com; s=arc-20160816; b=CpGAOutmDn+WTOIKMvefFSh+xb8hojavWVd9fJ4pEIg270EeIVRAt9bqEoSwUmeT8F 4lCZ/hiCf+vQ6iWacH5x5QeqRRKHAfw/jLA1uyRoQEUzCR+8eDeV23578DmN963WIqix gsbI1e+FCa1YPz5XmmXXv+MTFjoSNyJK/gXvg3QGJsb80TuKJwYVKrFjBde/zjFdFTqN BvCndCq/KJkeojETOyvJ1+dyqcXaoUJzvIhbazROI5E5D/+mLGWYOjGL6EJ1zb4Lnd8l nuTyoMUBgherc98kjovo7+3bpkuEaQO3qMCjhM+1VmOrczX3m8zzimn6Xb4CsNSYslBa ZzUw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:reply-to:dkim-signature; bh=Fgbudwquptx3kxGF2Rx/jDbv8sQ1FkhX6MwfxQpq3LQ=; fh=2IGrByZwJJHppcQOSnWVEv1kEE7zhmjxO9HROc9niOY=; b=Bn7FemQtkxtF9fpAVpWKFw+M74kUEqgDf3w3EwFswYdNtzTMkIJ9lbfObwLbjpURWU i2NJZF0gDIagWDyA5rFU5j5kk34FX9xfBvE+LGo+DWqyrQcy47azcKgJoCbH6D0by4RO J1tWpzF7xq/U97dJOVcF50O6MO46LZQ/6rK5UNeR0yyBqjCi+RSTzKXn6I/g3WHc/E+b RXB9s6EcWc2wwftRq1d23D1UcFNn3qfU3Y7j0QAXQKxlIIFlj8aWH8bT3N+zV5JgX3Sj b/YcYsB0eWLbKX6R3D1Krlx88g4vJolekrZy5w8nkXoFhFEMSoDP6tJWi0yN6Jkt9EBv df0Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b="Jyt0/uLO"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from howler.vger.email (howler.vger.email. [23.128.96.34]) by mx.google.com with ESMTPS id h62-20020a638341000000b005a9fde46fa0si6732686pge.130.2023.10.23.12.16.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Oct 2023 12:16:13 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 as permitted sender) client-ip=23.128.96.34; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b="Jyt0/uLO"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by howler.vger.email (Postfix) with ESMTP id E60D1809AFA3; Mon, 23 Oct 2023 12:16:05 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at howler.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231917AbjJWTPq (ORCPT + 27 others); Mon, 23 Oct 2023 15:15:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42960 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229537AbjJWTPl (ORCPT ); Mon, 23 Oct 2023 15:15:41 -0400 Received: from mail-yw1-x114a.google.com (mail-yw1-x114a.google.com [IPv6:2607:f8b0:4864:20::114a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 01C8694 for ; Mon, 23 Oct 2023 12:15:39 -0700 (PDT) Received: by mail-yw1-x114a.google.com with SMTP id 00721157ae682-5a8ee6a1801so49026597b3.3 for ; Mon, 23 Oct 2023 12:15:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1698088539; x=1698693339; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:from:to:cc:subject:date:message-id:reply-to; bh=Fgbudwquptx3kxGF2Rx/jDbv8sQ1FkhX6MwfxQpq3LQ=; b=Jyt0/uLO9cpaOM5TuA8al91OF2xAYoGUDUZDSSBAyxeu7pjDhEfZnxhMpOE9L6GRHH CT0V4Ikd/IkpVXszW5k0EzyNFWcerRFEoYsPISXXs3YqSExFIpI7P9PvEZSl8tPc9DS6 hafeTTJncrdo8HYY3zmxQh4FRJnmEmD4GPgb40Yaib4dTp92X3T8swvhQt3HAUCP+X+J iqM0zRn+oTmkG/U1yYtpGL/TJ9aLZGKlPFjRw+fPBU6JzImK/F3UpfBws7UAAuqzBSwq 5I4rb5UGOGIuUiATt8fkyZNtQsi223GV9uXhZiV28dlMEY2P3oHklcRoyrDGWbec3rw0 WfHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698088539; x=1698693339; h=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; bh=Fgbudwquptx3kxGF2Rx/jDbv8sQ1FkhX6MwfxQpq3LQ=; b=U7hR1A0LIPFpxl7cFWPdgjB/JodBy/TUEnYuwzNqfbSuH2SsXIa80z4xSq0jF2mb45 LiNi1Lnpyt0Ct8uBpaY5Fw9qN+bmyceQ0udXnDbm8qD2OfSHd5tKoJQLNqlRWlSxHkrP tJTF/akNv5jjWDOTLBDv0HXJ1qZYczOm2ckT+TAoQKrzxjPBFkTpX8HZoqZ3Kbz/2Tgg /UGfWvQ+imbGmK8b+fI4XsapLhJCN6GBmMWrSOfpWAdHurdAfYBydgdkEqMPZmgLhvZh NzS+VZFBkTfdzA9OBz4lxNInTNRvT1Lr6FgkoJ2t6vtzazNSRAMPWsGv7LJB9nKDwBXf p6Ew== X-Gm-Message-State: AOJu0YxV4UzgvlmuZZWZJAr2tfb5JkQOpnkbXLCkdSUXCs/o49abHr1M kHlUVgpCM53eyZs7QbrdSt3uUzqxqY4= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a0d:db43:0:b0:5a7:ccf3:3f28 with SMTP id d64-20020a0ddb43000000b005a7ccf33f28mr200781ywe.0.1698088539262; Mon, 23 Oct 2023 12:15:39 -0700 (PDT) Reply-To: Sean Christopherson Date: Mon, 23 Oct 2023 12:15:29 -0700 In-Reply-To: <20231023191532.2405326-1-seanjc@google.com> Mime-Version: 1.0 References: <20231023191532.2405326-1-seanjc@google.com> X-Mailer: git-send-email 2.42.0.758.gaed0368e0e-goog Message-ID: <20231023191532.2405326-3-seanjc@google.com> Subject: [PATCH gmem 2/5] KVM: selftests: Handle memslot splits in private mem conversions test From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Michael Roth X-Spam-Status: No, score=-8.4 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_IN_DEF_DKIM_WL autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on howler.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (howler.vger.email [0.0.0.0]); Mon, 23 Oct 2023 12:16:06 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1780574923916177849 X-GMAIL-MSGID: 1780574923916177849 Rework the SYNC_{SHARED,PRIVATE} handling in the private memory conversion test to play nice with ranges that are covered by multiple memslots. This will allow letting the user specify the number of memslots, and more importantly allow testing KVM_SET_MEMORY_ATTRIBUTES calls that also split across memslots. Opportunistically update the error messages to clarify whether the assert fired in the guest vs. host. Signed-off-by: Sean Christopherson --- .../kvm/x86_64/private_mem_conversions_test.c | 44 +++++++++++-------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/private_mem_conversions_test.c b/tools/testing/selftests/kvm/x86_64/private_mem_conversions_test.c index c04e7d61a585..c3992a295b5a 100644 --- a/tools/testing/selftests/kvm/x86_64/private_mem_conversions_test.c +++ b/tools/testing/selftests/kvm/x86_64/private_mem_conversions_test.c @@ -28,25 +28,25 @@ #define PER_CPU_DATA_SIZE ((uint64_t)(SZ_2M + PAGE_SIZE)) /* Horrific macro so that the line info is captured accurately :-( */ -#define memcmp_g(gpa, pattern, size) \ -do { \ - uint8_t *mem = (uint8_t *)gpa; \ - size_t i; \ - \ - for (i = 0; i < size; i++) \ - __GUEST_ASSERT(mem[i] == pattern, \ - "Expected 0x%x at offset %lu (gpa 0x%llx), got 0x%x", \ - pattern, i, gpa + i, mem[i]); \ +#define memcmp_g(gpa, pattern, size) \ +do { \ + uint8_t *mem = (uint8_t *)gpa; \ + size_t i; \ + \ + for (i = 0; i < size; i++) \ + __GUEST_ASSERT(mem[i] == pattern, \ + "Guest expected 0x%x at offset %lu (gpa 0x%llx), got 0x%x", \ + pattern, i, gpa + i, mem[i]); \ } while (0) -static void memcmp_h(uint8_t *mem, uint8_t pattern, size_t size) +static void memcmp_h(uint8_t *mem, uint64_t gpa, uint8_t pattern, size_t size) { size_t i; for (i = 0; i < size; i++) TEST_ASSERT(mem[i] == pattern, - "Expected 0x%x at offset %lu, got 0x%x", - pattern, i, mem[i]); + "Host expected 0x%x at gpa 0x%lx, got 0x%x", + pattern, gpa + i, mem[i]); } /* @@ -335,19 +335,25 @@ static void *__test_mem_conversions(void *__vcpu) case UCALL_ABORT: REPORT_GUEST_ASSERT(uc); case UCALL_SYNC: { - uint8_t *hva = addr_gpa2hva(vm, uc.args[1]); - uint64_t size = uc.args[2]; + uint64_t gpa = uc.args[1]; + size_t size = uc.args[2]; + size_t i; TEST_ASSERT(uc.args[0] == SYNC_SHARED || uc.args[0] == SYNC_PRIVATE, "Unknown sync command '%ld'", uc.args[0]); - /* In all cases, the host should observe the shared data. */ - memcmp_h(hva, uc.args[3], size); + for (i = 0; i < size; i += vm->page_size) { + size_t nr_bytes = min_t(size_t, vm->page_size, size - i); + uint8_t *hva = addr_gpa2hva(vm, gpa + i); - /* For shared, write the new pattern to guest memory. */ - if (uc.args[0] == SYNC_SHARED) - memset(hva, uc.args[4], size); + /* In all cases, the host should observe the shared data. */ + memcmp_h(hva, gpa + i, uc.args[3], nr_bytes); + + /* For shared, write the new pattern to guest memory. */ + if (uc.args[0] == SYNC_SHARED) + memset(hva, uc.args[4], nr_bytes); + } break; } case UCALL_DONE: From patchwork Mon Oct 23 19:15:30 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 157045 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:ce89:0:b0:403:3b70:6f57 with SMTP id p9csp1501031vqx; Mon, 23 Oct 2023 12:16:05 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGwB9eBhnpSIAnc5TWg6oU/g+lxJbU7sJMJI47B+7zBSK9YOfsV4ksDc0vb+jFPV/7H4xPf X-Received: by 2002:a17:903:32d0:b0:1c9:c3eb:6557 with SMTP id i16-20020a17090332d000b001c9c3eb6557mr9336931plr.0.1698088564788; Mon, 23 Oct 2023 12:16:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698088564; cv=none; d=google.com; s=arc-20160816; b=PScVNIP0znQZOlIRWWA3TCSpDLhtFXIaRUne5PTse8oB2sLY1sWj9Cqja/ttFKgnUl Xx9HkH66sP6fkPZHQnCUaLOSiyNysvuIaN5vakFIuRQ3RmzylRUFvk5W8i18UR7TAX/A Wy8+tI8rMkQlF1K6iB+KulJX4JKP3k8KFOq921BBTOIIAuALzTxUhTkWLYaObsKXHEPD eD1xzREOhbuaxNKOSzDOEHig26i4KuIAllQoVtoyb/QrV9g+OnaPEsuYEFG4Rfwu6a34 Elyj33PtAIZMQjqoDS5AQcUMuZWQmvfKB5TnjgA5J7K8esU4+5QWNSIZboFsGIaQs3si b/Rg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:reply-to:dkim-signature; bh=l32i13KcogKJQmerzZJpCfXVsXKJyNALXo7FvnlM4Uc=; fh=2IGrByZwJJHppcQOSnWVEv1kEE7zhmjxO9HROc9niOY=; b=bqv9fSHalDHDhBpBsa6uquLPlaonaf9Z5JWAgyHinMpYPdjUekm/16SN2ei8EvCMOW e2tvHTMk6/snUCkZbULNqmnOLatVHNbNiGPcZODpJRxLlbH6dnKxQWDaZSzCyWOXtKY/ qGTFqVGX/tnOE3j6oWRF7yiRdnQcZRTYDXjTFhS9+g8MSraZgwPZpJug+AYUdx7ePPtk nTWmCUzS08kKQb06foPn+acYqqNIcp34jGBkeGW4L7a6MhjUwacBUlSRmHCSzygZpLaz KjDH2aVQrIToRKaxj4E/utRExbY7I7mM+tXmD4NifTYWT0unDByXAvSk2LkXdgAy/kqt +a5Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=ERgrCEMB; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id u13-20020a170902e80d00b001bb9e2c38ecsi6966698plg.264.2023.10.23.12.16.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Oct 2023 12:16:04 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=ERgrCEMB; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id E503C8040EA8; Mon, 23 Oct 2023 12:16:03 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232086AbjJWTPv (ORCPT + 27 others); Mon, 23 Oct 2023 15:15:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43020 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231827AbjJWTPo (ORCPT ); Mon, 23 Oct 2023 15:15:44 -0400 Received: from mail-yw1-x114a.google.com (mail-yw1-x114a.google.com [IPv6:2607:f8b0:4864:20::114a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D1B3594 for ; Mon, 23 Oct 2023 12:15:41 -0700 (PDT) Received: by mail-yw1-x114a.google.com with SMTP id 00721157ae682-5a7aa816c5bso50607777b3.1 for ; Mon, 23 Oct 2023 12:15:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1698088541; x=1698693341; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:from:to:cc:subject:date:message-id:reply-to; bh=l32i13KcogKJQmerzZJpCfXVsXKJyNALXo7FvnlM4Uc=; b=ERgrCEMBpKe68DyX3DohbCPwr3jF6VlzXxTabQIhuY/dfvAmPYbO2SMMpjxwARcJYI FQ7D93D5mv4TcQMFlNpvw8sAFE2ZtjjlH2BXbWkgJfz/vd2u2HxgrHeegJDLhuetE7dW derthwJITwauhvGq7eN2RepX/G60Yrf4FX+PeTcUeVBatVGl4By9x8aWCfOAoPzOxWXY L/9ueKGj42k/lFb7u2+SiR7qDzqnl41X9jkR7Sdyaia0G7hc4wiB2615lWJ8i5gmzJAY OF5CLeCXPx5QQMDPWJi2+BI//ZEYITsK/uqHF38JEf/QaR0f+FYcZuNvRoyoB5OHNQWI 35Nw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698088541; x=1698693341; h=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; bh=l32i13KcogKJQmerzZJpCfXVsXKJyNALXo7FvnlM4Uc=; b=E4tHM1Y7DhjV/AwO3tL/ib6BCJg5qis9XgrFLjSUgxbEZAWhhIii4xwznbVFlLSTiu Ylv1Od1hjLFN92mXwSFBTzIfdPqOsSc47lOtzV8t2W6XB643WvAS4hcVSOhB/Bptx848 kCRdfp0Trxvf2fmlvVgxVx//Idxw8gKEIBc0Bjplot/1rGyzX3roXu25064g5xtUGDUc AqkY1sAeDJfojx6EDb2QAXcUe/DGZvBLbg0UNAoI81T9GuzUO0cYcfRsOMxSn7JzsXs0 gGUn5QfOeTmW4fD/jYf66oAhgh3VGWd6jOM94XknTgrNnB7rmu3C54MLVvasCZ9zdisy ReuA== X-Gm-Message-State: AOJu0YyrwrwxFKhNkDqnwH0tddnmYaQqnl3IeW8SIjG4kLFHFERO4fkf JJJ/zH7HsQpVkkvyeaTH+kNv6pPPTU4= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a25:ad8e:0:b0:d90:e580:88e5 with SMTP id z14-20020a25ad8e000000b00d90e58088e5mr175588ybi.10.1698088541059; Mon, 23 Oct 2023 12:15:41 -0700 (PDT) Reply-To: Sean Christopherson Date: Mon, 23 Oct 2023 12:15:30 -0700 In-Reply-To: <20231023191532.2405326-1-seanjc@google.com> Mime-Version: 1.0 References: <20231023191532.2405326-1-seanjc@google.com> X-Mailer: git-send-email 2.42.0.758.gaed0368e0e-goog Message-ID: <20231023191532.2405326-4-seanjc@google.com> Subject: [PATCH gmem 3/5] KVM: selftests: Let user specify nr of memslots in private mem conversion From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Michael Roth X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS,USER_IN_DEF_DKIM_WL autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Mon, 23 Oct 2023 12:16:04 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1780574915341868510 X-GMAIL-MSGID: 1780574915341868510 Let the user specify the number of memslots in the private mem conversion test, i.e. don't require the number of memslots to be '1' or "nr_vcpus". Creating more memslots than vCPUs is particularly interesting, e.g. it can result in a single KVM_SET_MEMORY_ATTRIBUTES spanning multiple memslots. This also fixes an issue where the test will crash when running with multiple vCPUs but only a single memslot. To keep the math reasonable, align each vCPU's chunk to at least 2MiB (the size is 2MiB+4KiB), and require the total size to be cleanly divisible by the number of memslots. The goal is to be able to validate that KVM plays nice with multiple memslots, being able to create a truly arbitrary number of memslots doesn't add meaningful value, i.e. isn't worth the cost. Reported-by: Michael Roth Signed-off-by: Sean Christopherson --- .../kvm/x86_64/private_mem_conversions_test.c | 36 +++++++++++-------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/private_mem_conversions_test.c b/tools/testing/selftests/kvm/x86_64/private_mem_conversions_test.c index c3992a295b5a..3f6d8d4dbc53 100644 --- a/tools/testing/selftests/kvm/x86_64/private_mem_conversions_test.c +++ b/tools/testing/selftests/kvm/x86_64/private_mem_conversions_test.c @@ -371,8 +371,10 @@ static void test_mem_conversions(enum vm_mem_backing_src_type src_type, uint32_t * Allocate enough memory so that each vCPU's chunk of memory can be * naturally aligned with respect to the size of the backing store. */ - const size_t size = align_up(PER_CPU_DATA_SIZE, get_backing_src_pagesz(src_type)); - const size_t memfd_size = size * nr_vcpus; + const size_t alignment = max_t(size_t, SZ_2M, get_backing_src_pagesz(src_type)); + const size_t per_cpu_size = align_up(PER_CPU_DATA_SIZE, alignment); + const size_t memfd_size = per_cpu_size * nr_vcpus; + const size_t slot_size = memfd_size / nr_memslots; struct kvm_vcpu *vcpus[KVM_MAX_VCPUS]; pthread_t threads[KVM_MAX_VCPUS]; uint64_t gmem_flags; @@ -384,6 +386,9 @@ static void test_mem_conversions(enum vm_mem_backing_src_type src_type, uint32_t .type = KVM_X86_SW_PROTECTED_VM, }; + TEST_ASSERT(slot_size * nr_memslots == memfd_size, + "The memfd size (0x%lx) needs to be cleanly divisible by the number of memslots (%u)", + memfd_size, nr_memslots); vm = __vm_create_with_vcpus(shape, nr_vcpus, 0, guest_code, vcpus); vm_enable_cap(vm, KVM_CAP_EXIT_HYPERCALL, (1 << KVM_HC_MAP_GPA_RANGE)); @@ -395,16 +400,20 @@ static void test_mem_conversions(enum vm_mem_backing_src_type src_type, uint32_t memfd = vm_create_guest_memfd(vm, memfd_size, gmem_flags); for (i = 0; i < nr_memslots; i++) - vm_mem_add(vm, src_type, BASE_DATA_GPA + size * i, - BASE_DATA_SLOT + i, size / vm->page_size, - KVM_MEM_PRIVATE, memfd, size * i); + vm_mem_add(vm, src_type, BASE_DATA_GPA + slot_size * i, + BASE_DATA_SLOT + i, slot_size / vm->page_size, + KVM_MEM_PRIVATE, memfd, slot_size * i); for (i = 0; i < nr_vcpus; i++) { - uint64_t gpa = BASE_DATA_GPA + i * size; + uint64_t gpa = BASE_DATA_GPA + i * per_cpu_size; vcpu_args_set(vcpus[i], 1, gpa); - virt_map(vm, gpa, gpa, size / vm->page_size); + /* + * Map only what is needed so that an out-of-bounds access + * results #PF => SHUTDOWN instead of data corruption. + */ + virt_map(vm, gpa, gpa, PER_CPU_DATA_SIZE / vm->page_size); pthread_create(&threads[i], NULL, __test_mem_conversions, vcpus[i]); } @@ -432,29 +441,28 @@ static void test_mem_conversions(enum vm_mem_backing_src_type src_type, uint32_t static void usage(const char *cmd) { puts(""); - printf("usage: %s [-h] [-m] [-s mem_type] [-n nr_vcpus]\n", cmd); + printf("usage: %s [-h] [-m nr_memslots] [-s mem_type] [-n nr_vcpus]\n", cmd); puts(""); backing_src_help("-s"); puts(""); puts(" -n: specify the number of vcpus (default: 1)"); puts(""); - puts(" -m: use multiple memslots (default: 1)"); + puts(" -m: specify the number of memslots (default: 1)"); puts(""); } int main(int argc, char *argv[]) { enum vm_mem_backing_src_type src_type = DEFAULT_VM_MEM_SRC; - bool use_multiple_memslots = false; + uint32_t nr_memslots = 1; uint32_t nr_vcpus = 1; - uint32_t nr_memslots; int opt; TEST_REQUIRE(kvm_has_cap(KVM_CAP_GUEST_MEMFD)); TEST_REQUIRE(kvm_has_cap(KVM_CAP_EXIT_HYPERCALL)); TEST_REQUIRE(kvm_check_cap(KVM_CAP_VM_TYPES) & BIT(KVM_X86_SW_PROTECTED_VM)); - while ((opt = getopt(argc, argv, "hms:n:")) != -1) { + while ((opt = getopt(argc, argv, "hm:s:n:")) != -1) { switch (opt) { case 's': src_type = parse_backing_src_type(optarg); @@ -463,7 +471,7 @@ int main(int argc, char *argv[]) nr_vcpus = atoi_positive("nr_vcpus", optarg); break; case 'm': - use_multiple_memslots = true; + nr_memslots = atoi_positive("nr_memslots", optarg); break; case 'h': default: @@ -472,8 +480,6 @@ int main(int argc, char *argv[]) } } - nr_memslots = use_multiple_memslots ? nr_vcpus : 1; - test_mem_conversions(src_type, nr_vcpus, nr_memslots); return 0; From patchwork Mon Oct 23 19:15:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 157046 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:ce89:0:b0:403:3b70:6f57 with SMTP id p9csp1501063vqx; Mon, 23 Oct 2023 12:16:09 -0700 (PDT) X-Google-Smtp-Source: AGHT+IF4FpCHzwSmjCVxCGi6dh+nNuNQMC167rjoR/y84zBxofi+0010gISldN3XsgMnaL+jLxGz X-Received: by 2002:a17:902:e887:b0:1c5:cf7c:4d50 with SMTP id w7-20020a170902e88700b001c5cf7c4d50mr12098632plg.18.1698088568913; Mon, 23 Oct 2023 12:16:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698088568; cv=none; d=google.com; s=arc-20160816; b=PmE1+jfIwwGvPAfD0CuddV3nSo4pNR7+j3vTTFVswU6+LOp2L0SqA0NfTb1ww+XP0z ygZUE0LzqoUCFNWCN7oowCMkEjcdbSMQhYlLEJ8q/WP4PjjARDYYjZEZHuShEYljvL0G zxXnLtF0WG2zxnUtgwSjPapI5PMIKo1oRA0hM4mv9gSzyZebJUWu8pTGqdIBQTOItNEI etVeTvan6UoUddzdTKmtFKYzTFHY+fRQmvONEq8peYobd85MEeiVN6r96xr+qcrqBPra TaAeH/PIhbGJ5bf6PdHakrrohsiAfjnFItOaZL9Q5zhZxVjwzT3mo5eaP+8nVR/eBkuD dNVQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:reply-to:dkim-signature; bh=uBymkLXaIbVAZxvVvhT6TDkhrUvJ108nxwLs5k3r9KY=; fh=2IGrByZwJJHppcQOSnWVEv1kEE7zhmjxO9HROc9niOY=; b=Gh4uXWyBP+0MIIT8xt93NNdlRNm87OpATy9OhSaWeFAF3ITkHMnepzSHU6nNMbfovm l600hKkU3eUStS/46P80ygXoFoyqL0zcP+8imHNS5qmXZ7ERfZdN7cC22YfQdVuQLchl h+S1dGsnjvOOrEEH8+7m4D13vZocMl88yNnf0248xHU0i7yA2B4Rlu3gIqojW1sDqr9g 2pJE5mTLwkUBEiiWhPgu1h8ekFx+R8rxbQFTQnwq73feH7M2ys6+0H800x1pOdGEVp1a pBmdPk/pZ3k4chWiukJMA2yLYo9ndTd6HoaM9yMF5kdRVRw7tLeY9XaqAEm8thBbulDL 1fcw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=uZIUldtC; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id p6-20020a170902e74600b001c752a540cdsi6950509plf.145.2023.10.23.12.16.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Oct 2023 12:16:08 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=uZIUldtC; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 0F4F380408C6; Mon, 23 Oct 2023 12:16:08 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233024AbjJWTP6 (ORCPT + 27 others); Mon, 23 Oct 2023 15:15:58 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55548 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231998AbjJWTPs (ORCPT ); Mon, 23 Oct 2023 15:15:48 -0400 Received: from mail-yb1-xb4a.google.com (mail-yb1-xb4a.google.com [IPv6:2607:f8b0:4864:20::b4a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E6FD7110 for ; Mon, 23 Oct 2023 12:15:43 -0700 (PDT) Received: by mail-yb1-xb4a.google.com with SMTP id 3f1490d57ef6-d81e9981ff4so3438587276.3 for ; Mon, 23 Oct 2023 12:15:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1698088543; x=1698693343; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:from:to:cc:subject:date:message-id:reply-to; bh=uBymkLXaIbVAZxvVvhT6TDkhrUvJ108nxwLs5k3r9KY=; b=uZIUldtCFmWR/4Zm5R907+OzW1iVXo0Ev3zll4Ko/bdCvIk22hbb/gZTUBZ34R9+kf 2Kv2p7z/lZ1W54pvJzsvhT6BzYzv972nmXQznbmo1xBffP/AKSiPejRf6gqr9j/CKdoa CrF9OZiBYiTv1PHYKF0QnIYsTbtP5TgjcHism8RNgY4jVZDQ28MzGDXzhkbOcojkP3ev FTzUNxnM7H5gwexvipJr3HJdpjqCrqNS8f8th+vUm0n/Qo+tHb9wLEYk3SJ1VDnAToWE lDZ+5HCOscBj+UVtNgKmo4ySWmvolH7wHqZcRrbEwBpf+ibvESBcmbPN7QT2tYQkoEc6 yK+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698088543; x=1698693343; h=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; bh=uBymkLXaIbVAZxvVvhT6TDkhrUvJ108nxwLs5k3r9KY=; b=f0tRxEmb5NZWFT9lOBE2JqydRHUvObvzRGmGU6Gr35dXG7v7y0U8h4j8+rmWkm1uTx bORClnLdk4FUN+WgzJJKbBIGhG0eFi1nESK3sCM7K7/szfVciNyuoML1wxQcM2K9aUJl EzCUuaTEcMBKyEeHbA2YaeVqwsiuVoIKRSMOvzOBN3BRDsrf7hh2tbm+gnZehdHnU7PP wtEuyf3qOllaCtE1M08qjDcRET1v1UigH2r4gl+44Z2Im3lNdJ45JSfrNsaUcDwJgV0f LC3KqH+vxEL7cGija7bx7l6v0d+1W6ecp0w4uCECDmO3zj/qKXTEQnk5SqJdadi34Jlg 3sdQ== X-Gm-Message-State: AOJu0Yx9SoIpHxgROmLQOZm76zPA6YLG74dbSDBqvY2HcFkKeMV2h4TF 090565cbNf5JSYGaT9fW04P6dwnFUjI= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a25:d3d1:0:b0:d9a:6b0b:1bc8 with SMTP id e200-20020a25d3d1000000b00d9a6b0b1bc8mr199602ybf.11.1698088542952; Mon, 23 Oct 2023 12:15:42 -0700 (PDT) Reply-To: Sean Christopherson Date: Mon, 23 Oct 2023 12:15:31 -0700 In-Reply-To: <20231023191532.2405326-1-seanjc@google.com> Mime-Version: 1.0 References: <20231023191532.2405326-1-seanjc@google.com> X-Mailer: git-send-email 2.42.0.758.gaed0368e0e-goog Message-ID: <20231023191532.2405326-5-seanjc@google.com> Subject: [PATCH gmem 4/5] KVM: selftests: Use dedicated pattern for testing that mem is shared by default From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Michael Roth X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS,USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Mon, 23 Oct 2023 12:16:08 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1780574919315598246 X-GMAIL-MSGID: 1780574919315598246 Somewhat arbitrarily use 0xaa as the data pattern when testing that memory is shared by default. Inverting the bits of the init pattern (0xcc) yields 0x33, which just so happens to be the same as pattern #3, i.e. makes triaging failures on the default check unnecessarily difficult. Signed-off-by: Sean Christopherson --- .../selftests/kvm/x86_64/private_mem_conversions_test.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/private_mem_conversions_test.c b/tools/testing/selftests/kvm/x86_64/private_mem_conversions_test.c index 3f6d8d4dbc53..8a2f924fd031 100644 --- a/tools/testing/selftests/kvm/x86_64/private_mem_conversions_test.c +++ b/tools/testing/selftests/kvm/x86_64/private_mem_conversions_test.c @@ -122,13 +122,15 @@ struct { static void guest_test_explicit_conversion(uint64_t base_gpa, bool do_fallocate) { + const uint8_t def_p = 0xaa; const uint8_t init_p = 0xcc; uint64_t j; int i; /* Memory should be shared by default. */ - memset((void *)base_gpa, ~init_p, PER_CPU_DATA_SIZE); - guest_sync_shared(base_gpa, PER_CPU_DATA_SIZE, (uint8_t)~init_p, init_p); + memset((void *)base_gpa, def_p, PER_CPU_DATA_SIZE); + guest_sync_shared(base_gpa, PER_CPU_DATA_SIZE, def_p, init_p); + memcmp_g(base_gpa, init_p, PER_CPU_DATA_SIZE); for (i = 0; i < ARRAY_SIZE(test_ranges); i++) { From patchwork Mon Oct 23 19:15:32 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 157050 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:ce89:0:b0:403:3b70:6f57 with SMTP id p9csp1501148vqx; Mon, 23 Oct 2023 12:16:21 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHCamtcIa0P1x3y3a0dNHoLU34VhEAFGnRCZ2QdcE//w/TKn70594eBeiPhvGjPnS4Y7cmA X-Received: by 2002:a05:6a20:3c93:b0:13d:8876:4c97 with SMTP id b19-20020a056a203c9300b0013d88764c97mr558985pzj.16.1698088580553; Mon, 23 Oct 2023 12:16:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698088580; cv=none; d=google.com; s=arc-20160816; b=doezJZS7vz8JBnRjYOSMg7ZCv2Ig806pZHVqtcS7jKPCApg7eFRxCnQ30b2kgIJgcu ctZIidKyGCT4uN+F8FyHTHTBCeVYd8+aiF50f7oOQNm9mvqbMw6PyYhfPIE3uqOhjEs7 x3wlSqs4yw8cCcKgO/SLcvTt+B6pw9NZ8xqPN3SAmYIvxiWXT38sX3Iy+vCEWBJgdEuS nXloc1IOzebEPQkeK0vgviYKz6X+J3hz2CV/Jqsvli6a7llPbHDUFsWfK0e7gKlSUPr9 lrJ+YKzNgO/01YjzEDIhVGntzbv93RIhmF8sqqssMgKse+mA/44BlMHwToHZkGsV5J75 JChg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:reply-to:dkim-signature; bh=eiZt/+wI9eMzujwJOYn4T7DeU3jLiOyNdg1QxK6FtbU=; fh=2IGrByZwJJHppcQOSnWVEv1kEE7zhmjxO9HROc9niOY=; b=y0nCGFnH+GufeuLBZlGTT5dp7x66+VgLQNbJaNuzKs2Ij/0dsWFbvlwOuINWNetaRg omRiIgj+H3ZD6VXBDS3K54Od8N7XNraqXYCxYj+jtkFi9J8JzsCDLbdL3GFX3hTl3M10 NGq/XwG6QYls1FA6XaqMZujwiE9qxdNi7foxuYj38zojEVam5cOY3l8iKsyV8ZLZxbTs WK77IFvIRAr/ubZQPfypTwxqPhqLa6kUvV6I7wUYLyWlZ+4AO9igfbynVn7ovXi0Uvm0 W7L4RTg5Dq5NxnbX7284ZIdO8pq/qvSYNIBlS1y6IuJDwlXqbCo1FR4mzl1JWZG2VaV1 vd/w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=gOAWmjEg; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from lipwig.vger.email (lipwig.vger.email. [23.128.96.33]) by mx.google.com with ESMTPS id w13-20020a17090aea0d00b00273fa934cc1si9358464pjy.167.2023.10.23.12.16.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Oct 2023 12:16:20 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) client-ip=23.128.96.33; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=gOAWmjEg; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id 9476F807503B; Mon, 23 Oct 2023 12:16:18 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232285AbjJWTQD (ORCPT + 27 others); Mon, 23 Oct 2023 15:16:03 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55562 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232174AbjJWTPt (ORCPT ); Mon, 23 Oct 2023 15:15:49 -0400 Received: from mail-pl1-x64a.google.com (mail-pl1-x64a.google.com [IPv6:2607:f8b0:4864:20::64a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 37ECDD7C for ; Mon, 23 Oct 2023 12:15:45 -0700 (PDT) Received: by mail-pl1-x64a.google.com with SMTP id d9443c01a7336-1c9f973d319so26071885ad.0 for ; Mon, 23 Oct 2023 12:15:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1698088544; x=1698693344; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:from:to:cc:subject:date:message-id:reply-to; bh=eiZt/+wI9eMzujwJOYn4T7DeU3jLiOyNdg1QxK6FtbU=; b=gOAWmjEgZtYGEB0iSjm8I3RM8CCti76P/TArNciMEhBu4ewCA8rleY3mAdcliL/M8P rsDprRgvh9h/2ONyCx3r+05jng4vapHNZuftBVVDBkQAL4JKAU+4k6e/DAjra2OWADJK pzQL+1x0H5m5UofZbv8i17sSWXOZSWtupJH89sy0SEt0EL3ysT/qGLOuqP0k845IvBKJ TPVk7+KIrkQmK7stimX2zUBLDWItUzyvmOL13Kq+0nXvkGpWa81AnB3TLvhXG/XcIXpb 2Jp26uyP1nhha0F8/N8bbYPg+UFX48TH6ANJLZjN1ZtqQpzfY67CtM7aUpRrenSYhAv2 F8GQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698088544; x=1698693344; h=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; bh=eiZt/+wI9eMzujwJOYn4T7DeU3jLiOyNdg1QxK6FtbU=; b=C/LabVjQR8Dgc3D14VoMmpJfcgA2b4RQ3mPD4ZA55iQMO6kEOPeDYSiM1XqIBcEEhl STH34h1lgKh8ydKqUwobsJI9GnzE4rFXntTliL02lLqc0r9gINcjHkF6Jp1ra9yL46pD KswPpxU2kxE99rrL4exyH/YpuGaql7S5+nhOJuBxmQD3wEtxmfgdGBpQPtjdDWJwIKaZ sf+RVMElUmB3gmUOTBi+k8o9SZcmf4jh+tawirWXXL+SxgHF6p2NTVc5vzr9y9cGiKig IastuQ1hDupx85DnAOvOt68dVaJZYOJLlpA8OGAhFiIcC0hm/sYTFElRszx40apq+3d8 PMcg== X-Gm-Message-State: AOJu0YzsoaZInTThfishRbodGautaUpaWQICyGbz/pQ0i5KzYTnijVS6 sVpswlxI1HUvJvCDKQivyN7h123XBgA= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a17:902:c101:b0:1c9:f356:b7d5 with SMTP id 1-20020a170902c10100b001c9f356b7d5mr181646pli.7.1698088544608; Mon, 23 Oct 2023 12:15:44 -0700 (PDT) Reply-To: Sean Christopherson Date: Mon, 23 Oct 2023 12:15:32 -0700 In-Reply-To: <20231023191532.2405326-1-seanjc@google.com> Mime-Version: 1.0 References: <20231023191532.2405326-1-seanjc@google.com> X-Mailer: git-send-email 2.42.0.758.gaed0368e0e-goog Message-ID: <20231023191532.2405326-6-seanjc@google.com> Subject: [PATCH gmem 5/5] KVM: selftests: Verify default pattern was written in private mem conversion From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Michael Roth X-Spam-Status: No, score=-8.4 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_IN_DEF_DKIM_WL autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (lipwig.vger.email [0.0.0.0]); Mon, 23 Oct 2023 12:16:18 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1780574931385633663 X-GMAIL-MSGID: 1780574931385633663 Add a super paranoid sanity check in the private mem conversion test to verify that the initial "default" pattern was actually written. The check doesn't add meaningful test coverage, the goal is mostly to aid in debug if something goes sideways, e.g. to give the user confidence that the writes didn't somehow get dropped entirely. Signed-off-by: Sean Christopherson --- .../testing/selftests/kvm/x86_64/private_mem_conversions_test.c | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/testing/selftests/kvm/x86_64/private_mem_conversions_test.c b/tools/testing/selftests/kvm/x86_64/private_mem_conversions_test.c index 8a2f924fd031..91f343609e18 100644 --- a/tools/testing/selftests/kvm/x86_64/private_mem_conversions_test.c +++ b/tools/testing/selftests/kvm/x86_64/private_mem_conversions_test.c @@ -129,6 +129,7 @@ static void guest_test_explicit_conversion(uint64_t base_gpa, bool do_fallocate) /* Memory should be shared by default. */ memset((void *)base_gpa, def_p, PER_CPU_DATA_SIZE); + memcmp_g(base_gpa, def_p, PER_CPU_DATA_SIZE); guest_sync_shared(base_gpa, PER_CPU_DATA_SIZE, def_p, init_p); memcmp_g(base_gpa, init_p, PER_CPU_DATA_SIZE);