From patchwork Mon Dec 3 19:25:20 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Duyck X-Patchwork-Id: 10710399 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id CE41014BD for ; Mon, 3 Dec 2018 19:25:24 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C11B22A962 for ; Mon, 3 Dec 2018 19:25:24 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id B56F42AF77; Mon, 3 Dec 2018 19:25:24 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from ml01.01.org (ml01.01.org [198.145.21.10]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 749EA2A962 for ; Mon, 3 Dec 2018 19:25:24 +0000 (UTC) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 54910211982F8; Mon, 3 Dec 2018 11:25:24 -0800 (PST) X-Original-To: linux-nvdimm@lists.01.org Delivered-To: linux-nvdimm@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=helo; client-ip=192.55.52.136; helo=mga12.intel.com; envelope-from=alexander.h.duyck@linux.intel.com; receiver=linux-nvdimm@lists.01.org Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id A1A0F2194D387 for ; Mon, 3 Dec 2018 11:25:21 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga106.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 03 Dec 2018 11:25:21 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,311,1539673200"; d="scan'208";a="115600452" Received: from ahduyck-desk1.amr.corp.intel.com ([10.7.198.76]) by orsmga001.jf.intel.com with ESMTP; 03 Dec 2018 11:25:20 -0800 Subject: [PATCH RFC 0/3] Fix KVM misinterpreting Reserved page as an MMIO page From: Alexander Duyck To: dan.j.williams@intel.com, pbonzini@redhat.com, yi.z.zhang@linux.intel.com, brho@google.com, kvm@vger.kernel.org, linux-nvdimm@lists.01.org Date: Mon, 03 Dec 2018 11:25:20 -0800 Message-ID: <154386493754.27193.1300965403157243427.stgit@ahduyck-desk1.amr.corp.intel.com> User-Agent: StGit/unknown-version MIME-Version: 1.0 X-BeenThere: linux-nvdimm@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Linux-nvdimm developer list." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: yu.c.zhang@intel.com, david@redhat.com, rkrcmar@redhat.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org, jglisse@redhat.com, jack@suse.cz, hch@lst.de Errors-To: linux-nvdimm-bounces@lists.01.org Sender: "Linux-nvdimm" X-Virus-Scanned: ClamAV using ClamSMTP I have loosely based this patch series off of the following patch series from Zhang Yi: https://lore.kernel.org/lkml/cover.1536342881.git.yi.z.zhang@linux.intel.com The original set had attempted to address the fact that DAX pages were treated like MMIO pages which had resulted in reduced performance. It attempted to address this by ignoring the PageReserved flag if the page was either a DEV_DAX or FS_DAX page. I am proposing this as an alternative to that set. The main reason for this is because I believe there are a few issues that were overlooked with that original set. Specifically KVM seems to have two different uses for the PageReserved flag. One being whether or not we can pin the memory, the other being if we should be marking the pages as dirty or accessed. I believe only the pinning really applies so I have split the uses of kvm_is_reserved_pfn and updated the function uses to determine support for page pinning to include a check of the pgmap to see if it supports pinning. --- Alexander Duyck (3): kvm: Split use cases for kvm_is_reserved_pfn to kvm_is_refcounted_pfn mm: Add support for exposing if dev_pagemap supports refcount pinning kvm: Add additional check to determine if a page is refcounted arch/x86/kvm/mmu.c | 6 +++--- drivers/nvdimm/pfn_devs.c | 2 ++ include/linux/kvm_host.h | 2 +- include/linux/memremap.h | 5 ++++- include/linux/mm.h | 11 +++++++++++ virt/kvm/kvm_main.c | 34 +++++++++++++++++++++++++--------- 6 files changed, 46 insertions(+), 14 deletions(-) --