Message ID | a698775099ea814c60672172030f79f0d6098b27.1531241281.git.yi.z.zhang@linux.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show
Return-Path: <owner-linux-mm@kvack.org> Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 1D6F46054E for <patchwork-linux-mm@patchwork.kernel.org>; Tue, 10 Jul 2018 08:25:52 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0D29228B68 for <patchwork-linux-mm@patchwork.kernel.org>; Tue, 10 Jul 2018 08:25:52 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 0182928C6F; Tue, 10 Jul 2018 08:25:51 +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=-1.0 required=2.0 tests=BAYES_00, DATE_IN_FUTURE_06_12, MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 92F0C28C6C for <patchwork-linux-mm@patchwork.kernel.org>; Tue, 10 Jul 2018 08:25:51 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BD2DE6B026D; Tue, 10 Jul 2018 04:25:50 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id B834C6B026E; Tue, 10 Jul 2018 04:25:50 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A73346B026F; Tue, 10 Jul 2018 04:25:50 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pf0-f198.google.com (mail-pf0-f198.google.com [209.85.192.198]) by kanga.kvack.org (Postfix) with ESMTP id 649396B026D for <linux-mm@kvack.org>; Tue, 10 Jul 2018 04:25:50 -0400 (EDT) Received: by mail-pf0-f198.google.com with SMTP id b5-v6so13540394pfi.5 for <linux-mm@kvack.org>; Tue, 10 Jul 2018 01:25:50 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-original-authentication-results:x-gm-message-state:from:to:cc :subject:date:message-id:in-reply-to:references; bh=C95nQnRUiI7RhiaG+tu5fuIZeg8RHgQuDZaMQILe7vQ=; b=oAVudXUGpaHqvcH2rPJ73XbLjhXctSIG5cE7Kcro7L8h3sbCFELKi1P6YUJ+3a3Sku Jrz8oKAXdPZ5Zms5pHO3lM9cGkR09G4gSVL4FG1BC9+2QgI8LahouLF1XrtTatjkzypK r9zrN0s3ZyHyYLGEfyXWI1ng/6dAIF9WfkrhY8CucIBpnTTI1j92M71TEOIt2iNrLEjB 8L0b7Y8RFiQkrS/Npa/g+fNS7paAmHBDlglO5CwrYg5YmwU7lnMdQLJgmHaidfbdxqvh iz5CWFxgAcFjSaQn4xyNdjfzO1DnjszptGhcV0J3tzJAjel52xsincbfLTQZKcWaoLCh cazA== X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of yi.z.zhang@linux.intel.com designates 192.55.52.93 as permitted sender) smtp.mailfrom=yi.z.zhang@linux.intel.com; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com X-Gm-Message-State: APt69E1fDUBxX6dnnh5jXgeQQjAoRYZMnChN6r2a/y+O3nx7wCnZoOCy yyN8k8/F5IRMrOR9aExSkhpgHZtzENkJeCSBc0FCc8UV+qbjxaiwDLJL0CYki8zdOm+f4hj8vUb 2XBVz3G0aTzgaxXl/0hZGG/GNwDFINoFIdYLFahyBNKymvZxIvHfr3kFuu/RJ7/HNFg== X-Received: by 2002:a17:902:d88d:: with SMTP id b13-v6mr6731617plz.314.1531211150101; Tue, 10 Jul 2018 01:25:50 -0700 (PDT) X-Google-Smtp-Source: AAOMgpfEjCrk2i5SUlOoF02DKICEAkvqNRQSJL9t5HgmVy2AVQ7C8M6AFDQdo/BbNRB+7NgiHHlF X-Received: by 2002:a17:902:d88d:: with SMTP id b13-v6mr6731582plz.314.1531211149520; Tue, 10 Jul 2018 01:25:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1531211149; cv=none; d=google.com; s=arc-20160816; b=sqIECj4rYZwAGne6qOZmPgzVxs31aLUkzRPBbsmkB5Lu6r92VrL3MSJzw1TarE4eQc ZjNGQRNyYFOOKX0/08fc74GTOWDVpwJEMy3H2xOMfIR+9O6WataG7F5JAJL4VL2z+DTP AzQrZOHMHCmqNTT1SCTYBVWZ4NWPDda8XgwuEs6TgGiX7na1fzqGl1v4eK+HdChOjNYb +hVx6/K7GxeJPdDbrq7V0MXb6AhfvFtC/XQERmlyRn3q/4mAeexXYyihMEaDYh67MU0u jpCqpw+LLAOunAvJqcj2/dg9/jDp3St+XwlylDhKWRVwxFPYghAW3ZwtskKnXA9/vcHk xzMA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=C95nQnRUiI7RhiaG+tu5fuIZeg8RHgQuDZaMQILe7vQ=; b=I0hIxBSth8hYJDoOZ/DIlfhG4Fykn8heD0LZJ1geFi8jBbNJyzJz8VFoAytIxWcHrw JLDiO7GYYo9YNw/m+fHVqytl6MX5u4Xkr4yYySHDrPYDduqJi6qNqWg5k2HLRvUXveIj NSCTvXy8ZzFuIurUymYnwyk+D2GR7sl8pLBhOGSCTIXyRrBZfVTtM66SwdVdWBUu08De H3G/Lqj18gicYkQFtkEyQWbLCIca+5HTXyL8FZFz/2BMNXCyy0G+HY76kTwOXkmKtf9e Cr4Ng5VY5ZwOH1YDLtX62MhAgttnv7Z8bxWfCYqxVZSnrp+ZUm7AesMjHFvJ2PmyDuk8 cJvg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of yi.z.zhang@linux.intel.com designates 192.55.52.93 as permitted sender) smtp.mailfrom=yi.z.zhang@linux.intel.com; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from mga11.intel.com (mga11.intel.com. [192.55.52.93]) by mx.google.com with ESMTPS id i2-v6si5687197pgh.565.2018.07.10.01.25.49 for <linux-mm@kvack.org> (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 10 Jul 2018 01:25:49 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of yi.z.zhang@linux.intel.com designates 192.55.52.93 as permitted sender) client-ip=192.55.52.93; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of yi.z.zhang@linux.intel.com designates 192.55.52.93 as permitted sender) smtp.mailfrom=yi.z.zhang@linux.intel.com; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 10 Jul 2018 01:25:49 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.51,333,1526367600"; d="scan'208";a="70108889" Received: from linux.intel.com ([10.54.29.200]) by fmsmga004.fm.intel.com with ESMTP; 10 Jul 2018 01:25:46 -0700 Received: from dazhang1-ssd.sh.intel.com (unknown [10.239.48.78]) by linux.intel.com (Postfix) with ESMTP id 966B1580388; Tue, 10 Jul 2018 01:25:44 -0700 (PDT) From: Zhang Yi <yi.z.zhang@linux.intel.com> To: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-nvdimm@lists.01.org, pbonzini@redhat.com, dan.j.williams@intel.com, jack@suse.cz, hch@lst.de, yu.c.zhang@intel.com Cc: linux-mm@kvack.org, rkrcmar@redhat.com, yi.z.zhang@intel.com, Zhang Yi <yi.z.zhang@linux.intel.com> Subject: [PATCH V2 4/4] kvm: add a check if pfn is from NVDIMM pmem. Date: Wed, 11 Jul 2018 01:04:08 +0800 Message-Id: <a698775099ea814c60672172030f79f0d6098b27.1531241281.git.yi.z.zhang@linux.intel.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <cover.1531241281.git.yi.z.zhang@linux.intel.com> References: <cover.1531241281.git.yi.z.zhang@linux.intel.com> X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: <linux-mm.kvack.org> X-Virus-Scanned: ClamAV using ClamSMTP |
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index afb2e6e..77e6ba8 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c @@ -142,8 +142,12 @@ __weak void kvm_arch_mmu_notifier_invalidate_range(struct kvm *kvm, bool kvm_is_reserved_pfn(kvm_pfn_t pfn) { - if (pfn_valid(pfn)) - return PageReserved(pfn_to_page(pfn)); + struct page *page; + + if (pfn_valid(pfn)) { + page = pfn_to_page(pfn); + return PageReserved(page) && !is_dax_page(page); + } return true; }
For device specific memory space, when we move these area of pfn to memory zone, we will set the page reserved flag at that time, some of these reserved for device mmio, and some of these are not, such as NVDIMM pmem. Now, we map these dev_dax or fs_dax pages to kvm for DIMM/NVDIMM backend, since these pages are reserved. the check of kvm_is_reserved_pfn() misconceives those pages as MMIO. Therefor, we introduce 2 page map types, MEMORY_DEVICE_FS_DAX/MEMORY_DEVICE_DEV_DAX, to indentify these pages are from NVDIMM pmem. and let kvm treat these as normal pages. Without this patch, Many operations will be missed due to this mistreatment to pmem pages. For example, a page may not have chance to be unpinned for KVM guest(in kvm_release_pfn_clean); not able to be marked as dirty/accessed(in kvm_set_pfn_dirty/accessed) etc Signed-off-by: Zhang Yi <yi.z.zhang@linux.intel.com> --- virt/kvm/kvm_main.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)