All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Dan Williams <dan.j.williams@intel.com>
Cc: Juergen Gross <JGross@suse.com>,
	Haozhong Zhang <haozhong.zhang@intel.com>,
	Xiao Guangrong <guangrong.xiao@linux.intel.com>,
	Arnd Bergmann <arnd@arndb.de>,
	"linux-nvdimm@lists.01.org" <linux-nvdimm@ml01.01.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Stefano Stabellini <stefano@aporeto.com>,
	David Vrabel <david.vrabel@citrix.com>,
	Jan Beulich <JBeulich@suse.com>,
	Johannes Thumshirn <jthumshirn@suse.de>,
	xen-devel@lists.xenproject.org,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Ross Zwisler <ross.zwisler@linux.intel.com>,
	Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [RFC KERNEL PATCH 0/2] Add Dom0 NVDIMM support for Xen
Date: Thu, 13 Oct 2016 20:33:41 +0100	[thread overview]
Message-ID: <a69fe867-8d0d-75d9-dabe-509d1fd25646__18799.7914189056$1476387323$gmane$org@citrix.com> (raw)
In-Reply-To: <CAPcyv4js4fnVfGhfS0TkCCRQGsPen0_tKHNdwjdeP6L28sK4Cg@mail.gmail.com>

On 13/10/16 19:59, Dan Williams wrote:
> On Thu, Oct 13, 2016 at 9:01 AM, Andrew Cooper
> <andrew.cooper3@citrix.com> wrote:
>> On 13/10/16 16:40, Dan Williams wrote:
>>> On Thu, Oct 13, 2016 at 2:08 AM, Jan Beulich <JBeulich@suse.com> wrote:
>>> [..]
>>>>> I think we can do the similar for Xen, like to lay another pseudo
>>>>> device on /dev/pmem and do the reservation, like 2. in my previous
>>>>> reply.
>>>> Well, my opinion certainly doesn't count much here, but I continue to
>>>> consider this a bad idea. For entities like drivers it may well be
>>>> appropriate, but I think there ought to be an independent concept
>>>> of "OS reserved", and in the Xen case this could then be shared
>>>> between hypervisor and Dom0 kernel. Or if we were to consider Dom0
>>>> "just a guest", things should even be the other way around: Xen gets
>>>> all of the OS reserved space, and Dom0 needs something custom.
>>> You haven't made the case why Xen is special and other applications of
>>> persistent memory are not.
>> In a Xen system, Xen runs in the baremetal root-mode ring0, and dom0 is
>> a VM running in ring1/3 with the nvdimm driver.  This is the opposite
>> way around to the KVM model.
>>
>> Dom0, being the hardware domain, has default ownership of all the
>> hardware, but to gain access in the first place, it must request a
>> mapping from Xen.
> This is where my understanding the Xen model breaks down.  Are you
> saying dom0 can't access the persistent memory range unless the ring0
> agent has metadata storage space for tracking what it maps into dom0?

No.  I am trying to point out that the current suggestion wont work, and
needs re-designing.

Xen *must* be able to properly configure mappings of the NVDIMM for
dom0, *without* modifying any content on the NVDIMM.  Otherwise, data
corruption will occur.

Whether this means no Xen metadata, or the metadata living elsewhere in
regular ram, such as the main frametable, is an implementation detail.

>
>> Once dom0 has a mapping of the nvdimm, the nvdimm driver can go to work
>> and figure out what is on the DIMM, and which areas are safe to use.
> I don't understand this ordering of events.  Dom0 needs to have a
> mapping to even write the on-media structure to indicate a
> reservation.  So, initial dom0 access can't depend on metadata
> reservation already being present.

I agree.

Overall, I think the following is needed.

* Xen starts up.
** Xen might find some NVDIMM SPA/MFN ranges in the NFIT table, and
needs to note this information somehow.
** Xen might find some Type 7 E820 regions, and needs to note this
information somehow.
* Xen starts dom0.
* Once OSPM is running, a Xen component in Linux needs to collect and
report all NVDIMM SPA/MFN regions it knowns about.
** This covers the AML-only case, and the hotplug case.
* Dom0 requests a mapping of the NVDIMMs via the usual mechanism.
** This should work, as Xen is aware that there is something there to be
mapped (rather than just empty physical address space).
* Dom0 finds that some NVDIMM ranges are now available for use (probably
modelled as hotplug events).
* /dev/pmem $STUFF starts happening as normal.

At some pointer later after dom0 policy decisions are made (ultimately,
by the host administrator):
* If an area of NVDIMM is chosen for Xen to use, Dom0 needs to inform
Xen of the SPA/MFN regions which are safe to use.
* Xen then incorporates these regions into its idea of RAM, and starts
using them for whatever.

~Andrew

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

  parent reply	other threads:[~2016-10-13 19:33 UTC|newest]

Thread overview: 143+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-10  0:35 [RFC KERNEL PATCH 0/2] Add Dom0 NVDIMM support for Xen Haozhong Zhang
2016-10-10  0:35 ` Haozhong Zhang
2016-10-10  0:35 ` [RFC KERNEL PATCH 1/2] nvdimm: add PFN_MODE_XEN to pfn device for Xen usage Haozhong Zhang
2016-10-10  0:35   ` Haozhong Zhang
2016-10-10  0:35 ` Haozhong Zhang
2016-10-10  0:35 ` [RFC KERNEL PATCH 2/2] xen, nvdimm: report pfn devices in PFN_MODE_XEN to Xen hypervisor Haozhong Zhang
2016-10-10  0:35   ` Haozhong Zhang
2016-10-10  0:35 ` Haozhong Zhang
2016-10-10  3:45 ` [RFC KERNEL PATCH 0/2] Add Dom0 NVDIMM support for Xen Dan Williams
2016-10-10  3:45 ` Dan Williams
2016-10-10  3:45   ` Dan Williams
2016-10-10  6:32   ` Haozhong Zhang
2016-10-10  6:32     ` Haozhong Zhang
2016-10-10 16:24     ` Dan Williams
2016-10-10 16:24     ` Dan Williams
2016-10-10 16:24       ` Dan Williams
2016-10-11  7:11       ` Haozhong Zhang
2016-10-11  7:11         ` Haozhong Zhang
2016-10-11  7:11       ` Haozhong Zhang
2016-10-10  6:32   ` Haozhong Zhang
2016-10-10 16:43 ` [Xen-devel] " Andrew Cooper
2016-10-10 16:43   ` Andrew Cooper
2016-10-11  5:52   ` Haozhong Zhang
2016-10-11  5:52   ` [Xen-devel] " Haozhong Zhang
2016-10-11  5:52     ` Haozhong Zhang
2016-10-11 18:37     ` Andrew Cooper
2016-10-11 18:37       ` Andrew Cooper
2016-10-11 18:45       ` Konrad Rzeszutek Wilk
     [not found]       ` <de62aa59-37e0-b01f-1617-6fc8f6fb3620-Sxgqhf6Nn4DQT0dZR+AlfA@public.gmane.org>
2016-10-11 18:45         ` [Xen-devel] " Konrad Rzeszutek Wilk
2016-10-11 18:45           ` Konrad Rzeszutek Wilk
2016-10-11 18:48         ` Konrad Rzeszutek Wilk
2016-10-11 18:48           ` Konrad Rzeszutek Wilk
2016-10-11 18:48       ` Konrad Rzeszutek Wilk
2016-10-11 18:37     ` Andrew Cooper
2016-10-11 13:08   ` [Xen-devel] " Jan Beulich
2016-10-11 13:08     ` Jan Beulich
2016-10-11 15:53     ` Dan Williams
2016-10-11 15:53     ` [Xen-devel] " Dan Williams
2016-10-11 15:53       ` Dan Williams
2016-10-11 16:58       ` Konrad Rzeszutek Wilk
2016-10-11 16:58       ` [Xen-devel] " Konrad Rzeszutek Wilk
2016-10-11 16:58         ` Konrad Rzeszutek Wilk
2016-10-11 17:51         ` Dan Williams
2016-10-11 17:51           ` Dan Williams
2016-10-11 18:15           ` Andrew Cooper
2016-10-11 18:15             ` Andrew Cooper
2016-10-11 18:42             ` Konrad Rzeszutek Wilk
2016-10-11 18:42             ` [Xen-devel] " Konrad Rzeszutek Wilk
2016-10-11 18:42               ` Konrad Rzeszutek Wilk
2016-10-11 19:43               ` Konrad Rzeszutek Wilk
2016-10-11 19:43                 ` Konrad Rzeszutek Wilk
2016-10-11 19:43               ` Konrad Rzeszutek Wilk
2016-10-11 18:15           ` Andrew Cooper
2016-10-11 18:33           ` [Xen-devel] " Konrad Rzeszutek Wilk
2016-10-11 18:33             ` Konrad Rzeszutek Wilk
2016-10-11 19:28             ` Dan Williams
2016-10-11 19:28               ` Dan Williams
2016-10-11 19:48               ` Konrad Rzeszutek Wilk
2016-10-11 19:48               ` [Xen-devel] " Konrad Rzeszutek Wilk
2016-10-11 19:48                 ` Konrad Rzeszutek Wilk
2016-10-11 20:17                 ` Dan Williams
2016-10-12 10:33                   ` Haozhong Zhang
2016-10-12 10:33                     ` Haozhong Zhang
2016-10-12 11:32                     ` Jan Beulich
2016-10-12 11:32                     ` [Xen-devel] " Jan Beulich
2016-10-12 11:32                       ` Jan Beulich
2016-10-12 14:58                       ` Haozhong Zhang
2016-10-12 14:58                       ` [Xen-devel] " Haozhong Zhang
2016-10-12 14:58                         ` Haozhong Zhang
2016-10-12 15:39                         ` Jan Beulich
2016-10-12 15:39                         ` [Xen-devel] " Jan Beulich
2016-10-12 15:39                           ` Jan Beulich
2016-10-12 15:42                           ` Dan Williams
2016-10-12 15:42                             ` Dan Williams
2016-10-12 16:01                             ` Jan Beulich
2016-10-12 16:01                               ` Jan Beulich
2016-10-12 16:19                               ` Dan Williams
2016-10-12 16:19                               ` [Xen-devel] " Dan Williams
2016-10-12 16:19                                 ` Dan Williams
2016-10-13  8:34                                 ` Jan Beulich
2016-10-13  8:34                                   ` Jan Beulich
2016-10-13  8:53                                   ` Haozhong Zhang
2016-10-13  8:53                                   ` [Xen-devel] " Haozhong Zhang
2016-10-13  8:53                                     ` Haozhong Zhang
2016-10-13  9:08                                     ` Jan Beulich
2016-10-13  9:08                                       ` Jan Beulich
2016-10-13 15:40                                       ` Dan Williams
2016-10-13 15:40                                       ` [Xen-devel] " Dan Williams
2016-10-13 15:40                                         ` Dan Williams
2016-10-13 16:01                                         ` Andrew Cooper
2016-10-13 16:01                                         ` [Xen-devel] " Andrew Cooper
2016-10-13 16:01                                           ` Andrew Cooper
2016-10-13 18:59                                           ` Dan Williams
2016-10-13 18:59                                           ` [Xen-devel] " Dan Williams
2016-10-13 18:59                                             ` Dan Williams
2016-10-13 19:33                                             ` Andrew Cooper
2016-10-13 19:33                                               ` Andrew Cooper
2016-10-14  7:08                                               ` Haozhong Zhang
2016-10-14  7:08                                                 ` Haozhong Zhang
2016-10-14 12:18                                                 ` Andrew Cooper
2016-10-14 12:18                                                   ` Andrew Cooper
2016-10-20  9:14                                                   ` Haozhong Zhang
2016-10-20  9:14                                                   ` [Xen-devel] " Haozhong Zhang
2016-10-20  9:14                                                     ` Haozhong Zhang
2016-10-20 21:46                                                     ` Andrew Cooper
2016-10-20 21:46                                                     ` [Xen-devel] " Andrew Cooper
2016-10-20 21:46                                                       ` Andrew Cooper
2016-10-14 12:18                                                 ` Andrew Cooper
2016-10-14  7:08                                               ` Haozhong Zhang
2016-10-13 19:33                                             ` Andrew Cooper [this message]
2016-10-14 10:03                                         ` [Xen-devel] " Jan Beulich
2016-10-14 10:03                                           ` Jan Beulich
2016-10-14 10:03                                         ` Jan Beulich
2016-10-13 15:46                                       ` Haozhong Zhang
2016-10-13 15:46                                       ` [Xen-devel] " Haozhong Zhang
2016-10-13 15:46                                         ` Haozhong Zhang
2016-10-14 10:16                                         ` Jan Beulich
2016-10-14 10:16                                         ` [Xen-devel] " Jan Beulich
2016-10-14 10:16                                           ` Jan Beulich
2016-10-20  9:15                                           ` Haozhong Zhang
2016-10-20  9:15                                             ` Haozhong Zhang
2016-10-20  9:15                                           ` Haozhong Zhang
2016-10-13  9:08                                     ` Jan Beulich
2016-10-13  9:08                                     ` [Xen-devel] " Haozhong Zhang
2016-10-13  9:08                                       ` Haozhong Zhang
2016-10-13  9:08                                     ` Haozhong Zhang
2016-10-13  8:34                                 ` Jan Beulich
2016-10-12 16:01                             ` Jan Beulich
2016-10-12 15:42                           ` Dan Williams
2016-10-12 10:33                   ` Haozhong Zhang
2016-10-11 20:17                 ` Dan Williams
2016-10-11 20:18                 ` Andrew Cooper
2016-10-11 20:18                 ` [Xen-devel] " Andrew Cooper
2016-10-11 20:18                   ` Andrew Cooper
2016-10-11 19:28             ` Dan Williams
2016-10-11 18:33           ` Konrad Rzeszutek Wilk
2016-10-11 17:51         ` Dan Williams
2016-10-12  7:25       ` Jan Beulich
2016-10-12  7:25       ` [Xen-devel] " Jan Beulich
2016-10-12  7:25         ` Jan Beulich
2016-10-11 13:08   ` Jan Beulich
2016-10-10 16:43 ` Andrew Cooper
  -- strict thread matches above, loose matches on Subject: below --
2016-10-10  0:35 Haozhong Zhang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='a69fe867-8d0d-75d9-dabe-509d1fd25646__18799.7914189056$1476387323$gmane$org@citrix.com' \
    --to=andrew.cooper3@citrix.com \
    --cc=JBeulich@suse.com \
    --cc=JGross@suse.com \
    --cc=akpm@linux-foundation.org \
    --cc=arnd@arndb.de \
    --cc=boris.ostrovsky@oracle.com \
    --cc=dan.j.williams@intel.com \
    --cc=david.vrabel@citrix.com \
    --cc=guangrong.xiao@linux.intel.com \
    --cc=haozhong.zhang@intel.com \
    --cc=jthumshirn@suse.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-nvdimm@ml01.01.org \
    --cc=ross.zwisler@linux.intel.com \
    --cc=stefano@aporeto.com \
    --cc=xen-devel@lists.xenproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.