Received: by 2002:a05:6a10:af89:0:0:0:0 with SMTP id iu9csp3622120pxb; Mon, 24 Jan 2022 13:43:43 -0800 (PST) X-Google-Smtp-Source: ABdhPJyBHnZAkbi4EEIRFt74YMulTedKYxTtWCf15nU+Mzk1HdVkXMer/4rMWovZjl6Yj7g/aqdR X-Received: by 2002:a17:902:700b:b0:14a:436c:dcf7 with SMTP id y11-20020a170902700b00b0014a436cdcf7mr16391755plk.144.1643060623711; Mon, 24 Jan 2022 13:43:43 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643060623; cv=none; d=google.com; s=arc-20160816; b=dHl1skQd16M6nLYhvbwBkLUZBP4qew322HJiidymZkIxtcO/FhjjidTO60knK7mgjl qZrUlNMjF1Lnc3xY4qC3nOqRUQsjnFA+0lNHNvgggcc6H4s2RGWKeXEXn4qcLbVmvcw9 gLM7jHBU1hu3gHHQUovgOYgHTcmZA0PwFeZdJDI1fb5SNfaBOiAJuQsPBB/kSXphxlQ1 RZj2xQEou1HXT3nqUQqocHG/uPD6wLaGPZc6Ffc2Sn8UGlMhYOOhQMXn4DOv0eInQ2nX aRhfo0nEO2mda4+QJ0pXv9R9iRAjtdG9olXK2yPGNKgG/+aT4fw06d+pRLDJsV+bk8i9 Eg2A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=7sp9HQ95j10zw0tNa0jxMF1K1mp1k3OKUKKs8GtH9RY=; b=BW9/cORg6JsUaAG3N2lleuoU3tiZ0K5tDeqKDakWaCmdi0FJdn8JUvLZEEBFIIjzEj blqZckCjCRqwwSzl/f04gfW0YaLUbmjM9Zy07Ktq2txS5YNj80dMxuOxpjzTjkvrbE4h qIPD2clfZuSJaXl1D+2iOa0EQeYHcQZdqFL1355QQ7bbYJmn1YYFusObA+jJPl0AzeEU tfQx2byaOIsHHpW5D9Macpdp6JIsCUCtxIcyp8q5Q7kwA10damOFlLgnqwlHKua5YQlF kGMB8jzoh2LXHU5OKAEKXREa9GhjRCcaCAKPm1p8I0wA/Cm+ab3orZun+Cwv/sEaLLKL aoHg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=Crp+5Ggc; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id w11si13244513plp.584.2022.01.24.13.43.24; Mon, 24 Jan 2022 13:43:43 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=Crp+5Ggc; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1451891AbiAXVXo (ORCPT + 99 others); Mon, 24 Jan 2022 16:23:44 -0500 Received: from ams.source.kernel.org ([145.40.68.75]:51990 "EHLO ams.source.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1443128AbiAXU4V (ORCPT ); Mon, 24 Jan 2022 15:56:21 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 903F0B81057; Mon, 24 Jan 2022 20:56:20 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id B32BBC340E5; Mon, 24 Jan 2022 20:56:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1643057779; bh=LuecBG6exdVyr57uhsw42o+FTE4KyTz6RrJJmYThb+Q=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Crp+5GgcHgU8yDJxom8eknM1uKALuok/117kOTd3t0O+AtqCdYU3ZrvSmIDMmZXyF IfPZ6T2gGAjhKZAQRCXlvQdv3FCy63jRXlSuTbKFIlHJ8Gtd8w9ixRbhJJNskGhYTz kfbf/PKt0yTOn9RmRddLEInR9wO/dfAez3tFIQwM= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Baoquan He , Christoph Hellwig , John Donnelly , David Hildenbrand , Marek Szyprowski , Robin Murphy , Borislav Petkov , Christoph Lameter , David Laight , David Rientjes , Hyeonggon Yoo <42.hyeyoo@gmail.com>, Joonsoo Kim , Pekka Enberg , Vlastimil Babka , Andrew Morton , Linus Torvalds Subject: [PATCH 5.16 0076/1039] dma/pool: create dma atomic pool only if dma zone has managed pages Date: Mon, 24 Jan 2022 19:31:05 +0100 Message-Id: <20220124184127.725084274@linuxfoundation.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220124184125.121143506@linuxfoundation.org> References: <20220124184125.121143506@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Baoquan He commit a674e48c5443d12a8a43c3ac42367aa39505d506 upstream. Currently three dma atomic pools are initialized as long as the relevant kernel codes are built in. While in kdump kernel of x86_64, this is not right when trying to create atomic_pool_dma, because there's no managed pages in DMA zone. In the case, DMA zone only has low 1M memory presented and locked down by memblock allocator. So no pages are added into buddy of DMA zone. Please check commit f1d4d47c5851 ("x86/setup: Always reserve the first 1M of RAM"). Then in kdump kernel of x86_64, it always prints below failure message: DMA: preallocated 128 KiB GFP_KERNEL pool for atomic allocations swapper/0: page allocation failure: order:5, mode:0xcc1(GFP_KERNEL|GFP_DMA), nodemask=(null),cpuset=/,mems_allowed=0 CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.13.0-0.rc5.20210611git929d931f2b40.42.fc35.x86_64 #1 Hardware name: Dell Inc. PowerEdge R910/0P658H, BIOS 2.12.0 06/04/2018 Call Trace: dump_stack+0x7f/0xa1 warn_alloc.cold+0x72/0xd6 __alloc_pages_slowpath.constprop.0+0xf29/0xf50 __alloc_pages+0x24d/0x2c0 alloc_page_interleave+0x13/0xb0 atomic_pool_expand+0x118/0x210 __dma_atomic_pool_init+0x45/0x93 dma_atomic_pool_init+0xdb/0x176 do_one_initcall+0x67/0x320 kernel_init_freeable+0x290/0x2dc kernel_init+0xa/0x111 ret_from_fork+0x22/0x30 Mem-Info: ...... DMA: failed to allocate 128 KiB GFP_KERNEL|GFP_DMA pool for atomic allocation DMA: preallocated 128 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations Here, let's check if DMA zone has managed pages, then create atomic_pool_dma if yes. Otherwise just skip it. Link: https://lkml.kernel.org/r/20211223094435.248523-3-bhe@redhat.com Fixes: 6f599d84231f ("x86/kdump: Always reserve the low 1M when the crashkernel option is specified") Signed-off-by: Baoquan He Reviewed-by: Christoph Hellwig Acked-by: John Donnelly Reviewed-by: David Hildenbrand Cc: Marek Szyprowski Cc: Robin Murphy Cc: Borislav Petkov Cc: Christoph Lameter Cc: David Laight Cc: David Rientjes Cc: Hyeonggon Yoo <42.hyeyoo@gmail.com> Cc: Joonsoo Kim Cc: Pekka Enberg Cc: Vlastimil Babka Cc: Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds Signed-off-by: Greg Kroah-Hartman --- kernel/dma/pool.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --- a/kernel/dma/pool.c +++ b/kernel/dma/pool.c @@ -203,7 +203,7 @@ static int __init dma_atomic_pool_init(v GFP_KERNEL); if (!atomic_pool_kernel) ret = -ENOMEM; - if (IS_ENABLED(CONFIG_ZONE_DMA)) { + if (has_managed_dma()) { atomic_pool_dma = __dma_atomic_pool_init(atomic_pool_size, GFP_KERNEL | GFP_DMA); if (!atomic_pool_dma) @@ -226,7 +226,7 @@ static inline struct gen_pool *dma_guess if (prev == NULL) { if (IS_ENABLED(CONFIG_ZONE_DMA32) && (gfp & GFP_DMA32)) return atomic_pool_dma32; - if (IS_ENABLED(CONFIG_ZONE_DMA) && (gfp & GFP_DMA)) + if (atomic_pool_dma && (gfp & GFP_DMA)) return atomic_pool_dma; return atomic_pool_kernel; }