Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp1428544imm; Tue, 10 Jul 2018 01:25:12 -0700 (PDT) X-Google-Smtp-Source: AAOMgpdii4FnWaL+ipkMA/ofJn3gjGxuqyd4u4w1IeoWJzTIRbkq8lWlRVr5hWhWDFmgJtCqJxSb X-Received: by 2002:a63:3d41:: with SMTP id k62-v6mr9707691pga.254.1531211111954; Tue, 10 Jul 2018 01:25:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1531211111; cv=none; d=google.com; s=arc-20160816; b=zlu9D+W7IA2S2h8soLA1blgC35F+eNP1ZF1ALNyQe1baGI3WeIpgjm9fnz9D+8ptKS jeDtVQpRYMRqAUFbgu0K6YF4G00blrBQ3nvBZZKX24VSkrj1WTDvbFQEu7dsdTJxAZmk bRA73m5TLbmd8nRZ3aYQZF5e+54OS7dytGMaRUSYM3ZhwTHAmFrzCUej1Ve5iQuGMp1B l3elXkxNbQeZA+UnJlYn+/kLwk0188MdEB9/m0BtN+AJtKNBdbTHAGvepkjuCScf7M5o S7GfaVpHU+BoGVzR+GCkN31UmM7FZR2IUcQPRbJdDxOu9PxMI0JnOvQgBNkbGZwuoiZS AUwQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=1IVFnIlSc1pUwU7We0xKU18MpAgTcbYBfHGMF6cOeZY=; b=NMyk/rfYC8ol3pmAlib2jBRyEenzhOoRXNgURFgn5737ghWFDzkYcCvYrisAH4VK2/ S5MK9F6yTJPI3rUtriFIbY+RXGLcp5QhyFiNFnJbNqLn02bwdl2b3/V0w46yYt/6oEPv lnOf6vS2y6h+hBZPsp0kXDoTwh54Uq6WRLcLO6ryURQSikJV2xcQw40ZSQCtT1HRIn5C HV+4lHYewnI/HNj3zQLhXE4WoM9+rTYdVYJURhzdF5N79iwR+M7XFzyfgBpNSlG1Xlv0 jZZzjRZDcdsrVhPVU3BLJzhUVStWMPy15dVWhoESRGuQuy0evllV+G9DFZS02OtwCaAy Rx5Q== 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 k4-v6si15203907pgo.77.2018.07.10.01.24.57; Tue, 10 Jul 2018 01:25:11 -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 S933307AbeGJIXl (ORCPT + 99 others); Tue, 10 Jul 2018 04:23:41 -0400 Received: from mga09.intel.com ([134.134.136.24]:43240 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751332AbeGJIXj (ORCPT ); Tue, 10 Jul 2018 04:23:39 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 10 Jul 2018 01:23:38 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.51,333,1526367600"; d="scan'208";a="70108231" Received: from linux.intel.com ([10.54.29.200]) by fmsmga004.fm.intel.com with ESMTP; 10 Jul 2018 01:23:38 -0700 Received: from dazhang1-ssd.sh.intel.com (unknown [10.239.48.78]) by linux.intel.com (Postfix) with ESMTP id 43338580388; Tue, 10 Jul 2018 01:23:36 -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 2/4] mm: introduce memory type MEMORY_DEVICE_DEV_DAX Date: Wed, 11 Jul 2018 01:01:59 +0800 Message-Id: <7e20d862f96662e1a7736dbb747a71949933dcd4.1531241281.git.yi.z.zhang@linux.intel.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: References: Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Currently, NVDIMM pages will be marked 'PageReserved'. However, unlike other reserved PFNs, pages on NVDIMM shall still behave like normal ones in many cases, i.e. when used as backend memory of KVM guest. This patch introduces a new memory type, MEMORY_DEVICE_DEV_DAX. And set this flag while dax driver hotplug the device memory. Signed-off-by: Zhang Yi Signed-off-by: Zhang Yu --- drivers/dax/pmem.c | 1 + include/linux/memremap.h | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/drivers/dax/pmem.c b/drivers/dax/pmem.c index fd49b24..fb3f363 100644 --- a/drivers/dax/pmem.c +++ b/drivers/dax/pmem.c @@ -111,6 +111,7 @@ static int dax_pmem_probe(struct device *dev) return rc; dax_pmem->pgmap.ref = &dax_pmem->ref; + dax_pmem->pgmap.type = MEMORY_DEVICE_DEV_DAX; addr = devm_memremap_pages(dev, &dax_pmem->pgmap); if (IS_ERR(addr)) return PTR_ERR(addr); diff --git a/include/linux/memremap.h b/include/linux/memremap.h index 5ebfff6..a36bce8 100644 --- a/include/linux/memremap.h +++ b/include/linux/memremap.h @@ -53,11 +53,20 @@ struct vmem_altmap { * wakeup event whenever a page is unpinned and becomes idle. This * wakeup is used to coordinate physical address space management (ex: * fs truncate/hole punch) vs pinned pages (ex: device dma). + * + * MEMORY_DEVICE_DEV_DAX: + * DAX driver hotplug the device memory and move it to memory zone, these + * pages will be marked reserved flag. However, some other kernel componet + * will misconceive these pages are reserved mmio (ex: we map these dev_dax + * or fs_dax pages to kvm for DIMM/NVDIMM backend). Together with the type + * MEMORY_DEVICE_FS_DAX, we can differentiate the pages on NVDIMM with the + * normal reserved pages. */ enum memory_type { MEMORY_DEVICE_PRIVATE = 1, MEMORY_DEVICE_PUBLIC, MEMORY_DEVICE_FS_DAX, + MEMORY_DEVICE_DEV_DAX, }; /* -- 2.7.4