Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753096AbdLDMsg (ORCPT ); Mon, 4 Dec 2017 07:48:36 -0500 Received: from mx2.suse.de ([195.135.220.15]:59975 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751711AbdLDMsf (ORCPT ); Mon, 4 Dec 2017 07:48:35 -0500 Date: Mon, 4 Dec 2017 13:48:31 +0100 From: Michal Hocko To: Andrea Reale Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, m.bielski@virtualopensystems.com, arunks@qti.qualcomm.com, mark.rutland@arm.com, scott.branden@broadcom.com, will.deacon@arm.com, qiuxishi@huawei.com, catalin.marinas@arm.com, realean2@ie.ibm.com Subject: Re: [PATCH v2 3/5] mm: memory_hotplug: memblock to track partially removed vmemmap mem Message-ID: <20171204124831.mkrg32vverjkqsx7@dhcp22.suse.cz> References: <20171130145134.el3qq7pr3q4xqglz@dhcp22.suse.cz> <20171204114908.GC6373@samekh> <20171204123244.vfm6znonfqt6fien@dhcp22.suse.cz> <20171204124230.GA10599@samekh> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20171204124230.GA10599@samekh> User-Agent: NeoMutt/20170609 (1.8.3) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2885 Lines: 58 On Mon 04-12-17 12:42:31, Andrea Reale wrote: > On Mon 4 Dec 2017, 13:32, Michal Hocko wrote: > > On Mon 04-12-17 11:49:09, Andrea Reale wrote: > > > On Thu 30 Nov 2017, 15:51, Michal Hocko wrote: > > > > On Thu 23-11-17 11:14:38, Andrea Reale wrote: > > > > > When hot-removing memory we need to free vmemmap memory. > > > > > However, depending on the memory is being removed, it might > > > > > not be always possible to free a full vmemmap page / huge-page > > > > > because part of it might still be used. > > > > > > > > > > Commit ae9aae9eda2d ("memory-hotplug: common APIs to support page tables > > > > > hot-remove") introduced a workaround for x86 > > > > > hot-remove, by which partially unused areas are filled with > > > > > the 0xFD constant. Full pages are only removed when fully > > > > > filled by 0xFDs. > > > > > > > > > > This commit introduces a MEMBLOCK_UNUSED_VMEMMAP memblock flag, with > > > > > the goal of using it in place of 0xFDs. For now, this will be used for > > > > > the arm64 port of memory hot remove, but the idea is to eventually use > > > > > the same mechanism for x86 as well. > > > > > > > > Why cannot you use the same approach as x86 have? Have a look at the > > > > vmemmap_free at al. > > > > > > > > > > This arm64 hot-remove version (including vmemmap_free) is indeed an > > > almost 1-to-1 port of the x86 approach. > > > > > > If you look at the first version of the patchset we submitted a while > > > ago (https://lkml.org/lkml/2017/4/11/540), we were initially using the > > > x86 approach of filling unsued page structs with 0xFDs. Commenting on > > > that, Mark suggested (and, indeed, I agree with him) that relying on a > > > magic constant for marking some portions of physical memory was quite > > > ugly. That is why we have used memblock for the purpose in this revised > > > patchset. > > > > > > If you have a different view and any concrete suggestion on how to > > > improve this, it is definitely very well welcome. > > > > I would really prefer if those archictectues shared the code (and > > concept) as much as possible. It is really a PITA to wrap your head > > around each architectures for reasons which are not inherent to that > > specific architecture. If you find the way how x86 is implemented ugly, > > then all right, but making arm64 special just for the matter of taste is > > far from ideal IMHO. > > The plan is indeed to use this memblock flag in x86 hot remove as well, > in place of the 0xFDs. The change is quite straightforward and we could > push it in a next patchset release. Our rationale was to first use it in > the new architecture and then, once proven stable, back port it to x86. > > However, I am not in principle against of pushing it right now. So please start with a simpler (cleanup) patch for x86. It will make the life so much easier. -- Michal Hocko SUSE Labs