Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp718324ybz; Fri, 17 Apr 2020 08:49:10 -0700 (PDT) X-Google-Smtp-Source: APiQypL5OuCqsCwKLPh/qQtzFrwUXf1rS1s9+DNHmIwocKeWUkbYGJzJA7ALTZ+Cmdeno56E1aFt X-Received: by 2002:a05:6402:1496:: with SMTP id e22mr3604242edv.301.1587138550798; Fri, 17 Apr 2020 08:49:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1587138550; cv=none; d=google.com; s=arc-20160816; b=oCZZ94bWKWDX8rSengUgKHZEmVllVQWsMgsMmgWpMSgvywJspmHAk7Oz0J4YPNTnmr tNZQWplEUfQ1TyZcQcCxbYTBXQ5beFBMYWOfxKmLbvUoLN1r4PluvleGS8JrOuMhdO81 c+8LL2TxsnyL5gFcWQ6T0L0DGBx6E47A26nBDpciWV62gs/MoCiC5wYlBBmpr6LaR979 9StqWKKOFzCdUhPmRNjgbW933TqUgLP6APCe9uLE2sPsREaNZclUHkPbXDwaRXiVJT8v ulbx2PXnDZoqKSpuhjm7DvbboMPZWbD+swtIosPn5KlFNZae+j9Um6ycecxH39cbgI/w rVbg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:in-reply-to:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :dkim-signature; bh=HDRDbJd2M4qiCgjpoZQhZ31JvaoOb1sTaN9fveDaTJE=; b=yLn+hXPPYC0WkdpkCOXZmIsQ3HaUyJ8eMXkaa5T0KHzzGEwq5VM9SR8RMP57FA0i0F bjEKEQwPM1Q0fdtXTWC+F6Y+UCdG+9tb8e8hUIMScCUISm1OHOeW/dCEYxgA8p8BhKB0 5Gpb0dGXxu8vM1EU3jmT9TcmB+JlruDVSkuDkyrvkYR/vhU0WEomAFFqQswSRFQX++v7 qsuygC/+j3fPyCD3bN2XeKluQ+coAXDtpLL3yGSu8TsE4dyWhk0NHb5nvzmk7JLEKfmf upydSzJmmnKkM9x1T6YQgfYCo0MdEXG0vXK7OQIwtoK4wvP3DK7X0AkQvylUsb0dI+si xsgw== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@infradead.org header.s=bombadil.20170209 header.b=Ysjg7rsR; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id a9si13938072edk.466.2020.04.17.08.48.39; Fri, 17 Apr 2020 08:49:10 -0700 (PDT) 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=fail header.i=@infradead.org header.s=bombadil.20170209 header.b=Ysjg7rsR; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729311AbgDQPrc (ORCPT + 99 others); Fri, 17 Apr 2020 11:47:32 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47468 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1728593AbgDQPrb (ORCPT ); Fri, 17 Apr 2020 11:47:31 -0400 Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:e::133]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B0C27C061A0C for ; Fri, 17 Apr 2020 08:47:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=In-Reply-To:Content-Type:MIME-Version :References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description; bh=HDRDbJd2M4qiCgjpoZQhZ31JvaoOb1sTaN9fveDaTJE=; b=Ysjg7rsRv8f4AtxBOZkNUdzkap jjG9O7xTEECfR1lzCTGcK40z/woI/GZqIa0YJhR0qkMw+62vqvxwSLJ8qx/y5gpu9BOwINgi5BT8B 5wBi/VqyuCZq/RAdNMPahC1amqdi3pQHOobCM9s2Td7hFQ1YdffHNrq777ocJJa45J8iVG6z0bIAD VzgH+xK0aPb1LT3lZbrpRicKuPv28WciTB9BNqH9yxQ4fFiLTeVxVQCdcMnri6yCQR0B5SAPg0Ojc v+m7WUhL6pjRMf9jfv3Ae77lLFUY+FnOZUBl5XvZLH/ZNTedT5aUtkf1DZTzjG3eOloV4r6IioGfi 1Ol16sPg==; Received: from j217100.upc-j.chello.nl ([24.132.217.100] helo=noisy.programming.kicks-ass.net) by bombadil.infradead.org with esmtpsa (Exim 4.92.3 #3 (Red Hat Linux)) id 1jPTD3-0005ex-C2; Fri, 17 Apr 2020 15:47:23 +0000 Received: from hirez.programming.kicks-ass.net (hirez.programming.kicks-ass.net [192.168.1.225]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by noisy.programming.kicks-ass.net (Postfix) with ESMTPS id CB5F730477A; Fri, 17 Apr 2020 17:47:14 +0200 (CEST) Received: by hirez.programming.kicks-ass.net (Postfix, from userid 1000) id BD0592B12192B; Fri, 17 Apr 2020 17:47:14 +0200 (CEST) Date: Fri, 17 Apr 2020 17:47:14 +0200 From: Peter Zijlstra To: "Kirill A. Shutemov" Cc: Dave Hansen , Andy Lutomirski , Thomas Gleixner , Ingo Molnar , Borislav Petkov , "H. Peter Anvin" , x86@kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH, RFC] x86/mm/pat: Restore large pages after fragmentation Message-ID: <20200417154714.GI20730@hirez.programming.kicks-ass.net> References: <20200416213229.19174-1-kirill.shutemov@linux.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20200416213229.19174-1-kirill.shutemov@linux.intel.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Apr 17, 2020 at 12:32:29AM +0300, Kirill A. Shutemov wrote: > +static void cpa_restore_large_pages(struct cpa_data *cpa, > + struct list_head *pgtables) > +{ > + unsigned long start, addr, end; > + int i; > + > + start = __cpa_addr(cpa, 0); > + end = start + PAGE_SIZE * cpa->numpages; > + > + for (addr = start; addr >= start && addr < end; addr += PUD_SIZE) > + restore_large_pages(addr, pgtables); Isn't that loop slightly broken? Consider: s e |---------|---------|---------|---------| a0 a1 a2 a3 Where s,e are @start,@end resp. and a# are the consecutive values of @addr with PUD sized steps. Then, since a3 is >= @end, we'll not take that iteration and we'll not try and merge that last PUD, even though we possibly could. One fix is to truncate @start (and with that @addr) to the beginning of the PUD. Also, I'm afraid that with my proposal this loop needs to do PMD size steps. In that regard your version does make some sense. But it is indeed less efficient for small ranges. One possible fix is to pass @start,@end into the restore/reconstruct/collapse such that we can iterate the minimal set of page-tables for each level.