Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp5703911imu; Tue, 13 Nov 2018 10:23:58 -0800 (PST) X-Google-Smtp-Source: AJdET5fcJ2smak7Jzv5PBKG+7eAlKMCwMg0zD40fSalDfj9ija4P1PriPc3KBBUcTC5TOGPHluZd X-Received: by 2002:a62:6d83:: with SMTP id i125-v6mr6318330pfc.184.1542133438201; Tue, 13 Nov 2018 10:23:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1542133438; cv=none; d=google.com; s=arc-20160816; b=VF2sM+hB5THnp+ADyltZo4sImkgrvCj/TLLOR/Zr22fPEIyyieN9yry7wZYxsuq/a5 ZQLRYi4J0wz6fwavEUMFGf/sArE+ql0qe+Ahw2p832Iqy2K/qIds5wOw46iB9G36GFjG VJA/ddrSSvYE8Cg8iXqFy/YNVm9J70HtE8M3ZykU6swRMrStBy6vnLPoIie7RqDFv0J+ +fNtV4whmtJ6JgGJKRR0NrXU9rT24DAm4/fkg7dMQfUVrR9Bch06LaIUQpND892c3ypk eDmnt8TlTaWcnOj2Ty50UvA1aZX3FmTJ5ZwSH2xaU1EtCd472psB+4K/8bloUak01/kH z7CQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:autocrypt:openpgp:from:references:cc:to:subject; bh=ngjeChD3wEuG1Mb8C+4c+aQFdSP989K5DFz1aE4l6t0=; b=yqO6eIYNpb/biZX8iu01SvD6D7947uxxfAVnCxbudsp3YiSeexfHD6Q++8Pzyuq6GN 7L9DdeJ5wMgO6azk1C7jHKBaVcOM4r/8Xf/dXEbx28tHmsk9GNPjRRkUQQajJWR9+LHv LPD50wha8hv3xQJfp0PPNlphZnzGXu8nX/Rx+u52a3tjpAlqvQ95YKf3fxpnFvGmqz+i xRjGHVRIqtS7I0ew2R8TvWWlbb2/pm/ZaIJekIMT6Zk8iYigea9Xqzl7MbqDCyp2nkQj 072wZ3/0AOB8/mRWQicFjmOQh1jTuFtTkhDB6SJjLvedCBvXBlUUYmgkqMieY4mXDB8O 5p5Q== 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=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id v5-v6si22858893plg.99.2018.11.13.10.23.37; Tue, 13 Nov 2018 10:23:58 -0800 (PST) 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=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729564AbeKNEWK (ORCPT + 99 others); Tue, 13 Nov 2018 23:22:10 -0500 Received: from mx1.redhat.com ([209.132.183.28]:50860 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726459AbeKNEWK (ORCPT ); Tue, 13 Nov 2018 23:22:10 -0500 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 1B9D330AAD61; Tue, 13 Nov 2018 18:22:54 +0000 (UTC) Received: from [10.36.112.10] (unknown [10.36.112.10]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 3C1AC60BE7; Tue, 13 Nov 2018 18:22:47 +0000 (UTC) Subject: Re: [PATCH 2/2] kvm: Use huge pages for DAX-backed files To: Barret Rhoden Cc: Dan Williams , Dave Jiang , Ross Zwisler , Vishal Verma , =?UTF-8?B?UmFkaW0gS3LEjW3DocWZ?= , Thomas Gleixner , Ingo Molnar , Borislav Petkov , linux-nvdimm@lists.01.org, linux-kernel@vger.kernel.org, "H. Peter Anvin" , x86@kernel.org, kvm@vger.kernel.org, yu.c.zhang@intel.com, yi.z.zhang@intel.com References: <20181109203921.178363-1-brho@google.com> <20181109203921.178363-3-brho@google.com> <861c4adb-e2f0-2caf-8f6e-9f09ecb0b624@redhat.com> <20181113112148.6205fc56@gnomeregan.cam.corp.google.com> From: Paolo Bonzini Openpgp: preference=signencrypt Autocrypt: addr=pbonzini@redhat.com; prefer-encrypt=mutual; keydata= xsEhBFRCcBIBDqDGsz4K0zZun3jh+U6Z9wNGLKQ0kSFyjN38gMqU1SfP+TUNQepFHb/Gc0E2 CxXPkIBTvYY+ZPkoTh5xF9oS1jqI8iRLzouzF8yXs3QjQIZ2SfuCxSVwlV65jotcjD2FTN04 hVopm9llFijNZpVIOGUTqzM4U55sdsCcZUluWM6x4HSOdw5F5Utxfp1wOjD/v92Lrax0hjiX DResHSt48q+8FrZzY+AUbkUS+Jm34qjswdrgsC5uxeVcLkBgWLmov2kMaMROT0YmFY6A3m1S P/kXmHDXxhe23gKb3dgwxUTpENDBGcfEzrzilWueOeUWiOcWuFOed/C3SyijBx3Av/lbCsHU Vx6pMycNTdzU1BuAroB+Y3mNEuW56Yd44jlInzG2UOwt9XjjdKkJZ1g0P9dwptwLEgTEd3Fo UdhAQyRXGYO8oROiuh+RZ1lXp6AQ4ZjoyH8WLfTLf5g1EKCTc4C1sy1vQSdzIRu3rBIjAvnC tGZADei1IExLqB3uzXKzZ1BZ+Z8hnt2og9hb7H0y8diYfEk2w3R7wEr+Ehk5NQsT2MPI2QBd wEv1/Aj1DgUHZAHzG1QN9S8wNWQ6K9DqHZTBnI1hUlkp22zCSHK/6FwUCuYp1zcAEQEAAc0f UGFvbG8gQm9uemluaSA8Ym9uemluaUBnbnUub3JnPsLBTQQTAQIAIwUCVEJ7AwIbAwcLCQgH AwIBBhUIAgkKCwQWAgMBAh4BAheAAAoJEH4VEAzNNmmxNcwOniaZVLsuy1lW/ntYCA0Caz0i sHpmecK8aWlvL9wpQCk4GlOX9L1emyYXZPmzIYB0IRqmSzAlZxi+A2qm9XOxs5gJ2xqMEXX5 FMtUH3kpkWWJeLqe7z0EoQdUI4EG988uv/tdZyqjUn2XJE+K01x7r3MkUSFz/HZKZiCvYuze VlS0NTYdUt5jBXualvAwNKfxEkrxeHjxgdFHjYWhjflahY7TNRmuqPM/Lx7wAuyoDjlYNE40 Z+Kun4/KjMbjgpcF4Nf3PJQR8qXI6p3so2qsSn91tY7DFSJO6v2HwFJkC2jU95wxfNmTEUZc znXahYbVOwCDJRuPrE5GKFd/XJU9u5hNtr/uYipHij01WXal2cce1S5mn1/HuM1yo1u8xdHy IupCd57EWI948e8BlhpujUCU2tzOb2iYS0kpmJ9/oLVZrOcSZCcCl2P0AaCAsj59z2kwQS9D du0WxUs8waso0Qq6tDEHo8yLCOJDzSz4oojTtWe4zsulVnWV+wu70AioemAT8S6JOtlu60C5 dHgQUD1Tp+ReXpDKXmjbASJx4otvW0qah3o6JaqO79tbDqIvncu3tewwp6c85uZd48JnIOh3 utBAu684nJakbbvZUGikJfxd887ATQRUQnHuAQgAx4dxXO6/Zun0eVYOnr5GRl76+2UrAAem Vv9Yfn2PbDIbxXqLff7oyVJIkw4WdhQIIvvtu5zH24iYjmdfbg8iWpP7NqxUQRUZJEWbx2CR wkMHtOmzQiQ2tSLjKh/cHeyFH68xjeLcinR7jXMrHQK+UCEw6jqi1oeZzGvfmxarUmS0uRuf fAb589AJW50kkQK9VD/9QC2FJISSUDnRC0PawGSZDXhmvITJMdD4TjYrePYhSY4uuIV02v02 8TVAaYbIhxvDY0hUQE4r8ZbGRLn52bEzaIPgl1p/adKfeOUeMReg/CkyzQpmyB1TSk8lDMxQ zCYHXAzwnGi8WU9iuE1P0wARAQABwsEzBBgBAgAJBQJUQnHuAhsMAAoJEH4VEAzNNmmxp1EO oJy0uZggJm7gZKeJ7iUpeX4eqUtqelUw6gU2daz2hE/jsxsTbC/w5piHmk1H1VWDKEM4bQBT uiJ0bfo55SWsUNN+c9hhIX+Y8LEe22izK3w7mRpvGcg+/ZRG4DEMHLP6JVsv5GMpoYwYOmHn plOzCXHvmdlW0i6SrMsBDl9rw4AtIa6bRwWLim1lQ6EM3PWifPrWSUPrPcw4OLSwFk0CPqC4 HYv/7ZnASVkR5EERFF3+6iaaVi5OgBd81F1TCvCX2BEyIDRZLJNvX3TOd5FEN+lIrl26xecz 876SvcOb5SL5SKg9/rCBufdPSjojkGFWGziHiFaYhbuI2E+NfWLJtd+ZvWAAV+O0d8vFFSvr iy9enJ8kxJwhC0ECbSKFY+W1eTIhMD3aeAKY90drozWEyHhENf4l/V+Ja5vOnW+gCDQkGt2Y 1lJAPPSIqZKvHzGShdh8DduC0U3xYkfbGAUvbxeepjgzp0uEnBXfPTy09JGpgWbg0w91GyfT /ujKaGd4vxG2Ei+MMNDmS1SMx7wu0evvQ5kT9NPzyq8R2GIhVSiAd2jioGuTjX6AZCFv3ToO 53DliFMkVTecLptsXaesuUHgL9dKIfvpm+rNXRn9wAwGjk0X/A== Message-ID: Date: Tue, 13 Nov 2018 19:22:42 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.0 MIME-Version: 1.0 In-Reply-To: <20181113112148.6205fc56@gnomeregan.cam.corp.google.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.40]); Tue, 13 Nov 2018 18:22:54 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 13/11/2018 17:21, Barret Rhoden wrote: > On 2018-11-12 at 20:31 Paolo Bonzini wrote: >> Looks good. What's the plan for removing PageReserved from DAX pages? > > I hear that's going on in this thread: > > https://lore.kernel.org/lkml/154145268025.30046.11742652345962594283.stgit@ahduyck-desk1.jf.intel.com/ > > Though it looks like it's speeding up page initialization, and not > explicitly making the PageReserved change, yet. > > Alternatively, I could change kvm_is_reserved_pfn() to single out > zone_device pages if we don't want to wait or if there is a concern > that it won't happen. > > On a related note, there are two places in KVM where we check > PageReserved outside of kvm_is_reserved_pfn(). > > For reference: > > bool kvm_is_reserved_pfn(kvm_pfn_t pfn) > { > if (pfn_valid(pfn)) > return PageReserved(pfn_to_page(pfn)); > > return true; > } > > One caller of PageReserved(): > > void kvm_set_pfn_dirty(kvm_pfn_t pfn) > { > if (!kvm_is_reserved_pfn(pfn)) { > struct page *page = pfn_to_page(pfn); > > if (!PageReserved(page)) > SetPageDirty(page); > } > } > > In that one, the PageReserved() check looks redundant, since if the > page was PageReserved, then it would have been kvm_is_reserved. Make sense, and a patch to fix this is welcome. > > The other is: > > static bool kvm_is_mmio_pfn(kvm_pfn_t pfn) > { > if (pfn_valid(pfn)) > return !is_zero_pfn(pfn) && PageReserved(pfn_to_page(pfn)) && > /* > * Some reserved pages, such as those from NVDIMM > * DAX devices, are not for MMIO, and can be mapped > * with cached memory type for better performance. > * However, the above check misconceives those pages > * as MMIO, and results in KVM mapping them with UC > * memory type, which would hurt the performance. > * Therefore, we check the host memory type in addition > * and only treat UC/UC-/WC pages as MMIO. > */ > (!pat_enabled() || pat_pfn_immune_to_uc_mtrr(pfn)); > > return true; > } > > Where the PAT stuff was motivated by DAX. The PageReserved check here > looks like a broken-out version of kvm_is_reserved_pfn(), so that we can > make some extra checks around it. Since this one is indeed motivated by DAX, it can be left in for now and it will DTRT. But when DAX is not PageReserved anymore, then this second part of the condition can be reverted. Paolo