All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paul Durrant <Paul.Durrant@citrix.com>
To: "Yu, Zhang" <yu.c.zhang@linux.intel.com>,
	George Dunlap <George.Dunlap@citrix.com>,
	Jan Beulich <jbeulich@suse.com>, Wei Liu <wei.liu2@citrix.com>
Cc: Kevin Tian <kevin.tian@intel.com>,
	"Keir (Xen.org)" <keir@xen.org>,
	Andrew Cooper <Andrew.Cooper3@citrix.com>,
	"Tim (Xen.org)" <tim@xen.org>,
	"xen-devel@lists.xen.org" <xen-devel@lists.xen.org>,
	"zhiyuan.lv@intel.com" <zhiyuan.lv@intel.com>,
	"jun.nakajima@intel.com" <jun.nakajima@intel.com>
Subject: Re: [PATCH v2 2/3] x86/ioreq server: Rename p2m_mmio_write_dm to p2m_ioreq_server
Date: Thu, 21 Apr 2016 13:56:46 +0000	[thread overview]
Message-ID: <1ba79ba4e2df40b09c40d2f83e12d5c2@AMSPEX02CL03.citrite.net> (raw)
In-Reply-To: <45e6108d-c374-e7fc-b266-b3a59ca9170e@linux.intel.com>

> -----Original Message-----
> From: Yu, Zhang [mailto:yu.c.zhang@linux.intel.com]
> Sent: 21 April 2016 14:49
> To: Paul Durrant; George Dunlap; Jan Beulich; Wei Liu
> Cc: Kevin Tian; Keir (Xen.org); Andrew Cooper; Tim (Xen.org); xen-
> devel@lists.xen.org; zhiyuan.lv@intel.com; jun.nakajima@intel.com
> Subject: Re: [Xen-devel] [PATCH v2 2/3] x86/ioreq server: Rename
> p2m_mmio_write_dm to p2m_ioreq_server
> 
> 
> 
> On 4/21/2016 9:31 PM, Paul Durrant wrote:
> >> -----Original Message-----
> >> From: Yu, Zhang [mailto:yu.c.zhang@linux.intel.com]
> >> Sent: 21 April 2016 13:25
> >> To: George Dunlap; Paul Durrant; Jan Beulich; Wei Liu
> >> Cc: Kevin Tian; Keir (Xen.org); Andrew Cooper; Tim (Xen.org); xen-
> >> devel@lists.xen.org; zhiyuan.lv@intel.com; jun.nakajima@intel.com
> >> Subject: Re: [Xen-devel] [PATCH v2 2/3] x86/ioreq server: Rename
> >> p2m_mmio_write_dm to p2m_ioreq_server
> >>
> >>
> >>
> >> On 4/21/2016 1:06 AM, George Dunlap wrote:
> >>> On 20/04/16 17:58, Paul Durrant wrote:
> >>>>> -----Original Message-----
> >>>>> From: Xen-devel [mailto:xen-devel-bounces@lists.xen.org] On Behalf
> >> Of Jan
> >>>>> Beulich
> >>>>> Sent: 20 April 2016 17:53
> >>>>> To: George Dunlap; Paul Durrant; Wei Liu; yu.c.zhang@linux.intel.com
> >>>>> Cc: Kevin Tian; Keir (Xen.org); Andrew Cooper; Tim (Xen.org); xen-
> >>>>> devel@lists.xen.org; zhiyuan.lv@intel.com; jun.nakajima@intel.com
> >>>>> Subject: Re: [Xen-devel] [PATCH v2 2/3] x86/ioreq server: Rename
> >>>>> p2m_mmio_write_dm to p2m_ioreq_server
> >>>>>
> >>>>>>>> George Dunlap <george.dunlap@citrix.com> 04/20/16 6:30 PM
> >>>
> >>>>>> On Wed, Apr 20, 2016 at 4:02 PM, George Dunlap
> >>>>> <george.dunlap@citrix.com> wrote:
> >>>>>>> On 19/04/16 12:02, Yu, Zhang wrote:
> >>>>>>>> So I suppose the only place we need change for this patch is
> >>>>>>>> for hvmmem_type_t, which should be defined like this?
> >>>>>>>>
> >>>>>>>> typedef enum {
> >>>>>>>>     HVMMEM_ram_rw,             /* Normal read/write guest RAM */
> >>>>>>>>     HVMMEM_ram_ro,             /* Read-only; writes are discarded */
> >>>>>>>>     HVMMEM_mmio_dm,            /* Reads and write go to the device
> >>>>> model */
> >>>>>>>> #if __XEN_INTERFACE_VERSION__ >= 0x00040700
> >>>>>>>>     HVMMEM_ioreq_server
> >>>>>>>> #else
> >>>>>>>>     HVMMEM_mmio_write_dm
> >>>>>>>> #endif
> >>>>>>>> } hvmmem_type_t;
> >>>>>>>>
> >>>>>>>> Besides, does 4.7 still accept freeze exception? It would be great
> >>>>>>>> if we can get an approval for this.
> >>>>>>>
> >>>>>>> Wait, do we *actually* need this?  Is anyone actually using this?
> >>>>>>>
> >>>>>>> I'd say remove it, and if anyone complains, *then* do the
> #ifdef'ery
> >> as
> >>>>>>> a bug-fix.  I'm pretty sure that's Linux's policy -- You Must Keep
> >>>>>>> Userspace Working, but you can break it to see if anyone complains
> >> first.
> >>>>>
> >>>>> We don't normally do it like that - we aim at keeping things compatible
> >>>>> right away. I don't know of a case where we would have knowingly
> >> broken
> >>>>> compatibility for users of the public headers (leaving aside tool stack
> only
> >>>>> stuff of course).
> >>>>>
> >>>>>> Going further than this:
> >>>>>>
> >>>>>> The proposed patch series not only changes the name, it changes
> the
> >>>>>> functionality.  We do not want code to *compile* against 4.7 and
> then
> >>>>>> not *work* against 4.7; and the worst of all is to compile and sort of
> >>>>>> work but do it incorrectly.
> >>>>>
> >>>>> I had the impression that the renaming patch was what it is - a
> renaming
> >>>>> patch, without altering behavior.
> >>>>>
> >>>>>> Does the ioreq server have a way of asking Xen what version of the
> ABI
> >>>>>> it's providing?  I'm assuming the answer is "no"; in which case code
> >>>>>> that is compiled against the 4.6 interface but run on a 4.8 interface
> >>>>>> that looks like this will fail in a somewhat unpredictable way.
> >>>>>
> >>>>> The only thing it can do is ask for the Xen version. The ABI version is
> not
> >>>>> being returned by anything (but perhaps should be).
> >>>>>
> >>>>>> Given that:
> >>>>>>
> >>>>>> 1. When we do check the ioreq server functionality in, what's the
> >>>>>> correct way to deal with code that wants to use the old interface,
> and
> >>>>>> what do we do with code compiled against the old interface but
> >> running
> >>>>>> on the new one?
> >>>>>
> >>>>> For the full series I'm not sure I can really tell.But as said, for the
> rename
> >>>>> patch alone I thought it is just a rename. And that's what we want to
> get
> >>>>> in (see Paul's earlier reply - he wants to see the old name gone, so it
> >> won't
> >>>>> be used any further).
> >>>>>
> >>>>>> 2. What's the best thing to do for this release?
> >>>>>
> >>>>> If the entire series (no matter whether to go in now or later) is
> changing
> >>>>> behavior, then the only choice is to consider the currently used enum
> >>>>> value burnt, and use a fresh one for the new semantics.
> >>>>
> >>>> It sounds like that would be best way. If we don't so that then we have
> to
> >> maintain the write-dm semantics for pages of that type unless the type is
> >> claimed (by using the new hypercall) and that's bit icky. I much prefer that
> >> pages of the new type are treated as RAM until claimed.
> >>>
> >>> I think the only sensible way to keep the enum is to also keep the
> >>> functionality, which would mean using *another* p2m type for
> >> ioreq_server.
> >>>
> >>> Given that the functionality isn't going away for 4.7, I don't see an
> >>> urgent need to remove the enum; but if Paul does, then a patch
> renaming
> >>> it to HVMMEM_unused would be the way forward then I guess.  Once
> the
> >>> underlying p2m type goes away, you'll want to return -EINVAL for this
> >>> enum value.
> >>>
> >>
> >> So the enum would be sth. like this?
> >>
> >> typedef enum {
> >>      HVMMEM_ram_rw,        /* Normal read/write guest RAM */
> >>      HVMMEM_ram_ro,        /* Read-only; writes are discarded */
> >>      HVMMEM_mmio_dm,       /* Reads and write go to the device model */
> >> #if __XEN_INTERFACE_VERSION__ < 0x00040700
> >>      HVMMEM_mmio_write_dm, /* Read-only; writes go to the device
> model
> >> */
> >> #else
> >>      HVMMEM_unused,
> >> #endif
> >>      HVMMEM_ioreq_server
> >> } hvmmem_type_t;
> >>
> >
> > I believe that's correct, but presumably there's need to be a change to the
> hypervisor since any reference there to HVMMEM_mmio_write_dm (which I
> think is limited to the get and set mem type code in hvm.c) will now need to
> map HVMMEM_unused to the old p2m_mmio_write_dm type.
> >
> Thank you, Paul.
> 
> But p2m_mmio_write_dm will not exist any more...
> E.g. if in hvmop_get_mem_type(), if type 0xf(p2m_ioreq_server) is
> returned, we could just return HVMMEM_ioreq_server. No need to
> worry about the HVMMEM_mmio_write_dm.
> 
> Maybe we only need to change the beginning of hvmop_set_mem_type()
> to sth. like this:
> 
> /* Interface types to internal p2m types */
> static const p2m_type_t memtype[] = {
>      [HVMMEM_ram_rw]  = p2m_ram_rw,
>      [HVMMEM_ram_ro]  = p2m_ram_ro,
>      [HVMMEM_mmio_dm] = p2m_mmio_dm,
>      [HVMMEM_unused] = p2m_invalid,  /* this will be rejected later */
>      [HVMMEM_ioreq_server] = p2m_ioreq_server
> };
> and later in the same routine, just reject the HVMMEM_unused type, in
> an if(with unlikely) statement.
> 

As long as everyone is in agreement then we can break the functionality that exists in 4.6.1 (and presumably 4.7 now) then that’s ok.

  Paul

> >   Paul
> 
> B.R.
> Yu
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

  reply	other threads:[~2016-04-21 13:56 UTC|newest]

Thread overview: 82+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-31 10:53 [PATCH v2 0/3] x86/ioreq server: introduce HVMMEM_ioreq_server mem type Yu Zhang
2016-03-31 10:53 ` [PATCH v2 1/3] x86/ioreq server: Add new functions to get/set memory types Yu Zhang
2016-04-05 13:57   ` George Dunlap
2016-04-05 14:08     ` George Dunlap
2016-04-08 13:25   ` Andrew Cooper
2016-03-31 10:53 ` [PATCH v2 2/3] x86/ioreq server: Rename p2m_mmio_write_dm to p2m_ioreq_server Yu Zhang
2016-04-05 14:38   ` George Dunlap
2016-04-08 13:26   ` Andrew Cooper
2016-04-08 21:48   ` Jan Beulich
2016-04-18  8:41     ` Paul Durrant
2016-04-18  9:10       ` George Dunlap
2016-04-18  9:14         ` Wei Liu
2016-04-18  9:45           ` Paul Durrant
2016-04-18 16:40       ` Jan Beulich
2016-04-18 16:45         ` Paul Durrant
2016-04-18 16:47           ` Jan Beulich
2016-04-18 16:58             ` Paul Durrant
2016-04-19 11:02               ` Yu, Zhang
2016-04-19 11:15                 ` Paul Durrant
2016-04-19 11:38                   ` Yu, Zhang
2016-04-19 11:50                     ` Paul Durrant
2016-04-19 16:51                     ` Jan Beulich
2016-04-20 14:59                       ` Wei Liu
2016-04-20 15:02                 ` George Dunlap
2016-04-20 16:30                   ` George Dunlap
2016-04-20 16:52                     ` Jan Beulich
2016-04-20 16:58                       ` Paul Durrant
2016-04-20 17:06                         ` George Dunlap
2016-04-20 17:09                           ` Paul Durrant
2016-04-21 12:24                           ` Yu, Zhang
2016-04-21 13:31                             ` Paul Durrant
2016-04-21 13:48                               ` Yu, Zhang
2016-04-21 13:56                                 ` Paul Durrant [this message]
2016-04-21 14:09                                   ` George Dunlap
2016-04-20 17:08                       ` George Dunlap
2016-04-21 12:04                       ` Yu, Zhang
2016-03-31 10:53 ` [PATCH v2 3/3] x86/ioreq server: Add HVMOP to map guest ram with p2m_ioreq_server to an ioreq server Yu Zhang
     [not found]   ` <20160404082556.GC28633@deinos.phlegethon.org>
2016-04-05  6:01     ` Yu, Zhang
2016-04-06 17:13   ` George Dunlap
2016-04-07  7:01     ` Yu, Zhang
     [not found]       ` <CAFLBxZbLp2zWzCzQTaJNWbanQSmTJ57ZyTh0qaD-+YUn8o8pyQ@mail.gmail.com>
2016-04-08 10:39         ` George Dunlap
     [not found]         ` <5707839F.9060803@linux.intel.com>
2016-04-08 11:01           ` George Dunlap
2016-04-11 11:15             ` Yu, Zhang
2016-04-14 10:45               ` Yu, Zhang
2016-04-18 15:57                 ` Paul Durrant
2016-04-19  9:11                   ` Yu, Zhang
2016-04-19  9:21                     ` Paul Durrant
2016-04-19  9:44                       ` Yu, Zhang
2016-04-19 10:05                         ` Paul Durrant
2016-04-19 11:17                           ` Yu, Zhang
2016-04-19 11:47                             ` Paul Durrant
2016-04-19 11:59                               ` Yu, Zhang
2016-04-20 14:50                                 ` George Dunlap
2016-04-20 14:57                                   ` Paul Durrant
2016-04-20 15:37                                     ` George Dunlap
2016-04-20 16:30                                       ` Paul Durrant
2016-04-20 16:58                                         ` George Dunlap
2016-04-21 13:28                                         ` Yu, Zhang
2016-04-21 13:21                                   ` Yu, Zhang
2016-04-22 11:27                                     ` Wei Liu
2016-04-22 11:30                                       ` George Dunlap
2016-04-19  4:37                 ` Tian, Kevin
2016-04-19  9:21                   ` Yu, Zhang
2016-04-08 13:33   ` Andrew Cooper
2016-04-11 11:14     ` Yu, Zhang
2016-04-11 12:20       ` Andrew Cooper
2016-04-11 16:25         ` Jan Beulich
2016-04-08 22:28   ` Jan Beulich
2016-04-11 11:14     ` Yu, Zhang
2016-04-11 16:31       ` Jan Beulich
2016-04-12  9:37         ` Yu, Zhang
2016-04-12 15:08           ` Jan Beulich
2016-04-14  9:56             ` Yu, Zhang
2016-04-19  4:50               ` Tian, Kevin
2016-04-19  8:46                 ` Paul Durrant
2016-04-19  9:27                   ` Yu, Zhang
2016-04-19  9:40                     ` Paul Durrant
2016-04-19  9:49                       ` Yu, Zhang
2016-04-19 10:01                         ` Paul Durrant
2016-04-19  9:54                           ` Yu, Zhang
2016-04-19  9:15                 ` Yu, Zhang
2016-04-19  9:23                   ` Paul Durrant

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=1ba79ba4e2df40b09c40d2f83e12d5c2@AMSPEX02CL03.citrite.net \
    --to=paul.durrant@citrix.com \
    --cc=Andrew.Cooper3@citrix.com \
    --cc=George.Dunlap@citrix.com \
    --cc=jbeulich@suse.com \
    --cc=jun.nakajima@intel.com \
    --cc=keir@xen.org \
    --cc=kevin.tian@intel.com \
    --cc=tim@xen.org \
    --cc=wei.liu2@citrix.com \
    --cc=xen-devel@lists.xen.org \
    --cc=yu.c.zhang@linux.intel.com \
    --cc=zhiyuan.lv@intel.com \
    /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.