From patchwork Thu Aug 9 10:53:08 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Zhang, Yi" X-Patchwork-Id: 10560719 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 4C0E190E3 for ; Thu, 9 Aug 2018 02:14:36 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 3289C2AC87 for ; Thu, 9 Aug 2018 02:14:36 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 261D32AD7F; Thu, 9 Aug 2018 02:14:36 +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 B78EC2AD84 for ; Thu, 9 Aug 2018 02:14:35 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D9CE16B000A; Wed, 8 Aug 2018 22:14:34 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id D4C7B6B000C; Wed, 8 Aug 2018 22:14:34 -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 C3DD96B000D; Wed, 8 Aug 2018 22:14:34 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) by kanga.kvack.org (Postfix) with ESMTP id 82D096B000A for ; Wed, 8 Aug 2018 22:14:34 -0400 (EDT) Received: by mail-pf1-f197.google.com with SMTP id a23-v6so2396603pfo.23 for ; Wed, 08 Aug 2018 19:14:34 -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=xnc7hcf0HxkdZmO+HpfsgY0hVTpTWdSn+HqbGOKucj8=; b=jmQ2DC+IiUP9yoPYlGgsmwF2soJQNsHG1KSRM8x0PHmis/b0mfkW1i//+CLeaDrlPC qha20WS8PM7ikCgqhdbfR3amgo1laU85AQeB6y+UmUxAUWTBK/BXA5k4p7wbg+br6qvR AeO9XdsqL25AVq9ir8YBmpid9Pzlv0uZ6uALO3d43nKffhvCeCZ8t8KIPrNuxIoqEUJv Z0uNZDtOaeDZLuFCzDrRv3JFI49oHPkqxxznU9MPA5m+zdiw48o5GjG+Oc8KVt6qDycD g8tRwqE8f02pHPAgo98omnyBVSJifLOMBK7pmc8OqDy4GjzOqpfEiAV3+h6Jpt9Js82i KCOw== 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.88 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: AOUpUlEx7csOp+VEhMkzHz/VYU2PXhBUJRmHKDs7uuN+9Qy598IGLm6z 9C3B6j60i0xPZg9F8DpH157wKWGad8sbVaWGq6pSdcXdAXfDXz23dWVt6uzUHf8Z+gWOnp1H0E9 1fJE/JrzOGSmkHzQBNM9s+rdmYYikGXM5NENTzRB9Ne9vktOvB4cK+zPBERmHPWKQZA== X-Received: by 2002:a63:f344:: with SMTP id t4-v6mr207947pgj.428.1533780874221; Wed, 08 Aug 2018 19:14:34 -0700 (PDT) X-Google-Smtp-Source: AA+uWPwjLCHzXuWbWN0Jc6fgpnqKERe1YG6TDXQ92ksSd8audCBswFtr7TtpCYkiSfPD/K4sdp5Q X-Received: by 2002:a63:f344:: with SMTP id t4-v6mr207919pgj.428.1533780873425; Wed, 08 Aug 2018 19:14:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1533780873; cv=none; d=google.com; s=arc-20160816; b=S4kNoLRResFrDpSd/uDbSORKqzWNDjoPUL2froZq0deL9P098CQyln555AXmcjrKqC dvHOTw47lDMEjR7hwAgfo0uQRPW+Fhr6XojWn/DhAC7gOPUvi5bxsaGtYghLre0kHAE7 EPqdAHI6H1aY3v2rikCpW8mCjCmRpBG9nhFWxK99w9NZFklzo+ZMvGhMp7xEwvZGUqL2 ApcfcDg11CSjfaHmke8z7zTmrSTsUB2jrD33YTZHwzheGsPfcYfeqxkBzh6CDQz7gbUF TMOw/rAkHXKjSbRERjt/uEiFreQFPpjBIjJ1Xtdeb+WKEtdA7Z5UnXVWdl9g6ZbxiEk3 LK3w== 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=xnc7hcf0HxkdZmO+HpfsgY0hVTpTWdSn+HqbGOKucj8=; b=rcWtd/e1ZVv97Umk7H4I/Ij8UoL6ETcSbjNWdVjTOnIjfGLEHeC0pZ9wrlKoR3Gt0M qf4tgvd5PrAqfQ2Op5LLpDCnGJkJkGKwrsVStpGi6WprqPF9l6TGuprKTnLgn5lRRMua 4l/+sJgQTLg0jcWqnuxt4pLRZspo7tLerYMQHQ5RVaPtJE4IpoBP1EyPPXuiCDsqfsZU ZrWXUi9pnzd3KkUfTp4H98h1/2LA16g1gzuKJWU4TV4K9OuXFzCh2xSiQdkJZB0axN31 4siYE5FZbM7lmDwAAK9gygCiYcmc+Lc5xGt9teAIgxz86MQNV1cd6A6DlEfqL+f2MULR jI1Q== 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.88 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 mga01.intel.com (mga01.intel.com. [192.55.52.88]) by mx.google.com with ESMTPS id b13-v6si4645352plz.467.2018.08.08.19.14.33 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 08 Aug 2018 19:14:33 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of yi.z.zhang@linux.intel.com designates 192.55.52.88 as permitted sender) client-ip=192.55.52.88; 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.88 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 fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 08 Aug 2018 19:14:32 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.53,213,1531810800"; d="scan'208";a="71346413" Received: from linux.intel.com ([10.54.29.200]) by FMSMGA003.fm.intel.com with ESMTP; 08 Aug 2018 19:14:30 -0700 Received: from dazhang1-ssd.sh.intel.com (unknown [10.239.48.78]) by linux.intel.com (Postfix) with ESMTP id 5A5425801BD; Wed, 8 Aug 2018 19:14:28 -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 2/4] mm: introduce memory type MEMORY_DEVICE_DEV_DAX Date: Thu, 9 Aug 2018 18:53:08 +0800 Message-Id: <01aaca83694c3b0093fcb2f48af1dff0b147a4b2.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 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 Reviewed-by: Jan Kara --- drivers/dax/pmem.c | 1 + include/linux/memremap.h | 8 ++++++++ 2 files changed, 9 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 f91f9e7..cd07ca8 100644 --- a/include/linux/memremap.h +++ b/include/linux/memremap.h @@ -53,11 +53,19 @@ 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: + * Device memory that support raw access to persistent memory. Without need + * of an intervening filesystem, it could be directed mapped via an mmap + * capable character device. Together with the type MEMORY_DEVICE_FS_DAX, + * we could distinguish the persistent memory pages from normal ZONE_DEVICE + * pages. */ enum memory_type { MEMORY_DEVICE_PRIVATE = 1, MEMORY_DEVICE_PUBLIC, MEMORY_DEVICE_FS_DAX, + MEMORY_DEVICE_DEV_DAX, }; /*