From nobody Mon Jun 15 18:00:16 2026 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C0DEB314B6E for ; Sun, 12 Apr 2026 22:50:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776034251; cv=none; b=o/SY4vl+CDNMMXS9gS93gz4TyHl4ARdnZB6eXPdOn5lBuPImFmY1zKSpTKmNa4WuNCXfKiZUp6kMyN8URstblvpOuSJmHkVVVvEyL9CRr+qTFJvCqaJr0iXwIviGHMvWyXKfioXAnGUHNp7hb+MJa3AL259oko6ioXw9vVvl1qo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776034251; c=relaxed/simple; bh=1Xi6QJj55uFprY3+j41AxpGhuS0+qcgoEfdSGDN0Als=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=TRIv+GOUgVYzYzt+9gXL4T74ZzLAyIOA2Fwd429ldae395i5VIzQctHmTDtEIOWCNX4jsViv+gMOTsw881nNLPwdwP/zL0n/ApMG5gDD7SLfLInV3/B/JOGjgKNdCZTnNpx9jyNXm6SScBD3Br7xU0ZU9yDWhMZAFiOPn86A2i0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=dkzMMe1A; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=DhN5To+T; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="dkzMMe1A"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="DhN5To+T" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1776034245; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=gWKRsIFuB+Hs22ZUHt8b4Lo3W4KNzkmERVB6NJaMrU4=; b=dkzMMe1AnBzhYkbq3aB+RawjIKRCscWy9oqegzEqTheQsJkG2U7le3wQ4GHtkznM9Lmoga fUr9w2QFsDxNsNMyBJNz8WXtQZf34F8NanpUHcDR4Wcg9NChIeFX0XqnjDTT0AtLAKbL5Y egANBNmMBYMZcyBBV2bhQvhH0OM59ac= Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-561-kcVTTWtgPQqK10xEZV3WVA-1; Sun, 12 Apr 2026 18:50:44 -0400 X-MC-Unique: kcVTTWtgPQqK10xEZV3WVA-1 X-Mimecast-MFC-AGG-ID: kcVTTWtgPQqK10xEZV3WVA_1776034244 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-43d7a5b9678so79827f8f.2 for ; Sun, 12 Apr 2026 15:50:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1776034243; x=1776639043; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=gWKRsIFuB+Hs22ZUHt8b4Lo3W4KNzkmERVB6NJaMrU4=; b=DhN5To+TIbLU0h9kQk/Q6dmvvDQ2A2uvZUoJAN7IbUQnZ0t92TALbt+2GB1uEhrMcJ eb4cQDRf/G5v9P2KR30Z53yZqHfkc6+x7mpUQp0LlGPJRgIdtogdJdPrgkG8CoBDuJQr /3MadAykbYRE/OIUwc4/VjiPw68aMtxdF+0BmlOeoiMEuGYalLqT5WToXWhoe+y3f/nK 9E3Iq7je5Iy+B18w878QbE+pNRuytjNp6nyt+GooBD8kJNQQ86Q5kGa/teoSGScxwqXg SnZh5ZbqMnrzoyQrxgpVoRmAf6xAumE18jNxubGW1l7/K1ZXO+M64DQKe3CwJemYGUsR gABQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776034243; x=1776639043; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=gWKRsIFuB+Hs22ZUHt8b4Lo3W4KNzkmERVB6NJaMrU4=; b=ne7svghK9OJCBQKWTUVGeF6gCZ37XvO5vNa8xuZEKTLN9IAH0alrTm9VJJuQV9me/X aC0Snzk56IrzvjYsGck2/ErU8pRYEhiX51Eu3nF3W4nEQ3uw5lWwjkflCrFsqJ7Xx3wR GM4jbXGTfhVThRwRG2JcjMuPO84Skb3plWNC1Ap+acVnvrZ1vvtHvqHq1+VbnbjgXuaI PWEWzirWsv6BuPf8q3LN5P1ko3x+YIdX/toJTM7qU/KuUqpwVt/dZesoWg8iOAYQBzuC v/C8qAT7DArcvnvXP+4P0CBwdux6N3XM+qaYW6q5h697BwiedCPwkOFx/vFuQJFA+VYy q4Tw== X-Gm-Message-State: AOJu0YxX+pF6xnFOQAa5jy/VYSuayArYjvmWIESW+qiKJjm7pYPCQ9qb 53U1HPH329+MFLnpFtmWmwTiTqI3O/LIedc87YcjFDTD3Buf6eD+GzXH4e0pAeZNY9RfUK9eB+h HPgHQMnLXTCzFbK7LnBoH5v9ZB/1xNPmcZ+OEwjxHMByIudXhwczRRoVmgGVDx9Yt1Y3v4NubRC NM/gq8s1/dfQ/E4l2izq9jqr/rGcDn0oL1ssNCMs8YmHA= X-Gm-Gg: AeBDievKDy50s3V4iDVGKir8MA0Zy92Ji2uZsuiOcJARrMlEHXJAM792niEmW6QmK3t DWwkIY8uVb9yr0+OxFGjuT+WUg8FW22G+TDXBCT6XsXBaQMYrOtW3N9GqqDH6hVkGZbrC8QMm7G DjqUAjAOdzfC1mHf+ioa8rkNLsVRGjs3id+lE/vY64/6l0Sv+bvPW+mHY8seGV5XcXZd8fZxMRF I3LVrdKhnyMZqkUwZK0XHp5kALK2aYHbajUi1K7VRVfnT5vEfqDqSzD/BgiaJh0blRIdYxebAbD QIYnRSbnRGTcbjWpr7mN+lvegHSXxEBnIpLW/iS/3WUxr47pQda1G546pYhjXtWaIxE/93/JYu4 QOORtNOE5X9F0UUYTmHkE8JLNb8aGVO3KMbzR2Df+YR8= X-Received: by 2002:a5d:5f53:0:b0:43d:242:b9bb with SMTP id ffacd0b85a97d-43d642711ffmr16823643f8f.18.1776034243280; Sun, 12 Apr 2026 15:50:43 -0700 (PDT) X-Received: by 2002:a5d:5f53:0:b0:43d:242:b9bb with SMTP id ffacd0b85a97d-43d642711ffmr16823615f8f.18.1776034242809; Sun, 12 Apr 2026 15:50:42 -0700 (PDT) Received: from redhat.com (IGLD-80-230-25-21.inter.net.il. [80.230.25.21]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43d63dec295sm27487393f8f.14.2026.04.12.15.50.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Apr 2026 15:50:42 -0700 (PDT) Date: Sun, 12 Apr 2026 18:50:40 -0400 From: "Michael S. Tsirkin" To: linux-kernel@vger.kernel.org Cc: Andrew Morton , David Hildenbrand , Vlastimil Babka , Brendan Jackman , Michal Hocko , Suren Baghdasaryan , Jason Wang , Andrea Arcangeli , linux-mm@kvack.org, virtualization@lists.linux.dev, Johannes Weiner , Zi Yan Subject: [PATCH RFC 1/9] mm: page_alloc: propagate PageReported flag across buddy splits Message-ID: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" When a reported free page is split via expand() to satisfy a smaller allocation, the sub-pages placed back on the free lists lose the PageReported flag. This means they will be unnecessarily re-reported to the hypervisor in the next reporting cycle, wasting work. Propagate the PageReported flag to sub-pages during expand() so that they are recognized as already-reported. Signed-off-by: Michael S. Tsirkin Assisted-by: Claude:claude-opus-4-6 --- mm/page_alloc.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 2d4b6f1a554e..edbb1edf463d 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -1730,7 +1730,7 @@ struct page *__pageblock_pfn_to_page(unsigned long st= art_pfn, * -- nyc */ static inline unsigned int expand(struct zone *zone, struct page *page, in= t low, - int high, int migratetype) + int high, int migratetype, bool reported) { unsigned int size =3D 1 << high; unsigned int nr_added =3D 0; @@ -1752,6 +1752,15 @@ static inline unsigned int expand(struct zone *zone,= struct page *page, int low, __add_to_free_list(&page[size], zone, high, migratetype, false); set_buddy_order(&page[size], high); nr_added +=3D size; + + /* + * The parent page has been reported to the host. The + * sub-pages are part of the same reported block, so mark + * them reported too. This avoids re-reporting pages that + * the host already knows about. + */ + if (reported) + __SetPageReported(&page[size]); } =20 return nr_added; @@ -1762,9 +1771,10 @@ static __always_inline void page_del_and_expand(stru= ct zone *zone, int high, int migratetype) { int nr_pages =3D 1 << high; + bool was_reported =3D page_reported(page); =20 __del_page_from_free_list(page, zone, high, migratetype); - nr_pages -=3D expand(zone, page, low, high, migratetype); + nr_pages -=3D expand(zone, page, low, high, migratetype, was_reported); account_freepages(zone, -nr_pages, migratetype); } =20 @@ -2322,7 +2332,8 @@ try_to_claim_block(struct zone *zone, struct page *pa= ge, =20 del_page_from_free_list(page, zone, current_order, block_type); change_pageblock_range(page, current_order, start_type); - nr_added =3D expand(zone, page, order, current_order, start_type); + nr_added =3D expand(zone, page, order, current_order, start_type, + false); account_freepages(zone, nr_added, start_type); return page; } --=20 MST From nobody Mon Jun 15 18:00:16 2026 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9928631E82E for ; Sun, 12 Apr 2026 22:50:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776034252; cv=none; b=LtQCTQJ7R27t00EnFRLyVQogDxE7Z0jcCf6AjP1dB3nOFuce9EtZNsG3sFsnEs4C1AY0mXTTNuydb70IrAyEg3704ZzbDE7F2TZqkXhIPNzveoEK3A1GsJM7IACHeqMfJtHBK/iaJgo387onFK9FtNnrK5q83vL3Q3Tv5TGgnrE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776034252; c=relaxed/simple; bh=Yc6J0CiR6gIkKdBB1+3J2Bp7hvOLmDRVaaqOrMBw7Aw=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=JrKfCoIk3an1XGgslyvuShZQLz8mRsRXCpfmk5C8OpQrABU9+WySoimWOfAaxb9qLsVNRPVp8cEQTGGs6FW6GUBicYRZvyZ+oNkT/lciLQYZ9SCaGNiPpcnquEUlgw5KDkyOxX4Q4JkXlA0yZM6/OhvfYmslvkhX90UrjsJr4ak= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=RFXw6+gW; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=JRfkufLF; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="RFXw6+gW"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="JRfkufLF" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1776034249; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=p7fwwS8rthQO9vLHBO8UifZIVV+lw2sOdmaFyBVbO1I=; b=RFXw6+gW2/UEZ79RTTX/u/TocYcFq6hgY34FyBFmmIq3IOjSVabClvoG57n1ZzDaoj4mzb d1963k815qyrVdcdU1Lur7ROAn17QetxVDZ1PAHY2707KN/uNGxJfL6Xfc0ctxDHRSKTcu q3pDpt0FVijYt1mNeYQrZzmi9580M54= Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-107-0gBuzdr1PsWB7Trz-hbB5Q-1; Sun, 12 Apr 2026 18:50:48 -0400 X-MC-Unique: 0gBuzdr1PsWB7Trz-hbB5Q-1 X-Mimecast-MFC-AGG-ID: 0gBuzdr1PsWB7Trz-hbB5Q_1776034247 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-43cfb72377bso3007128f8f.2 for ; Sun, 12 Apr 2026 15:50:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1776034247; x=1776639047; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=p7fwwS8rthQO9vLHBO8UifZIVV+lw2sOdmaFyBVbO1I=; b=JRfkufLFlQXC3S/OEqPXouDsxy2dNUHEK+RGv2KBvDZ+U8sLljJNksz8f+H0q4N88O c5WtFXXQIEmfPiEnt0fIhx5mDZtNJTvJa2eqVKX/Kj5pd+CVEP3BZSZboGzYEDjm6V2T MiMnCwhh4FzZTSN9biwa9a2n8vGwWgdc2Kr5czTFp2JJZDoQzw7IJeHFVCOq75vo2L9t ENSvaDksPnWpzBaIaMch/Bk8kj+2uri/53vIoUBEtKwS0hzoPrQwwctY9ya8q+72On02 2gkKqi5Ph++NR2RUa26c40f5hSpF5RQvI1s55cBH5E98LntEXVItWodt9Wuzf4hkkyqL XpmA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776034247; x=1776639047; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=p7fwwS8rthQO9vLHBO8UifZIVV+lw2sOdmaFyBVbO1I=; b=YpO9t8L+x+NJQtU6GXnUQbnvhKrAWe5qVFojEZDpdRikEQdiUmMrideauFOkVOob4Q hXEyYtMgjPYVM61DHrIcEWLTBSUHDGXSiTgEnoxasCmxvEt26CPwPVRIQmtNzNfqvVVu GCkj8ts3DkQItg2WGNBH61FL8tGYqQY5syppfmgOswn5XsGHeaQF0MDoOAh3kNmGolE/ z05LLwy46gBk+tpCt7Zl98pdbkdEFXCeugG1HGEZhNsAyZw+LPrQarb+wEIBXdXi0S3g tqOQJ/mVysBO68keJa1VF1qv6F518MIgtpifgtL3aged7/NcPJ0bqXPSh7NOlEqGw7kz BGbg== X-Gm-Message-State: AOJu0Yw0S71I1YiUa+GN3i+Sju7EOzTKUyue+PqgaO7KCZo4AU2pmTfi epSEYZHrintTJR2IHYZhbYaj1jBbtXmhh0uGKpSaBjZWFdWaU1Hjgv2BYAfYegCHsq/55nTpQpt kksQwQ7tEVWK1+pLQ+LY6TEZ+U+VC7T7NRX3x2slHewPQkUouVmCaRM4xDewyjIPTjjnrf6fMCY fNuUH8jAKDCIlrfknGA7ULG01xTHjqHb6585tpyi5L9qY= X-Gm-Gg: AeBDiesa9funM2dp5dDd5Idl9+oLzaJ6LUxDBrGjxvERr/gmRhkhLmf8b6kWusV0na0 GkZHeqg50+XMzcf/+HO5igQDkzCvRd0QNSr92ZooAF2LRIMt7lmm0jvnePKx2qFbW2vHzJlEqk7 cRuAMc+A+WlFeV8fM1HJ+/ZVyuehxrxMdp3HEKLi/xsjb4KOYntm68DzqkhyruT9r8TbWRgwtgq Gr7pnub3/FKEXlAPyqCFTlhBnYdqtR+jdaN+w7J1VmJW/I69KHhiSU79Vxg+eZCN7j4B2nljjuH aL/InMzdbFCNHGFHIwv8AvTNndu2xiJAdyNh7usFxbcCfs3mxdz6O81lLSaHeHVLj+/PsN4W/eE k3kBuiOD3cst/4ryYBXL+IcPii2EGiyf/ahHFmP5ddf4= X-Received: by 2002:a05:6000:2f88:b0:43d:71f4:7ed5 with SMTP id ffacd0b85a97d-43d71f480a8mr5521380f8f.17.1776034246881; Sun, 12 Apr 2026 15:50:46 -0700 (PDT) X-Received: by 2002:a05:6000:2f88:b0:43d:71f4:7ed5 with SMTP id ffacd0b85a97d-43d71f480a8mr5521336f8f.17.1776034246368; Sun, 12 Apr 2026 15:50:46 -0700 (PDT) Received: from redhat.com (IGLD-80-230-25-21.inter.net.il. [80.230.25.21]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43d63e50200sm27750304f8f.29.2026.04.12.15.50.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Apr 2026 15:50:45 -0700 (PDT) Date: Sun, 12 Apr 2026 18:50:42 -0400 From: "Michael S. Tsirkin" To: linux-kernel@vger.kernel.org Cc: Andrew Morton , David Hildenbrand , Vlastimil Babka , Brendan Jackman , Michal Hocko , Suren Baghdasaryan , Jason Wang , Andrea Arcangeli , linux-mm@kvack.org, virtualization@lists.linux.dev, Lorenzo Stoakes , "Liam R. Howlett" , Mike Rapoport , Johannes Weiner , Zi Yan Subject: [PATCH RFC 2/9] mm: page_reporting: skip redundant zeroing of host-zeroed reported pages Message-ID: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" When a guest reports free pages to the hypervisor via the page reporting framework (used by virtio-balloon and hv_balloon), the host typically zeros those pages when reclaiming their backing memory. However, when those pages are later allocated in the guest, post_alloc_hook() unconditionally zeros them again if __GFP_ZERO is set. This double-zeroing is wasteful, especially for large pages. Avoid redundant zeroing by propagating the "host already zeroed this" information through the allocation path: 1. Add a host_zeroes_pages flag to page_reporting_dev_info, allowing drivers to declare that their host zeros reported pages on reclaim. A static key (page_reporting_host_zeroes) gates the fast path. 2. In page_del_and_expand(), when the page was reported and the static key is enabled, stash a sentinel value (MAGIC_PAGE_ZEROED) in page->private. 3. In post_alloc_hook(), check page->private for the sentinel. If present and zeroing was requested (but not tag zeroing), skip kernel_init_pages(). In particular, __GFP_ZERO is used by the x86 arch override of vma_alloc_zeroed_movable_folio. No driver sets host_zeroes_pages yet; a follow-up patch to virtio_balloon is needed to opt in. Signed-off-by: Michael S. Tsirkin Assisted-by: Claude:claude-opus-4-6 --- include/linux/mm.h | 6 ++++++ include/linux/page_reporting.h | 3 +++ mm/page_alloc.c | 21 +++++++++++++++++++++ mm/page_reporting.c | 9 +++++++++ mm/page_reporting.h | 2 ++ 5 files changed, 41 insertions(+) diff --git a/include/linux/mm.h b/include/linux/mm.h index 5be3d8a8f806..59fc77c4c90e 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -4814,6 +4814,12 @@ static inline bool user_alloc_needs_zeroing(void) &init_on_alloc); } =20 +/* + * Sentinel stored in page->private to indicate the page was pre-zeroed + * by the hypervisor (via free page reporting). + */ +#define MAGIC_PAGE_ZEROED 0x5A45524FU /* ZERO */ + int arch_get_shadow_stack_status(struct task_struct *t, unsigned long __us= er *status); int arch_set_shadow_stack_status(struct task_struct *t, unsigned long stat= us); int arch_lock_shadow_stack_status(struct task_struct *t, unsigned long sta= tus); diff --git a/include/linux/page_reporting.h b/include/linux/page_reporting.h index fe648dfa3a7c..10faadfeb4fb 100644 --- a/include/linux/page_reporting.h +++ b/include/linux/page_reporting.h @@ -13,6 +13,9 @@ struct page_reporting_dev_info { int (*report)(struct page_reporting_dev_info *prdev, struct scatterlist *sg, unsigned int nents); =20 + /* If true, host zeros reported pages on reclaim */ + bool host_zeroes_pages; + /* work struct for processing reports */ struct delayed_work work; =20 diff --git a/mm/page_alloc.c b/mm/page_alloc.c index edbb1edf463d..efb65eee826b 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -1774,8 +1774,20 @@ static __always_inline void page_del_and_expand(stru= ct zone *zone, bool was_reported =3D page_reported(page); =20 __del_page_from_free_list(page, zone, high, migratetype); + + was_reported =3D was_reported && + static_branch_unlikely(&page_reporting_host_zeroes); + nr_pages -=3D expand(zone, page, low, high, migratetype, was_reported); account_freepages(zone, -nr_pages, migratetype); + + /* + * If the page was reported and the host is known to zero reported + * pages, mark it zeroed via page->private so that + * post_alloc_hook() can skip redundant zeroing. + */ + if (was_reported) + set_page_private(page, MAGIC_PAGE_ZEROED); } =20 static void check_new_page_bad(struct page *page) @@ -1851,11 +1863,20 @@ inline void post_alloc_hook(struct page *page, unsi= gned int order, { bool init =3D !want_init_on_free() && want_init_on_alloc(gfp_flags) && !should_skip_init(gfp_flags); + bool prezeroed =3D page_private(page) =3D=3D MAGIC_PAGE_ZEROED; bool zero_tags =3D init && (gfp_flags & __GFP_ZEROTAGS); int i; =20 set_page_private(page, 0); =20 + /* + * If the page is pre-zeroed, skip memory initialization. + * We still need to handle tag zeroing separately since the host + * does not know about memory tags. + */ + if (prezeroed && init && !zero_tags) + init =3D false; + arch_alloc_page(page, order); debug_pagealloc_map_pages(page, 1 << order); =20 diff --git a/mm/page_reporting.c b/mm/page_reporting.c index f0042d5743af..cb24832bdf4e 100644 --- a/mm/page_reporting.c +++ b/mm/page_reporting.c @@ -50,6 +50,8 @@ EXPORT_SYMBOL_GPL(page_reporting_order); #define PAGE_REPORTING_DELAY (2 * HZ) static struct page_reporting_dev_info __rcu *pr_dev_info __read_mostly; =20 +DEFINE_STATIC_KEY_FALSE(page_reporting_host_zeroes); + enum { PAGE_REPORTING_IDLE =3D 0, PAGE_REPORTING_REQUESTED, @@ -386,6 +388,10 @@ int page_reporting_register(struct page_reporting_dev_= info *prdev) /* Assign device to allow notifications */ rcu_assign_pointer(pr_dev_info, prdev); =20 + /* enable zeroed page optimization if host zeroes reported pages */ + if (prdev->host_zeroes_pages) + static_branch_enable(&page_reporting_host_zeroes); + /* enable page reporting notification */ if (!static_key_enabled(&page_reporting_enabled)) { static_branch_enable(&page_reporting_enabled); @@ -410,6 +416,9 @@ void page_reporting_unregister(struct page_reporting_de= v_info *prdev) =20 /* Flush any existing work, and lock it out */ cancel_delayed_work_sync(&prdev->work); + + if (prdev->host_zeroes_pages) + static_branch_disable(&page_reporting_host_zeroes); } =20 mutex_unlock(&page_reporting_mutex); diff --git a/mm/page_reporting.h b/mm/page_reporting.h index c51dbc228b94..2bbf99f456f5 100644 --- a/mm/page_reporting.h +++ b/mm/page_reporting.h @@ -15,6 +15,8 @@ DECLARE_STATIC_KEY_FALSE(page_reporting_enabled); extern unsigned int page_reporting_order; void __page_reporting_notify(void); =20 +DECLARE_STATIC_KEY_FALSE(page_reporting_host_zeroes); + static inline bool page_reported(struct page *page) { return static_branch_unlikely(&page_reporting_enabled) && --=20 MST From nobody Mon Jun 15 18:00:16 2026 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 919963074B1 for ; Sun, 12 Apr 2026 22:50:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776034259; cv=none; b=cbTtLL1IfmUVNf7sm8Bb7AQAho/ZNiyX9MtGYqkEiY157Hbt0IXtPqJ36NODf7B26QSJlYnXrnKEX3/J2kaLf3/D9SBLPY74/fJhBZJxryK5K0KD32ny/se9Ypk1BIA37+cydl58Xjz4cKbuwHrB8VI6ixwRuhKHmSlyUfDcdbY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776034259; c=relaxed/simple; bh=tyevfehojZyLx0rvZbifr9tVTcR+LX8179KCtTitZQc=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=abPBsTrGvmeFaBofwP8PidwkFJS+tGuzDOyfSid0zT39YBAmkxt/p6D+3G+mRPh+JnIOfsSgQvsiKQevXv1W5G7qbGEZakvk/HyZe5q0a6dlQjnFhXyzuN/qEosCLdmMDYXFvjRgPPB5psRo/EkWi+EfwDMhhpHtqWmY7Z4ePRw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=TfpkEU1b; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=cc8yJWsj; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="TfpkEU1b"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="cc8yJWsj" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1776034254; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=jGJCJcDO5/5MpQsdc/D5wN/ajh0fH6KE567pAXfVmHs=; b=TfpkEU1bj76XO8igyArXdG7UaZjYbdUeNqR8kEFdZl92+wwqF4nCsI0kiD33CE2E457IRI GLsjACjFcXS7c1mr68TVqVB/BAOFS3p2yUTWTasYJ4yfZOnGq9k3AnQke8KcJLjuZLfAAC LsRH5R3JqGbHpQsVpdZaRjcQiC+oYbg= Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-611-kgIiLtx_MGW1Qa6eeQzUJg-1; Sun, 12 Apr 2026 18:50:52 -0400 X-MC-Unique: kgIiLtx_MGW1Qa6eeQzUJg-1 X-Mimecast-MFC-AGG-ID: kgIiLtx_MGW1Qa6eeQzUJg_1776034252 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-43d03065782so2219027f8f.0 for ; Sun, 12 Apr 2026 15:50:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1776034251; x=1776639051; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=jGJCJcDO5/5MpQsdc/D5wN/ajh0fH6KE567pAXfVmHs=; b=cc8yJWsjEObCvyz1KeiOdf7aPnzmVQot1eBio1fYVuFj3MR/uRJM3c7gPQW23KdrOV ywuBHv8tPKAJ4Ce9Su4rOyE8n3wIqoQAjSu8pqNgLDXvUFshiRvfhizaV7TJRJWSDbzt yT1OOgBwImVMvzdXzmqyQlc8jBUxO90HLCVgSNJeHnmdNRm86adTs/QPPGeN0WRWc0hO 9I0RIq+3aC+lEurzcfpUwMZW/OT2ZmPg1k9MZI2lKxT7EB4lQNtvYT+yecreX0ZJsdZN DtDyiJP+0T+G+U4OTSpGdadbh2EOSTIHjD7kg0a5ofLqpgXr2a1eEWOlG5YMVB+XEOhz oZfA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776034251; x=1776639051; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=jGJCJcDO5/5MpQsdc/D5wN/ajh0fH6KE567pAXfVmHs=; b=rkj7QfuZ508u3vLGplUwMBee5U1g/NxDxYx48DyqJ/g433Ny8iYiC5/yNMx08HCgqR 3YFtSYQIHGmceiGfYFAduqugpqWTuWXsD5l2GeoFxEBNANKlBiZ+aOPZq7Ti3oaB00aU S5ASNoL0UtA2ybHAmVpjD73I7TWQJ0f0HwHlVo4UaMjyMosy+M2jRGJZUqqwCXyrHedV /BLjrZOnXLAuzPDz5T6Vl9IK3jVgK6Ur0R+ZTd2j1vfSI4uZxtiCjDasIYKcrTug4Nj7 Z4saQ2PCcCBMGLA2L9jcS61LTFbJhSSC9AlP5I3nSlfAZ4KJBuwdKRp1dDUTNiqWMHo0 W4Fg== X-Gm-Message-State: AOJu0YzMFVr3tBECA2Jd+ub3i9CZob5/o9VqPbdqoDygrM5ZQdlMuezA 9y+wPT8NyAVQYYrMrb4XGPs3Hd7yu6hx0lBv6GNMLYnKlrXetBsNUEV6IhUGNdMWt9pt9lC28q3 YPJmQNOQaAfr3KsPDn/Kzmxmxp/P3sxJdge5G5STUowjHs9WPcnq8jaSXTBdAs2nnFBjAbyTiF8 ONgdO5Ydu1aXZ+1vjt+j7cD1n2RDEzT0R9PZF0LbO1ZVw= X-Gm-Gg: AeBDieu8oIPm45GzK8bjrGdTHBWGyTlDlxxEpCojv/0XejBBD5zwuQ/GbuH2W6pfNWh XVYWMCZfL5vTmiMUBWGG1AkhAJ51EWZ+/dlMY0jF/0z90blvld+zdCC6AgBVPoznNUmAO8PogUX 656Re4Lag3omNNQJS90D5g/POSFLc+i4ijHA3Bth3hhftHhvjoXFNtJVV0YOFfdCGVJxGSc90NB sUjAZlSN11ztbREocSANRJWHEjhrMeYAACFqJc1WsECGbrerMQiAXmAjyNpb9iO07XnWqGFR+No Y6+jc724ePc/kJM83NEEXRZ623gT6AxxjN7aIN7vGZpW+Ao2vu0uyZ1RO4e4pweeEhVKXDb0oyc PP34sU0E7fOde0sSadztbD0W+Tz/8VO4u9tlxtusrfjw= X-Received: by 2002:a5d:5f46:0:b0:43d:1cec:4766 with SMTP id ffacd0b85a97d-43d642b6b9cmr16170673f8f.23.1776034251263; Sun, 12 Apr 2026 15:50:51 -0700 (PDT) X-Received: by 2002:a5d:5f46:0:b0:43d:1cec:4766 with SMTP id ffacd0b85a97d-43d642b6b9cmr16170628f8f.23.1776034250679; Sun, 12 Apr 2026 15:50:50 -0700 (PDT) Received: from redhat.com (IGLD-80-230-25-21.inter.net.il. [80.230.25.21]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43d63e46713sm28673200f8f.21.2026.04.12.15.50.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Apr 2026 15:50:49 -0700 (PDT) Date: Sun, 12 Apr 2026 18:50:46 -0400 From: "Michael S. Tsirkin" To: linux-kernel@vger.kernel.org Cc: Andrew Morton , David Hildenbrand , Vlastimil Babka , Brendan Jackman , Michal Hocko , Suren Baghdasaryan , Jason Wang , Andrea Arcangeli , linux-mm@kvack.org, virtualization@lists.linux.dev, Lorenzo Stoakes , "Liam R. Howlett" , Mike Rapoport , Johannes Weiner , Zi Yan Subject: [PATCH RFC 3/9] mm: add __GFP_PREZEROED flag and folio_test_clear_prezeroed() Message-ID: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The previous patch skips zeroing in post_alloc_hook() when __GFP_ZERO is used. However, several page allocation paths zero pages via folio_zero_user() or clear_user_highpage() after allocation, not via __GFP_ZERO. Add __GFP_PREZEROED gfp flag that tells post_alloc_hook() to preserve the MAGIC_PAGE_ZEROED sentinel in page->private so the caller can detect pre-zeroed pages and skip its own zeroing. Add folio_test_clear_prezeroed() helper to check and clear the sentinel. Signed-off-by: Michael S. Tsirkin Assisted-by: Claude:claude-opus-4-6 --- include/linux/gfp_types.h | 5 +++++ include/linux/mm.h | 16 ++++++++++++++++ mm/page_alloc.c | 8 +++++++- 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/include/linux/gfp_types.h b/include/linux/gfp_types.h index 6c75df30a281..903f87c7fec9 100644 --- a/include/linux/gfp_types.h +++ b/include/linux/gfp_types.h @@ -56,6 +56,7 @@ enum { ___GFP_NOLOCKDEP_BIT, #endif ___GFP_NO_OBJ_EXT_BIT, + ___GFP_PREZEROED_BIT, ___GFP_LAST_BIT }; =20 @@ -97,6 +98,7 @@ enum { #define ___GFP_NOLOCKDEP 0 #endif #define ___GFP_NO_OBJ_EXT BIT(___GFP_NO_OBJ_EXT_BIT) +#define ___GFP_PREZEROED BIT(___GFP_PREZEROED_BIT) =20 /* * Physical address zone modifiers (see linux/mmzone.h - low four bits) @@ -292,6 +294,9 @@ enum { #define __GFP_SKIP_ZERO ((__force gfp_t)___GFP_SKIP_ZERO) #define __GFP_SKIP_KASAN ((__force gfp_t)___GFP_SKIP_KASAN) =20 +/* Caller handles pre-zeroed pages; preserve MAGIC_PAGE_ZEROED in private = */ +#define __GFP_PREZEROED ((__force gfp_t)___GFP_PREZEROED) + /* Disable lockdep for GFP context tracking */ #define __GFP_NOLOCKDEP ((__force gfp_t)___GFP_NOLOCKDEP) =20 diff --git a/include/linux/mm.h b/include/linux/mm.h index 59fc77c4c90e..caa1de31bbca 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -4820,6 +4820,22 @@ static inline bool user_alloc_needs_zeroing(void) */ #define MAGIC_PAGE_ZEROED 0x5A45524FU /* ZERO */ =20 +/** + * folio_test_clear_prezeroed - test and clear the pre-zeroed marker. + * @folio: the folio to test. + * + * Returns true if the folio was pre-zeroed by the host, and clears + * the marker. Callers can skip their own zeroing. + */ +static inline bool folio_test_clear_prezeroed(struct folio *folio) +{ + if (page_private(&folio->page) =3D=3D MAGIC_PAGE_ZEROED) { + set_page_private(&folio->page, 0); + return true; + } + return false; +} + int arch_get_shadow_stack_status(struct task_struct *t, unsigned long __us= er *status); int arch_set_shadow_stack_status(struct task_struct *t, unsigned long stat= us); int arch_lock_shadow_stack_status(struct task_struct *t, unsigned long sta= tus); diff --git a/mm/page_alloc.c b/mm/page_alloc.c index efb65eee826b..fba8321c45ed 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -1867,7 +1867,13 @@ inline void post_alloc_hook(struct page *page, unsig= ned int order, bool zero_tags =3D init && (gfp_flags & __GFP_ZEROTAGS); int i; =20 - set_page_private(page, 0); + /* + * If the page is pre-zeroed and the caller opted in via + * __GFP_PREZEROED, preserve the marker so the caller can + * skip its own zeroing. Otherwise always clear private. + */ + if (!(prezeroed && (gfp_flags & __GFP_PREZEROED))) + set_page_private(page, 0); =20 /* * If the page is pre-zeroed, skip memory initialization. --=20 MST From nobody Mon Jun 15 18:00:16 2026 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 385603242B1 for ; Sun, 12 Apr 2026 22:50:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776034259; cv=none; b=D+mvVBJQPy/UKrkx43ke0nzI+S2oogfaArgLeWkr34KG8MZGxS4SzjNLAxDHsQUEUyKP/w6KltrRn0TxMPVjBW4QnVxv1p74o86nQ/YD1gNJCUYed+UZNdbKCZhBzHDdiObIWxe4J0/rlIpZK/Wa5OBVZ1aLt4ycwv8aJTWNO1E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776034259; c=relaxed/simple; bh=3c1PROdbIMYmY2GV+qxQCYKAu2jqElfAQaiDsBAfyhY=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=pr3hy+1ct2emjWsQ/B6E/K6l0LpIM0yvrYtZ6wdLfZT/Ahf9HSP9O99MrOUfPn3HrNjWMtyEt9UlcK15vZnYRoqOrbyvE8c5ls/0we/hn7vADFGunIfDtpBKrhZJBZa6+V59WNOj1npMeJ1fflHEOLmRd7F9PTmN3q0RXbwJRNI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=IABUpWQw; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=rlMYtvHB; arc=none smtp.client-ip=170.10.133.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="IABUpWQw"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="rlMYtvHB" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1776034257; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=KFX8n0nPntDWisBxedrwOsXfOmZ1OSsMtUQjLyBO7ck=; b=IABUpWQw/lGVFgTh0ebihC5sWxM1hZ+twgt5Cz+J2OtGQQIKb/Edo+XsjX1cHX2V7tlfoy vCzqvBo94zIXKOFRuw0cPsqrYhdWaHMpIdRUNWwdkjLGkw99yIfG8cHZ2V3lYhu7ncF5DH Bd3xiIYDt2JLb/M3j8zd3RXAfkB/a5o= Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-558-D-V-BiHyMMmwNkfVdhRnxg-1; Sun, 12 Apr 2026 18:50:56 -0400 X-MC-Unique: D-V-BiHyMMmwNkfVdhRnxg-1 X-Mimecast-MFC-AGG-ID: D-V-BiHyMMmwNkfVdhRnxg_1776034255 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-43d7757463eso179314f8f.0 for ; Sun, 12 Apr 2026 15:50:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1776034255; x=1776639055; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=KFX8n0nPntDWisBxedrwOsXfOmZ1OSsMtUQjLyBO7ck=; b=rlMYtvHBalBHp6PctH6cJaWCFS3Ynp1au9CaRiTF7a4beyCVunLA3kgNTYWySkY9dZ sTegZshRyKtTDSouEVZXJeVdNly+qzpyoeoXlYgtOqGFWSVVqP9TJsAWHc8i69Es8bk3 jB6bxfCmvWLHuCPB8UyyCF0anskF9GkATdDv5RFM2yQkxExrCrUH7g0gyL9WnIhpQRKp HOoD2AS86gDh0TsTLwIL4mcAtLuX+4fJmBCiCIFaZXhx1WSi0SgGwkig2ISlCeBZTrQc 30W5ObaZP7i+qjgemiJj/XxfEG4910iIxdA8ok/xNRfBwoL3+QRDzULHcq1eYEQUEL2+ 3tXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776034255; x=1776639055; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=KFX8n0nPntDWisBxedrwOsXfOmZ1OSsMtUQjLyBO7ck=; b=ht9r4pwhCMV+QWT6WZdHg9wPHbk3ZQO0Rt4W5uZpblEBDX2GPXvV0VvUcY6sGJJ+bb 6oTk+kNTErRp3V/4kHCjhC/Kj6f5RHEvuWgOJaw2LJc2q7XGZNUnULIBwoPn/fikEFoq lB2mMbU8uFZosD8MH/L2Znr5Gwc7q97LJWybA2fp09IJ/hygtUX1xlqrMHAqBk8V2BMB zyJ6TlYKAt2XuvxkPj18VB4xksQUoa5aBBieGY4YIFmQWq5fwajNv842wxxUw5cgPknC wnXPzlmZ8nuYP9gTMOjPjKFx8AYRBqjx3TJGNVIGAeNYqIPYj6Mc9S8E5w/T+UHscLDx Qqkg== X-Gm-Message-State: AOJu0YxkjzdySWy73v5e6FDgUm91iVjZRR+9kec34LtnkSG17TPUNjdR yWKXYeJMA5SJ0aGPZ9PQGs6s4Wa7oSq4sYoAdluk1KZtOTGpXKIH/rxu3AUaycuaoK/H9ssjdl4 KAgOkfuY/VRwqvVEWY3611RbodWAND33dYrO+0As3yka11Z9xd0kM8feIq77SByDy2d62qTfSSh qyXCynZqM0Qr/f640V8629tiiHrdnmD2fH1lelmcuAqcE= X-Gm-Gg: AeBDieuwpIw48qJTVKY3hRUk4cTXaVlPyc2vJ6qAmYQokVuf+pjhrc32m7pYKTyuL0R 1bss8EWnKuuZ/eUGTtZsA6W6a2LkeoLzXdSuoSmekuAIQe0O/ZSrA3v91+9c+FuuXSZLK0pFuZF t2Q5FUu7IPGlWPt6V/rKPUVLBty5mxyMp1u5ANurI7L3aYG695z5SF57iPxtn2oqaUiRq3RuzdT 1duZa1Q4TLrEAxxe7OluRQodxqnwk5mrOk+TfTH2iySwA1nWvlj8Ek5JGvpQJCv24of7+BusMND VHyTSnTmCC5dRvN+8t/tNY8xGe6ufkW3DH4rDacA5EzvEUaVfaap+DxCPfHqatnrWkgQQStyF1n FiYnd4XcbzV2x42sKlwDAlNwDFWjF9ij0NqE0gndmUho= X-Received: by 2002:a5d:6e5e:0:b0:43c:f5d0:4f6a with SMTP id ffacd0b85a97d-43d595cd582mr15728280f8f.21.1776034254700; Sun, 12 Apr 2026 15:50:54 -0700 (PDT) X-Received: by 2002:a5d:6e5e:0:b0:43c:f5d0:4f6a with SMTP id ffacd0b85a97d-43d595cd582mr15728249f8f.21.1776034254149; Sun, 12 Apr 2026 15:50:54 -0700 (PDT) Received: from redhat.com (IGLD-80-230-25-21.inter.net.il. [80.230.25.21]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43d63dec27fsm27061714f8f.11.2026.04.12.15.50.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Apr 2026 15:50:52 -0700 (PDT) Date: Sun, 12 Apr 2026 18:50:50 -0400 From: "Michael S. Tsirkin" To: linux-kernel@vger.kernel.org Cc: Andrew Morton , David Hildenbrand , Vlastimil Babka , Brendan Jackman , Michal Hocko , Suren Baghdasaryan , Jason Wang , Andrea Arcangeli , linux-mm@kvack.org, virtualization@lists.linux.dev, Lorenzo Stoakes , "Liam R. Howlett" , Mike Rapoport Subject: [PATCH RFC 4/9] mm: skip zeroing in vma_alloc_zeroed_movable_folio for pre-zeroed pages Message-ID: <027a31beac698f90e76aa68ba6a6101ba60246d0.1776033771.git.mst@redhat.com> References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Use __GFP_PREZEROED and folio_test_clear_prezeroed() to skip clear_user_highpage() when the page is already zeroed. On x86, vma_alloc_zeroed_movable_folio is overridden by a macro that uses __GFP_ZERO directly, so this change has no effect there. Signed-off-by: Michael S. Tsirkin Assisted-by: Claude:claude-opus-4-6 --- include/linux/highmem.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/include/linux/highmem.h b/include/linux/highmem.h index af03db851a1d..b649e7e315f4 100644 --- a/include/linux/highmem.h +++ b/include/linux/highmem.h @@ -322,8 +322,10 @@ struct folio *vma_alloc_zeroed_movable_folio(struct vm= _area_struct *vma, { struct folio *folio; =20 - folio =3D vma_alloc_folio(GFP_HIGHUSER_MOVABLE, 0, vma, vaddr); - if (folio && user_alloc_needs_zeroing()) + folio =3D vma_alloc_folio(GFP_HIGHUSER_MOVABLE | __GFP_PREZEROED, + 0, vma, vaddr); + if (folio && user_alloc_needs_zeroing() && + !folio_test_clear_prezeroed(folio)) clear_user_highpage(&folio->page, vaddr); =20 return folio; --=20 MST From nobody Mon Jun 15 18:00:16 2026 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D7984340A6A for ; Sun, 12 Apr 2026 22:51:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776034263; cv=none; b=PFSCa58ORSm0uxJgyCss4m2DSaEvmDe2whFS84pU67iUqLBvBGIXbxXr3O9zPQc7EFxRwmwJHpihxOJxKrQjSgckOvGYEVpAU3smgQsHUPR+gBf7H8wOtQqxuvvLVwDB/l0lPk0Gd334PocpDCGk/b8SYACwd67L8qv8P/a1eAI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776034263; c=relaxed/simple; bh=6gjSNaFIDSNyW8+yvCTZyht2lyKWhv9QbxmNHAkjjAY=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=HgX3byLENj4jekeopPkcvZOTc9TNR/1ATUa1iCYDIBFshf9mWCSWxokG1m/0WUpUe0qBcZb2SRYKZ1ZEaCTplJpUik31SxyDsC06mHePEOq/AyvNLrPd99tLvuid8Kt57UeglkutL04ZqVSEhbOEGv+UO84QNNbGrI7hs8cJRJY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=HvMhdOti; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=Y33oqQKd; arc=none smtp.client-ip=170.10.133.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="HvMhdOti"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="Y33oqQKd" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1776034260; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=ZObZy/vetFZ/0CGX/0sKWeCj7TXTkOR8AcV2oS2lySk=; b=HvMhdOtibyxBwhAWHaNAFk3A6aBGnH/GzAku+k13qfIPXWWrFxxd6xPEQXzlOcmTQPyyQb BV8TRHzxYkSwWzdbf/hCNVXOJxfCWPlx2t0f54LexKCFugm9clGyG1aWKAvD676rfWjA66 NOYkxl2XlWx1zlBZ4kecp6ADBn5E9/o= Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-576-OhFh-Qo1MhSrwZP5osd3eA-1; Sun, 12 Apr 2026 18:50:59 -0400 X-MC-Unique: OhFh-Qo1MhSrwZP5osd3eA-1 X-Mimecast-MFC-AGG-ID: OhFh-Qo1MhSrwZP5osd3eA_1776034258 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-43d7730e9e3so219829f8f.2 for ; Sun, 12 Apr 2026 15:50:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1776034258; x=1776639058; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=ZObZy/vetFZ/0CGX/0sKWeCj7TXTkOR8AcV2oS2lySk=; b=Y33oqQKdf/6WZdYkkPoO5oT15YGWQgxw3sCuo2oLq6o2Q8F9JdVP4HrUuopE5xr9sl jsuZbsaaSGioEQ9KTx5BuFswMbEOgQG23ixdI5hAFq9SIVesykjxr0mOljWBi0oX9X0e ztP07EE6TiTek/I0dlIAn9tEaQ77/MdiPCG0Y2MWBIV6uoYJVEw8cGL33VwVctRnEjuP LVvZuSM34+FcKwBQ7ScC6LMps7xHAO89XoZt6EZbt+N48Yv+l6Zqg8Sv6SdMWZakrrQR eJ/MbN+zfnz6XVTOFWs5efPwUwwKdzC66bRXDC5DQxbyQITFTqIuOFkPxx2ek6gUECv7 3hZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776034258; x=1776639058; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ZObZy/vetFZ/0CGX/0sKWeCj7TXTkOR8AcV2oS2lySk=; b=I13HEx5nWPuRPlHT/W2spzhujUT/ZRO8W09txmaYd+/GHzDasYZELeMG8VBeyVDbGG XA/cdzWnGGkm97WDIYQGLU+0k1+dNV6JuAHhGy2YCMgrdGCBvNbg252eDDLp7S6ViT/I AhkQWcT0vjEtvq0mzwLZue+WKn4ORU6Gz5hOOictDSYAPuyZq6aQ0rOwVLHKS1eZl8i7 L3YCjtYffoqD0OgPKiC+plRH8JUX4wciRTHDHphrUjZrtSy1XYDYkSu1sUDsvbydTAcy pJV9kWnDs4A+ImQecEyfcxklTOg7DP2ShcO4398u+6xbB6Dagv9bJrCBYA7ncRkd0jLd ehUg== X-Gm-Message-State: AOJu0YwGzdmxo76BqcsLYuWiLgTkJUWM8utPim2QwZzggVxT+xJaAfW+ 3jw8X3NyZftLPX0qr/Wtp4VpThTRYn1jmbhS0dUjKcHvFJ9BvHn9XKbKWS7CZeETOOgBKDezq0L DYoytET8OUoKFZ+yH3Fv7hHfDvb7ZomMsPpgP20Vz7bICEBw2JjN9iGi06gK6WNfb90z5xFFmQL HbqwEDzHb8M+UCrZAYuStcwdp6QQXVXR6yyLIW48lU8k0= X-Gm-Gg: AeBDieudfufnr+I6mNv/WifCBicOjdAlNtoZlxsT7DiCQ9v4s0zKclB7pPm8fq3UDym KpAlqahvJkNHkp63uO+kCby+mXx2S877wmVb69voMsj+ii/m4+qZ30EKIAnTRneIbzSS8Y1IIH4 bpgJCWcmGu+N750XL8fqtp8zkAJnoQvkyt4wNJb4IU+EmMYnqNUt3qiTXa04W4U/H6hD3o5igBF kkRBRPAl1CfNZuNOVhl9xKjXVdkIdSwdMjKT24RKvpB6H//WLWgEPh1W1Y7IazUnhhW2oYmdA9y kD8X9LTVs2PhU8DSWrONlfH5/i7rxUXq31Q7WxlhoAKI4PbVf4Tm9JeUtKLTH7cw2x2KxWYApEu 9rwMY+2/x3Fwuab8ygXovzbHIlA93zCpIus0MVQgZ4OI= X-Received: by 2002:a05:6000:250f:b0:43d:1c7a:8b5b with SMTP id ffacd0b85a97d-43d642d1d00mr16517170f8f.40.1776034258089; Sun, 12 Apr 2026 15:50:58 -0700 (PDT) X-Received: by 2002:a05:6000:250f:b0:43d:1c7a:8b5b with SMTP id ffacd0b85a97d-43d642d1d00mr16517133f8f.40.1776034257540; Sun, 12 Apr 2026 15:50:57 -0700 (PDT) Received: from redhat.com (IGLD-80-230-25-21.inter.net.il. [80.230.25.21]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43d7400708dsm9145343f8f.25.2026.04.12.15.50.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Apr 2026 15:50:56 -0700 (PDT) Date: Sun, 12 Apr 2026 18:50:54 -0400 From: "Michael S. Tsirkin" To: linux-kernel@vger.kernel.org Cc: Andrew Morton , David Hildenbrand , Vlastimil Babka , Brendan Jackman , Michal Hocko , Suren Baghdasaryan , Jason Wang , Andrea Arcangeli , linux-mm@kvack.org, virtualization@lists.linux.dev, Lorenzo Stoakes , "Liam R. Howlett" , Mike Rapoport Subject: [PATCH RFC 5/9] mm: skip zeroing in alloc_anon_folio for pre-zeroed pages Message-ID: <56ae30d7f080b089e4fdc93c4d6e2353a9e0123a.1776033771.git.mst@redhat.com> References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Use __GFP_PREZEROED and folio_test_clear_prezeroed() to skip folio_zero_user() in the mTHP anonymous page allocation path when the page is already zeroed. Signed-off-by: Michael S. Tsirkin Assisted-by: Claude:claude-opus-4-6 --- mm/memory.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mm/memory.c b/mm/memory.c index 07778814b4a8..2f61321a81fd 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -5176,7 +5176,7 @@ static struct folio *alloc_anon_folio(struct vm_fault= *vmf) goto fallback; =20 /* Try allocating the highest of the remaining orders. */ - gfp =3D vma_thp_gfp_mask(vma); + gfp =3D vma_thp_gfp_mask(vma) | __GFP_PREZEROED; while (orders) { addr =3D ALIGN_DOWN(vmf->address, PAGE_SIZE << order); folio =3D vma_alloc_folio(gfp, order, vma, addr); @@ -5194,7 +5194,8 @@ static struct folio *alloc_anon_folio(struct vm_fault= *vmf) * that the page corresponding to the faulting address * will be hot in the cache after zeroing. */ - if (user_alloc_needs_zeroing()) + if (user_alloc_needs_zeroing() && + !folio_test_clear_prezeroed(folio)) folio_zero_user(folio, vmf->address); return folio; } --=20 MST From nobody Mon Jun 15 18:00:16 2026 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CDD72314B6E for ; Sun, 12 Apr 2026 22:51:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776034266; cv=none; b=WHAett4y8oeZOibIx5IJC4FF7MLnDioWJCCZiCMMipv9BJlTYTj2gUp8vvXf+YFj6aHyEE/1E2GsDgvnsg0npYNxmScNOgxazTSUV9MWyfSvJI6N5tgTMb2BiSd6XiBI4cuYU1wvDezmHH7CL7LpelybVi7zU3cFNf0EGivP5Mk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776034266; c=relaxed/simple; bh=aYuD9Wu7xKcWs694vDzcw0w1jYymMhPxxEVr4FRcmuQ=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=q8b2ctdM+Pexd1MYWlXuFWAWfb+0cZGtK606wkmrZ2NttvqgjfWveJCFsv1T/M3erJscz+xKtr2NAXlVSzpvxZcoLJE2be90hYnSQ8vgcmqdGWYCu6Z1GX1bVC8uoZZffDKFnbQ3UZxJhCUG8sTIVEE4hxmBQ77SvzPmkRNKaUU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=ThpzgpiG; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=Gyy5iif5; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="ThpzgpiG"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="Gyy5iif5" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1776034263; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=KeiS9llWPPLpjQcwO7WKyNbjSAhoiU1ctMTrblj5iUo=; b=ThpzgpiGEilohy9xmI3VntK6cShj0czlB5sowe6FT31pL4aAq7oKCv96vLuEwxtr2CG6R/ 0pgUi5tpDNpKcuCbF6FR9JOyA+WX9DNSBpWSgvMVpaIGmYNjkPIcFTqxKFG6KHnuB0kJco XuSlj4hwLLgF3Gp68/+fH0yEvAAj8zY= Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-639-g3KrPzJGNNKtTZWY-cSBgA-1; Sun, 12 Apr 2026 18:51:02 -0400 X-MC-Unique: g3KrPzJGNNKtTZWY-cSBgA-1 X-Mimecast-MFC-AGG-ID: g3KrPzJGNNKtTZWY-cSBgA_1776034261 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-43d7b7bacddso17531f8f.0 for ; Sun, 12 Apr 2026 15:51:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1776034261; x=1776639061; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=KeiS9llWPPLpjQcwO7WKyNbjSAhoiU1ctMTrblj5iUo=; b=Gyy5iif5I3R4CNsoj31SCl0w8Nvt9Efh4ctm18m2HNWMCd2ZuLgI7EEgWOMs5rVLPI O248DJVXegURs3+PMw/5U/n1YYYYtEYlPc9svqj4vHq6SWy7aDwb0MlcMEws8r2fr+1a vPHu83vRGFhf16t5RChDPT+woEQiczSFvzexgVvYkoyiHXek2OhW816LjzwHrngRVXCo eJcm1L8JHQJtIjMz9k4lDJedYXcGfRlc4zBBaVEp2bCCie4pZ/gepkqFv6nkLE1goj5v h/WvSf0dNRhr8y1a+22xTPoUTyMpi10bxmZFqCQVcWoaSEAv7mO+3jWLhOU6zR7AMIbP R3bw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776034261; x=1776639061; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=KeiS9llWPPLpjQcwO7WKyNbjSAhoiU1ctMTrblj5iUo=; b=CC3JQknCNmhnNiB07NzWPDuRpIY1vhGUBKVo7fLJ/AweibIOkHUSwd4uqWaxkiNu/X XIj+XV33AwF0jltdG0A9owaYggaEsmelc/xF6JAWm17v0RdaLQpP8c280q4cXCtZurXC xyiWAxpniqDWeqIwQXccCDIW13NN6u7+Fdc1AsVlluR0vqwDM4zhOosxC7rhwGQXye9W EA/Y/hTbhG7afs3aX8Wyvmr5rg4DX495w45980eHP1c5AiDCi3bIq6KAwyacCafyuwB/ y4Bo+ojonwGLu4NntJBvIcK0XYvUHVxRiAAc0xgjJRYKahiLFUj9F+kNqEYJsNZUWjyM un5g== X-Gm-Message-State: AOJu0Yy4I+BT1va8q2WqB3vFVpK/qJvUdH4kOfgPfPMlXPTOeZeUs6CZ +1Ob6nNTN/CYoKWNmL1qnHUoUPVAkYdkO6OxqrwwzxmiYvFbVJsM8pmXqKn99dTXA5Ixx0ScgoB ExkEx9Pqlh++E5d4reaY4VbXBDDppyuxaOIdg3XMAuKwoLn7QvnqxOazHB5Sqf1RtydHZ7ffzjJ mm49Hxj91W/3BJ59mS/LFLxOmdhRy2Lz90LIW92QrQRy8= X-Gm-Gg: AeBDieveMlhW86hOi3y57R2yP8Q5yftJNUceB1euPZchJhJgtdh0huF1miFRfV2K0zZ TADpOpP7kWdze7YbaRe3zYw88d/h/yHirAJNndWYYTosHO0GZtjKkSm6cJQ8ghj7dwdhwnt6X/3 zilgElvK3Y7ZXDFiwUj3VuuukZXX9PTXdQ0kK+lgdyutALvZV3JCcdq8Z0RgW6S3H+5S2q/nhhf yqAU/PCGJRs/iuwfYAs7Qio6VcOyAO+IPhqNpQV0wV6ugAZ7LVJKJ9+FMmGOlf8vI9PYk5aDdNO 7oa4UHEBNIGMGK0FQgxbsAQmNQ+SprlW8IosibZNRgrSwjoEEIU1FWbhouHVOJham5zHbni3Wfk YgOEraVVFAWpZ5elUXu+rZTBbX0LBKwMVxm/I26Ma+HA= X-Received: by 2002:a05:6000:208a:b0:43b:3be3:9a16 with SMTP id ffacd0b85a97d-43d642c1484mr16295655f8f.38.1776034261165; Sun, 12 Apr 2026 15:51:01 -0700 (PDT) X-Received: by 2002:a05:6000:208a:b0:43b:3be3:9a16 with SMTP id ffacd0b85a97d-43d642c1484mr16295620f8f.38.1776034260688; Sun, 12 Apr 2026 15:51:00 -0700 (PDT) Received: from redhat.com (IGLD-80-230-25-21.inter.net.il. [80.230.25.21]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43d6f4bf2b4sm12414218f8f.20.2026.04.12.15.50.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Apr 2026 15:51:00 -0700 (PDT) Date: Sun, 12 Apr 2026 18:50:57 -0400 From: "Michael S. Tsirkin" To: linux-kernel@vger.kernel.org Cc: Andrew Morton , David Hildenbrand , Vlastimil Babka , Brendan Jackman , Michal Hocko , Suren Baghdasaryan , Jason Wang , Andrea Arcangeli , linux-mm@kvack.org, virtualization@lists.linux.dev, Lorenzo Stoakes , Zi Yan , Baolin Wang , "Liam R. Howlett" , Nico Pache , Ryan Roberts , Dev Jain , Barry Song , Lance Yang Subject: [PATCH RFC 6/9] mm: skip zeroing in vma_alloc_anon_folio_pmd for pre-zeroed pages Message-ID: <7287019f2665c85a7a7fb5ffc25d7203bdfa9a9c.1776033771.git.mst@redhat.com> References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Use __GFP_PREZEROED and folio_test_clear_prezeroed() to skip folio_zero_user() in the PMD THP anonymous page allocation path when the page is already zeroed. Signed-off-by: Michael S. Tsirkin Assisted-by: Claude:claude-opus-4-6 --- mm/huge_memory.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mm/huge_memory.c b/mm/huge_memory.c index 8e2746ea74ad..3b9b53fad0f1 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -1256,7 +1256,7 @@ EXPORT_SYMBOL_GPL(thp_get_unmapped_area); static struct folio *vma_alloc_anon_folio_pmd(struct vm_area_struct *vma, unsigned long addr) { - gfp_t gfp =3D vma_thp_gfp_mask(vma); + gfp_t gfp =3D vma_thp_gfp_mask(vma) | __GFP_PREZEROED; const int order =3D HPAGE_PMD_ORDER; struct folio *folio; =20 @@ -1285,7 +1285,7 @@ static struct folio *vma_alloc_anon_folio_pmd(struct = vm_area_struct *vma, * make sure that the page corresponding to the faulting address will be * hot in the cache after zeroing. */ - if (user_alloc_needs_zeroing()) + if (user_alloc_needs_zeroing() && !folio_test_clear_prezeroed(folio)) folio_zero_user(folio, addr); /* * The memory barrier inside __folio_mark_uptodate makes sure that --=20 MST From nobody Mon Jun 15 18:00:16 2026 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1E4C02DF13A for ; Sun, 12 Apr 2026 22:51:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776034277; cv=none; b=aVpLeE4PhOt9L1/UPuhQqN0u/NPhx8xd+iyCIbdj4I3TZYE2mkiA7AZS3xPt/z3woPMstX/r2PpDHYWp271EHCwS12Czx4kTvDltxqOLkPZKEsMFYqSw+Camidn2GHyxIP5J1otVipNLFrUtVQAzoPGvV6cHLQsTh7sYoUD7Xmw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776034277; c=relaxed/simple; bh=wQTexAwnGytwCFSIS/P6kaYAjB5J4jvqVusvwQE/7Cs=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=BChXEpWPjzddRj47N+GQMwNieh/S7miZj02fazt4YkR05XD/9h/zvwYVf9oz1fi7luZK7pTl+mbLlgkaajQB8gBdD8jr8+WV+z1RT2RXpQQoB4VA4sbMq3iDtNZnty0LzzMc/xzEfZkmP+TqXoyDY1+g8az0arDWZMMeTFWj5W0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=fu1CzD+B; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=s+HA1VM9; arc=none smtp.client-ip=170.10.133.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="fu1CzD+B"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="s+HA1VM9" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1776034275; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=r7PQCfO1LkfIlhF+m0/p+q9abrYZpC0b3LWn2Ob4o6U=; b=fu1CzD+BMumnfx9vR6GOdf786bHrfgbCJrLKwOudYOO6x4ha1357fpUtT7kpXx49dlfNHH WFQXzkaCusX5IlyAYAkLOVphMf/k8eSw/UygjWqGSbApxwTM/k8YFYGa3M0I6EtuFNj1N0 JkqcjlyD/mXjH7XMj6nJPQ0fWpcBjUw= Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-568-0TtdwjPIPdaHIu1tgA9_Bw-1; Sun, 12 Apr 2026 18:51:07 -0400 X-MC-Unique: 0TtdwjPIPdaHIu1tgA9_Bw-1 X-Mimecast-MFC-AGG-ID: 0TtdwjPIPdaHIu1tgA9_Bw_1776034266 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-4837bfcfe0dso31266775e9.1 for ; Sun, 12 Apr 2026 15:51:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1776034266; x=1776639066; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=r7PQCfO1LkfIlhF+m0/p+q9abrYZpC0b3LWn2Ob4o6U=; b=s+HA1VM9CmJd6wXx2oQUTmB/nT78FijhLXvU0/QP+3poY2x2EdOihkkrKHdiauVMu6 GJ/YRZGye70cTGhnaczaOFVSH7UL0wLnKAJEVYBlAzdewNBHSe03dVKpt3kY2cFB9cv9 HNSmXIjvKh6hWTNPQfCosce9WtPrA6JbMM6KZWwn2eRA5n3TouFRk8GkLW0NnFY1DAoc 1pgK0bgmURemcGil2qR3OGxw8tHDlB1xafSsFEIlAlrr53jcY1dZ901t6LbNoQVFFZcf EAIPCdu4T4uFBgWH8utDDlUd2uPon9/J1/S6vYZYUn1R2nHnAdqyagHYuNLh+ZjvT0wh l5uA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776034266; x=1776639066; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=r7PQCfO1LkfIlhF+m0/p+q9abrYZpC0b3LWn2Ob4o6U=; b=ZWAwVbZB+l1EustVXGDZjtUVZ8NUylWAkTs46JIV+w+vXeXxjDusYl8TAP9qNpW3mJ ScHmnIVXfqgAgFQLDMZPdNOsvRUlJILP9Nks96pr0TTMTMp0kFJ6Gf9jiLRnyBReXC1H YNf9O/DaXoSEAPzKEAq2kerCVReGXRKhcS+UJk97zx8DxEVgWJe9d2+8a0O1PreNLN+7 f0dlNyrXFrGJyCIDWZ1cOfIq9RwYqt5P4laoXmYjclBGvLv+5q56Bf+qM0kTnevqbg1a ZVJ4fb5v6ZB8F2sQfcvty8jiC8LNSsEoJ9Lk56XxUV0SJWv/wC8f22x0+RwgMsPvhv+h TVKQ== X-Gm-Message-State: AOJu0Yy6scB+xEUhFX3w4PpbcRHnUOvmrgnefV9zrqeKHzQ+1AbYDEi1 Ymf7NzS+1ca2ecd6t26NqT+08zoWTHd8ypzCdixsZ7BVG02f2iZdyTMFHa53v6DJBHC8o7ekl80 sr0L1Y0FJQ6izd3zD/CZ7r+4j/l+XYOWQhlG3BJ6aIR3xIv8LOTk+Q0W/gbTS2dSiq05Yt45tkX m7f7jnzYbDpiXUQi+UBE7MfQDzocJvzgqhqeOHdSZFYJQ= X-Gm-Gg: AeBDieud4I+oPR4c46rfSX+II4/hBhY12VqvSZqdfQYU0JiN13fIFfUkL8Fdlj8YSa/ SF+SFasZVTcF0i2ZWR79cTHdSWbChyda6omL5HxAyI86A56PTIeQFxLlfXO1Soy1QYd7mcnhu4O wdWkjML5XvCwToVUzEKFJl9mbXTdg//i0Szt3ryb4GalF3aSscfMNB8M3F3TX7gPKfLPS+wj6VX 6TsAGpvzaOsWmbw9rKFTHg5Mtzdj7b39tFJi2TAKVSG3NXLyP0oOq0BniggD4+9Sj61LgbqgYBp 2zoVp9NlnfLSQmyjfgiX7HVFIyba/HHKWqm49RReVbmjRQnwpPpKqQrTLV2N09N4zTNNV1rc/WR SDjPQ+Sir9NgYelNPwy0aXzcjrxT1hzbudiua7lLV3D4= X-Received: by 2002:a05:600c:8585:b0:488:9bf8:7f17 with SMTP id 5b1f17b1804b1-488d684bcb0mr113206735e9.14.1776034265610; Sun, 12 Apr 2026 15:51:05 -0700 (PDT) X-Received: by 2002:a05:600c:8585:b0:488:9bf8:7f17 with SMTP id 5b1f17b1804b1-488d684bcb0mr113206465e9.14.1776034265017; Sun, 12 Apr 2026 15:51:05 -0700 (PDT) Received: from redhat.com (IGLD-80-230-25-21.inter.net.il. [80.230.25.21]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-488d6881ea1sm80171315e9.33.2026.04.12.15.51.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Apr 2026 15:51:04 -0700 (PDT) Date: Sun, 12 Apr 2026 18:51:00 -0400 From: "Michael S. Tsirkin" To: linux-kernel@vger.kernel.org Cc: Andrew Morton , David Hildenbrand , Vlastimil Babka , Brendan Jackman , Michal Hocko , Suren Baghdasaryan , Jason Wang , Andrea Arcangeli , linux-mm@kvack.org, virtualization@lists.linux.dev, Muchun Song , Oscar Salvador Subject: [PATCH RFC 7/9] mm: hugetlb: skip zeroing of pre-zeroed hugetlb pages Message-ID: <7d1c82bd0fe7f80212cb5ff7dafe24e1debca8f6.1776033771.git.mst@redhat.com> References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" When a surplus hugetlb page is allocated from the buddy allocator and the page was previously reported to the host (and zeroed on reclaim), skip the redundant folio_zero_user() in the hugetlb fault path. This only benefits surplus hugetlb pages that are freshly allocated from the buddy. Pages from the persistent hugetlb pool are not affected since they are not allocated from buddy at fault time. Signed-off-by: Michael S. Tsirkin Assisted-by: Claude:claude-opus-4-6 --- fs/hugetlbfs/inode.c | 3 ++- include/linux/hugetlb.h | 2 +- mm/hugetlb.c | 3 ++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c index 3f70c47981de..301567ad160f 100644 --- a/fs/hugetlbfs/inode.c +++ b/fs/hugetlbfs/inode.c @@ -828,7 +828,8 @@ static long hugetlbfs_fallocate(struct file *file, int = mode, loff_t offset, error =3D PTR_ERR(folio); goto out; } - folio_zero_user(folio, addr); + if (!folio_test_clear_prezeroed(folio)) + folio_zero_user(folio, addr); __folio_mark_uptodate(folio); error =3D hugetlb_add_to_page_cache(folio, mapping, index); if (unlikely(error)) { diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h index 65910437be1c..07e3ef8c0418 100644 --- a/include/linux/hugetlb.h +++ b/include/linux/hugetlb.h @@ -937,7 +937,7 @@ static inline bool hugepage_movable_supported(struct hs= tate *h) /* Movability of hugepages depends on migration support. */ static inline gfp_t htlb_alloc_mask(struct hstate *h) { - gfp_t gfp =3D __GFP_COMP | __GFP_NOWARN; + gfp_t gfp =3D __GFP_COMP | __GFP_NOWARN | __GFP_PREZEROED; =20 gfp |=3D hugepage_movable_supported(h) ? GFP_HIGHUSER_MOVABLE : GFP_HIGHU= SER; =20 diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 0beb6e22bc26..5b23b006c37c 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -5809,7 +5809,8 @@ static vm_fault_t hugetlb_no_page(struct address_spac= e *mapping, ret =3D 0; goto out; } - folio_zero_user(folio, vmf->real_address); + if (!folio_test_clear_prezeroed(folio)) + folio_zero_user(folio, vmf->real_address); __folio_mark_uptodate(folio); new_folio =3D true; =20 --=20 MST From nobody Mon Jun 15 18:00:16 2026 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B9F25259CB2 for ; Sun, 12 Apr 2026 22:51:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776034273; cv=none; b=KZ3n3ELx/HzmszJoFlc7JWcZVkxxEZXp36RpT2g+WX1uBsWIK9pA5vyvSlOYY4r9ZkTmVozs7y0Et19Hkk2MlHvfI2J8BKcpVU/T85ELKN0jo/CsTCChSlZ3W2DPdxC2iHUbp5ca/6Iopiz4Ru2wLh2IHaMAFd6qcIiY7RWrPU0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776034273; c=relaxed/simple; bh=ZK/q59+MUDzl0Cfw/xbz4x9B1+Xq5fYWSD8aWczQweY=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=TpPwEtYKWQxgZV9V36UFBc29A1PXJZlHIG5K3HWB85qgRAaDQZsGdWf1wpuG2Dc06FWab/QXolzjNrvR57Fx5vnL3FwvkPpDKlAqyS5+2mQE5TK84hyg8cyoQl2YOg6m8zXAQLgwUv9Y1+mkolrtxCaQ2HbusgziMKtBOqxfi3U= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=Bbtel6A9; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=GUTJKts6; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="Bbtel6A9"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="GUTJKts6" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1776034271; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=i6fKfkMPTLST/NSxam2u+fhT/53Q+wPZCVCtdXXmORc=; b=Bbtel6A9F48leQ4QBeVoG/am0/ABTtS1CIcBokWELdwD1cy7HBpj3lOQwWu9RUK1uNNn+b RLgSCnoGFkr3QsVVXu89IR846jKn8ZsJ34FqYwQqIbMrvs6kBkv3BD2CKk5GwotKK1vE/J LOKVNhdgIE/iczbH6DcusVoCt5ztFPQ= Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-685-C54Sc-2_Nlim3PHXmSWwmA-1; Sun, 12 Apr 2026 18:51:09 -0400 X-MC-Unique: C54Sc-2_Nlim3PHXmSWwmA-1 X-Mimecast-MFC-AGG-ID: C54Sc-2_Nlim3PHXmSWwmA_1776034268 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-43cfb72377bso3007244f8f.2 for ; Sun, 12 Apr 2026 15:51:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1776034268; x=1776639068; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=i6fKfkMPTLST/NSxam2u+fhT/53Q+wPZCVCtdXXmORc=; b=GUTJKts6y4ZQbSoDvCYR9zdQYLspu2Wzv2BWRPMZ6Ehlg4i9Dyq8VsnKGkPvZmaoms mTEnMrwJ/Zxt2CbIMLgYbAKU5ZcfawZ0TNSfywwkNimGlJptsbakfNeh6qk0yA4jKjyc m4N0HUxx1di12NeTjPzWjJv3iB0ckJdJNUXsrJKnh9WEYosrD+pqs4Tw+mjFYTYcJY/o 9MWLE5+bt3HaCxV4YaVFStXFnXiKE2vegiVwDG71EdaN/eeq4/VYkQYmn9xZTaAbX2ag C8sh5TZflIkWGucBQbCtwa0/zZ356OVLviEnMiklWj2fEkwJF9W5JDtQHOsiOGCZuQfD elwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776034268; x=1776639068; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=i6fKfkMPTLST/NSxam2u+fhT/53Q+wPZCVCtdXXmORc=; b=CaXS45oTbL04SeEcWJgATqB235L1nN1AeuAisO1Ky7ekCdyrMlN3n1kOUIHm5+lDTU 899P8OYrQN79cH9OdTLLB1EBAzCadaAE8qKdMZBWr3wZL0eoxDBHZEu6UhUMs/H2u4fg 7Nd7wEHT6Ef3Jiv5rpn45fyg9zVXWIF+I2+VX8kTIdyxAQG8h4wYV0wve+9QaUqj+kFA 7QPl4WVSz277PhX2Zfmgl28/fOnErrK5Q/odUiLgam3/ixdNCACUwn2WnUu8IxdoKXFJ ixzq0VmcXbuinFMeLQ75fKX7T3HKIAKfO9rrwcxK0LStSsoAP7+OF0xak745AcPVVEv0 1k6g== X-Gm-Message-State: AOJu0YyNCuJ0yLQOQeAJ7/MmJVz6ddVcRcq+xAXHcGHeoXtjaVyPP7qE dHPZ2ajhoRrXNSqUIvK1P32XmK0ZuhsF6MYPyHcOSPdKtZZ7I4d3nNLljHebvsnDa+9RiUQ1wMB 4ATAS6qlAR0oJdlsZkA3ng+Ps3xjSOJoMPec7RPh7hc1zeqa7tfFkiHndvx+r5mh6GD3268gN2e noCh4gfLdO6zPW34DRmJL5fzOaoqKoi/ZL0sVdM0NqmeI= X-Gm-Gg: AeBDiesqxskeRYRnHz98AfYMIBXk8CvOxn4SL/mgVvu7B2Zt92ql6OQtzZsecXdUslw 9GDRXHIJDYRaxMB3Ase0nlUWpIrEM2wSyWYSBpxuk+bW02yuCnUYrUErrc3jxrXWEFoUuVZtVY3 h5pq49wxkFrNO9/zPiCU/FI4Em8edJeCIl0MadalZA7xN2EzcRnqckU4Lw2TCcH1CvR6HlXmRaV U42wMgKpetBgVLa5xnOFdq5iTAHKh0AHa1bxd/YP7Qmk+PjggQ6BAh+1nyNTa3t9sNDhkjcsuss 5cZ91yfVhldEZZUOyJcAUvB+ry478NUYqp2sYtBEbL2MzF6bGCBQi5DjNObuFal/wT/U55cavYW wM5m5fBq7zE21xW0C0zoq1idLUQ5phFZKHsUefFnyzyU= X-Received: by 2002:a05:6000:220b:b0:43c:fdd:ea96 with SMTP id ffacd0b85a97d-43d642b6e75mr15170218f8f.26.1776034268142; Sun, 12 Apr 2026 15:51:08 -0700 (PDT) X-Received: by 2002:a05:6000:220b:b0:43c:fdd:ea96 with SMTP id ffacd0b85a97d-43d642b6e75mr15170178f8f.26.1776034267683; Sun, 12 Apr 2026 15:51:07 -0700 (PDT) Received: from redhat.com (IGLD-80-230-25-21.inter.net.il. [80.230.25.21]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43d7794cce5sm4876502f8f.9.2026.04.12.15.51.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Apr 2026 15:51:07 -0700 (PDT) Date: Sun, 12 Apr 2026 18:51:05 -0400 From: "Michael S. Tsirkin" To: linux-kernel@vger.kernel.org Cc: Andrew Morton , David Hildenbrand , Vlastimil Babka , Brendan Jackman , Michal Hocko , Suren Baghdasaryan , Jason Wang , Andrea Arcangeli , linux-mm@kvack.org, virtualization@lists.linux.dev, Johannes Weiner , Zi Yan Subject: [PATCH RFC 8/9] mm: page_reporting: add flush parameter to trigger immediate reporting Message-ID: <73acb39342827bfb09f5fd717a07c9a58e41ec91.1776033771.git.mst@redhat.com> References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add a write-only module parameter 'flush' that triggers an immediate page reporting cycle. Writing any value flushes pending work and runs one cycle synchronously. This is useful for testing and benchmarking the pre-zeroed page optimization, where the reporting delay (2 seconds) makes it hard to ensure pages are reported before measuring allocation performance. echo 1 > /sys/module/page_reporting/parameters/flush Signed-off-by: Michael S. Tsirkin Assisted-by: Claude:claude-opus-4-6 --- mm/page_reporting.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/mm/page_reporting.c b/mm/page_reporting.c index cb24832bdf4e..e9a2186e4c48 100644 --- a/mm/page_reporting.c +++ b/mm/page_reporting.c @@ -351,6 +351,31 @@ static void page_reporting_process(struct work_struct = *work) static DEFINE_MUTEX(page_reporting_mutex); DEFINE_STATIC_KEY_FALSE(page_reporting_enabled); =20 +static int page_reporting_flush_set(const char *val, + const struct kernel_param *kp) +{ + struct page_reporting_dev_info *prdev; + + mutex_lock(&page_reporting_mutex); + prdev =3D rcu_dereference_protected(pr_dev_info, + lockdep_is_held(&page_reporting_mutex)); + if (prdev) { + flush_delayed_work(&prdev->work); + __page_reporting_request(prdev); + flush_delayed_work(&prdev->work); + } + mutex_unlock(&page_reporting_mutex); + return 0; +} + +static const struct kernel_param_ops flush_ops =3D { + .set =3D page_reporting_flush_set, + .get =3D param_get_uint, +}; +static unsigned int page_reporting_flush; +module_param_cb(flush, &flush_ops, &page_reporting_flush, 0200); +MODULE_PARM_DESC(flush, "Trigger immediate page reporting cycle"); + int page_reporting_register(struct page_reporting_dev_info *prdev) { int err =3D 0; --=20 MST From nobody Mon Jun 15 18:00:16 2026 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 532643242B1 for ; Sun, 12 Apr 2026 22:51:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776034275; cv=none; b=s7yI9tJj3sgMWwJpzMRrRMmR99VDyizOLvz0C7VxdzbBAXHSiaRbn+3lo6ck8jqa6CgGh7txCGJvlxbbGOJditmADe4/WGK4v4e49oK5V8OswaHODom7t0Nc98tntBmWp561JMmh2D0yJeFVpbXNWSFGWBVpNYHKOHGut7eZhZE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776034275; c=relaxed/simple; bh=XT8XjxrOo8Cw3Xtsh9vyWO+BBJloOorKy42s8aeR6k0=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=iQME+9UxXHCi6JpCxBEQvezer5PHLgrmnZgYd2LZ70vP/HSebrpMKVOtJoegNFzbFO7Q4LJeL4doBPdLmzMw8Cqn0mrrEVJLgi5Sywi0RPRPqLOlkwQaxIg4BHt0oHlT15hscwYhpH8zr0ijAexbff3nDlu1fqY2RvCSehFDvVo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=fUgNopBH; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=EZaf2VBL; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="fUgNopBH"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="EZaf2VBL" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1776034273; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=TlfRBK2bX8o/k8wjGS3qq/qL09qxPEswmhdPhNP/qNU=; b=fUgNopBHuFM+syu3UFnDeOlMYOer5/QKMpOp6y0Ff0v/b33YZwWh20Tna5Tq4lkXkiby+T SpL88xqv1sId6eHP8S/0Oxq8LW69wWTPJxANggiSgmLShDsFTwAwHlrT0vHEKOKx8m1r3t seNcbaFrgAbjeOlkBkNNYQ+RemLunb0= Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-657-G6sEh-MjNbOildQ7QtO6Hg-1; Sun, 12 Apr 2026 18:51:12 -0400 X-MC-Unique: G6sEh-MjNbOildQ7QtO6Hg-1 X-Mimecast-MFC-AGG-ID: G6sEh-MjNbOildQ7QtO6Hg_1776034271 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-488c213b485so25275545e9.2 for ; Sun, 12 Apr 2026 15:51:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1776034271; x=1776639071; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=TlfRBK2bX8o/k8wjGS3qq/qL09qxPEswmhdPhNP/qNU=; b=EZaf2VBLbCnRXvmkOaNzftoPWT0cVzlsjktAnWjfdlG63J5FjzTlrFssu/cZmYBF/b tjI4g6g+YwhUAk0IAsxgaXwt1zAMIzWakW+FlQypEsJDxw9ndvuWW1L3cykRV81iSnUH FshBQ9gTA/rVWLIUiDDQyfXACx0hRWmE2rCtXjej5DokFaNH5RiosDj6G7hM8UXycjYa Zfxipo1eYT0TBJhvSzPQrTqBKItr3g8YiFNbVzuyRlcNd/rmG//UuwiaY5djiSfWmr38 vf8IpRWzBNwZF66pjel+kknR36kEXC2WEe3JTrBcuEJIFEKjvulptOl2ym6UMsA4rfbc IQPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776034271; x=1776639071; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=TlfRBK2bX8o/k8wjGS3qq/qL09qxPEswmhdPhNP/qNU=; b=iFLm4ECqB/o2RVvGHLjvbl2khwRKOM2T+PKEkL398MiwJEvA/Uq/fJcfhUQDuGrsDK BV7NlnpsYbakvAtKvRZgrnaKhdRM/wy2zJG1GMvVDv1twDD+EnXp7S0Ufr/YG4cY5Bet BQ24d8CGV9Qaj4HUBsDYNbb4XXVYtfmVKRT9gSivvl2OtYA7RGXbpSRegOA+gq8s7qau oPXmeOlOqfS01Qda9YnmJyRWpVFqjP0VvavZQnCwW7mqwuuZ/uvuQuwfhrUspnggLej4 4HbVCAkd63GkpUaInro8muWkfEkFg1I3xWY6pu8q+KwnkDQrLIARPXrOlNIVklJCPT2q xVDQ== X-Gm-Message-State: AOJu0YzvJh45kePB58qH6ehm02dTF64AerGD99htxmWUY5jIUKgr4f8W r9IilDZHDB/mJLEzN0RfwLS2G9FMT/0JXk55/QL7wdaClC+IhitghuPyHy+D0ofxd7AxJhWVjKn yHjjgbj4EJyY9/QG5GMgLoIq9arlvDNk4HiGQDS+yhpFm1TvvDQi5IL+i6XRYJi2gLS7vPH//cQ dstTYkRvbmXElU0rTBnhQweGHUUta+S3S4rnqz2T+5/tk= X-Gm-Gg: AeBDieuGXuNnOaK4DL8n1d5SsJNyNeBhZpvf1rsaJRUUlfNM82SiA1wp+ezRbZLvEA7 z0udn8EDkcYrRNKmrxNpaULewQ2HUKmiHzn1diMf0BqH/ipI6rSjOB4HXCm2psJaRlNU855gVtb 5Ew36WBgECvvxtjqKIlVq3pjce4dKbZF0xpU8UrKwlGmabmmMqnbvgAZdAL2VheR232iZs2y+DU JXKHZh3eUt4TUIgeaxpXz7uIQbuhzEI7BrDn26Dgwa5+UGuKGzSZ4PVMQklmLbJU+fEY9pm3O0c aD/Dm4ypbPzw9SCta+1KCL4vv98MCVqSWY5m47s0W38R8TFNOcsDtUXDs3oC2N3yAproEx0ajh3 kjv9CaZW97Rr18p3pJKPQJYDXdUnlUTCFuX/BiUcAIa8= X-Received: by 2002:a05:600c:8b27:b0:488:af7f:775f with SMTP id 5b1f17b1804b1-488d68766c7mr139928455e9.18.1776034271005; Sun, 12 Apr 2026 15:51:11 -0700 (PDT) X-Received: by 2002:a05:600c:8b27:b0:488:af7f:775f with SMTP id 5b1f17b1804b1-488d68766c7mr139928185e9.18.1776034270471; Sun, 12 Apr 2026 15:51:10 -0700 (PDT) Received: from redhat.com (IGLD-80-230-25-21.inter.net.il. [80.230.25.21]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-488d5888acbsm285563185e9.1.2026.04.12.15.51.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Apr 2026 15:51:09 -0700 (PDT) Date: Sun, 12 Apr 2026 18:51:07 -0400 From: "Michael S. Tsirkin" To: linux-kernel@vger.kernel.org Cc: Andrew Morton , David Hildenbrand , Vlastimil Babka , Brendan Jackman , Michal Hocko , Suren Baghdasaryan , Jason Wang , Andrea Arcangeli , linux-mm@kvack.org, virtualization@lists.linux.dev, Xuan Zhuo , Eugenio =?utf-8?B?UMOpcmV6?= Subject: [PATCH RFC 9/9] virtio_balloon: a hack to enable host-zeroed page optimization Message-ID: <709f6d4e2a454d44cb89c73652e7769692eedb13.1776033771.git.mst@redhat.com> References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add a module parameter host_zeroes_pages to opt in to the pre-zeroed page optimization. A proper virtio feature flag is needed before this can be merged. insmod virtio_balloon.ko host_zeroes_pages=3D1 Signed-off-by: Michael S. Tsirkin Assisted-by: Claude:claude-opus-4-6 --- drivers/virtio/virtio_balloon.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloo= n.c index d1fbc8fe8470..5d37196daa75 100644 --- a/drivers/virtio/virtio_balloon.c +++ b/drivers/virtio/virtio_balloon.c @@ -19,6 +19,11 @@ #include #include =20 +static bool host_zeroes_pages; +module_param(host_zeroes_pages, bool, 0644); +MODULE_PARM_DESC(host_zeroes_pages, + "Host zeroes reported pages, skip guest re-zeroing"); + /* * Balloon device works in 4K page units. So each page is pointed to by * multiple balloon pages. All memory counters in this driver are in ball= oon @@ -1039,6 +1044,8 @@ static int virtballoon_probe(struct virtio_device *vd= ev) vb->pr_dev_info.order =3D 5; #endif =20 + /* TODO: needs a virtio feature flag */ + vb->pr_dev_info.host_zeroes_pages =3D host_zeroes_pages; err =3D page_reporting_register(&vb->pr_dev_info); if (err) goto out_unregister_oom; --=20 MST