From: "Chen, Tiejun" <tiejun.chen@intel.com>
To: Ian Jackson <Ian.Jackson@eu.citrix.com>
Cc: Stefano Stabellini <stefano.stabellini@eu.citrix.com>,
Wei Liu <wei.liu2@citrix.com>,
Ian Campbell <ian.campbell@citrix.com>,
xen-devel@lists.xen.org
Subject: Re: [v5][PATCH 10/16] tools: introduce some new parameters to set rdm policy
Date: Tue, 07 Jul 2015 23:16:27 +0800 [thread overview]
Message-ID: <559BED4B.8050000@intel.com> (raw)
In-Reply-To: <21915.58580.475402.265088@mariner.uk.xensource.com>
On 2015/7/7 22:40, Ian Jackson wrote:
> Chen, Tiejun writes ("Re: [v5][PATCH 10/16] tools: introduce some new parameters to set rdm policy"):
>> On 2015/7/7 21:26, Ian Jackson wrote:
>>> Is "none" not "hoping the user can ignore the problem" ?
>>
>> Its impossible since the hypervisor or tools can't prevent from
>> accessing RDM by a VM. So as I said early, "none" is just suitable to
>> two cases,
>>
>> #1. Those devices don't own any RDM
>> #2. Guest OS doesn't access RDM
>>
>> Compared to other cases, these two cases are more popular in real world
>> and actual usage. So we'd like to keep "none" as a default.
>
> I have read your 00/ description, and these two emails:
> http://lists.xen.org/archives/html/xen-devel/2015-01/msg01580.html
> http://lists.xenproject.org/archives/html/xen-devel/2015-01/msg00524.html
> I have also reread the documentation you provide in this patch.
>
> I'm afraid I still don't understand why it is safe for the default to
> be `none'. My view is that the default setting should avoid a
> possibility of memory corruption or system malfunction.
RMRR is used to pass through a device. And in this case this require
this sort of 1:1 mapping. And especially RMRR is always masked as
RESERVED in e820 table. So originally, any VM can't create these
mappings, right? So as I said, if these devices you're trying to pass
though don't own RDM or you don't pass through any devices at all, so
there's no any memory corruption.
>
> Your description in the document says this:
>
> +"none" is the default value and it means we don't check any reserved
> +regions and then all rdm policies would be ignored. Guest just works
> +as before and the conflict of RDM and guest address space wouldn't
> +be handled, and then this may result in the associated device not
> +being able to work or even crash the VM. So if you're assigning this
> +kind of device, this option is not recommended unless you can make
> +sure any conflict doesn't exist.
>
> So you do not recommend the use of `none', however you make it the
> default.
>
> I'm afraid also that I don't quite understand the interaction between
> none-vs-host on the one hand and strict-vs-relaxed on the other. The
> documentation would suggest that the only difference between
> type=none
> and
> type=host,reserve=relaxed
> is that the latter may print some extra warning messages. But the
> code appears to do a lot of work to move guest memory about, when
> type=none is specified.
>
>
> Also I don't understand this:
>
>> Its impossible since the hypervisor or tools can't prevent from
>> accessing RDM by a VM. So as I said early, "none" is just suitable to
>> two cases,
>
> Perhaps I am missing something here.
>
> The hypervisor can obviously prevent a VM from accessing RDM by not
> setting up a mapping for it. The problem is then that the VM might
> try to make the access anyway, and then crash or malfunction. But
Yes.
> presumably the VM can be instructed via the E820 or some such not to
> access these regions.
As I said above we need to create them as 1:1.
>
> For a VM which has been given passthrough access to a device which
> does DMA things are more complicated but again I think the hypervisor
> and tools should be able to deny accesses using the iommu tables.
RMRR is a special case, and we have to set these mapping as 1:1. This is
why we introduce these patches to make sure RMRR don't overlap normal
RAM and MMIO.
>
> But then I also don't understand why your comment "the hypervisor or
> tools can't prevent from accessing RDM by a VM" explains why "none" is
> a good default.
I mean if you don't set these mappings, these devices can't work at all
and then crash VM like IGD passthrough. But I'm also saying we don't
pass through any devices in most cases, and those devices which own RDM
are very rare. So why should we set 'none' to Xen by default?
>
>
> Sorry if I'm being dense.
>
Ian,
Its always fine to me but I just think, is it a good time to start to
seek another *optional* approach to overturn current design and
implementation ? Unless you're very sure we're doing something wrong. I
noticed you should be CCed when we posted this associated design.
Thanks
Tiejun
next prev parent reply other threads:[~2015-07-07 15:16 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-07 6:17 [v5][PATCH 00/16] Fix RMRR Tiejun Chen
2015-07-07 6:17 ` [v5][PATCH 01/16] xen: introduce XENMEM_reserved_device_memory_map Tiejun Chen
2015-07-07 11:17 ` Ian Jackson
2015-07-07 12:46 ` Jan Beulich
2015-07-07 13:23 ` Ian Jackson
2015-07-07 14:05 ` Jan Beulich
2015-07-07 21:32 ` Chen, Tiejun
2015-07-08 6:25 ` Jan Beulich
2015-07-07 6:17 ` [v5][PATCH 02/16] xen/vtd: create RMRR mapping Tiejun Chen
2015-07-07 6:17 ` [v5][PATCH 03/16] xen/passthrough: extend hypercall to support rdm reservation policy Tiejun Chen
2015-07-07 6:17 ` [v5][PATCH 04/16] xen: enable XENMEM_memory_map in hvm Tiejun Chen
2015-07-07 6:17 ` [v5][PATCH 05/16] hvmloader: get guest memory map into memory_map[] Tiejun Chen
2015-07-07 6:17 ` [v5][PATCH 06/16] hvmloader/pci: skip reserved ranges Tiejun Chen
2015-07-07 6:17 ` [v5][PATCH 07/16] hvmloader/e820: construct guest e820 table Tiejun Chen
2015-07-07 6:17 ` [v5][PATCH 08/16] tools/libxc: Expose new hypercall xc_reserved_device_memory_map Tiejun Chen
2015-07-07 6:17 ` [v5][PATCH 09/16] tools: extend xc_assign_device() to support rdm reservation policy Tiejun Chen
2015-07-07 6:17 ` [v5][PATCH 10/16] tools: introduce some new parameters to set rdm policy Tiejun Chen
2015-07-07 10:21 ` Wei Liu
2015-07-08 0:54 ` Chen, Tiejun
2015-07-08 8:32 ` Ian Campbell
2015-07-08 9:06 ` Chen, Tiejun
2015-07-08 9:17 ` Ian Campbell
2015-07-07 11:47 ` Ian Jackson
2015-07-07 12:03 ` Chen, Tiejun
2015-07-07 12:14 ` Ian Jackson
2015-07-07 12:31 ` Chen, Tiejun
2015-07-07 13:26 ` Ian Jackson
2015-07-07 13:53 ` Chen, Tiejun
2015-07-07 14:16 ` Ian Jackson
2015-07-07 14:40 ` Ian Jackson
2015-07-07 15:16 ` Chen, Tiejun [this message]
2015-07-07 15:39 ` Chen, Tiejun
2015-07-07 17:08 ` Ian Jackson
2015-07-07 21:45 ` Chen, Tiejun
2015-07-07 6:17 ` [v5][PATCH 11/16] tools/libxl: detect and avoid conflicts with RDM Tiejun Chen
2015-07-07 11:20 ` Wei Liu
2015-07-07 11:51 ` Ian Jackson
2015-07-07 12:08 ` Wei Liu
2015-07-07 12:16 ` Ian Jackson
2015-07-07 11:57 ` Ian Jackson
2015-07-07 14:52 ` Chen, Tiejun
2015-07-07 14:57 ` Ian Jackson
2015-07-07 15:27 ` Chen, Tiejun
2015-07-07 16:01 ` Ian Jackson
2015-07-07 6:17 ` [v5][PATCH 12/16] tools: introduce a new parameter to set a predefined rdm boundary Tiejun Chen
2015-07-07 11:22 ` Wei Liu
2015-07-07 6:17 ` [v5][PATCH 13/16] libxl: construct e820 map with RDM information for HVM guest Tiejun Chen
2015-07-07 9:03 ` Wei Liu
2015-07-07 6:17 ` [v5][PATCH 14/16] xen/vtd: enable USB device assignment Tiejun Chen
2015-07-07 6:17 ` [v5][PATCH 15/16] xen/vtd: prevent from assign the device with shared rmrr Tiejun Chen
2015-07-07 6:17 ` [v5][PATCH 16/16] tools: parse to enable new rdm policy parameters Tiejun Chen
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=559BED4B.8050000@intel.com \
--to=tiejun.chen@intel.com \
--cc=Ian.Jackson@eu.citrix.com \
--cc=ian.campbell@citrix.com \
--cc=stefano.stabellini@eu.citrix.com \
--cc=wei.liu2@citrix.com \
--cc=xen-devel@lists.xen.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.