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 0363EC4167D for ; Tue, 12 Dec 2023 17:22:44 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 966FC6B0315; Tue, 12 Dec 2023 12:22:43 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 8EF6B6B0317; Tue, 12 Dec 2023 12:22:43 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7B77C6B0318; Tue, 12 Dec 2023 12:22:43 -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 671B46B0315 for ; Tue, 12 Dec 2023 12:22:43 -0500 (EST) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 358A0A11F3 for ; Tue, 12 Dec 2023 17:22:43 +0000 (UTC) X-FDA: 81558835806.23.EC25C49 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by imf23.hostedemail.com (Postfix) with ESMTP id 5BAA2140010 for ; Tue, 12 Dec 2023 17:22:41 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=none; dmarc=fail reason="SPF not aligned (relaxed), No valid DKIM" header.from=arm.com (policy=none); spf=pass (imf23.hostedemail.com: domain of cmarinas@kernel.org designates 145.40.68.75 as permitted sender) smtp.mailfrom=cmarinas@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1702401761; 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=PNXEoSCmxWPDl4w2YRtRZWjOVcIl1MNDmuvCchhC0kE=; b=DHtUdYooF4AcJqCxRaGK0SkOJQECrTEVPQ6tp32xbKftNFE3VVQQUaNKJspYDgOQ1UA264 WqbaUHDClFORcpdhxOKmb+v7a/IRmY05uRdq8Whn6lxedx/so4gSSsiBMn2STexGs/YBMT 8RHeAkYwZI2HvHKtuMTkwxwOgzOoSZI= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=none; dmarc=fail reason="SPF not aligned (relaxed), No valid DKIM" header.from=arm.com (policy=none); spf=pass (imf23.hostedemail.com: domain of cmarinas@kernel.org designates 145.40.68.75 as permitted sender) smtp.mailfrom=cmarinas@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1702401761; a=rsa-sha256; cv=none; b=rT2ToBnpcX+BdW3iqVSG3u5eqqs8E0RVgad4JrWiK2HPBejOY8P8AAiRCWhfTEueMoToL3 mlkw9h18+ybR/r8ORoNH+IkiTEepSFXutyHyDRG/7CkE3sae8Sw5CzYHKyioI+ac4DLq4K Ln9AhXcJ70UvQyElWxyaeVULu2xcu1A= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by ams.source.kernel.org (Postfix) with ESMTP id BA06DB80CAE; Tue, 12 Dec 2023 17:22:39 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2FF92C433C7; Tue, 12 Dec 2023 17:22:37 +0000 (UTC) From: Catalin Marinas To: Steve Capper , Will Deacon , Andrew Morton , James Houghton Cc: Mike Kravetz , Anshuman Khandual , Ryan Roberts , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Muchun Song Subject: Re: (subset) [PATCH 0/2] arm64: hugetlb: Fix page fault loop for sw-dirty/hw-clean contiguous PTEs Date: Tue, 12 Dec 2023 17:22:34 +0000 Message-Id: <170240171502.947884.1971452020621917745.b4-ty@arm.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20231204172646.2541916-1-jthoughton@google.com> References: <20231204172646.2541916-1-jthoughton@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit X-Rspam-User: X-Stat-Signature: fy3owkcej1cfeu7szkn1qorz7q4gf1ej X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 5BAA2140010 X-HE-Tag: 1702401761-784650 X-HE-Meta: U2FsdGVkX19+9aHrh8GrMjXta5xn5f4xqmFB2SHNIJVgv7lzU2jn8VFbT1mIcsMjGDfTIEbrcKrGXilDzsPM8zvmYyxBBJQEBIx6yuA7+u1x2zDajjEyduG49iTnOUzRNamTeJCrUbrvoScu4hd8Ym9n4PlDT40b+YIAJff1nCDXqSi/rxqMiensjKYAZ4wK+o8j17A4+RZbx63/xUDOF3JgxoFylQPp9aqXTPSTbldEVJMnR4QNtZ+QvkPZQK0SPOYFH4H1J9DwgV0L70roLyInFV9hdBgsFgIujzMDEIyfZxjC6+7dQudoQVlsycY4SPqtP/Z27sDUiD/aL3+UEN8+gZEoI3KhHGRWdnCLXvyrIoDFAbrGuw+hhEQfj5n7wFoPNYmow9P8HNvUveEZ1MOEckJ7bINDOOaB4uBYwY4lDisHGMiwmKL2vwX2GOtQmLozddWB/sen10KNpnhgZMA866/uXFeHrXm80dImljvX4Bb+jIGRifwi7Y8lO452Vu5VfqOOp4gv3KR6hKDt3N8qKyWdHvxXPtSfsKT85+WmMOuNfnFOehS+HNA4pQprPaehP+Q3aVxU+CWQqIgrj+qwsH80VgBM2RIzrASUvdS4RrNwPF4qxdgx/qFtq2K57un+0rUYI9+Qpp744fk7T0jUw8aMho9HuP+wRkyrFc+shwuLyNpfcvz2vKqMnc9S4u3N7womdfNz+8NMi/6OnTn7kKGV6mTE7UHpnQETl4EP4Wpzm0lOsmrDq0J/IWJqKcPVHM1+fxxusg5AqnVkuWgLgZEdzOmyMhY9mO9Flfg2BbbFUU4sFmEw5k9ZxeOiaJrkLeOsR996AKEVCP7UKmnmMYkHRjn3QfgqliafQg+qMKexlMcYPetaYxfooLItNG2BUaJN4q0NsgRLyUrlBAKRNrfu3cymrMfv/HJ1JmVsRZm9BrPCBQ22jqCzvOJVH6hvp3cqFOJEc+12avJ /EgPZ/B7 4n15KF1b0NEY3JWT5Wts+SjP6NKpgYH93NlTQI2Ep9WP2cvq86QEPmeSwjbZieECzrN1VOLyp//3qNHP7JpRxEuQoWmoiuuqOOWLPMs6B6Kb8mrJtbtNKCa2wDdtmWAnMgPJNr79efpmx14iSXdsbH5uNwAgjNbL4NWRVYwlJ6+9hj5W+vZRPf2CBTVbjPnnMo+DP/YFIennvODMpenOK7qfefu6WIHGkCAAo16YASkExMDJtwnEa/ysYhhFrgG8hJkPXLYkt3bPejJWTiT/8y3s5T8GBDX0jm0xvTUyvgN0s3FdMnUqNxr0OuHslul7DiJSuIG0GETxnEhkNw89pxK8GbV+Zm+jrlRvXZqWg0AOKF0YgEVtMbq25jQ== 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 Mon, 04 Dec 2023 17:26:44 +0000, James Houghton wrote: > It is currently possible for a userspace application to enter a page > fault loop when using HugeTLB pages implemented with contiguous PTEs > when HAFDBS is not available. This happens because: > 1. The kernel may sometimes write PTEs that are sw-dirty but hw-clean > (PTE_DIRTY | PTE_RDONLY | PTE_WRITE). > 2. If, during a write, the CPU uses a sw-dirty, hw-clean PTE in handling > the memory access on a system without HAFDBS, we will get a page > fault. > 3. HugeTLB will check if it needs to update the dirty bits on the PTE. > For contiguous PTEs, it will check to see if the pgprot bits need > updating. In this case, HugeTLB wants to write a sequence of > sw-dirty, hw-dirty PTEs, but it finds that all the PTEs it is about > to overwrite are all pte_dirty() (pte_sw_dirty() => pte_dirty()), > so it thinks no update is necessary. > > [...] Applied to arm64 (for-next/fixes), thanks! [2/2] arm64: mm: Always make sw-dirty PTEs hw-dirty in pte_modify https://git.kernel.org/arm64/c/3c0696076aad I only picked up the second patch and added the description from the cover letter into the commit log. -- Catalin