Received: by 2002:ac0:98c7:0:0:0:0:0 with SMTP id g7-v6csp4330189imd; Mon, 29 Oct 2018 23:30:07 -0700 (PDT) X-Google-Smtp-Source: AJdET5cZCj+FkX9CCTh8wh3bIRlSMMBleIL1/XrixWwPtgAu8qsHWEgYgUS+/sF5Khn5YkFwuIKY X-Received: by 2002:a17:902:244:: with SMTP id 62-v6mr1823689plc.280.1540881007102; Mon, 29 Oct 2018 23:30:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1540881007; cv=none; d=google.com; s=arc-20160816; b=AsaQU93NupEuf5cxZRfEVHtid90DIkVaX5yK/qdVh42jUF7WA8dMu8DCwAn9se4aDx TSErt9/WGCB72LdBRwI0v0o1MjrEwQFRUQhGfOB0aqyGKhmlDIx97NcDFyELTWc2Xh3b AhsdrohIbC5U6izSsLLaUKjY9P/b1j850eVMONkbJ5OAgf1re4HBuRnKov1EKTE5K7cl UZTLeHyK7cVM9otxjpJItwWq/5HxhkNGKK1upn4O7iIq3wTiTePdF68E/V8zv1ULXRc2 cRzGu70YqofDLYSAxxW8aAbLg97y5PpdOpDVFHjNSKNi1PMIKPQiWWNQs/+K1Qv6/kf5 M0gg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date; bh=SzNeIUozRrldjsfg0TgiyjoGHj3G61Oz31cuM3tyOZg=; b=tHl5k+C7JtMFKyR33GsWd9GNbA/SO0pPQQLMxSNowf2MSD0jhRnq+TBYahyB/Amof4 K5ldhlObBBQgAPsCB288AEsoK4QEh0IrZPW56Or1Rzu9CQd09bLGsK17puhtcNI8qK9Q FzDUKQGoT+2MqBD7gP4zqRygOWqjISARRfI44iZjv1nOEipt7tTbQMjdcd7mpBfK0kdA lgtx13ECGXmMcHtB51Blq09agLMZlGt5rHNYXimjZ0B5PK4StqlFG1RQsmenYIjAMWnt d3tupgCrST+bINYifo40z+HnXbIVpfV+qH3WNkTUqSq0DMLNfSdwFVUnhDP4/EbAMABu rXLg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g189-v6si22507600pgc.204.2018.10.29.23.29.51; Mon, 29 Oct 2018 23:30:07 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726523AbeJ3PVb (ORCPT + 99 others); Tue, 30 Oct 2018 11:21:31 -0400 Received: from mx2.suse.de ([195.135.220.15]:52890 "EHLO mx1.suse.de" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726105AbeJ3PVb (ORCPT ); Tue, 30 Oct 2018 11:21:31 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay1.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 97A38ABB1; Tue, 30 Oct 2018 06:29:19 +0000 (UTC) Date: Tue, 30 Oct 2018 07:29:15 +0100 From: Michal Hocko To: Alexander Duyck Cc: Dan Williams , Linux MM , Andrew Morton , Linux Kernel Mailing List , linux-nvdimm , Pasha Tatashin , Dave Hansen , =?iso-8859-1?B?Suly9G1l?= Glisse , rppt@linux.vnet.ibm.com, Ingo Molnar , "Kirill A. Shutemov" , yi.z.zhang@linux.intel.com, osalvador@techadventures.net Subject: Re: [PATCH v5 4/4] mm: Defer ZONE_DEVICE page initialization to the point where we init pgmap Message-ID: <20181030062915.GT32673@dhcp22.suse.cz> References: <20181017075257.GF18839@dhcp22.suse.cz> <971729e6-bcfe-a386-361b-d662951e69a7@linux.intel.com> <20181029141210.GJ32673@dhcp22.suse.cz> <84f09883c16608ddd2ba88103f43ec6a1c649e97.camel@linux.intel.com> <20181029163528.GL32673@dhcp22.suse.cz> <18dfc5a0db11650ff31433311da32c95e19944d9.camel@linux.intel.com> <20181029172415.GM32673@dhcp22.suse.cz> <8e7a4311a240b241822945c0bb4095c9ffe5a14d.camel@linux.intel.com> <20181029181827.GO32673@dhcp22.suse.cz> <3281f3044fa231bbc1b02d5c5efca3502a0d05a8.camel@linux.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <3281f3044fa231bbc1b02d5c5efca3502a0d05a8.camel@linux.intel.com> User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon 29-10-18 12:59:11, Alexander Duyck wrote: > On Mon, 2018-10-29 at 19:18 +0100, Michal Hocko wrote: [...] I will try to get to your other points later. > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > > index 89d2a2ab3fe6..048e4cc72fdf 100644 > > --- a/mm/page_alloc.c > > +++ b/mm/page_alloc.c > > @@ -5474,8 +5474,8 @@ void __meminit memmap_init_zone(unsigned long size, int nid, unsigned long zone, > > * Honor reservation requested by the driver for this ZONE_DEVICE > > * memory > > */ > > - if (altmap && start_pfn == altmap->base_pfn) > > - start_pfn += altmap->reserve; > > + if (pgmap && pgmap->get_memmap) > > + start_pfn = pgmap->get_memmap(pgmap, start_pfn); > > > > for (pfn = start_pfn; pfn < end_pfn; pfn++) { > > /* > > > > [...] > > The only reason why I hadn't bothered with these bits is that I was > actually trying to leave this generic since I thought I had seen other > discussions about hotplug scenerios where memory may want to change > where the vmmemmap is initialized other than just the case of > ZONE_DEVICE pages. So I was thinking at some point we may see altmap > without the pgmap. I wanted to abuse altmap to allocate struct pages from the physical range to be added. In that case I would abstract the allocation/initialization part of pgmap into a more abstract type. Something trivially to be done without affecting end users of the hotplug API. [...] > > Anyway we have gone into details while the primary problem here was that > > the hotplug lock doesn't scale AFAIR. And my question was why cannot we > > pull move_pfn_range_to_zone and what has to be done to achieve that. > > That is a fundamental thing to address first. Then you can microptimize > > on top. > > Yes, the hotplug lock was part of the original issue. However that > starts to drift into the area I believe Oscar was working on as a part > of his patch set in encapsulating the move_pfn_range_to_zone and other > calls that were contained in the hotplug lock into their own functions. Well, I would really love to keep the external API as simple as possible. That means that we need arch_add_memory/add_pages and move_pfn_range_to_zone to associate pages with a zone. The hotplug lock should be preferably hidden from callers of those two and ideally it shouldn't be a global lock. We should be good with a range lock. > The patches Andrew pushed addressed the immediate issue so that now > systems with nvdimm/DAX memory can at least initialize quick enough > that systemd doesn't refuse to mount the root file system due to a > timeout. This is about the first time you actually mention that. I have re-read the cover letter and all changelogs of patches in this serious. Unless I have missed something there is nothing about real users hitting issues out there. nvdimm is still considered a toy because there is no real HW users can play with. And hence my complains about half baked solutions rushed in just to fix a performance regression. I can certainly understand that a pressing problem might justify to rush things a bit but this should be always carefuly justified. > The next patch set I have refactors things to reduce code and > allow us to reuse some of the hotplug code for the deferred page init, > https://lore.kernel.org/lkml/20181017235043.17213.92459.stgit@localhost.localdomain/ > . After that I was planning to work on dealing with the PageReserved > flag and trying to get that sorted out. > > I was hoping to wait until after Dan's HMM patches and Oscar's changes > had been sorted before I get into any further refactor of this specific > code. Yes there is quite a lot going on here. I would really appreciate if we all sit and actually try to come up with something robust rather than hack here and there. I haven't yet seen your follow up series completely so maybe you are indeed heading the correct direction. -- Michal Hocko SUSE Labs