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 62801CFD354 for ; Fri, 11 Oct 2024 11:36:58 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id EA7466B00A8; Fri, 11 Oct 2024 07:36:57 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E55696B00AA; Fri, 11 Oct 2024 07:36:57 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CF5CA6B00B0; Fri, 11 Oct 2024 07:36:57 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id AB8156B00A8 for ; Fri, 11 Oct 2024 07:36:57 -0400 (EDT) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 7C7141A0DF4 for ; Fri, 11 Oct 2024 11:36:49 +0000 (UTC) X-FDA: 82661119590.12.1580A20 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf29.hostedemail.com (Postfix) with ESMTP id 30CBC12000B for ; Fri, 11 Oct 2024 11:36:51 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=none; 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; dmarc=pass (policy=none) header.from=arm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1728646544; a=rsa-sha256; cv=none; b=zPmAaFhFRzRgyjSVdxXumSHSaRI7hNe5cLagDiKWCrawOgLYHLzC8o48pkNlwUqEPI/RlT LqK3dIMkS23LL6yJ93u+DewobSBRbgC1ay4OLagGY+qcA+ooPuqoSTx8ojB76QPfi1DSr+ EJUtt9vp6gzTRV2SEP56fooRjhxHfsA= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=none; 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; dmarc=pass (policy=none) header.from=arm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1728646544; 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=N0E7XOK8GilbDdONOyWirxdHWnyPC9LV2GY2y2BNOWE=; b=iibIZLZzq0qkcjC1L+OphlxSC7Lif9Bgdq2kbiVT51IYpvAabOS562xr6xgnVEcUa/mMno ui6+uwTGA4SP6wwMV+colDDaIBr3P5BIKaQm+OWF790UBRbx+C+Jx+DnJV7VTNfFcGRUbu WUmw5ZY7MnXRpUYkmpvRYHKRhfdNIic= 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 EFA36DA7; Fri, 11 Oct 2024 04:37:23 -0700 (PDT) Received: from [10.57.85.162] (unknown [10.57.85.162]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 154823F73F; Fri, 11 Oct 2024 04:36:51 -0700 (PDT) Message-ID: <4fd20101-d15c-4f9b-93c1-c780734a2294@arm.com> Date: Fri, 11 Oct 2024 12:36:50 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v1 2/2] mm: don't install PMD mappings when THPs are disabled by the hw/process/vma Content-Language: en-GB To: David Hildenbrand , linux-kernel@vger.kernel.org Cc: linux-mm@kvack.org, kvm@vger.kernel.org, Andrew Morton , Hugh Dickins , Thomas Huth , "Matthew Wilcox (Oracle)" , Christian Borntraeger , Janosch Frank , Claudio Imbrenda , Kefeng Wang , Leo Fu References: <20241011102445.934409-1-david@redhat.com> <20241011102445.934409-3-david@redhat.com> From: Ryan Roberts In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Stat-Signature: yo3ouyg3ddb7pu9jkijisabikqsx8moo X-Rspamd-Queue-Id: 30CBC12000B X-Rspam-User: X-Rspamd-Server: rspam10 X-HE-Tag: 1728646611-106800 X-HE-Meta: U2FsdGVkX1/jcNFrdInfo2e87njIgecUeHvtrzQH/8eLgnwbsFuqie8SM/cdXxBdON8ceSd7wmh15yo4u665uisHD1TlRTNkTFwVZWddNpryQ73M+P5uLC9RZHtw5VkJnZxLbBfdC4NUYzeAxAzdQi8DMTkksVdu09yPbEX+HXkutCPOHG4gq/+nUX5Yl1lggXn76XSGCYLjUdg2kIHXKOQqu/sATh4hndXMTwtW7f6aflNUoufFeVt6JxjuAnlHT9+0NeMwLaFd8rm1HWlTv0y9wJg/BElsfQGlXNWC3/EzKHW6bzrFkLlARNpLvpHEhAAt+V7fP5rFzcrOfUXez4TtVwvCdYMpAAITqBd6mN3i1iQ99D7KWWqf07o8JpWnarsFRYQljMkm/+bnmpIR9tT/KXvHXDOqt8c+zNxVj63YWZg6QNucBj10rMiZ5hWCtoHY4sOg5CRuCU8ucRrotrHWOXEOHjWOFqO8OwUAxOnLXDjUPW4qCMwlfaxmvyp5TOEXH7heA9LwfeBz1aeQ0xcZslHwOJJrYdYMLY/KoNoPXGYvRPyNZnDDFqCqdJ0NhqL4HDV6XEgzMJLyCO5fM5bssmgdB587cGjEN6hCaA/uWcPqsYbv4bT8ny3KqRWfQPk0usvzG50t+xgiMintn3NuczqjM6wl2lN+4WRMWILHQWMQRTOJc+CUMPQFME8OggNZxuoyuwwKT3wODATf6VIDRyYH80vUegJf1HWUqMNXxT5XhPwuvJJS6RDj8OmoubI7b/B/1Vg+qVJNpFESiTTIfAvnrwGDgLujKDyI/F7MzhfhShyQu1H/E2Hi+jrHzk8b3MBIhgfBmdpFYvhdcAIPNRzUdKbRoSB57l8nhvNLPxJMNLonifFfYRWTRMrfmW/YbK5/XIK3XlWFwmZRiwpyE9RoTckFwQ1iiFzCRO3plV2H0Adsw5ynOtGlPAzV86emGcATRDAXblPni9C QPUfAwV5 +UmHzbSMuAX81nj/hWhQeemcBsptMsn3j/6N1FQffpHyF3lgph0YL54UIl5OWfTNPTFVVXg6pZPdPVgmsvNvI9svs3VksOFSFBQ60oIjhotuHbcoGYvCf2BRGeC0XEAS85Iln0VfxijC9dvLQTV8kIpWz6Ii+oFM25vbGojE08dYByaNMdZU/E/XUCv/QzxKv4dEGJIXcz2+Bs0q90208vXcYjfMDu8/g/97D+hGNXNF1Zp7EFkuAN2wlxwHxgucnrrRbHwEuCSboQIA6J2ZBHmAXLdPHoraiqq5hCOoePrM7hvPCEfDXsbczrJvfg/j9R6alv3rexc/TyUNP5+Geavexow== 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 11/10/2024 12:33, David Hildenbrand wrote: > On 11.10.24 13:29, Ryan Roberts wrote: >> On 11/10/2024 11:24, David Hildenbrand wrote: >>> We (or rather, readahead logic :) ) might be allocating a THP in the >>> pagecache and then try mapping it into a process that explicitly disabled >>> THP: we might end up installing PMD mappings. >>> >>> This is a problem for s390x KVM, which explicitly remaps all PMD-mapped >>> THPs to be PTE-mapped in s390_enable_sie()->thp_split_mm(), before >>> starting the VM. >>> >>> For example, starting a VM backed on a file system with large folios >>> supported makes the VM crash when the VM tries accessing such a mapping >>> using KVM. >>> >>> Is it also a problem when the HW disabled THP using >>> TRANSPARENT_HUGEPAGE_UNSUPPORTED? At least on x86 this would be the case >>> without X86_FEATURE_PSE. >>> >>> In the future, we might be able to do better on s390x and only disallow >>> PMD mappings -- what s390x and likely TRANSPARENT_HUGEPAGE_UNSUPPORTED >>> really wants. For now, fix it by essentially performing the same check as >>> would be done in __thp_vma_allowable_orders() or in shmem code, where this >>> works as expected, and disallow PMD mappings, making us fallback to PTE >>> mappings. >>> >>> Reported-by: Leo Fu >>> Fixes: 793917d997df ("mm/readahead: Add large folio readahead") >> >> Will this patch be difficult to backport given it depends on the previous patch >> and that doesn't have a Fixes tag? > > "difficult" -- not really. Andrew might want to tag patch #1  with "Fixes:" as > well, but I can also send simple stable backports that avoid patch #1. > > (Thinking again, I assume we want to Cc:stable) > >> >>> Cc: Thomas Huth >>> Cc: Matthew Wilcox (Oracle) >>> Cc: Ryan Roberts >>> Cc: Christian Borntraeger >>> Cc: Janosch Frank >>> Cc: Claudio Imbrenda >>> Signed-off-by: David Hildenbrand >>> --- >>>   mm/memory.c | 9 +++++++++ >>>   1 file changed, 9 insertions(+) >>> >>> diff --git a/mm/memory.c b/mm/memory.c >>> index 2366578015ad..a2e501489517 100644 >>> --- a/mm/memory.c >>> +++ b/mm/memory.c >>> @@ -4925,6 +4925,15 @@ vm_fault_t do_set_pmd(struct vm_fault *vmf, struct >>> page *page) >>>       pmd_t entry; >>>       vm_fault_t ret = VM_FAULT_FALLBACK; >>>   +    /* >>> +     * It is too late to allocate a small folio, we already have a large >>> +     * folio in the pagecache: especially s390 KVM cannot tolerate any >>> +     * PMD mappings, but PTE-mapped THP are fine. So let's simply refuse any >>> +     * PMD mappings if THPs are disabled. >>> +     */ >>> +    if (thp_disabled_by_hw() || vma_thp_disabled(vma, vma->vm_flags)) >>> +        return ret; >> >> Why not just call thp_vma_allowable_orders()? > > Why call thp_vma_allowable_orders() that does a lot more work that doesn't > really apply here? :) Yeah fair enough, I was just thinking it makes the code simpler to keep all the checks in one place. But no strong opinion. Either way: Reviewed-by: Ryan Roberts > > I'd say, just like shmem, we handle this separately here. >