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 kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1D067C7EE23 for ; Fri, 24 Feb 2023 17:37:47 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 41B066B0078; Fri, 24 Feb 2023 12:37:47 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 3CA506B007B; Fri, 24 Feb 2023 12:37:47 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2BA7E6B007D; Fri, 24 Feb 2023 12:37:47 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 1DA046B0078 for ; Fri, 24 Feb 2023 12:37:47 -0500 (EST) Received: from smtpin27.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id E336940BAD for ; Fri, 24 Feb 2023 17:37:46 +0000 (UTC) X-FDA: 80502892932.27.8188ADA Received: from mail-vs1-f49.google.com (mail-vs1-f49.google.com [209.85.217.49]) by imf17.hostedemail.com (Postfix) with ESMTP id 2445740002 for ; Fri, 24 Feb 2023 17:37:44 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=rdlXLkxE; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf17.hostedemail.com: domain of jthoughton@google.com designates 209.85.217.49 as permitted sender) smtp.mailfrom=jthoughton@google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1677260265; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=EWzoZiGGKJU76InhrcpfnYDyqrXlTAbTxm3TVdiVpGQ=; b=gZMeBofEpIGxuUcqq6Iu2FB9o164yWzBfVVqoHqiCqSHT3O13HNRuOEAdFhw4N3WRDIF2r 5q+bMBOxX0baHF6dRbJ9eoXllU3bH4tkIf+iZTcXDzBp41JHnU89h9s9QSeD6kC9Euw113 l5wzo9eah8TAPwDYFMXqRVlhBG2QGjU= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=rdlXLkxE; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf17.hostedemail.com: domain of jthoughton@google.com designates 209.85.217.49 as permitted sender) smtp.mailfrom=jthoughton@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1677260265; a=rsa-sha256; cv=none; b=D/6lt/HZ6H7vIUBOFNTXhWiYvcVsVWn5buC4GtxnXPoXkJR7Pn5e65QRrcLmC9UuExXT/1 MfM7Cklw0vDARa/A8DbfzTezA+qNp6hAI6+taiEGOk7/qWTvt4IZFSp5tsqXUSM3pghXlQ 0epGJH0XE18/frEDBhkLnwx8srX85sU= Received: by mail-vs1-f49.google.com with SMTP id d20so372080vsf.11 for ; Fri, 24 Feb 2023 09:37:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=EWzoZiGGKJU76InhrcpfnYDyqrXlTAbTxm3TVdiVpGQ=; b=rdlXLkxEkG9cQGBs2asmja/R6u0fRQWO7Lr54YW0AujGE+cnUoZ9o/o73COB3fUhHn Y/duNkM3PlYevse6re7o2nFCYYW3PxT23MLPbgvnnggud59/p+ygCbTBrBYFoLwG6DNA Hwpmr1HPSsXmIL80Zy0fVi7wfJ6GKqsM1QVfve8jYi0+glaEScOrdCpBe//CXNkOU5Nn M0nPUqQTG0S7WR8STO/pkFHcnXKXdfMKSncWQghRBcydDWxCwbsdATp+u3J37lgt2Cap 9l3VK95sek0xgJ4jOjQrRr/DyWqwoaEqXow7F0PBCEy4AsiONsesXUuYEkvNuxZwQPqv Lp7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=EWzoZiGGKJU76InhrcpfnYDyqrXlTAbTxm3TVdiVpGQ=; b=1H7HlDobgqgba1ONKJ7JWToxBWn+YQViSC0Qk57ZrNweb/D4Z5SGw6pYs7ljqcgL/m hcb5G/nQNVmv40QTZanKW2ni46d9o9uOpfxnntAFAAWZjI5yTg7sUy3hUxhV2wOEgjzw tX+C2wy7bxJemK9RhQ+QZjY75i0lAh8Se5sd7pMOZR8smPpLjdTlCZ5C0qTO3aYUDvlK nvmX8tda65mJ+4Flx2T4fCQg/7dQbu7/lm2jbuIjS7FBYMCqGbt21LAs2Ooz96iaQwHz mn3qHJXDs63s2Eyb3bpaJSNYOjR9tg7mBbaohkuk8rL8Konq46wsUTCSSSk3GsD1zH9O 6hvw== X-Gm-Message-State: AO0yUKW1lzcCosORoA+L6gqb8/cBs/tOd5BFaUG+e4Tg2vNXj6t2V/rF 8yhAysy5t0ga4OvhKIHccimCtxI+dfzFwhknOEtunQ== X-Google-Smtp-Source: AK7set+CQuj6d6BY8B+pqCObyMjUGt/K6CzwPWQvAyE66Bi1xIcAnW7ZLX/TDZpKnKjRmQLbxzmEq22JsZRrzyqK5Sk= X-Received: by 2002:ab0:38d3:0:b0:67a:2833:5ceb with SMTP id l19-20020ab038d3000000b0067a28335cebmr507770uaw.0.1677260264194; Fri, 24 Feb 2023 09:37:44 -0800 (PST) MIME-Version: 1.0 References: <20230218002819.1486479-1-jthoughton@google.com> <20230218002819.1486479-47-jthoughton@google.com> In-Reply-To: <20230218002819.1486479-47-jthoughton@google.com> From: James Houghton Date: Fri, 24 Feb 2023 09:37:08 -0800 Message-ID: Subject: Re: [PATCH v2 46/46] selftests/mm: add HGM UFFDIO_CONTINUE and hwpoison tests To: Mike Kravetz , Muchun Song , Peter Xu , Andrew Morton Cc: David Hildenbrand , David Rientjes , Axel Rasmussen , Mina Almasry , "Zach O'Keefe" , Manish Mishra , Naoya Horiguchi , "Dr . David Alan Gilbert" , "Matthew Wilcox (Oracle)" , Vlastimil Babka , Baolin Wang , Miaohe Lin , Yang Shi , Frank van der Linden , Jiaqi Yan , linux-mm@kvack.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: 2445740002 X-Rspamd-Server: rspam09 X-Rspam-User: X-Stat-Signature: nhijjsaz5g39znhbf3kh17ux6zz5fspw X-HE-Tag: 1677260264-94617 X-HE-Meta: U2FsdGVkX1+Fnp6iIy0zmKogOMbNPh0jfVZtn1pXYaTClu7k8X6ybPcHj5934E3gpbHWb1vjaI9rvwSD4pXlFR7x+lf/Qrj/i3VrzeTWn+hTd5F9N6+0INKWG9jEAKIHH4zJm6qs0IKgybq2V7xcs3cro0bdHzyu6k35vF6hl34wdCt0V5wbbEQcTJZSGKuYv4GNdfc1sOjkH47NV/HMAhv7zxNKAqNfLWUD2IY54TXzj1wultngwk3dZ7hENS0GVczKmD+Xu2/yKGAwKsvfkeraXUKS4HrALekoHKqSHyguPszOg/nqIMpksdAa8MzYIM73MzBOvLgz8axge//QMErtQJEb92plmrvg1GJe7EtEQUgjZAtZ+KHXFf3cFEeHNpyP/KAfDKTjC7861izu3w2ZZ4dIZTySzeGRviMCwB6bUzoO71l0Ctp7GVCqCuSTwxMhPRDkOBmdrhmh/q2XD9PVjpTtDnP92RcGP2RrkKVh777ufmahD6CQhDUNOFadBE+bX//oFC7Lkx2ngCEOKWQ2/LvCNdU+zMOgf4a5FMbCEJXovBfblgMeyoQ3ht7QIUtcjuyrXe1ME/5eMlm3/o9EAEhOdNDHh3h3QA5bj9sv6wNhdFIRZ3FHa0NGxGnAsgNhM0sr9xROsXFPL2LvHs97IbnWiBvaqv3AXqusuoCL0ypa6mMmWdLkMXSm+VXDZM5UZlRCXLDGJGWe956OVIy3b5RNj9lPvbTND/NzMkxthESTDerbmX0KKiXerkTlf2CNX6Pjaf1npqrze5jnYWRiuDcFSfvXHBpxKfmInyQlrKHm+2uyimEfH8hfzrLDjANJLaiPFIidXWeKbIg0uGyWKpkEPEhKnA6D05Ly046R5kKUgxTGtwv0i+4uOxLeQOsbjB/NeNOX1mzbniN6hVfkS7K+5oIBicBnFyeVMyODcmshXMLy3N2bXanYUNA0PU8rZvdPhxLHvBTYjLT OWkwvj8q 8CZo/I8nZ3M1/FT9OzeLsENouKhBZXDchy9IPGo8/x7Pkoy4S4MXDdtIbr9vnCgxBUy6QGVuEzvqXSuCXLHlK6coQhSxa4J73wLD7OGnAkh7B5Gmfx9sdXoTh7R1uUuEdMgLxWY3XsGq/7GZ3aii469aekzas9tfnK+UaIsm6BZTnpbO9w1d8B6lN5R6z2nMxXk9p963a1jESQdGqzzpBlrg38uhXKXJtchV1hfIla8KPyr2gCWQU6Rj0qNP87Ke/bcXOu8/Dsly1VlI9s72DOyGQYG7eFXM4uEot 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: > +static int test_fork(int uffd, char *primary_map, size_t len) > +{ > + int status; > + int ret = 0; > + pid_t pid; > + pthread_t uffd_thd; > + > + /* > + * UFFD_FEATURE_EVENT_FORK will put fork event on the userfaultfd, > + * which we must read, otherwise we block fork(). Setup a thread to > + * read that event now. > + * > + * Page fault events should result in a SIGBUS, so we expect only a > + * single event from the uffd (the fork event). > + */ > + if (read_event_from_uffd(&uffd, &uffd_thd)) > + return -1; > + > + pid = fork(); > + > + if (!pid) { > + /* > + * Because we have UFFDIO_REGISTER_MODE_WP and > + * UFFD_FEATURE_EVENT_FORK, the page tables should be copied > + * exactly. > + * > + * Check that everything except that last 4K has correct > + * contents, and then check that the last 4K gets a SIGBUS. > + */ > + printf(PREFIX "child validating...\n"); > + ret = verify_contents(primary_map, len, false) || > + test_sigbus(primary_map + len - 1, false); > + ret = 0; > + exit(ret ? 1 : 0); > + } else { > + /* wait for the child to finish. */ > + waitpid(pid, &status, 0); > + ret = WEXITSTATUS(status); > + if (!ret) { > + printf(PREFIX "parent validating...\n"); > + /* Same check as the child. */ > + ret = verify_contents(primary_map, len, false) || > + test_sigbus(primary_map + len - 1, false); > + ret = 0; I'm not sure how these 'ret = 0's got here -- they will be removed. > + } > + } This else block also runs when fork() fails; we need to fail the test instead. > + > + pthread_join(uffd_thd, NULL); > + return ret; > + > +}