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 3C149CF58F4 for ; Fri, 20 Sep 2024 08:58:29 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9F65C6B0082; Fri, 20 Sep 2024 04:58:28 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 97EA06B0083; Fri, 20 Sep 2024 04:58:28 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 81F0C6B0085; Fri, 20 Sep 2024 04:58:28 -0400 (EDT) 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 5FE2E6B0082 for ; Fri, 20 Sep 2024 04:58:28 -0400 (EDT) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 12EB61C1CAF for ; Fri, 20 Sep 2024 08:58:28 +0000 (UTC) X-FDA: 82584515496.06.A612930 Received: from mail-pj1-f46.google.com (mail-pj1-f46.google.com [209.85.216.46]) by imf05.hostedemail.com (Postfix) with ESMTP id 27495100005 for ; Fri, 20 Sep 2024 08:58:24 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=dabbelt-com.20230601.gappssmtp.com header.s=20230601 header.b=crmqsnJu; spf=pass (imf05.hostedemail.com: domain of palmer@dabbelt.com designates 209.85.216.46 as permitted sender) smtp.mailfrom=palmer@dabbelt.com; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1726822590; 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:dkim-signature; bh=1/PwlrtjlNSmeYLWhd72xmzvu8WtL1wEwRjHNhxr9dA=; b=KXOkpGQQuAJegoHjPvJ1xb0fhEqakTUQsaFfTnjCbN2PWdbJCX7VVPDRTMW6dAkGBUc/DH OjtJoxNG9Sk0ktQE02i2vopwRQACh3WyXn52zQd98mYkTL+O4hj890C7jBMhSchGFnWPhP J4yuq69xsYUr/hFwGmYFpsbsm0zbJzA= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1726822590; a=rsa-sha256; cv=none; b=6t5dc6DLO2lVdVBFKhjurAESBpOzmZvcQS2E+7/POCrW7TA9rGyAHCel4SXXQpjZr4If3A Q3Y+SnOibQwgqrJt/lrY51ZoP6ukT1LiW4k1BpkqmfCzlmb2o1IgHKgVELAM985Z9mojuX YrUQsEY7bWDE8/o5MyzBOFzwkpFTgac= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=dabbelt-com.20230601.gappssmtp.com header.s=20230601 header.b=crmqsnJu; spf=pass (imf05.hostedemail.com: domain of palmer@dabbelt.com designates 209.85.216.46 as permitted sender) smtp.mailfrom=palmer@dabbelt.com; dmarc=none Received: by mail-pj1-f46.google.com with SMTP id 98e67ed59e1d1-2d87176316eso2163964a91.0 for ; Fri, 20 Sep 2024 01:58:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dabbelt-com.20230601.gappssmtp.com; s=20230601; t=1726822704; x=1727427504; darn=kvack.org; h=content-transfer-encoding:mime-version:message-id:to:from:cc :in-reply-to:subject:date:from:to:cc:subject:date:message-id :reply-to; bh=1/PwlrtjlNSmeYLWhd72xmzvu8WtL1wEwRjHNhxr9dA=; b=crmqsnJuBZC364m2JLWOKvSvYeuUfIOh0BI2+Etd4Zvmc7LXL7L/56a1ABo/xGGi0z GilfKdgl6DEUy9VTWgAvKIlrhQO6hrbIDBG94Sro8IZCrFRF5MmXYPYm2LsOY22ogsvy oVO7NCAWLqp/9M+v07c8otAVZXy31+Jxwx+VsfedJNbTwaMZ+TETzA1L9e5IF9pVWAlK BmW5NmFLQl72cTZG1rCYTEIG+fOK3a75gI3Al7rE0f34hChXWwSaPlSOd/qstQbZnooq 4vFnnTvT57RhN+pi1ryDCoyc3MrGE6cJ/xJ6p1dyCOLKLLGQHomMhZC/bWw66Eioi0+K c5fQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1726822704; x=1727427504; h=content-transfer-encoding:mime-version:message-id:to:from:cc :in-reply-to:subject:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=1/PwlrtjlNSmeYLWhd72xmzvu8WtL1wEwRjHNhxr9dA=; b=n7UKuvqhf0zzenrw/1FS0DvKukfCKJrU3yH6QVYGgyv4JPvk+CODWwKAJSwVjKc3LU Pcuo+KqYSXjcQHM6yuxrkaCKRBCsX46JNwJRfRzhl3mRhK6uj9Dcrc+HU3xvQTrffBqU qdRR8qN2YkrzjPD9JjE4b7Y2VXf0JqOz88PBiW4mNWbUYXGqKs8wuYhyt6hxtncfVTO7 q86wmh9gvQTfkEuU7MDGWCLexLclDH6iewyTQlTJaWKs9bIIiJD/9shv3VcLXI3Xg8wQ C1ozUNqwhMY1yO0glRJ9/bm5D9RPxxVl+Fj0W/bQifV56U2jD4sqtvBMFko5yAr7carf Pksw== X-Forwarded-Encrypted: i=1; AJvYcCU/XfWq8gLaNl/H72HTMSP3f0ITcS7Pc1Hf99I3l6th2SNIicVHmoUi9UkfO7YBaQExNlR3iK6WoQ==@kvack.org X-Gm-Message-State: AOJu0Yzl4dgijrs0rwkwr6PLZM622qOwa/EHzWexap8MkMkLEd+mCMfJ jrbuStXXz1XCLTxnR/nJ8CeejhSi5plku3hkGYI89AFQxHBCN/CBMOAV0Ce2rVk= X-Google-Smtp-Source: AGHT+IGY4mUINDatBTGE4l8Jfn0u9GfoIA4KWyA7TWO6T/LKxZHGtq1vizvHcmT/bPLPkL6rcUs0bQ== X-Received: by 2002:a17:90a:7345:b0:2d8:8a3a:7b88 with SMTP id 98e67ed59e1d1-2dd6cdfaefcmr9547372a91.6.1726822703616; Fri, 20 Sep 2024 01:58:23 -0700 (PDT) Received: from localhost ([83.68.141.146]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2dd50c054d8sm4250330a91.0.2024.09.20.01.58.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Sep 2024 01:58:23 -0700 (PDT) Date: Fri, 20 Sep 2024 01:58:23 -0700 (PDT) X-Google-Original-Date: Fri, 20 Sep 2024 01:58:17 PDT (-0700) Subject: Re: [PATCH] riscv: make ZONE_DMA32 optional In-Reply-To: CC: vladimir.kondratiev@mobileye.com, Paul Walmsley , aou@eecs.berkeley.edu, akpm@linux-foundation.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org From: Palmer Dabbelt To: dfustini@tenstorrent.com, Conor Dooley Message-ID: Mime-Version: 1.0 (MHng) Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit X-Stat-Signature: yuotc69b9deomnnupnobx4kh3e8f7yr4 X-Rspamd-Queue-Id: 27495100005 X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1726822704-303917 X-HE-Meta: U2FsdGVkX19yl1X3y8Qi2NF4IZJ/cCDk0KmG1RQmU3p0j0NXhnMl89WK6y8ql7vr7f9QXOeo5SPAZASPBKiCWT3A1Cw9TZnJ/WNmuL91FGXwOP/gcEu+l668iw2Pg/f0QfSeu1VQA2jDG0LvSBj5grKa+68lmZWp9skfpVV3drBkdKFYAzn0O+bjH0rZbM4VWUj+r0zB3L/9RbStKoKA6tmRsnHwnNkJSPWbTjOavSj+G8nqQeQH7Oc390JrIWdr8b0FZ0raWciQ5FWeS+yS+F28tEaKTMBiAHYPLe74lfyQYThsXPnLGVjImsg+arOusm1IbeMuYrlrOBJkgFVTMa/23kjnwbKC++ansgZ8xN4BXo2YSNkHZzs4yErECCwjQYm/dhU9mJd1YqelDbqCyAXcPWiYChUm3UsPnB/QImJHLz7gwGvHe39f+L+pNpo8LAR37d+Ez7jiNM/aKLpSusYXoQH0eBeQLneV8IBqji27fOjLnmTHJa3GIkHkFazmQELr3uPHXu5NoauQi687hK1VnqnzDe0uuGlRPTSSyjedH8YndkAG7LNHdY/Vyaskcnn9+JRmZxLFxwMYCaZFpvy2eABZk24EFP5aK2ZER/a7ugtgt6jiX6xOGof1vXCxbQ4fP+D+cyp04G67o+n7Cxu2xPA4gKgotBgQK9rKaENMLj8hrGAvbs+GVg+KfkfYESSrvVZw5EQUwy0Dt9ENHuY91JmHZTXs8cGItq8+Hd3krNEhzlWBpCNI54F+2Wee1b2xN5ILVdD6eAe/jiRn8/AzSnywkeMoaXAUM9GLeE/0lfEYmJo18B+v2DRWw8OPYESNu5KFygmn4RMokOKIFP/6Peij/o+2HWXRRWT9dW9aD6+lnkCnHg3zBlODhKVu0YSvAO/dyhN4eXMYTHYhfqk2xIIWE2fbIMrALyU/AiWItpY0fA06fNZPpH3qnKGlNsEoPxWLAJogxdFk1VT Vojn70kQ pdS8xUJJejAOz6koWIxAqJMfHEhrsT75TssIADncOdpcKZEd9kKPrfGDDAoJuGtAwR8kh696ry2hNKhvK9S/d6ko2ULarPtiH5m3GT1fETYqq0Y+Qpw1q4zWBC6cmyThjLwzSTMgWD9Gc3SwPPXk11+7jufAN0MIKURTQEhqdbpE6WS7ImvLsSKxbDVJcJLPtcc3uO6z9SBXODSMq7DR5uzVnnQe3MSMc1jWzg2f5to/W27JiLpRSHOGaVfGjPyoWuLq3XRYjv+oeP7kbp5T5jT9/ay5Zc3FsURXIVXQyGrAqStfmD09PypT5Mi0MIfTGoCJsu31gYm6osHshTYaem+58AjxiqDVTN27iCMsrCM7FE9RlsBJn72jNceJp1LC2IOl9tWdsQt2Y+ilHkya5fBkPMw//R58tgXbvV0Vp7Fk+HGxui7Ipa39hVsoXn2/denqFrYqzX+tVa3/J39yzWWPWySyEgXR8/bjjLRf7231M/RBEYluHctECuk97rW3hDA/QHw4a8pWh/n55oxZTMZHKm90HFTwGHknM 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 Tue, 27 Aug 2024 16:10:20 PDT (-0700), dfustini@tenstorrent.com wrote: > On Tue, Aug 27, 2024 at 02:36:11PM +0300, Vladimir Kondratiev wrote: >> It is not necessary any RISCV platform has ZONE_DMA32. >> >> Example - if platform has no DRAM in [0..4G] region, >> it will report failure like below each boot. >> >> [ 0.088709] swapper/0: page allocation failure: order:7, mode:0xcc4(GFP_KERNEL|GFP_DMA32), nodemask=(null),cpuset=/ >> [ 0.088832] CPU: 0 UID: 0 PID: 1 Comm: swapper/0 Not tainted 6.11.0-rc5 #30 >> [ 0.088864] Call Trace: >> [ 0.088869] [] dump_backtrace+0x1c/0x24 >> [ 0.088910] [] show_stack+0x2c/0x38 >> [ 0.088957] [] dump_stack_lvl+0x52/0x74 >> [ 0.088987] [] dump_stack+0x14/0x1c >> [ 0.089010] [] warn_alloc+0xf4/0x176 >> [ 0.089041] [] __alloc_pages_noprof+0xc28/0xcb4 >> [ 0.089067] [] atomic_pool_expand+0x62/0x1f8 >> [ 0.089090] [] __dma_atomic_pool_init+0x46/0x9e >> [ 0.089115] [] dma_atomic_pool_init+0x96/0x11c >> [ 0.089139] [] do_one_initcall+0x5c/0x1b2 >> [ 0.089158] [] kernel_init_freeable+0x214/0x274 >> [ 0.089190] [] kernel_init+0x1e/0x10a >> [ 0.089209] [] ret_from_fork+0xe/0x1c >> >> Signed-off-by: Vladimir Kondratiev >> --- >> arch/riscv/Kconfig | 2 +- >> mm/Kconfig | 2 +- >> 2 files changed, 2 insertions(+), 2 deletions(-) >> >> diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig >> index 0f3cd7c3a436..94a573112625 100644 >> --- a/arch/riscv/Kconfig >> +++ b/arch/riscv/Kconfig >> @@ -50,6 +50,7 @@ config RISCV >> select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST >> select ARCH_HAS_UBSAN >> select ARCH_HAS_VDSO_DATA >> + select ARCH_HAS_ZONE_DMA_SET if 64BIT >> select ARCH_KEEP_MEMBLOCK if ACPI >> select ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE if 64BIT && MMU >> select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX >> @@ -200,7 +201,6 @@ config RISCV >> select THREAD_INFO_IN_TASK >> select TRACE_IRQFLAGS_SUPPORT >> select UACCESS_MEMCPY if !MMU >> - select ZONE_DMA32 if 64BIT >> >> config CLANG_SUPPORTS_DYNAMIC_FTRACE >> def_bool CC_IS_CLANG >> diff --git a/mm/Kconfig b/mm/Kconfig >> index b72e7d040f78..97c85da98e89 100644 >> --- a/mm/Kconfig >> +++ b/mm/Kconfig >> @@ -1032,7 +1032,7 @@ config ZONE_DMA >> config ZONE_DMA32 >> bool "Support DMA32 zone" if ARCH_HAS_ZONE_DMA_SET >> depends on !X86_32 >> - default y if ARM64 >> + default y if ARM64 || (RISCV && 64BIT) >> >> config ZONE_DEVICE >> bool "Device memory (pmem, HMM, etc...) hotplug support" >> -- >> 2.37.3 >> > > Reviewed-by: Drew Fustini > > Thanks for sending this patch as I've also encountered that annoying > error on systems with DRAM above 4GB. > > I tested this patch by changing the qemu virt machine to have DRAM > starting at 2^32: > > diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c > index cef41c150aaf..3033a2560edb 100644 > --- a/hw/riscv/virt.c > +++ b/hw/riscv/virt.c > @@ -87,7 +87,7 @@ static const MemMapEntry virt_memmap[] = { > [VIRT_IMSIC_S] = { 0x28000000, VIRT_IMSIC_MAX_SIZE }, > [VIRT_PCIE_ECAM] = { 0x30000000, 0x10000000 }, > [VIRT_PCIE_MMIO] = { 0x40000000, 0x40000000 }, > - [VIRT_DRAM] = { 0x80000000, 0x0 }, > + [VIRT_DRAM] = { 0x100000000, 0x0 }, > }; > > /* PCIe high mmio is fixed for RV32 */ IIRC the ZONE_DMA32 stuff existed for some of the early SiFive systems, where the expansion daughterboard's PCIe controller (via a Xilinx FPGA) could only handle 32-bit DMA addreses. I think there's a similar quirk in the Microsemi PCIe controller on the PolarFire boards, but Conor would know for sure.