From patchwork Thu Aug 9 10:53:30 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Zhang, Yi" X-Patchwork-Id: 10560731 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 D765714E5 for ; Thu, 9 Aug 2018 02:15:06 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id BED9C2AC87 for ; Thu, 9 Aug 2018 02:15:06 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id B29AC2AD81; Thu, 9 Aug 2018 02:15:06 +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 4B1D12AC87 for ; Thu, 9 Aug 2018 02:15:06 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 7D1536B0010; Wed, 8 Aug 2018 22:15:05 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 7A6E16B0269; Wed, 8 Aug 2018 22:15:05 -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 6981E6B026A; Wed, 8 Aug 2018 22:15:05 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pl0-f71.google.com (mail-pl0-f71.google.com [209.85.160.71]) by kanga.kvack.org (Postfix) with ESMTP id 291756B0010 for ; Wed, 8 Aug 2018 22:15:05 -0400 (EDT) Received: by mail-pl0-f71.google.com with SMTP id j1-v6so2614002pld.23 for ; Wed, 08 Aug 2018 19:15:05 -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=qe0n20hd1AFQwWHycmykF186xnzB1aiLhkqHzf3Q5DU=; b=ALEa45S6gNX7QM1h2KFPehag/yWyt4osy6bnxiV0+lX5sVRCzl+CmihUpOY4NBx6Bc n4IHASr8KuJkridscLOjib2RY+vbYNrjsAEv6TEodwhti3EsN95cxbjLdR5NBwyxaHIa zeMxWL0HWzAkPRmp0TMBa0JHVpQgXLADaLQcP17m8B0mNpIWSdRr46CRM/UW776l1cGv 6klzqRIBN34eBQ0IK0Fx2owL4CeyguUnBC759EAlqNXdUVLGRq7NBisrrrnQf6Fhz4Z5 PINyiLyB7lL5Y2jLgzPxdmXlrsLfmlewrQSyTcqYdJkNIHW3qqcYU+9kuDJVIjZGNFSv wlaQ== X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of yi.z.zhang@linux.intel.com designates 134.134.136.24 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: AOUpUlGN6Wk+c0OGOvxh6WUMepkzX9uh7vlEC1UMrggSqde5IQ2NUt1n 73xsrUEQ1m+iGQRrQeRujdal6fl/bymweFuOxnJuNfqGt5sXfUxbcXxN3phx6wc7IZbBvW78Gvb PCt+riD+utbFiHmWWZ0pIPlkEbDzzqYRmGQ4FqBaRdKDXnDuA4u69ddneTkslj6+org== X-Received: by 2002:a17:902:9696:: with SMTP id n22-v6mr218293plp.212.1533780904865; Wed, 08 Aug 2018 19:15:04 -0700 (PDT) X-Google-Smtp-Source: AA+uWPycfnsT14JL2G07aJMWF6QcHAaaARBy+y7fuoKxSq82iy6TNnz0waEplBU2L3qOLI9QQQJY X-Received: by 2002:a17:902:9696:: with SMTP id n22-v6mr218265plp.212.1533780904148; Wed, 08 Aug 2018 19:15:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1533780904; cv=none; d=google.com; s=arc-20160816; b=k9+6bc6tB+aWYaxQUT1OpZ7IKBtCtk3kmJrfKbTg5SfAQ0uffLRCVuLZkn2zsV/GWy CXRBDORw5BF/HRNWQ8kfo/Otc2pCLWtobgtSFpoHSuckOMtCCGxRIjaOM5CMKGQoUVeo JNcsDS5bkKU8HUk4xHYevwlBJR/B9ADSFGEX64bI5Vb1nfVjF8bufOQvHc3FIrYCtGly XDpAWRR2g5OOmTrYeIGbCDWjwEunwJ9ld8ArVCfkGnaZZDepjyu4FZvj7JRn8Gdloi/Y Gkzl/EBVOOvEUkdY2p8wG0zqCySDahIZppcrxY4HJPVPrrVeWa/cnthIKReNb1n8l8AO LCYw== 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=qe0n20hd1AFQwWHycmykF186xnzB1aiLhkqHzf3Q5DU=; b=Pse+4UfN6J06xbIpUfgIwkEUaj6ofDEOH7ZczpXxCdRNHY12ccPH+QmkxcIPrD0Kxt fZzS8jVW3SX5KJuvGTGAlqPc0fOWDI/BKY3mGUYoCREWU1vdPAJ6cT7PitRBQgpMHnSy TpdxQGIJn2jvcq2VTA5LLAvfcmjifNDTs3KYivGH2XWEsOxXPwQiZqXznScJVoO5dDDA Vm8BsP58mHJPB00qwDqeFQCysiRAj2AVYDbT9IbSjNEqyi/pQvkdcRJCZf2H5gzn0vhg MhEUpD1XNpqqqnH8rylDM+mkVW1GnB6MnI+pcnhZjlsWzh69baQQv9tjJtmujuSn38Z/ 68FA== 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 134.134.136.24 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 mga09.intel.com (mga09.intel.com. [134.134.136.24]) by mx.google.com with ESMTPS id m3-v6si5904581pgr.108.2018.08.08.19.15.03 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 08 Aug 2018 19:15:04 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of yi.z.zhang@linux.intel.com designates 134.134.136.24 as permitted sender) client-ip=134.134.136.24; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of yi.z.zhang@linux.intel.com designates 134.134.136.24 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 orsmga002.jf.intel.com ([10.7.209.21]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 08 Aug 2018 19:15:01 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.53,213,1531810800"; d="scan'208";a="81868743" Received: from linux.intel.com ([10.54.29.200]) by orsmga002.jf.intel.com with ESMTP; 08 Aug 2018 19:14:47 -0700 Received: from dazhang1-ssd.sh.intel.com (unknown [10.239.48.78]) by linux.intel.com (Postfix) with ESMTP id 876E95801BD; Wed, 8 Aug 2018 19:14:45 -0700 (PDT) From: Zhang Yi 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 Subject: [PATCH V3 4/4] kvm: add a check if pfn is from NVDIMM pmem. Date: Thu, 9 Aug 2018 18:53:30 +0800 Message-Id: <0cc6cba7020f80168695fba731b8fd72fd649dc8.1533811181.git.yi.z.zhang@linux.intel.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: References: 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: X-Virus-Scanned: ClamAV using ClamSMTP 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 --- virt/kvm/kvm_main.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index c44c406..969b6ca 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c @@ -147,8 +147,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; }