From patchwork Fri Oct 11 10:24:43 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Hildenbrand X-Patchwork-Id: 13832341 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 BD738CFD316 for ; Fri, 11 Oct 2024 10:25:01 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 546236B0098; Fri, 11 Oct 2024 06:25:01 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 4F62D6B00AB; Fri, 11 Oct 2024 06:25:01 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3E57D6B00AD; Fri, 11 Oct 2024 06:25:01 -0400 (EDT) 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 223186B0098 for ; Fri, 11 Oct 2024 06:25:01 -0400 (EDT) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 0FF1B80B90 for ; Fri, 11 Oct 2024 10:24:57 +0000 (UTC) X-FDA: 82660938360.28.69AA4E2 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by imf27.hostedemail.com (Postfix) with ESMTP id B680440010 for ; Fri, 11 Oct 2024 10:24:56 +0000 (UTC) Authentication-Results: imf27.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=OnA2fh7k; dmarc=pass (policy=none) header.from=redhat.com; spf=pass (imf27.hostedemail.com: domain of david@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=david@redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1728642186; a=rsa-sha256; cv=none; b=ojgHoLoNYiRUAkaGslqdKYjFXdZBb/dSbS67SDGYJznSCILHmdkkyAc/R16gXV1Gfh9I5h W88cTTRsNIpp2pYgpOx5SC1BTbwf+oOyNeGKFqlncJW76zqxHaaD3bC4sb88HxJ7VbgTxV lBtUnP+igS3oodjQCP8z4SnybPlPigM= ARC-Authentication-Results: i=1; imf27.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=OnA2fh7k; dmarc=pass (policy=none) header.from=redhat.com; spf=pass (imf27.hostedemail.com: domain of david@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=david@redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1728642186; 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-transfer-encoding:content-transfer-encoding: in-reply-to:references:dkim-signature; bh=7vv3EQMzd4TWBTeWa4q+6Cuvwi7TbHKjxDMuJRyd/lA=; b=do6AYxS8ssqUnAgj6mnB68CxPLZVkwPzlyETo9jDQTTuB7av3aQgWaerLpjaw6Z505D/hk aHK6S1T5jzJVkPG40Ruz+MlSB7uFeY5Sck8myhgdX8AeCBW0mv76x5xmQBcmsN3JBV9r1k GT/7v7XxFqvPRiMujZaPG3OVH6h89eM= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1728642298; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=7vv3EQMzd4TWBTeWa4q+6Cuvwi7TbHKjxDMuJRyd/lA=; b=OnA2fh7k0x6xNtN/2UmkByh/2DQhKW2ZTfGodqdYKoMqfxUISHBV2P0gA6b9IaGTG3XIhC ufeUcU1Bev6qIq+OAtx002iW0H+CjnxLq7C9HQqhcseF9n91oINd5tpJAXoNBrOCpTuP0G VuzBPM4jL+zJtlSsQfDkNo25l7cW16o= Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-259-AwgB_dA3O82RSwjCG7wvpQ-1; Fri, 11 Oct 2024 06:24:55 -0400 X-MC-Unique: AwgB_dA3O82RSwjCG7wvpQ-1 Received: from mx-prod-int-02.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-02.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.15]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 8FF6D1955D5A; Fri, 11 Oct 2024 10:24:52 +0000 (UTC) Received: from t14s.fritz.box (unknown [10.22.80.4]) by mx-prod-int-02.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id E446B1956089; Fri, 11 Oct 2024 10:24:46 +0000 (UTC) From: David Hildenbrand To: linux-kernel@vger.kernel.org Cc: linux-mm@kvack.org, kvm@vger.kernel.org, David Hildenbrand , Andrew Morton , Hugh Dickins , Thomas Huth , "Matthew Wilcox (Oracle)" , Ryan Roberts , Christian Borntraeger , Janosch Frank , Claudio Imbrenda , Kefeng Wang Subject: [PATCH v1 0/2] mm: don't install PMD mappings when THPs are disabled by the hw/process/vma Date: Fri, 11 Oct 2024 12:24:43 +0200 Message-ID: <20241011102445.934409-1-david@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.15 X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: B680440010 X-Stat-Signature: yhm5rz9pay9kwt9confx1gxyjxtm63sy X-Rspam-User: X-HE-Tag: 1728642296-653098 X-HE-Meta: U2FsdGVkX18xvJ/ksVupIG9ul1CZp5nJI1YODsVsZeF+PmWPqgfySyYDhOducBePCeG0XGDEZq4G/VmU9N0qJwkWxkE/BfrI9uLdz94Ncr2X4nNobMcMbVHdnb6L13Siu0eA3jfW47QZm0qP+kmxstaiwHZGYybxwIgQ5UaXGl3ndFJTA0Sd3IubQ5Z7cYgQndVHqgzUKo0QxotBh9KW7DdRZ4m7nLmBiqABvr7sQ4GKdXDgG+cHf9/FBffl/iE6ud2KK1AtqWF/ZHD7QrdxpPKzcXGTQtO7KCSH5zSgMVIzqp3cKUtl3bdX4hQTWaSH70f+23hn/cNibxJex5Fer0Wxg/xpRL8QpCFEF9Rj2Ue1IX/8OzkXdnuGhHOu/3kSj115JY/YNT+jw47/EBOY5CKvoHXO/aAtemT7uCqQ+Imw86Fpp4egq3Ualxw/DmYrwiBBedH22p74SfLQ8zuOalEnbSNzkW+8uk496/t33gtw4jRJSV/0hFeYHD1hufIJMKH4/a0OGOuwPI05gIqr7E2TE31cBETRNzx+24WKxYTT6g2H+jO44S7WoX6pVaSWfNPKwITwbIlXQwE1MJ40AlAnRG+w6AgdzMHRgJlRHahpZuFRAM7x7i4qv/hNK9xi2A9Iskwmzei2FwaG4VSdhFSjzXKPfE2+waE1iz2SdxyeTXFLsV8fQfh8TQeZTMJe6TGRXk51psjKKw2SM+oYGdWLIO/fcem0YULNSey67Q1uhErnaUGZu/AHgGj7ts8+yqJf9rRZ5vfnEsKD1fyGh+0w3DhNps819UheKv+eKJ0YOBe4ymSFj94mM/wiKBahXOTw4zhUlpgxSX+MXnKyo830sQt3zSWaVWsGQhlT22BlCnp8Y8LaK9QvcpBjWWF1bIpxlnjsTigM334u6MXs/mqhGV+u2m0G85AMKqDPrftlFXb64LmyRVMCXotO26HWq4OcQUOPdcr9Mb21TFy ly3o6lcl cvt7WwkKGazUTn3vaEi+GpBH8s4GTcMJvpuqJJzXB+02nGPiToKPTmiRipLx+JrxA+b3WiC8FiXy2t8EAx3WyB15WJf66qqooHK4bRI2CxpZk0anabimkhFL5gNpkMFwrKwN9j850nDtJQ775PIMqVGXdTzlz4kNbUZIlPif7s/j7wagxNmEktOFmV/tGn0zVMhUyX059/3e6km2u3nHdft7NFyohFPbo1wI9fE+uefLGvrx7qRimrJC5+V1HqgFo9UH059MzdnDhYUbhxJAFYqYw1MskJ5FXoC4uoGHSqW2vPFUXv+fSQ4/5DgH+A4Grpb50Bv+1f2xtM01h0IcVvVXpxuDhjfpWK0c3dvVMjedEEZzjR71rWr6VPQBSW955CnOI06x+zMlT52eD3ZN2c+vCklygwCrUbouNaBzz7GRbCiOHvIuJlgJBI47yhEhYpWNumPJ8gVgma1RmxQKRd1BaLlP2T2FSzwLCOYB4cOivooQHpIAjBkwg7FAF8r1hv0QCaSPnF61aHAy5VHoeb1vqUAdEmg6EWwJTjyxtZJZqDT9rZxbUs5oPAKihHxzrlovg 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: During testing, it was found that we can get PMD mappings in processes where THP (and more precisely, PMD mappings) are supposed to be disabled. While it works as expected for anon+shmem, the pagecache is the problematic bit. For s390 KVM this currently means that a VM backed by a file located on filesystem with large folio support can crash when KVM tries accessing the problematic page, because the readahead logic might decide to use a PMD-sized THP and faulting it into the page tables will install a PMD mapping, something that s390 KVM cannot tolerate. This might also be a problem with HW that does not support PMD mappings, but I did not try reproducing it. Fix it by respecting the ways to disable THPs when deciding whether we can install a PMD mapping. khugepaged should already be taking care of not collapsing if THPs are effectively disabled for the hw/process/vma. An earlier patch was tested by Thomas Huth, this one still needs to be retested; sending it out already. Cc: Andrew Morton Cc: Hugh Dickins Cc: Thomas Huth Cc: Matthew Wilcox (Oracle) Cc: Ryan Roberts Cc: Christian Borntraeger Cc: Janosch Frank Cc: Claudio Imbrenda Cc: Kefeng Wang David Hildenbrand (1): mm: don't install PMD mappings when THPs are disabled by the hw/process/vma Kefeng Wang (1): mm: huge_memory: add vma_thp_disabled() and thp_disabled_by_hw() include/linux/huge_mm.h | 18 ++++++++++++++++++ mm/huge_memory.c | 13 +------------ mm/memory.c | 9 +++++++++ mm/shmem.c | 7 +------ 4 files changed, 29 insertions(+), 18 deletions(-) Tested-by: Thomas Huth