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 909BEC4167B for ; Wed, 6 Dec 2023 10:26:52 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 26EEC6B0095; Wed, 6 Dec 2023 05:26:52 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 21EFE6B0098; Wed, 6 Dec 2023 05:26:52 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0E5EC6B009A; Wed, 6 Dec 2023 05:26:52 -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 F0B056B0095 for ; Wed, 6 Dec 2023 05:26:51 -0500 (EST) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id BBBD5140180 for ; Wed, 6 Dec 2023 10:26:51 +0000 (UTC) X-FDA: 81536015022.18.A56A726 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf29.hostedemail.com (Postfix) with ESMTP id 15427120022 for ; Wed, 6 Dec 2023 10:26:49 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=arm.com; spf=pass (imf29.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1701858410; 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; bh=YMYHAutnNYJ5EoXt1oRAsc9ThGZQyZJY0Z3BTXKoQw8=; b=uoV+vxoMTu0gmJCqCg+pKOBYS2K3MYg3nDCQNivLSDTe84I3t6xBpLTivr9hiQOgPVd8Yl NtFBe932BdvDu9TfC50CF+pZyCG/Wa7jAqRyejS7UZF+hv3n0FoXmpCrilCC3caQCqQPPe 3EpyTYlV1tvA+LClbqeSdIRLlA8P1dw= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=arm.com; spf=pass (imf29.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1701858410; a=rsa-sha256; cv=none; b=pvr17FBfHjzVnWfjr16Q+9nx+6zkqK16Ema0jtoUp+eM4B+Dxl0EWMzPLWXvwRp2rELbB5 3IM9+imeIhw2+rKALmcnefs6apThhzfoP/igSNoQQbopAInqB4ZM7F+ryw9/+/Ag5FvSwK azugkKt3Q+Ucm6TkwA97YvqE31PS6eg= Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 4ABAD1474; Wed, 6 Dec 2023 02:27:35 -0800 (PST) Received: from [10.57.73.130] (unknown [10.57.73.130]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 996183F762; Wed, 6 Dec 2023 02:26:47 -0800 (PST) Message-ID: <1ccb1e57-1aef-4797-b6d2-ab59efa488db@arm.com> Date: Wed, 6 Dec 2023 10:26:46 +0000 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 2/2] arm64: mm: Always make sw-dirty PTEs hw-dirty in pte_modify Content-Language: en-GB To: James Houghton , Steve Capper , Will Deacon , Andrew Morton Cc: Mike Kravetz , Muchun Song , Anshuman Khandual , Catalin Marinas , linux-mm@kvack.org, linux-kernel@vger.kernel.org References: <20231204172646.2541916-1-jthoughton@google.com> <20231204172646.2541916-3-jthoughton@google.com> From: Ryan Roberts In-Reply-To: <20231204172646.2541916-3-jthoughton@google.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: 15427120022 X-Rspam-User: X-Rspamd-Server: rspam02 X-Stat-Signature: odnhrjr1i47zr4mzdr3fufqg6yqn6h49 X-HE-Tag: 1701858409-341382 X-HE-Meta: U2FsdGVkX19j82mpsFZb/Cewrb3zmilgrKwNZi/wn0yjETu3jI5t96hlp3NpXA/uqO2sKDGQwCTNc7SdyWmEN0pGz1lnG1EdeqCVZ36YCx+y5usO4ZM1XPFS9oZS5BnkjfrpyV1UlSFL0qTw62xobEQ1jtUyuf74dO2BtSA8LR79OzUYHfj/pfDOphYVM20nLM4imDTpWm2mlxVyuZMgXeSU+g0hVcTeMtr2iKGvgesGHwcBNBmQsuaSt60VkqO3/00isrt/xZqWGlKwlGMZOTDI1hefR+BSUjilV2DN9WpswLMgzSqfpda5WNo+iPCBQr5y7qUcB/54gJ6gR2Kac1ba+u17ilccpML3J9XWXy5V+q5/LHeKEVUUpA7FNIAq9lFv6JBC3ONjfUQub7qzFAgLTnczcqBJOWoALnmp4ZsXULtsnGHHZ4Px0ccTe1iNV/WFitp+WCUHQBp9RKqdwMPPg2UMsYElyA2CbIP57QHa1VoQ7pDgIW6bdPXoIKAKy1esutGwd9hQvMsFAAB/sk499HS6qx6ICQOCAxxncIM+0WJdCAb4d4FejRl/lPUMITquQU6cgZmKVGjKc3Yjp9hXtf23OtVwsJgq3F37fHHlrYKSWTrbX25TNOzSiyQVpXB2hoHNiMPGYMzNIzN/opYOlDVSA0yRWtFFEa/TNLeVA7rz7WEM2XbbaLq1e5CrCQSz0nqSGL5CLvzOA3cGTKvRucFIOVWxzXjnnuUSn//XkG+mImQM2zxk1LYLUdedtTPEpvE6rlK0u0PY6BQhVIJYJNX9AitgJs4O76j9rKfc1dQmOZX9KuH6ivmI1diCMzYsCftRzYShesyAySNo83T3IhPdvLWToBbzGD3/rlXXXbbS0t3mmpcfutI/tiCSUFqKFSciX46m5eACSVtaWUGIfc+JjY8QFUF/q89P1jSeGzgvquhUL4fxvwYoRC+a1MFXIsztOrpTRR8wCDQ qVeYmJNk mHsSOSnbggT/ZkSZwVolboWDKRJiziX65Yo3aBY/iFlJnyy12hfY4UYqPsX2eupvMxY08OXPfRVL0znDNdXbIGaN+n4lnwVjmxk2MkwwLGWJ5cEC9dQL+pU3LOfxJImwurGZrSO2l3TvBkODDPi3gykvW++sKRcg2NFMx6VCG9uQNK2ktWK6nORpUzxdrMaMFVh0VoXqKwqmryQw2SVM6nZSMlcqPKDFNdvcBhWIBfRHSOfvEvw2tc22I8l6F4RRRwnbQ9XgOBWVM3aZyD7kLJosBLQ== 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: On 04/12/2023 17:26, James Houghton wrote: > Make it impossible to create a sw-dirty, hw-clean PTE with pte_modify. > Such a PTE should be impossible to create, and there may be places that > assume that pte_dirty() implies pte_hw_dirty(). > > Signed-off-by: James Houghton Reviewed-by: Ryan Roberts > > diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h > index b19a8aee684c..79ce70fbb751 100644 > --- a/arch/arm64/include/asm/pgtable.h > +++ b/arch/arm64/include/asm/pgtable.h > @@ -834,6 +834,12 @@ static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) > pte = set_pte_bit(pte, __pgprot(PTE_DIRTY)); > > pte_val(pte) = (pte_val(pte) & ~mask) | (pgprot_val(newprot) & mask); > + /* > + * If we end up clearing hw dirtiness for a sw-dirty PTE, set hardware > + * dirtiness again. > + */ > + if (pte_sw_dirty(pte)) > + pte = pte_mkdirty(pte); > return pte; > } >