All of lore.kernel.org
 help / color / mirror / Atom feed
From: George Dunlap <george.dunlap@eu.citrix.com>
To: "Chen, Tiejun" <tiejun.chen@intel.com>
Cc: Ian Jackson <ian.jackson@eu.citrix.com>,
	Stefano Stabellini <stefano.stabellini@eu.citrix.com>,
	Wei Liu <wei.liu2@citrix.com>,
	Ian Campbell <ian.campbell@citrix.com>,
	"xen-devel@lists.xen.org" <xen-devel@lists.xen.org>
Subject: Re: [v4][PATCH 11/19] tools: introduce some new parameters to set rdm policy
Date: Wed, 1 Jul 2015 14:29:55 +0100	[thread overview]
Message-ID: <5593EB53.5000601@eu.citrix.com> (raw)
In-Reply-To: <5593CC19.9020200@intel.com>

On 07/01/2015 12:16 PM, Chen, Tiejun wrote:
> On 2015/7/1 18:57, George Dunlap wrote:
>> On 07/01/2015 11:26 AM, Chen, Tiejun wrote:
>>>>>> 1. By default, the domain policy is RELAXED (See above,
>>>>>> libxl__rdm_setdefault()).
>>>>>>
>>>>>> 2. By default, the policy for individual devices is STRICT (see
>>>>>> libxl_pci.c:libxl__device_pci_setdefault())
>>>>>>
>>>>>> 3. If the domain policy is set to STRICT, this overrides per-device
>>>>>> policy
>>>>>>
>>>>>> 4. If the domain policy is set to RELAXED, I don't see that having an
>>>>>> effect on individual devices
>>>>>
>>>>> This is our rule, and this is why I think you need to take a look at
>>>>> patch #00, our design and all patch head descriptions,
>>>>>
>>>>> "Default per-device RDM policy is 'strict', while default global RDM
>>>>> policy is 'relaxed'. When both policies are specified on a given
>>>>> region,
>>>>> 'strict' is always preferred."
>>>>
>>>> It looks like you didn't finish reading my message.  I suggest you
>>>> do so:
>>>
>>> Okay.
>>>
>>>>
>>>>>> If I'm correct, then #3 means it's not possible to have devices for a
>>>>>> domain *default* to strict, but to be relaxed in individual
>>>>>> instances.
>>>>>> If you had five devices you wanted strict, and only one device you
>>>>>> wanted to be relaxed (because you knew it didn't matter), you'd have
>>>>>> to set reserved=strict for all the other devices, rather than just
>>>>>> being able to set the domain setting to strict and set
>>>>>> reserve=relaxed
>>>>>> for the one.
>>>>>>
>>>>>> I think that both violates the principle of least surprise, and is
>>>>>> less useful.
>>>>
>>>
>>> So what's you idea to follow our requirement?
>>
>> So consider the following config snippet:
>>
>> ---
>> rdm="reserve=relaxed"
>>
>> pci=['01:00.1,msitranslate=1']
>> ----
>>
>> What should the policy for that device be?
>>
>> According to your policy document, it seems to me like it should be
>> "relaxed", since the domain default* is set to "relaxed" and nothing
> 
> Why? "strict" should be in this case.

OK, I think I see where the problem is.  I had expected the domain-wide
setting to be a default which was overridden by per-device policies (see
pci_permissive and friends).  So when I saw "global default RDM policy"
confirmation bias caused me to interpret it as what I expected to see --
the domain setting as the default, which the local setting could override.

I see now that in your documentation you consistently talk about two
different policies, each of which have their own defaults, and that the
effective permissions for a device end up being the intersection of the
two (i.e., only relaxed of both are relaxed; strict under all other
circumstances).

> Why are you saying this is not our expectation? Just let me pick up that
> description *again*,
> 
> "Default per-device RDM policy is 'strict', while default global RDM
> policy is 'relaxed'. When both policies are specified on a given region,
> 'strict' is always preferred."

Look, if I haven't understood what you meant by the exact same words the
first 4 times I read it, simply repeating the same exact words is not
going to be helpful.  Ideally you need to try go understand where my
misunderstanding is coming from and explain where I've misunderstood
something; or, at least you need to try to use different words, or
explain how the words you're using apply to the given situation.

>> This interface doesn't make any sense to me.  Why, if the "global
> 
> If you have any objection to our solution, and if you can't find any
> reasonable answer from our design, just please ping Jan or Kevin because
> I'm really not that person who can address this kind of change at this
> point in this high level.

And you have no idea why that design was chosen; you're just doing what
you're told?

I was involved in the design discussion, and from the very beginning I
probably saw your plan but misunderstood it.  I wouldn't be surprised if
some others didn't quite understand what they were agreeing to.

This way of doing things is different than the way we do it with most
other options relating to pci devices (e.g., pci_permissive,
pci_msitranslate, pci_sieze, &c).  All of those options use a "default"
semantic: the domain-wide setting takes effect only if it's not set
locally.  If the syntax looks the same but the semantics is different,
many people will be confused.  If we're going to have the domain-wide
policy override the per-device policy, then the naming should make that
clear; for instance, "override=(strict|relaxed|none)", or
"strict_override=(1|0)".

I don't happen to think these "override" semantics are actually going to
turn out to be that useful; I do think a "default" semantic would be
useful.  But I'd be content if the name of the current setting were
switched to "override" to make the semantics more clear.  We can always
add in "default" at some later point if we really want.

 -George

  reply	other threads:[~2015-07-01 13:29 UTC|newest]

Thread overview: 114+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-23  9:57 [v4][PATCH 00/19] Fix RMRR Tiejun Chen
2015-06-23  9:57 ` [v4][PATCH 01/19] xen: introduce XENMEM_reserved_device_memory_map Tiejun Chen
2015-06-23  9:57 ` [v4][PATCH 02/19] xen/x86/p2m: introduce set_identity_p2m_entry Tiejun Chen
2015-06-25  9:59   ` Tim Deegan
2015-07-01 15:43   ` George Dunlap
2015-06-23  9:57 ` [v4][PATCH 03/19] xen/vtd: create RMRR mapping Tiejun Chen
2015-06-23 10:12   ` Jan Beulich
2015-06-24  1:11     ` Chen, Tiejun
2015-06-24  6:48       ` Jan Beulich
2015-06-24  7:26         ` Chen, Tiejun
2015-06-24  7:33           ` Jan Beulich
2015-06-30 10:40             ` George Dunlap
2015-06-30 11:19               ` Chen, Tiejun
2015-06-23  9:57 ` [v4][PATCH 04/19] xen/passthrough: extend hypercall to support rdm reservation policy Tiejun Chen
2015-06-30 11:08   ` George Dunlap
2015-06-30 11:24     ` Chen, Tiejun
2015-06-30 14:20       ` George Dunlap
2015-07-01  1:11         ` Chen, Tiejun
2015-07-01 10:02           ` George Dunlap
2015-07-01 10:47             ` Chen, Tiejun
2015-07-01 14:39               ` George Dunlap
2015-07-01 15:06                 ` Julien Grall
2015-07-02  6:50                 ` Chen, Tiejun
2015-07-06 14:55                   ` Chen, Tiejun
2015-07-07  6:36                     ` Chen, Tiejun
2015-07-06 10:34               ` Jan Beulich
2015-07-06 10:56                 ` George Dunlap
2015-07-06 10:56                 ` Chen, Tiejun
2015-07-06 11:39                   ` Jan Beulich
2015-07-01 16:30   ` George Dunlap
2015-07-02  8:49     ` Chen, Tiejun
2015-07-06 14:52       ` Chen, Tiejun
2015-07-07  6:37         ` Chen, Tiejun
2015-06-23  9:57 ` [v4][PATCH 05/19] xen: enable XENMEM_memory_map in hvm Tiejun Chen
2015-07-01 16:32   ` George Dunlap
2015-06-23  9:57 ` [v4][PATCH 06/19] hvmloader: get guest memory map into memory_map[] Tiejun Chen
2015-06-23  9:57 ` [v4][PATCH 07/19] hvmloader/pci: skip reserved ranges Tiejun Chen
2015-06-23  9:57 ` [v4][PATCH 08/19] hvmloader/e820: construct guest e820 table Tiejun Chen
2015-06-23  9:57 ` [v4][PATCH 09/19] tools/libxc: Expose new hypercall xc_reserved_device_memory_map Tiejun Chen
2015-06-25 10:44   ` Wei Liu
2015-06-23  9:57 ` [v4][PATCH 10/19] tools: extend xc_assign_device() to support rdm reservation policy Tiejun Chen
2015-06-25 10:54   ` Wei Liu
2015-06-23  9:57 ` [v4][PATCH 11/19] tools: introduce some new parameters to set rdm policy Tiejun Chen
2015-06-25 11:38   ` Wei Liu
2015-06-25 12:13   ` Ian Campbell
2015-06-26  8:38     ` Chen, Tiejun
2015-06-26  8:57       ` Ian Campbell
2015-06-26  9:36         ` Chen, Tiejun
2015-06-26 12:06           ` Wei Liu
2015-06-29  1:01             ` Chen, Tiejun
2015-06-30  3:08           ` Chen, Tiejun
2015-06-30  8:30             ` Ian Campbell
2015-06-30  9:38               ` Chen, Tiejun
2015-07-07 11:36                 ` Ian Campbell
2015-06-25 12:31   ` Ian Jackson
2015-06-30  3:07     ` Chen, Tiejun
2015-06-30 15:54   ` George Dunlap
2015-07-01  1:16     ` Chen, Tiejun
2015-07-01 10:07       ` George Dunlap
2015-07-01 10:26         ` Chen, Tiejun
2015-07-01 10:57           ` George Dunlap
2015-07-01 11:16             ` Chen, Tiejun
2015-07-01 13:29               ` George Dunlap [this message]
2015-07-02  1:11                 ` Chen, Tiejun
2015-07-02  4:47                   ` Chen, Tiejun
2015-07-02  9:22                   ` George Dunlap
2015-07-02 10:01                     ` Chen, Tiejun
2015-07-02 10:28                       ` George Dunlap
2015-07-02 11:32                         ` Chen, Tiejun
2015-07-06 13:34                 ` Chen, Tiejun
2015-07-06 13:51                   ` Jan Beulich
2015-07-06 14:21                     ` Chen, Tiejun
2015-07-06 14:29                       ` George Dunlap
2015-07-06 14:34                         ` Jan Beulich
2015-07-06 14:46                           ` Chen, Tiejun
2015-07-06 17:16                             ` Wei Liu
2015-06-23  9:57 ` [v4][PATCH 12/19] tools/libxl: passes rdm reservation policy Tiejun Chen
2015-06-25 11:37   ` Wei Liu
2015-06-25 12:15   ` Ian Campbell
2015-06-26  8:53     ` Chen, Tiejun
2015-06-26  9:01       ` Ian Campbell
2015-06-26  9:28         ` Chen, Tiejun
2015-06-25 12:33   ` Ian Jackson
2015-06-30  2:14     ` Chen, Tiejun
2015-06-30 15:56   ` George Dunlap
2015-07-01  1:23     ` Chen, Tiejun
2015-07-01 10:22       ` George Dunlap
2015-07-01 10:56         ` Chen, Tiejun
2015-06-30 16:11   ` George Dunlap
2015-07-01  1:30     ` Chen, Tiejun
2015-07-01 10:31       ` George Dunlap
2015-07-02  9:27         ` Chen, Tiejun
2015-06-23  9:57 ` [v4][PATCH 13/19] tools/libxc: check to set args.mmio_size before call xc_hvm_build Tiejun Chen
2015-06-25 11:08   ` Wei Liu
2015-06-26  0:56     ` Chen, Tiejun
2015-06-26 12:07       ` Wei Liu
2015-06-23  9:57 ` [v4][PATCH 14/19] tools/libxl: detect and avoid conflicts with RDM Tiejun Chen
2015-06-25 11:23   ` Wei Liu
2015-06-26  5:45     ` Chen, Tiejun
2015-06-26 12:13       ` Wei Liu
2015-06-29  6:36         ` Chen, Tiejun
2015-06-23  9:57 ` [v4][PATCH 15/19] tools: introduce a new parameter to set a predefined rdm boundary Tiejun Chen
2015-06-25 11:27   ` Wei Liu
2015-06-26  6:54     ` Chen, Tiejun
2015-06-23  9:57 ` [v4][PATCH 16/19] tools/libxl: extend XENMEM_set_memory_map Tiejun Chen
2015-06-25 11:33   ` Wei Liu
2015-06-26  7:13     ` Chen, Tiejun
2015-06-26 12:14       ` Wei Liu
2015-06-23  9:57 ` [v4][PATCH 17/19] xen/vtd: enable USB device assignment Tiejun Chen
2015-06-23  9:57 ` [v4][PATCH 18/19] xen/vtd: prevent from assign the device with shared rmrr Tiejun Chen
2015-06-23  9:57 ` [v4][PATCH 19/19] tools: parse to enable new rdm policy parameters Tiejun Chen
2015-06-25 11:35   ` Wei Liu
2015-06-30 16:30   ` George Dunlap
2015-07-01  1:31     ` Chen, Tiejun

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=5593EB53.5000601@eu.citrix.com \
    --to=george.dunlap@eu.citrix.com \
    --cc=ian.campbell@citrix.com \
    --cc=ian.jackson@eu.citrix.com \
    --cc=stefano.stabellini@eu.citrix.com \
    --cc=tiejun.chen@intel.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.