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 5CCA4C4332F for ; Thu, 17 Nov 2022 02:30:11 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C1B386B0072; Wed, 16 Nov 2022 21:30:10 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id BCB0B8E0001; Wed, 16 Nov 2022 21:30:10 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A93126B0074; Wed, 16 Nov 2022 21:30:10 -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 9AA156B0072 for ; Wed, 16 Nov 2022 21:30:10 -0500 (EST) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 62113140E41 for ; Thu, 17 Nov 2022 02:30:10 +0000 (UTC) X-FDA: 80141354580.06.542F643 Received: from mail-io1-f51.google.com (mail-io1-f51.google.com [209.85.166.51]) by imf03.hostedemail.com (Postfix) with ESMTP id ECFE52000B for ; Thu, 17 Nov 2022 02:30:08 +0000 (UTC) Received: by mail-io1-f51.google.com with SMTP id s10so414668ioa.5 for ; Wed, 16 Nov 2022 18:30:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hev-cc.20210112.gappssmtp.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=MKjMIVgBYuixUb7aB0jNqDpf5b0ztY7pCeOHcrf1GyA=; b=yOElW9RE8d35nyhq6uqy5BLT0fmiRJym4fWK8qJLQCPSvlthD/DRbfHH3Jr/LcHE4o WokFjUnyrOfFdgoFlY+kQnFRtHkCktBCtYHSnaM+V577CDv0/MtM509lzD4OfA7Qj/mh 61hDpOWrmqepRBbby+Ce3bzwViBxKq80uEb3BOmLjtOUtiPaNhB0S2IcoAE+cPHdCDBK +z5MfsO0a2O85qNVmk5VEVWbdx5Tss8gqlvHt6IaRQUYx91q2ijnJ6BfaPwBSWTaGIBV L2IW7QbHvcx6sh7TxIceZZVqQKECuy1DYw6wHvZeFkqBAGKkFAt+tJdGiEVQhMhNV8H1 a1Aw== 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=MKjMIVgBYuixUb7aB0jNqDpf5b0ztY7pCeOHcrf1GyA=; b=LLXzE+IM2AGt5O4oW33w4Y2zlWY7RVy1rppCjRJnDR3dxV+CwSg0pkqT0M9UsAEVzp bGPCk3OIDFMFXzPD5NiGOs12MEiz389bQHpCEj51sPqP8aC+BzoYb/B0HpIS85lV7NLo 2TDsFE2qIiR9CTyg6+wl52BHQTBBFBgEzZzRogoTE3s/Qdsis/7cY6xvOuzakfdyHgbC TQ4kwN4K5NY32SkRsEBhk6MV9JfFWNooeq0ATn7G0/0efeFtL6Jrs5sV3alqiydH0Z42 A2e9sr1LVnY2n7gZEB7oPUub22h2KwkNmgum0P0LRigg/ZU5rUzikEBu1g9rr5APaJ5p CNYg== X-Gm-Message-State: ANoB5pnUNQfIvzRNsFMfVJFdICnpDiTfsy1FW+jl2304RPMpHl916+LW vvhyL5xFP3HQ/svv4gXML6ED6wS/w/CGIuSKKICnxA== X-Google-Smtp-Source: AA0mqf73fC8beOPRO7rLuNjcmjOH2r4YzNahzPf8xG2BXK+wHE+OQz6MN7Inu7jfaRE6jhn7IP/pmAyvkIJ9bAP/8D4= X-Received: by 2002:a5d:9283:0:b0:6ba:13c6:b74 with SMTP id s3-20020a5d9283000000b006ba13c60b74mr465930iom.86.1668652208124; Wed, 16 Nov 2022 18:30:08 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: hev Date: Thu, 17 Nov 2022 10:29:57 +0800 Message-ID: Subject: Re: Test case for "mm/thp: carry over dirty bit when thp splits on pmd" To: Peter Xu Cc: Anatoly Pugachev , Thorsten Leemhuis , Sparc kernel list , linux-mm Content-Type: text/plain; charset="UTF-8" ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1668652209; 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=MKjMIVgBYuixUb7aB0jNqDpf5b0ztY7pCeOHcrf1GyA=; b=pFwQRsrJ+CWvAvoK3lv1AXoo15Ij+O5sBuizniPTXzD05uOxdXX6t+5gfWRnWvnIfG6sxh zSgMi6NqMPJXOtU5/3kTwyoLSnRgI/I0jVxl8MaTCY1hbwjzTz+FlhGCbgz8PpzkdnmaLU u8zq7wbuzciLdXXKZFTVPu4YipjdA6Q= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=hev-cc.20210112.gappssmtp.com header.s=20210112 header.b=yOElW9RE; spf=pass (imf03.hostedemail.com: domain of r@hev.cc designates 209.85.166.51 as permitted sender) smtp.mailfrom=r@hev.cc; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1668652209; a=rsa-sha256; cv=none; b=YFmpfW7unBRuucWKwUI1QkVjCGf87S9YTaKtdCxXuIFxLdwd6PAdAdO5L/C+aY8SjLX2PN aLNxb6UifyWRF+Kluppj/9d4nAkB7t37J1wC0R4IS6s8I+KXIdOvD2anW99YhK3uYV5cwu jVyUul53fQWH28s30VVevM0Y2X0ZmhA= X-Rspam-User: X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: ECFE52000B Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=hev-cc.20210112.gappssmtp.com header.s=20210112 header.b=yOElW9RE; spf=pass (imf03.hostedemail.com: domain of r@hev.cc designates 209.85.166.51 as permitted sender) smtp.mailfrom=r@hev.cc; dmarc=none X-Stat-Signature: wykb88my735f5z3gun9k4ba9ukq5wrm3 X-HE-Tag: 1668652208-706896 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000011, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: Hi Peter, On Thu, Nov 17, 2022 at 12:25 AM Peter Xu wrote: > > On Wed, Nov 16, 2022 at 01:45:15PM +0300, Anatoly Pugachev wrote: > > On Wed, Nov 16, 2022 at 11:49 AM hev wrote: > > > > > > Hello Peter, > > Hi, Hev, > > Thanks for letting me know. > > > > > > > I see a random crash issue on the LoongArch system, that is caused by > > > commit 0ccf7f1 ("mm/thp: carry over dirty bit when thp splits on > > > pmd"). > > > > > > Now, the thing is already resolved. The root cause is arch's mkdirty > > > is set hardware writable bit in unconditional. That breaks > > > write-protect and then breaks COW. > > Could you help explain how that happened? > > I'm taking example of loongarch here: > > static inline pte_t pte_mkdirty(pte_t pte) > { > pte_val(pte) |= (_PAGE_DIRTY | _PAGE_MODIFIED); > return pte; > } > > #define _PAGE_MODIFIED (_ULCAST_(1) << _PAGE_MODIFIED_SHIFT) > #define _PAGE_MODIFIED_SHIFT 9 _PAGE_MODIFIED is a software dirty bit > #define _PAGE_DIRTY (_ULCAST_(1) << _PAGE_DIRTY_SHIFT) > #define _PAGE_DIRTY_SHIFT 1 _PAGE_DIRTY is a hardware writable bit (bad naming), meaning that mmu allows write memory without any exception raised. > > I don't see when write bit is set, which is bit 8 instead: > > #define _PAGE_WRITE (_ULCAST_(1) << _PAGE_WRITE_SHIFT) > #define _PAGE_WRITE_SHIFT 8 _PAGE_WRITE is a software writable bit (not hardware). As David said, In __split_huge_pmd_locked, the VMA does not include VM_WRITE, entry = maybe_mkwrite(entry, vma); so the pte does not include software writable bit (_PAGE_WRITE). and the dirty is true, if (dirty) entry = pte_mkdirty(entry); so the incorrect arch's pte_mkdirty set hardware writable bit(_PAGE_DIRTY) in unconditional for read-only pages. Regards, Ray > > According to loongarch spec: > > https://loongson.github.io/LoongArch-Documentation/LoongArch-Vol1-EN.html#section-multi-level-page-table-structure-supported-by-page-walking > > Bits 1 & 8 match the spec D & W definitions. Bit 9 seems not defined but I > didn't quickly spot how that's related to the write bit. > > > > > > > Here is a simple and fast testcase (It may be helpful for sparc64): > > > https://gist.github.com/heiher/72919fae6b53f04cac606a9631100506 > > > (assertion: c sum == 0) > > > > Just tried on my sparc64 VM - fixed vs old (non-patched) kernels... > > > > fixed kernel (6.1.0-rc5) running ./a.out: > > mator@ttip:~$ ./a.out > > c sum: 0 > > p sum: 35184372088832 > > c sum: 0 > > p sum: 35184372088832 > > c sum: 0 > > p sum: 35184372088832 > > c sum: 0 > > p sum: 35184372088832 > > c sum: 0 > > p sum: 35184372088832 > > ... > > > > old (non-patched) kernel (6.1.0-rc4) : > > mator@ttip:~$ ./a.out > > c sum: 35150012350464 > > p sum: 35184372088832 > > c sum: 35150012350464 > > p sum: 35184372088832 > > ... > > Thanks for the quick run, Anatoly. Obviously I went the wrong way before > on the code patching. It seems we have more chance fixing this. > > -- > Peter Xu >