Received: by 2002:a05:6a10:413:0:0:0:0 with SMTP id 19csp1942295pxp; Mon, 21 Mar 2022 08:07:46 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyC8yxQH0/B7EmobMCw8fNrO6CYazeFKabMVgdFcgz+IBQZkfBDQMb8Ny1cF/Kw3mp7kIZN X-Received: by 2002:a17:906:4cd2:b0:6c8:7a90:9c7 with SMTP id q18-20020a1709064cd200b006c87a9009c7mr21130640ejt.439.1647875264865; Mon, 21 Mar 2022 08:07:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1647875264; cv=none; d=google.com; s=arc-20160816; b=1IJv2Jto06i3RKYJc1D+26wJQhbPJ1ETQGm/JeOQpgNq7sxzQOdT2YSx7WbTKFnd9G Wl/5Z0+e61u/luZTIwXa7PiOB9HXuATNEd9Fs8t3rz4CV3x1F1w/Rs7G8qYqHyrxefe0 CIBU4p7mzkjUV1VJLGuGvhk1791fYtcBKEk9Vg+QDXtdKIR0acZVf4kDm7DMSzx176Lc poEWr9Gre5COhgYWPL49Xcn5cx66yPSTl383ySw50hT+Lr+IXXA3y66ZW+/bCBuhdH3M sfMnbuApJSweKw+tnNtpyBOrZrkDPh0/fXBvKo85RNzHD8ILHAAhHvoRNd9vIXpsoELt aBoQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:user-agent:message-id:in-reply-to :date:references:organization:subject:cc:to:from:dkim-signature; bh=WE6ZgMe7GSr2yX4MrfkKRu81tPdb0G7MRnAuzlJlPa8=; b=sNp6VV/CpY+AltXuk2oYPCikVgtfSjA70pY+az7KjzkGND+m8d0qcU5Ue7DgiOKGte P1ZOKKFqEW7KLg6+2bpVkBjwx0k2GyU7xxzNTjFPelcqDdelbKdA18gMObqwHpDPbSfS +sL54zR/Hm6Qd+7PTeiJoOm90rZ0UfN4pgHPS63S2gr+QU/Kc9MmwTmZ0d1ZnkF/Ohvm RPmdEhSUvRac2BGzhx6LKClKpJEl+eca+3CZD4J2qc+7SlO6vFdMmT7YU+Oui9GZOk9L JLB18jAiQx5rTvsa6suS7T8uPLmEDlPwyZLRu/Nt87VHUlb9gmAazdxdg+xB+zDWiDmZ wEyA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@collabora.com header.s=mail header.b=jM4edW6w; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=collabora.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id sb27-20020a1709076d9b00b006df76385c2dsi8072000ejc.205.2022.03.21.08.07.17; Mon, 21 Mar 2022 08:07:44 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@collabora.com header.s=mail header.b=jM4edW6w; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=collabora.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240339AbiCRTZM (ORCPT + 99 others); Fri, 18 Mar 2022 15:25:12 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35090 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239449AbiCRTZK (ORCPT ); Fri, 18 Mar 2022 15:25:10 -0400 Received: from bhuna.collabora.co.uk (bhuna.collabora.co.uk [IPv6:2a00:1098:0:82:1000:25:2eeb:e3e3]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7E899304AC5; Fri, 18 Mar 2022 12:23:50 -0700 (PDT) Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: krisman) with ESMTPSA id EF71D1F45C19 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1647631428; bh=WlSxsl1AsukIIoT+HgzKCmviZWgGsHJPvRrOsuv2jMo=; h=From:To:Cc:Subject:References:Date:In-Reply-To:From; b=jM4edW6w09UWqtmSOGEzQOsPEfY7cXe6gIGCHOxMZ8c6Hv82Sf4WL9YJL10v99060 4w8ErN+CrDUNSGP6uJBC3TycxdVc28S5a/5RB3ENmDEH/FBNF9sYd+Hk0kZfLuYtdI htUPBgQvPM215lCR+lJ6iLDxdi+E2MeIGtiFqAcM6t6lhqazkBrThN0cAOSVvQk1p3 dJIRPlMw2Z/9nWO4cnp78zSe8R0Llz4N9v6cI9Yrj4hCgiOGFYvxzUWojB3LaMFob3 1rTZdwbc5zeeWClc/PQELSFfvpaH1bnfX7D+jYg/e87DrpoprnTCE1NjOk4YPVE1iW EZ4Ynd4Mw6Xjw== From: Gabriel Krisman Bertazi To: Muhammad Usama Anjum Cc: Andrew Morton , Shuah Khan , kernel@collabora.com, david@redhat.com, Will Deacon , linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-kselftest@vger.kernel.org Subject: Re: [PATCH V5 2/2] selftests: vm: Add test for Soft-Dirty PTE bit Organization: Collabora References: <20220317103323.94799-1-usama.anjum@collabora.com> <20220317103323.94799-2-usama.anjum@collabora.com> Date: Fri, 18 Mar 2022 15:23:43 -0400 In-Reply-To: <20220317103323.94799-2-usama.anjum@collabora.com> (Muhammad Usama Anjum's message of "Thu, 17 Mar 2022 15:33:22 +0500") Message-ID: <87ilsbyshs.fsf@collabora.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE,UNPARSEABLE_RELAY 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 Muhammad Usama Anjum writes: > new file mode 100644 > index 0000000000000..3153ebac6909b > --- /dev/null > +++ b/tools/testing/selftests/vm/soft-dirty.c > @@ -0,0 +1,146 @@ > +// SPDX-License-Identifier: GPL-2.0 > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include "../kselftest.h" > +#include "vm_util.h" > + > +#define PAGEMAP_FILE_PATH "/proc/self/pagemap" > +#define TEST_ITERATIONS 10000 > + > +static void test_simple(int pagemap_fd, int pagesize) > +{ > + int i; > + char *map; > + > + map = aligned_alloc(pagesize, pagesize); > + if (!map) > + ksft_exit_fail_msg("mmap failed\n"); > + > + clear_softdirty(); > + > + for (i = 0 ; i < TEST_ITERATIONS; i++) { > + if (pagemap_is_softdirty(pagemap_fd, map) == 1) { > + ksft_print_msg("dirty bit was 1, but should be 0 (i=%d)\n", i); > + break; > + } > + > + clear_softdirty(); > + // Write something to the page to get the dirty bit enabled on the page > + map[0] = i % 255; you don't need this mod at all but at least it should be 256 :). I think Either 'map[0] = !map[0]' or keeping the original 'map[0]++' is fine. > + > + if (pagemap_is_softdirty(pagemap_fd, map) == 0) { > + ksft_print_msg("dirty bit was 0, but should be 1 (i=%d)\n", i); > + break; > + } > + > + clear_softdirty(); > + } > + free(map); > + > + ksft_test_result(i == TEST_ITERATIONS, "Test %s\n", __func__); > +} > + > +static void test_vma_reuse(int pagemap_fd, int pagesize) > +{ > + char *map, *map2; > + > + map = mmap(NULL, pagesize, (PROT_READ | PROT_WRITE), (MAP_PRIVATE | MAP_ANON), -1, 0); > + if (map == MAP_FAILED) > + ksft_exit_fail_msg("mmap failed"); > + > + clear_softdirty(); > + > + /* Write to the page before unmapping and map the same size region again to check > + * if same memory region is gotten next time and if dirty bit is preserved across > + * this type of allocations. > + */ This reads weird. It should *not* be preserved across different mappings. Also, we are not testing if the same region is reused, we are depending on it to test the sd bit. /* Ensures the soft-dirty bit is reset accross different mappings on the same address. */ > + map[0]++; This is inconsistent with the other two tests. > + > + munmap(map, pagesize); > + > + map2 = mmap(NULL, pagesize, (PROT_READ | PROT_WRITE), (MAP_PRIVATE | MAP_ANON), -1, 0); > + if (map2 == MAP_FAILED) > + ksft_exit_fail_msg("mmap failed"); > + > + ksft_test_result(map == map2, "Test %s reused memory location\n", __func__); if map != map2, the test itself is broken, meaning we should skip it, not fail, i guess. -- Gabriel Krisman Bertazi