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 F2598C35FF3 for ; Mon, 17 Mar 2025 07:03:35 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 806E8280002; Mon, 17 Mar 2025 03:03:33 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 7B6BF280001; Mon, 17 Mar 2025 03:03:33 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6A621280002; Mon, 17 Mar 2025 03:03:33 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 4DE43280001 for ; Mon, 17 Mar 2025 03:03:33 -0400 (EDT) Received: from smtpin03.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 0E26A81985 for ; Mon, 17 Mar 2025 07:03:34 +0000 (UTC) X-FDA: 83230152348.03.1D604C0 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf09.hostedemail.com (Postfix) with ESMTP id 3518B140009 for ; Mon, 17 Mar 2025 07:03:32 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=arm.com; spf=pass (imf09.hostedemail.com: domain of dev.jain@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=dev.jain@arm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1742195012; 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=NuINszZZf6qPcKMHWJbOwEGPrbdu+DXz9n3XWzpFf2g=; b=ipvloLHyeHZebEpLQ7jZfXRwKoxKxFFFl2s4oj+Ph/U8L+p0DPXQsDSmus4r0qStGkyBUk eRcFoUDNvnX1XvfA4FbjRwrRHoyf2j/Ee+mNNcDrY9/wybmDb1nkvCZPENtZXtybBO4RMy fGWo5i6qfmepbLgtUqrLXVhB7kc3Tag= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=arm.com; spf=pass (imf09.hostedemail.com: domain of dev.jain@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=dev.jain@arm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1742195012; a=rsa-sha256; cv=none; b=sJ9/lcYal/8pRkyfx1Kwgkg8Sjoi4IVq2osaX4TNofj4MlO56PrI2iwQkiTqSuQCB/PRcu w7li6mU0eQYRtxlO9xmXiFDWO7RXLcTj6yRMiryQopv2XBnnxDMejsA59ReZmzSMtIur9d 3verK0cXnXIyIY8CS0nkQ6VMCUm7P6c= 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 67E8D13D5; Mon, 17 Mar 2025 00:03:40 -0700 (PDT) Received: from [10.174.36.228] (unknown [10.174.36.228]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 1449D3F694; Mon, 17 Mar 2025 00:03:27 -0700 (PDT) Message-ID: Date: Mon, 17 Mar 2025 12:33:24 +0530 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] mm: Update mask post pxd_clear_bad() To: Yeo Reum Yun , "jroedel@suse.de" , "akpm@linux-foundation.org" Cc: Ryan Roberts , "david@redhat.com" , "willy@infradead.org" , "hch@lst.de" , "linux-mm@kvack.org" , "linux-kernel@vger.kernel.org" , "stable@vger.kernel.org" References: <20250313181414.78512-1-dev.jain@arm.com> <495ec80f-6cf1-4be8-bc2a-9115562fe60d@arm.com> Content-Language: en-US From: Dev Jain In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Rspam-User: X-Rspamd-Queue-Id: 3518B140009 X-Rspamd-Server: rspam08 X-Stat-Signature: 5q7rx8mb6gbcth1ct13yr77d5ycg5k4h X-HE-Tag: 1742195012-581226 X-HE-Meta: U2FsdGVkX1/PKK/W6QjBlaIkXGGqyhAF6hgEb398UotJ4niHSzw7FumBCUEB49X/w6HvO2D6RSBl4KWHTFTyC9IcUu5wfhf4TQkGRME5sp21ymwQf9pafgwiLTPguGcLKMjuvRVKvBtoFc3W1Q2PKzjNiPzE8cyGs6PiKKpy0LZnG6i8f+bx5+K12t1TO04yvDxwtsErvaxJ7Rqphu8cghHT9wYWS3gTWyiqgIVVZPrk73LWPZa+2v0UGVXtPzqtIZs+RVtwDW5wtRCm+aZWzfUkfJv7eSeaNHNQNwGHrN91CXPlEhx8Ed00IYg+RB/ckwDI/nw5c5uGwkSM9pdZPb26HVzPkmkARpVbwV6MUtOYdVHuwf8/IhT24Afi7D+Ywzxzhbt+xDgtKh+vlvjnn+A7dWvI6ide5lagtOOZYbE+D5/Sif4Hav8PDW+K7X4g35nK/LO2qTyFhSiMVzfjMOz7PyvA55eJQrQMA3lMXGYWZHgcqIKMkmntlTe+PoPFwemMpgnGNToYxcTvOtcqcxnyZCgVBQw/1NBth7a0pRH9phfHG/g35SygMMXnua9OiAf8vulPEAOOlvbtxvRJyaK7QP80u8T0ZQ4oyj/U7y3ed/wiEe/pv1SFNxHGgUf/ToSwLxrxZdjyrmDRGUFccQGN+gwQKfbEe2dizkVs/zYstjHQxW+c7FgbxmRmJdlqQEOS4LgmHsfUSR9NjHdef1fusgHj5DZF3NQb9fgo3b2hNs0uMbfQQAZFfj809y8w/4O80gHl2X4rGqqhMpgxz5g1R8+uavMisEL7o9emmzR3y26tj6fbARAonqabaYEOjy0mIoYAShBS9rb1z2GBADTnqUJm+KWGBRISnnnrWjf2QJeY7lMYAd1d3CfwBduk0au9vEmlTnHOX6OUe/gd4xm8zt1NY03XwzO6W7oMgbtPDZsQC8gWc0HY0gr5OwiQwOoy1f2C3qv02vqANpY TGvxn6On pdWRMJ9RfTPu1OKCxswt9T+W6EIkUCLCT2TBqGNPYZlUmR+sIga3Tswu4IVGWO6W9W2WfvS5F+/vY++HdMYh9YEKU0+XzsUtgapc5DDkt6Jy6ujzHqVUPCEZkdjATpvUWozFXlF+Kt3ij2zOJEX8eqvr9EJwuFeOPoQWOntwA8VpeYWaAarhbgMxvtlPak+dIPY48RN59luBV4/paVoaW9il/g3RzUzAOp7MUpSarxX/MEIW8vW1zAUMzIZ+b928++gzEL1oV60Bd71QWVv/ATp4x3veikb3oaXxSO12MhngAcZibcROHum8qKQ== 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 14/03/25 7:57 pm, Yeo Reum Yun wrote: > Hi Dev, > >>> Since pxd_clear_bad() is an operation changing the state of the page tables, >>> we should call arch_sync_kernel_mappings() post this. >>> >>> Fixes: e80d3909be42 ("mm: track page table modifications in __apply_to_page_range()") >>> Cc: >>> Signed-off-by: Dev Jain >>> --- >>> mm/memory.c | 4 ++++ >>> 1 file changed, 4 insertions(+) >>> >>> diff --git a/mm/memory.c b/mm/memory.c >>> index 78c7ee62795e..9a4a8c710be0 100644 >>> --- a/mm/memory.c >>> +++ b/mm/memory.c >>> @@ -2987,6 +2987,7 @@ static int apply_to_pmd_range(struct mm_struct *mm, pud_t *pud, >>> if (!create) >>> continue; >>> pmd_clear_bad(pmd); >>> + *mask = PGTBL_PMD_MODIFIED; >> >> Oh well, I guess these should have been *mask |= PGTBL_PMD_MODIFIED. >> >> >>> } >>> err = apply_to_pte_range(mm, pmd, addr, next, >>> fn, data, create, mask); >>> @@ -3023,6 +3024,7 @@ static int apply_to_pud_range(struct mm_struct *mm, p4d_t *p4d, >>> if (!create) >>> continue; >>> pud_clear_bad(pud); >>> + *mask = PGTBL_PUD_MODIFIED; >>> } >>> err = apply_to_pmd_range(mm, pud, addr, next, >>> fn, data, create, mask); >>> @@ -3059,6 +3061,7 @@ static int apply_to_p4d_range(struct mm_struct *mm, pgd_t *pgd, >>> if (!create) >>> continue; >>> p4d_clear_bad(p4d); >>> + *mask = PGTBL_P4D_MODIFIED; >>> } >>> err = apply_to_pud_range(mm, p4d, addr, next, >>> fn, data, create, mask); >>> @@ -3095,6 +3098,7 @@ static int __apply_to_page_range(struct mm_struct *mm, unsigned long addr, >>> if (!create) >>> continue; >>> pgd_clear_bad(pgd); >> + mask = PGTBL_PGD_MODIFIED; >>> } >>> err = apply_to_p4d_range(mm, pgd, addr, next, >>> fn, data, create, &mask); > > I don't think this wouldn't need. > the pXd_clear_bad() is only called at creation of each level of page table, > and when it clear, the following, apply_to_pXd_range() function would be set > the make properly via pXd_alloc() and apply_to_pte_range(). Makes sense. But pxd_clear_bad() gets called in case of !pxd_none(), so while creating, why would the page containing the page table not be none? I believe it should be cleared already? > > Thanks. > >