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 BB1BEC531DC for ; Fri, 16 Aug 2024 12:33:03 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 37E028D007C; Fri, 16 Aug 2024 08:33:03 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 32E118D0075; Fri, 16 Aug 2024 08:33:03 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1F62A8D007C; Fri, 16 Aug 2024 08:33:03 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 021D28D0075 for ; Fri, 16 Aug 2024 08:33:02 -0400 (EDT) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 6099641C83 for ; Fri, 16 Aug 2024 12:33:02 +0000 (UTC) X-FDA: 82458048204.14.8710585 Received: from mail-wm1-f52.google.com (mail-wm1-f52.google.com [209.85.128.52]) by imf02.hostedemail.com (Postfix) with ESMTP id 791C380026 for ; Fri, 16 Aug 2024 12:33:00 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=suse.com header.s=google header.b=EjsghhQ6; spf=pass (imf02.hostedemail.com: domain of mhocko@suse.com designates 209.85.128.52 as permitted sender) smtp.mailfrom=mhocko@suse.com; dmarc=pass (policy=quarantine) header.from=suse.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1723811482; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=imUnUTrQCkXERD1oWFs8dq4uU7ZTGW4Zz3wDRT4mvzE=; b=C7bpKBCZQfp1MpNmXGK8g/1Iwi/4khdw6GpJfxf9eFgMYIk7LgmWYhqMxM1JHr69e+/qZC dADB0zcayOeM+T57uHkAGnzspcyBCK5+4wEt7o96bq3S++rXwY4XqmuHvvmjextpeoiZeQ xtdx/IHyyrd2JzXkqFwU+p/gY/gQjy4= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=suse.com header.s=google header.b=EjsghhQ6; spf=pass (imf02.hostedemail.com: domain of mhocko@suse.com designates 209.85.128.52 as permitted sender) smtp.mailfrom=mhocko@suse.com; dmarc=pass (policy=quarantine) header.from=suse.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1723811482; a=rsa-sha256; cv=none; b=BqQC7eQjW+snu8FNJY1avtJ6dirPBjCioNS/1kbecjCWksLwuFgresDqgVxJCQhDl87kep ex2OaHTMciJq34ZnrrRy0A0NaepeG/VyhlyMPCYK/s9QlH8Zew2lw9CcRQs5cVJhb0guvT nfdVLdaiv/T3kObxiVVugy5PA2bxeVk= Received: by mail-wm1-f52.google.com with SMTP id 5b1f17b1804b1-42809d6e719so14398275e9.3 for ; Fri, 16 Aug 2024 05:33:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1723811579; x=1724416379; darn=kvack.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=imUnUTrQCkXERD1oWFs8dq4uU7ZTGW4Zz3wDRT4mvzE=; b=EjsghhQ6/h2Lp+aUL0X4oM6b+E3yfQelPB82dK4f6QyF7SWrQV4VzX210L8PLFGYjD uuwJq85pAmPaMnNZvhR9cQgbQEp/v572s1lm7sOrmEc1s96bEAZLOjnrLpcdEUMefAch rTCF450tImFH3xo3y3O9f4QD9i4A0KzJ80BIjMgGa2sxyfX6BIvOTB52waCmr1n2hNxI xCjMNMeC14zupuv3nCAKndQKdVVDaCNOgBl0xfs6V+SLkKhbUOyCWW8uL0cQihDRP/VL kgCra0ssxxweDV4IZ2Twc1PhuhcXGLwsXwzXESu0tjvfEoVKC9aBD1j3hm9jqCQlZI3F TwSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1723811579; x=1724416379; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=imUnUTrQCkXERD1oWFs8dq4uU7ZTGW4Zz3wDRT4mvzE=; b=QS5acH+bEgqS48vFdr1KTwpG6W2da9m33w34pSwJP5DQBiNpiUq8xHoWFXWkVLh9q+ np9z5QL7jvdUegI6tqnGOKbDzSnMw8KF7rdQuyEtLe4ivqV6A9gnQOTMI8Ws2+WYNMWi eVCzhyDvVVGl3GJW/fEV9aqNxebzmA1qAtN9CUC05aHUlVaU/yKaqVRWJe8zNGj69Z6h xiRr2h8/b4a/5qKpx2rzH/QFL9khwyDXF3RC3AC0pJPNJ/VcQ145V67b85INoJCGWTwZ q8CaPyT/Zxz9gOAJw8Y0iFI3aC3h8Jh5DtER1OXBRM2uGCL42Xf1Dfki/1dzFmVcSPGH kwrQ== X-Forwarded-Encrypted: i=1; AJvYcCXVBN4CzdHOSI5PfmhZbqWBMfZ9YqD+9ruPp+F0o+dF2Di46zltTtjAsf7gu7MUYjzQ5GLbPDqQ2A2M+O0gcVGD2C8= X-Gm-Message-State: AOJu0YxyDlili74eHunaiSdAe6V1UGw8MsXMWF8O9nJv029iAbbhy4UP lKtjPA7DabVluhN1TtnjUdkjVYePlfPl/pxpNTfcmwvXkdYEOFZsFH3+JTNky/g= X-Google-Smtp-Source: AGHT+IEYox1YBAo6ykzkHRbM+Ew1Xh2yiN9lOFnrSfrmPCD8QsEhWd3lchIYN5j834cdCu2zZqrLAQ== X-Received: by 2002:a05:600c:444d:b0:426:6220:cb57 with SMTP id 5b1f17b1804b1-429ed7d17d8mr16523875e9.25.1723811578716; Fri, 16 Aug 2024 05:32:58 -0700 (PDT) Received: from localhost (109-81-92-77.rct.o2.cz. [109.81.92.77]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-429ed650a96sm21636315e9.17.2024.08.16.05.32.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 16 Aug 2024 05:32:58 -0700 (PDT) Date: Fri, 16 Aug 2024 14:32:57 +0200 From: Michal Hocko To: Hailong Liu Cc: Uladzislau Rezki , Andrew Morton , Barry Song <21cnbao@gmail.com>, Christoph Hellwig , Vlastimil Babka , Tangquan Zheng , stable@vger.kernel.org, Baoquan He , Matthew Wilcox , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [RESEND PATCH v1] mm/vmalloc: fix page mapping if vm_area_alloc_pages() with high order fallback to order 0 Message-ID: References: <20240808122019.3361-1-hailong.liu@oppo.com> <20240815220709.47f66f200fd0a072777cc348@linux-foundation.org> <20240816091232.fsliktqgza5o5x6t@oppo.com> <20240816114626.jmhqh5ducbk7qeur@oppo.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20240816114626.jmhqh5ducbk7qeur@oppo.com> X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 791C380026 X-Stat-Signature: iortg9un96q4jtn3ebbn63iqxx6ifqw7 X-Rspam-User: X-HE-Tag: 1723811580-744370 X-HE-Meta: U2FsdGVkX1/izt46+qlfuLj0AGSxN+a2NWasWMHz1mZKGw1ZQwvzpeSXLxax++jv6s7RUIgmugpxApYZe27KS2oMX9y7hFA847thBT8rsL1+by7z9ipineIrvJvTwDKypbFvDsIkhBZnWrNpUHD70TUlAvVj2Q/zaDXHPiFYqJNHDSfulMv75jHfYZxen9Cngs9+wJ/pLNDiWowzQxIu5PMdsiMNbHwSt3G+Pp8U/nFTTL5QNu1uQah4Tw13OfgBvquPLiVlTtJDZg0lwSKmvNd8sxGIIbTM1EIm5cGMH7Va3r8IevpBnG1hAhwJer/GABTWQ7JmPIIM+5zeiZOfsMs45f2zmGqWZMLrsEceokwBnlgqDOKemASz+HVUObuMcUyJ/ZfJp9lxFDoj7ei73gZhD7GNJo704f0v2yCBFoLI9vR++2+MXQ4yRgWbYDj+7TgfzvSOJ8ZpGzD2JjcMZpo4Sy46tg4rJ4SDHZEwQsQmIi8UPbeyhUjHwuHNyaxA7hCFykIGk+X5wrEsHdkR6zmFqIvZu/cNVXuRHCpZpDWBDXhqqaHiyJF5c/nibqU9cGybtqVDbcISo2SlMEWmI/E1/rzMFWzQ5EYYE3utusTRSMdFjtrYmFA3vQWJeXzNjZxqcBs35TbZ+ALKzCFWIV86q7xBrXpLDj9zANPLDrLzGFH7i/3esE/m08qI3FoLm2q56LchmHRDeTqNVs5xFLFF1I0hdBljyB6BYVlpd6tBEQwIifpFzN2fcz02cg2pTlrPKNvuir234rB8W9/euW8f5AQ9NsTsLyCe+H/gv5b9eFziq6bYGxWcWWZvyGwVJ+xP6ArlOzl9zxKazwy/wGaWJ/b+LQWh19P1zgZYu9+LCKkRIWxg8jnS060zpLmYCgic2ed1D4QXXO54NassOM7Eqh60+3hEfFhFvLBz8yw+HngRY5H5EHVzPt/08AAjFt+6hCuXSeS4HBvym1V 2kjLUsiK F5Srx/5KFZw31r+W+78XJR9qDKupe46CgJmwcEe2mmjpZEeNM6FM9/7+F2iTpubKndXq8C+pkxnZ0qGSaaA1w8nwvX72TZVibmS2lUYIc/iHmwqU0uXPX9G72/K473s2beN5BN3zfxw+UU+iPM765dfn2jC9AVuGq07q6Y8AKH3X7cXoW1Mfs58eswPScx8SrOcVTSE+y8B6xOoyaJMh7r+Oy9rog3uR3PfPDkuoLhES1h/vRps9US4XeHepzMw/MCBxGnUHVjyjvFbaWLkr8Yg+ezAcqepTT0X7c3YoFBtx/9/Z5i6DCA/Tke29fNsfy6m7EBrXMhQPpHv7igYLevxF4ONbY0OpCKckmMJLVdUhIOIQsvTxuYDkeL1GlRzaKkC4RUkpt1mEEGdNB3ZsMicVV2/R3qly+dCoId4mCwj4Ky9T7rSzAO/bi9O+2AZTef4FT26AsXs79QTEKvOobQPG7cmi7MsR+LziS X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Fri 16-08-24 19:46:26, Hailong Liu wrote: > On Fri, 16. Aug 12:13, Uladzislau Rezki wrote: > > On Fri, Aug 16, 2024 at 05:12:32PM +0800, Hailong Liu wrote: > > > On Thu, 15. Aug 22:07, Andrew Morton wrote: > > > > On Fri, 9 Aug 2024 11:41:42 +0200 Uladzislau Rezki wrote: > > > > > > > > > > > Acked-by: Barry Song > > > > > > > > > > > > > > because we already have a fallback here: > > > > > > > > > > > > > > void *__vmalloc_node_range_noprof : > > > > > > > > > > > > > > fail: > > > > > > > if (shift > PAGE_SHIFT) { > > > > > > > shift = PAGE_SHIFT; > > > > > > > align = real_align; > > > > > > > size = real_size; > > > > > > > goto again; > > > > > > > } > > > > > > > > > > > > This really deserves a comment because this is not really clear at all. > > > > > > The code is also fragile and it would benefit from some re-org. > > > > > > > > > > > > Thanks for the fix. > > > > > > > > > > > > Acked-by: Michal Hocko > > > > > > > > > > > I agree. This is only clear for people who know the code. A "fallback" > > > > > to order-0 should be commented. > > > > > > > > It's been a week. Could someone please propose a fixup patch to add > > > > this comment? > > > > > > Hi Andrew: > > > > > > Do you mean that I need to send a v2 patch with the the comments included? > > > > > It is better to post v2. > Got it. > > > > > But before, could you please comment on: > > > > in case of order-0, bulk path may easily fail and fallback to the single > > page allocator. If an request is marked as NO_FAIL, i am talking about > > order-0 request, your change breaks GFP_NOFAIL for !order. > > > > Am i missing something obvious? > For order-0, alloc_pages(GFP_X | __GFP_NOFAIL, 0), buddy allocator will handle > the flag correctly. IMO we don't need to handle the flag here. Let me clarify what I would like to have clarified: diff --git a/mm/vmalloc.c b/mm/vmalloc.c index 6b783baf12a1..fea90a39f5c5 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -3510,13 +3510,13 @@ void *vmap_pfn(unsigned long *pfns, unsigned int count, pgprot_t prot) EXPORT_SYMBOL_GPL(vmap_pfn); #endif /* CONFIG_VMAP_PFN */ +/* GFP_NOFAIL semantic is implemented by __vmalloc_node_range_noprof */ static inline unsigned int vm_area_alloc_pages(gfp_t gfp, int nid, unsigned int order, unsigned int nr_pages, struct page **pages) { unsigned int nr_allocated = 0; - gfp_t alloc_gfp = gfp; - bool nofail = gfp & __GFP_NOFAIL; + gfp_t alloc_gfp = gfp & ~ __GFP_NOFAIL; struct page *page; int i; @@ -3527,9 +3527,6 @@ vm_area_alloc_pages(gfp_t gfp, int nid, * more permissive. */ if (!order) { - /* bulk allocator doesn't support nofail req. officially */ - gfp_t bulk_gfp = gfp & ~__GFP_NOFAIL; - while (nr_allocated < nr_pages) { unsigned int nr, nr_pages_request; @@ -3547,12 +3544,12 @@ vm_area_alloc_pages(gfp_t gfp, int nid, * but mempolicy wants to alloc memory by interleaving. */ if (IS_ENABLED(CONFIG_NUMA) && nid == NUMA_NO_NODE) - nr = alloc_pages_bulk_array_mempolicy_noprof(bulk_gfp, + nr = alloc_pages_bulk_array_mempolicy_noprof(alloc_gfp, nr_pages_request, pages + nr_allocated); else - nr = alloc_pages_bulk_array_node_noprof(bulk_gfp, nid, + nr = alloc_pages_bulk_array_node_noprof(alloc_gfp, nid, nr_pages_request, pages + nr_allocated); @@ -3566,13 +3563,6 @@ vm_area_alloc_pages(gfp_t gfp, int nid, if (nr != nr_pages_request) break; } - } else if (gfp & __GFP_NOFAIL) { - /* - * Higher order nofail allocations are really expensive and - * potentially dangerous (pre-mature OOM, disruptive reclaim - * and compaction etc. - */ - alloc_gfp &= ~__GFP_NOFAIL; } /* High-order pages or fallback path if "bulk" fails. */ -- Michal Hocko SUSE Labs