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 9E640EB64DC for ; Tue, 11 Jul 2023 15:26:59 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 207C66B0072; Tue, 11 Jul 2023 11:26:59 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 1B87F6B0074; Tue, 11 Jul 2023 11:26:59 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0589C6B0075; Tue, 11 Jul 2023 11:26:59 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id E98476B0072 for ; Tue, 11 Jul 2023 11:26:58 -0400 (EDT) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id B7965B00CC for ; Tue, 11 Jul 2023 15:26:58 +0000 (UTC) X-FDA: 80999708916.20.F71B814 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by imf19.hostedemail.com (Postfix) with ESMTP id 76FBF1A0004 for ; Tue, 11 Jul 2023 15:26:56 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=N7SZ27gP; dmarc=pass (policy=none) header.from=redhat.com; spf=pass (imf19.hostedemail.com: domain of david@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=david@redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1689089216; 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=vM0w+6+aaAqWTgkd0SnTYMUtAoi91ku0pktKlO+P5ew=; b=uQnSQZj45oqnYZSIJInLsAKbECgUd5LN2LssdhifJRmxHd1GW0ajyvgeNDJmdKVdVOBDsn YUrH/OGdn0t5ajhVPRvesiWF2vMIuvlWYV1+KW941Y7fTEC/ygre284XReKSvzHJWB9nVw JF4ONHTye7I0ghCAW2oP1du962IQbnc= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=N7SZ27gP; dmarc=pass (policy=none) header.from=redhat.com; spf=pass (imf19.hostedemail.com: domain of david@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=david@redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1689089216; a=rsa-sha256; cv=none; b=gCZJFKur24/dfSuBrcgpMW6aDk1sX+jbL1X49yf4442bt9q8TZs8wabkMEmOZBwKw4kP44 8m7t16TJNgIAcwLEuiFx2TFO2BOxxRb4hu2yw4tkvThkmJtnXFO55RVH92ZHZvTN5ilVlN GNcNSdLce3HEIDnw5W7nEpOKmWz8xjs= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1689089215; 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: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=vM0w+6+aaAqWTgkd0SnTYMUtAoi91ku0pktKlO+P5ew=; b=N7SZ27gPD3AsWhPsGch0lXJwhWFoiZc8/UZVs2LQ72AWufXWpdhTN9oqtVMY4tTJ7tBMqJ ztgkTLeTAkZcFjhkZjRg3e5wn/HtzxuJdujrPl4NqnuWfBlRUTNncX+plbur9xvRWaOYGy luLqBN7H8cxbYJR4b9IxTShehEJtk5w= Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-472-Dw9D3SKgOk6XffdqT2tM9g-1; Tue, 11 Jul 2023 11:26:52 -0400 X-MC-Unique: Dw9D3SKgOk6XffdqT2tM9g-1 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-3fc07d4c2f4so24506905e9.1 for ; Tue, 11 Jul 2023 08:26:52 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689089211; x=1691681211; h=content-transfer-encoding:in-reply-to:organization:from:references :cc:to:content-language:subject:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=vM0w+6+aaAqWTgkd0SnTYMUtAoi91ku0pktKlO+P5ew=; b=iNCSolnfQTsuGG0/sDIikDdmVDKzkzqO+Ny/t9FX1NwXu5CCr7t6FTQ+D/28wEIpEo LTSX1f2QiSbyJe+mRKGQkmBuH1KKnAX5cA9lESUiueQ/E6/vaeg1Oexm4/L/sYZBMJE8 oRoVHZuiHKus32DOIwVLf6reFPH0de0zvF9UAHn13bR0M2NlcIpeazAXOHpMlE4h8eyR 0fd4DJp28zX3TYuyeu+RXXuCD+3RQoHDZMUIFVdtzMkORciugcD401WIJrPtkOtlw8LP vYTv8n4Aw60BmI6+olmR6MXLCe/Duiz//XSuKNqOBbxfZlhET8+2XdjBDAYAP3hByTIy gT2w== X-Gm-Message-State: ABy/qLaGcx755Xt/0JoFVMQP3v5pfX6j/DM5hJ4xI+A47cbeuBHjbTNd igQssIjABYF+dNTdHIGU9/5e0QQn+gk+bkmc/hErh2yD1nijPiRetMygKit7v6nQRdXGP2T8nVk 07B5yDAj4zP4= X-Received: by 2002:a1c:4c09:0:b0:3f9:8c3:6805 with SMTP id z9-20020a1c4c09000000b003f908c36805mr16214210wmf.7.1689089211238; Tue, 11 Jul 2023 08:26:51 -0700 (PDT) X-Google-Smtp-Source: APBJJlGw2WzDZuCEdYlu7Y0yLMaFqvebMduDgxmhsWsAORZJ56DuewUEdFcqGxFB+DTBd2RIvVW3kA== X-Received: by 2002:a1c:4c09:0:b0:3f9:8c3:6805 with SMTP id z9-20020a1c4c09000000b003f908c36805mr16214192wmf.7.1689089210848; Tue, 11 Jul 2023 08:26:50 -0700 (PDT) Received: from ?IPV6:2003:cb:c745:4000:13ad:ed64:37e6:115d? (p200300cbc745400013aded6437e6115d.dip0.t-ipconnect.de. [2003:cb:c745:4000:13ad:ed64:37e6:115d]) by smtp.gmail.com with ESMTPSA id v2-20020adfe4c2000000b0031434c08bb7sm2515544wrm.105.2023.07.11.08.26.49 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 11 Jul 2023 08:26:50 -0700 (PDT) Message-ID: <98285185-170f-10fb-67a7-09e35ab47650@redhat.com> Date: Tue, 11 Jul 2023 17:26:49 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.12.0 Subject: Re: [PATCH v3 5/7] powerpc/book3s64/memhotplug: Enable memmap on memory for radix To: "Aneesh Kumar K.V" , linux-mm@kvack.org, akpm@linux-foundation.org, mpe@ellerman.id.au, linuxppc-dev@lists.ozlabs.org, npiggin@gmail.com, christophe.leroy@csgroup.eu Cc: Oscar Salvador , Michal Hocko , Vishal Verma References: <20230711044834.72809-1-aneesh.kumar@linux.ibm.com> <20230711044834.72809-6-aneesh.kumar@linux.ibm.com> From: David Hildenbrand Organization: Red Hat In-Reply-To: <20230711044834.72809-6-aneesh.kumar@linux.ibm.com> X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 76FBF1A0004 X-Stat-Signature: p7uzu4xieerpzamaae3rocquugkx5pnu X-Rspam-User: X-HE-Tag: 1689089216-793344 X-HE-Meta: U2FsdGVkX19xzHUWN3Ew5k0gnguoag0Qr5+8+WszfBFC4z7UJtTWZUDEe//rJk3eT2cdvgvasgvsv6yknrSEex9xkPBz4RiFeQJV7Xd4dhYUCQxGQYo3ZPmXm/ASeFwOkj3TAE+v/8mY/hJfnV/OmSqmRbYKbTGiVI2jjZS99xiN+WvhUSUExQE+ED9c8WI/vWDw9APTj5EMqgNR+ACo/CEZK0E8+OHMlUmWUdMsrh5RLUVyeID9I7lOHQ4tbnJW8+m9fAM+fp22vbG/6LC2dpPswVITvvSgd8oXPpZZNolt4Fj6EpaUBa0U7rv21HVHr92kHFGWxERPo7GtGUnglNkvFV7ZheWDZjfnvbn5LXk4HIZZ+O9ZxjtTK95oO77hOFRWp02SBBrgPF+SAT7tMUH8G7Fs/4jOO2S+i3ATivBnDa6IxoZX5UgP0aD8rkHxuthrQQTC5h9LRQhVMHg6WDrSnxysdKJJvrimb3zndWWyarbyfhlRNxAjUtNoTGQGmETDqN7SdJ0hWTGmtOfCWBidPtvUf/o+7KdR6fhza4JJrzSFP+Qv/hzkhtJYr93L1kBRrU+CmDMa2exUtBe6G5hzJJKEGn14a9hFeGNWJFsxv8R5qRRExRTcZU9t9DgxoZzuh2ReP1TsgfvOVtXycbuFbpqoughzAF8c6wqisjQuc01yf9U4DjvEsNk7VJfAwUVBxWyBCn9aokuNe07M3VRF/ms1QopMVB0rhO2c7ty7uFRO2WpQ0+lJRGWE79tV5kVjWU1+QCtDVS1rtTmkPDhfUItR099Wu5cpxoc/cj/QzqXelaDKv6Hgvv0a6EjwPRqO0jV17FM83viEpXRyz5w1KwmqGNVkvRMTFjKVPNfu2HibYdi0WI9DGm2kcCyRW5cQkhECAo+QrCEA60UOBSLHxkKPegLQRf3NZGizvJasCjxaRRZYAqNSQXthkLoflWtNtj/hTh86HrBpfyV F1TZkb86 Y3Bumhw0W3XMil4x9Ozstj3wtds1qeiJ8zDQyy++AGXb2C5Y8nez8CebUQFdQ8Q26j5qU3VfSndW3g6bLbTW4kXC3x1/4iCUylQFFjOlSDfIsW81EiMM6tyLNvcTG2/0XhEyo4vahoM++bndWNfV/To4X+ZbModjaU/B/OdoJGaXgYrc18S4GJUiXZmGN+yCJp+p/UTGtpTHD3NwuUfJSpObuGsPW6d5aZHmjiiYSSPS7XQBx/sY7ezy/sY0na6crcqh0J4QjFtWDAvKTLyp/buJKxVW1U1kjIXGhyDvZVb/FBkAWfvuuf3lgSSRKQSayVr9mzJiN9m6FdwqlTdRvHUrKkEA1qYog7skry86h6AnSUokzsUvD6djBg3bKBamHn9PaTTTqXzu/BTBwKvPWzEsWPC2aCQozE0fw 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: On 11.07.23 06:48, Aneesh Kumar K.V wrote: > Radix vmemmap mapping can map things correctly at the PMD level or PTE > level based on different device boundary checks. Hence we skip the > restrictions w.r.t vmemmap size to be multiple of PMD_SIZE. This also > makes the feature widely useful because to use PMD_SIZE vmemmap area we > require a memory block size of 2GiB > > We can also use MHP_RESERVE_PAGES_MEMMAP_ON_MEMORY to that the feature > can work with a memory block size of 256MB. Using altmap.reserve feature > to align things correctly at pageblock granularity. We can end up > losing some pages in memory with this. For ex: with a 256MiB memory block > size, we require 4 pages to map vmemmap pages, In order to align things > correctly we end up adding a reserve of 28 pages. ie, for every 4096 > pages 28 pages get reserved. > > Signed-off-by: Aneesh Kumar K.V > --- > arch/powerpc/Kconfig | 1 + > arch/powerpc/include/asm/pgtable.h | 28 +++++++++++++++++++ > .../platforms/pseries/hotplug-memory.c | 3 +- > mm/memory_hotplug.c | 2 ++ > 4 files changed, 33 insertions(+), 1 deletion(-) > > diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig > index 116d6add0bb0..f890907e5bbf 100644 > --- a/arch/powerpc/Kconfig > +++ b/arch/powerpc/Kconfig > @@ -157,6 +157,7 @@ config PPC > select ARCH_HAS_UBSAN_SANITIZE_ALL > select ARCH_HAVE_NMI_SAFE_CMPXCHG > select ARCH_KEEP_MEMBLOCK > + select ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE if PPC_RADIX_MMU > select ARCH_MIGHT_HAVE_PC_PARPORT > select ARCH_MIGHT_HAVE_PC_SERIO > select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX > diff --git a/arch/powerpc/include/asm/pgtable.h b/arch/powerpc/include/asm/pgtable.h > index 68817ea7f994..8e6c92dde6ad 100644 > --- a/arch/powerpc/include/asm/pgtable.h > +++ b/arch/powerpc/include/asm/pgtable.h > @@ -169,6 +169,34 @@ static inline bool is_ioremap_addr(const void *x) > int __meminit vmemmap_populated(unsigned long vmemmap_addr, int vmemmap_map_size); > bool altmap_cross_boundary(struct vmem_altmap *altmap, unsigned long start, > unsigned long page_size); > +/* > + * mm/memory_hotplug.c:mhp_supports_memmap_on_memory goes into details > + * some of the restrictions. We don't check for PMD_SIZE because our > + * vmemmap allocation code can fallback correctly. The pageblock > + * alignment requirement is met using altmap->reserve blocks. > + */ > +#define arch_supports_memmap_on_memory arch_supports_memmap_on_memory > +static inline bool arch_supports_memmap_on_memory(unsigned long size) > +{ > + unsigned long nr_pages = size >> PAGE_SHIFT; > + unsigned long vmemmap_size = nr_pages * sizeof(struct page); > + > + if (!radix_enabled()) > + return false; > + > +#ifdef CONFIG_PPC_4K_PAGES > + return IS_ALIGNED(vmemmap_size, PMD_SIZE); > +#else > + /* > + * Make sure the vmemmap allocation is fully contianed > + * so that we always allocate vmemmap memory from altmap area. > + * The pageblock alignment requirement is met by using > + * reserve blocks in altmap. > + */ > + return IS_ALIGNED(vmemmap_size, PAGE_SIZE); Can we move that check into common code as well? If our (original) vmemmap size would not fit into a single page, we would be in trouble on any architecture. Did not check if it would be an issue for arm64 as well in case we would allow eventually wasting memory. -- Cheers, David / dhildenb