Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp1427601imm; Tue, 10 Jul 2018 01:23:58 -0700 (PDT) X-Google-Smtp-Source: AAOMgpdvgU8sSaz10htQMNHy3axG7OXndMsfLs+UzAgK3HdntQ2zYKNW1AGVrpoBLkiP3z1GZAPU X-Received: by 2002:a62:e903:: with SMTP id j3-v6mr24752649pfh.228.1531211038889; Tue, 10 Jul 2018 01:23:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1531211038; cv=none; d=google.com; s=arc-20160816; b=NCz/4K4SOZc2dYPn4DGm1tKxWR2WRN0Bf2G3q9NFvIMQkiaRllHwZ0+4bGsL+mkQlK n4lK2DbWXrdtyz7RV5gHjSVE9u58sxJiPwVjVCXG6w60ToBk9XnVVZ0lq7DKfEpDRb8a tSAZiPZkCK5p5+AQEUzUtPwtuVyB37FhtDGUyBmPDQiCYfDNoXLwROjNrdLDSvBIg/0D HIFvnq7ozKq5Wq6zMxom1hPXLCV3BkVAY0AnG029hqsnEzHOiGdgm/1gkRbV0AUtgNmD u6cHrQrlw9VoxBXpoqyGSAyBkGPthUXrcRfcBaOJuOndGv+7Zn0gGn4NiBhJf5gKA4FK tbDw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :arc-authentication-results; bh=DAhomhRtCvMEZWZMx2sma64yOuhOgmm8Ur5xYc0tPXw=; b=KTKxf0vtNQJv2hCOXOeytjats744o074DpZydc1Mcm8PyUIC0o+G8kemdo+qltLTzp FJxUVz16vTWKnKC3EBdoRMj1wmvneIdB10X4vc+yTWoVK2qrJuAEcDHg+hGRlmQCL6Wn D3NuMZz4fqzegvzyKT4vMqEQyqLnMlbC4G0np1K0T8usV/XCy3P63J4lXoc1jcAuseNX v33nhvhpx9Y8KAxrrNHYQ6qP1w4WecczjsOJ1nJiNjDrChzw1VNslScMJkyZyzYELaol Tt6ABAC1UZrw3StPXgncMhKm5US6+k+DMX1N+2sdYXKYSeKWGKgoQp9VIMnKp+gObFGa 5F5w== 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=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id b28-v6si14579674pgm.468.2018.07.10.01.23.44; Tue, 10 Jul 2018 01:23:58 -0700 (PDT) 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=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933206AbeGJIXI (ORCPT + 99 others); Tue, 10 Jul 2018 04:23:08 -0400 Received: from mga11.intel.com ([192.55.52.93]:7794 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751082AbeGJIXE (ORCPT ); Tue, 10 Jul 2018 04:23:04 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 10 Jul 2018 01:23:04 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.51,333,1526367600"; d="scan'208";a="71491554" Received: from linux.intel.com ([10.54.29.200]) by orsmga001.jf.intel.com with ESMTP; 10 Jul 2018 01:23:03 -0700 Received: from dazhang1-ssd.sh.intel.com (unknown [10.239.48.78]) by linux.intel.com (Postfix) with ESMTP id 3E49B580388; Tue, 10 Jul 2018 01:23:02 -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 V2 0/4] Fix kvm misconceives NVDIMM pages as reserved mmio Date: Wed, 11 Jul 2018 01:01:25 +0800 Message-Id: X-Mailer: git-send-email 2.7.4 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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. V1: https://lkml.org/lkml/2018/7/4/91 V2: *Add documentation for MEMORY_DEVICE_DEV_DAX memory type in comment block *Add is_dax_page() in mm.h to differentiate the pages is from DAX device. *Remove the function kvm_is_nd_pfn(). Zhang Yi (4): kvm: remove redundant reserved page check mm: introduce memory type MEMORY_DEVICE_DEV_DAX mm: add a function to differentiate the pages is from DAX device memory kvm: add a check if pfn is from NVDIMM pmem. drivers/dax/pmem.c | 1 + include/linux/memremap.h | 9 +++++++++ include/linux/mm.h | 12 ++++++++++++ virt/kvm/kvm_main.c | 16 ++++++++-------- 4 files changed, 30 insertions(+), 8 deletions(-) -- 2.7.4