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 90F2DC021B8 for ; Sat, 1 Mar 2025 13:50:35 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 7C4816B007B; Sat, 1 Mar 2025 08:50:34 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 774176B0082; Sat, 1 Mar 2025 08:50:34 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 63BC36B0083; Sat, 1 Mar 2025 08:50:34 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 46BDC6B007B for ; Sat, 1 Mar 2025 08:50:34 -0500 (EST) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 830C35273F for ; Sat, 1 Mar 2025 13:50:33 +0000 (UTC) X-FDA: 83173117146.13.B086A4E Received: from mail-pl1-f196.google.com (mail-pl1-f196.google.com [209.85.214.196]) by imf17.hostedemail.com (Postfix) with ESMTP id 7E66440013 for ; Sat, 1 Mar 2025 13:50:31 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=WITnRUZn; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf17.hostedemail.com: domain of yunshenglin0825@gmail.com designates 209.85.214.196 as permitted sender) smtp.mailfrom=yunshenglin0825@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1740837031; a=rsa-sha256; cv=none; b=yQVwrB1BVqhzYb7J+VB/GvQFnx5biFA6GhdqR8MPagA0AX81YIK4AlmVbZOTQmD/NqTShP ixUmLEBYaAPo94bzeSELFVWquGZnKcL6yCFEfH7bz7gjPzIfI3z+qC9Vi56CPr0cM3riyK D5mQiLj3MK1q113LKQlcJSRDcDfPKHw= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=WITnRUZn; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf17.hostedemail.com: domain of yunshenglin0825@gmail.com designates 209.85.214.196 as permitted sender) smtp.mailfrom=yunshenglin0825@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1740837031; 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:dkim-signature; bh=pJgxQ9kTw71K96V2pNjoEy9ewjLpxCqdEPFpCMMN/U4=; b=MPq6wmDrjpIDUdssyD3y649BR3vZVrCaGi0Wlm/391DYyXsBf6w4Fcxkkr4sYNcFBl5NfH hSijg2vKKf4z7nPfcLEL6Qw4g9LiSlbYKqw4u7TC+hkvzXjq5mcn/T/qWUpCus3TUwHlnj 3AlV0Jrkvh4FWTEnEu78kb2wrzIU42M= Received: by mail-pl1-f196.google.com with SMTP id d9443c01a7336-22113560c57so59084035ad.2 for ; Sat, 01 Mar 2025 05:50:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740837030; x=1741441830; darn=kvack.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=pJgxQ9kTw71K96V2pNjoEy9ewjLpxCqdEPFpCMMN/U4=; b=WITnRUZnYN76B1KFI2uilOnKKB5O7yk731fQZiNuR7m06PU4cLn14KqjBHo5Do13qK i9+riRMQbGOdDklUMqfcbVJv51kx0fCuWEyuQ8Ok7vnPwseyuJfBz6SH1qrVCkd0UYW+ yuWeb+UuT92IEeQLDjDXtCbAw242j1apLlJ7uDcZBzG83X/V1d6vL/bUpfuF1+T3GhVO fgrCQ18/HvNIaGFDGBuE3IGyuvBhk3BCXjB7g8RYfCh5oZlIjsACSg6tu559u2bfmnD4 u5W9kDolccMiZBhe5s/d5hPRUI6bGi12HsasfFVg2e+4EeJQq0OR9ayGCV8TJhsOjaih rJww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740837030; x=1741441830; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=pJgxQ9kTw71K96V2pNjoEy9ewjLpxCqdEPFpCMMN/U4=; b=jPxSjyR/4OEqWYCVbQWaPxhtrhlKcSkbZybr1LejWobfe3zHkDf3KP1JR8A3WdETpZ /DgD1biQ5rxQM1yjlqct2KoWhck1aByAhgKLY4UIDsTjMY8kJ2f3Xll3ypp0npluFU8C Hnn1v5XVXr9Gcce8OG/KbMcot1N8zT+iaphu2MqpQ2y7nkVCQwxqkGQ1bmnq3P/+qIig 488QeyYqEghAe+K2Ny+iHf1BOqVw8hMN0dy0W7hVyg9kA0bMGOd3xwWLo1qAI4l7ODdx duVGBUwFpzv5/UyvovGv316MXCoC6VtWzjUJWCDyJIMM/RRgqP4GG8CmcL1Gx46WU7XX Jbyg== X-Forwarded-Encrypted: i=1; AJvYcCUHyPK/bl6E9g0Xqt+mTzeJYrMDqBNl0KJaaWPygK2kcgg3U8k+D3O8Jx9+LCve3uT9CNjhwXIhSQ==@kvack.org X-Gm-Message-State: AOJu0YwjcJBH4sIqIYEmDVsgXsOUM3Zr3RQxIPbIploHfqNQYTl5dTv2 8OfexrliN3MimQgxk6UuoGq1a0PowteEQurDiotxZ6o8P5ly6zUU X-Gm-Gg: ASbGncsvi3xX2cm9FBdLR9A1Rcdv/yN2kcsLEJ+tHpCtgBOWk8zDOPBF2Fkvi7PYo/I UzJevsC+QecyxzCHU1Qft77QQ6o2e74ydjVtS1XOZYZAvJEkQNFjN2SUmRESfMBywlKE0zIZpUl kc1mbJW8wToQxf9IqpugEebUE8EIVERmEVYV1+jqI6xVIl6FauuChqKqcJIwiLhTtfgKxuYqs9o QtlgnbdeSSLWvvVHjg02KMR4SZFvS57mNIPEPRGYNarnphT8q0UbYCq8J4+75hff6GEG3g0nz2q wDBLTyli+0KVyAZLKWPl/iG1gH2iHTvDlii3pkqNQxwhC09PHmw7uH6qu3Jw+Iah/e7CpzxmfaW gsXWpQzo+1/TLK6yj/PkNQtBFW7HvS+xB X-Google-Smtp-Source: AGHT+IHaL4hbyWgR+iPuNLWB5nxuPIRAPj7rx5fVWakRllPjjwrCtFNjMmeB9yAzirq0UbQe6nIUbQ== X-Received: by 2002:a17:902:fc87:b0:223:6744:bfb9 with SMTP id d9443c01a7336-22369247768mr116255305ad.41.1740837030212; Sat, 01 Mar 2025 05:50:30 -0800 (PST) Received: from ?IPV6:2409:8a55:301b:e120:3c9b:1380:5d8c:26d0? ([2409:8a55:301b:e120:3c9b:1380:5d8c:26d0]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2235052005fsm48280085ad.227.2025.03.01.05.50.26 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 01 Mar 2025 05:50:29 -0800 (PST) Message-ID: Date: Sat, 1 Mar 2025 21:49:55 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] mm: page_frag: Fix refill handling in __page_frag_alloc_align() To: Haiyang Zhang , linux-hyperv@vger.kernel.org, akpm@linux-foundation.org, linux-mm@kvack.org Cc: decui@microsoft.com, kys@microsoft.com, paulros@microsoft.com, olaf@aepfle.de, vkuznets@redhat.com, davem@davemloft.net, wei.liu@kernel.org, longli@microsoft.com, linux-kernel@vger.kernel.org, linyunsheng@huawei.com, stable@vger.kernel.org, netdev@vger.kernel.org, Alexander Duyck References: <1740794613-30500-1-git-send-email-haiyangz@microsoft.com> Content-Language: en-US From: Yunsheng Lin In-Reply-To: <1740794613-30500-1-git-send-email-haiyangz@microsoft.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 7E66440013 X-Stat-Signature: gdf53pa9z1xf99zjy3kxw5kyimmaxuc4 X-Rspam-User: X-HE-Tag: 1740837031-265160 X-HE-Meta: U2FsdGVkX1+YNopFRqDkQEQRioNC0zppR6SgkbFWpuhwx9zn3peJzsh45qfWE+wAGLEzogooOBIE7zmmAeilCjw50mjXFLywqTBWOrk+oOQ+3yezC+tpjSRXhlXEVPkEhgja/SE1OEH6DXScjwhBBo+pQU5sbrAPfViGdbei4i+qg9nfk0ZDj3Z/EaMXtejQArhlmIeYdUZ8JM08cWFKtc6Af57LshhI4FcAhminMtJgGGwhLnxYcV4fFvz5XRKarSUgnDALn4iKmtzHN97WRLr9lNkTZdgpF7S6TDSHDstjKEW696d6DvZAsv3t5J/+YpI4k6dadtOxpVRSxomBrrzIsBso2/jNhVCpmK8UBYMp7o76Dgpd6rXttkHm922R7WB5S/xIjKi0pJycxhOrfAALHMxPdchegAtiunCMZvxVRiREuTgQfMnV7DOz8MbDlmFBqrIr6V6sH36nxl0yENqwtEKMic8OaoihvlffQD5XxXBPU/xb8mm7YjMUypcTuVcnHO9R//E/Gv9HdCIVHYqYzhvOMAFdY2j0Gpw0S8ZM0v1YRRpPPquocnKo+mG5RdtTSAM5qXDb1/SEh7EDVsSRHQzosfxqfHVEaeuEh9tcEgEcnBPBuCLqtkVjwGEhV5k00AHoWWr6sJJAsZpHi2lSZCDileh/XVI3VlbMHUqRvZ9GNZvkK11BhBYaS6T5Ny5jLdqoeWFfKSLcA0eRJdr2YYVP8x+gxbr/CNtJXsPQgsziAY6bn8u1IgD3hyCnaKKIq8LE/jGS9en6dX0RcRTbE1Ynx08Gphw1v2lUXgmBfYAQwhYo0UuCDYA5435UCj0E4yvG2v7DsX6JsnQh9thvoKoWdXzzo211DtqhXtSxQP0mZxdD9MSNsZZe+mKWFK0/2jyT4peJ0dHpTce6BPM8CduEfES+yaoNlWOCLWd63OgPNSVA/t1Dywk2GkavTMj+YJw9pg+4/tHu+rR pS2d1I5d ZXiZl88nbVUgsh0DGrfFkmDb7rHZtD+meuak7lTRIG/H2xmqKSH3trGMtueTBmUC5qvKMQRFEZRKtB2T34LrxbmZw3MhRG8K+X2lFS4vfmA5qB7S7U9u0mktr4rfXBdhkcrROLReXjX7ghu+jF9/FjpOePSJ5V0l5l/pvKebnBSjPwUTGK4AR4chHHhqDGsECMJ7XRez3se/S0OP/U9c1HMgvjQn41DjKpFcOIv2RYslg2L8H5gc/uwRli6kSIvLkdNNlRsSruYbfskvo64rJ0gtdSfFaRUP+9u3wUXxMlkF16I3G6nqP/T0YADVTyDLfp3ewXC/h6CsY/XXIZibm6L/D1sEd+ZB+rdFUqfuI941HR6rwOaxsPVoZ0A4V4u1eNKXOMlKf10jIqmxhK9aD4gGSv2YIdYYSCj8lIkH/wODSL0EcvQFTVEaQZo8QHVW+v1OWAURCGrLcUU8+4AsM5+8mcu/gmF2aoxyXdzl6Fou0d6vh0e7QD9jWVYcWmPTWCL2fxqNisP4YH7HR0YNWVBqYdqkaHGijeyAxf2IBsmJ09G7zBUIZ1sA5rDZWHM12wVV4CdlRmL5BpMRV9awx0JodJMWkH0q+8twQ4iTN0XvLhlXOLPzf6Harly3MtV797/C4bX0ed1Zjtx7VXGUYpnvUifPiqEvMpnWiBWHCcnkqxzGsfttQHCq3YHLeZ08+MqUJ9cmqPT41cXDHe0oLPMHeqRObjCgCVA5Ck8bIXAUTOL2wZEbKPNHaVg== 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: +cc netdev ML & Alexander On 3/1/2025 10:03 AM, Haiyang Zhang wrote: > In commit 8218f62c9c9b ("mm: page_frag: use initial zero offset for > page_frag_alloc_align()"), the check for fragsz is moved earlier. > So when the cache is used up, and if the fragsz > PAGE_SIZE, it won't > try to refill, and just return NULL. > I tested it with fragsz:8192, cache-size:32768. After the initial four > successful allocations, it failed, even there is plenty of free memory > in the system. Hi, Haiyang It seems the PAGE_SIZE is 4K for the tested system? Which drivers or subsystems are passing the fragsz being bigger than PAGE_SIZE to page_frag_alloc_align() related API? > To fix, revert the refill logic like before: the refill is attempted > before the check & return NULL. page_frag API is not really for allocating memory being bigger than PAGE_SIZE as __page_frag_cache_refill() will not try hard enough to allocate order 3 compound page when calling __alloc_pages() and will fail back to allocate base page as the discussed in below: https://lore.kernel.org/all/ead00fb7-8538-45b3-8322-8a41386e7381@huawei.com/ > > Cc: linyunsheng@huawei.com > Cc: stable@vger.kernel.org > Fixes: 8218f62c9c9b ("mm: page_frag: use initial zero offset for page_frag_alloc_align()") > Signed-off-by: Haiyang Zhang > --- > mm/page_frag_cache.c | 26 +++++++++++++------------- > 1 file changed, 13 insertions(+), 13 deletions(-) > > diff --git a/mm/page_frag_cache.c b/mm/page_frag_cache.c > index d2423f30577e..82935d7e53de 100644 > --- a/mm/page_frag_cache.c > +++ b/mm/page_frag_cache.c > @@ -119,19 +119,6 @@ void *__page_frag_alloc_align(struct page_frag_cache *nc, > size = PAGE_SIZE << encoded_page_decode_order(encoded_page); > offset = __ALIGN_KERNEL_MASK(nc->offset, ~align_mask); > if (unlikely(offset + fragsz > size)) { > - if (unlikely(fragsz > PAGE_SIZE)) { > - /* > - * The caller is trying to allocate a fragment > - * with fragsz > PAGE_SIZE but the cache isn't big > - * enough to satisfy the request, this may > - * happen in low memory conditions. > - * We don't release the cache page because > - * it could make memory pressure worse > - * so we simply return NULL here. > - */ > - return NULL; > - } > - > page = encoded_page_decode_page(encoded_page); > > if (!page_ref_sub_and_test(page, nc->pagecnt_bias)) > @@ -149,6 +136,19 @@ void *__page_frag_alloc_align(struct page_frag_cache *nc, > /* reset page count bias and offset to start of new frag */ > nc->pagecnt_bias = PAGE_FRAG_CACHE_MAX_SIZE + 1; > offset = 0; > + > + if (unlikely(fragsz > size)) { > + /* > + * The caller is trying to allocate a fragment > + * with fragsz > size but the cache isn't big > + * enough to satisfy the request, this may > + * happen in low memory conditions. > + * We don't release the cache page because > + * it could make memory pressure worse > + * so we simply return NULL here. > + */ > + return NULL; > + } > } > > nc->pagecnt_bias--;