From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:43213) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SAzgq-00048q-RS for qemu-devel@nongnu.org; Fri, 23 Mar 2012 04:17:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SAzgl-0004yc-CD for qemu-devel@nongnu.org; Fri, 23 Mar 2012 04:17:40 -0400 Received: from nat28.tlf.novell.com ([130.57.49.28]:31443) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SAzgl-0004wT-2V for qemu-devel@nongnu.org; Fri, 23 Mar 2012 04:17:35 -0400 Message-Id: <4F6C3FD9020000780007A717@nat28.tlf.novell.com> Date: Fri, 23 Mar 2012 08:18:17 +0000 From: "Jan Beulich" References: <2187e535bf91f5f650401a4e08e0e795003ad2aa.1332430810.git.julien.grall@citrix.com> In-Reply-To: <2187e535bf91f5f650401a4e08e0e795003ad2aa.1332430810.git.julien.grall@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Subject: Re: [Qemu-devel] [Xen-devel] [XEN][RFC PATCH 01/15] hvm: Modify interface to support multiple ioreq server List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Julien Grall Cc: qemu-devel@nongnu.org, xen-devel , julian.pidancet@citrix.com, Stefano.Stabellini@eu.citrix.com >>> On 22.03.12 at 16:59, Julien Grall wrote: > --- a/xen/include/public/hvm/hvm_op.h > +++ b/xen/include/public/hvm/hvm_op.h > @@ -24,6 +24,8 @@ > #include "../xen.h" > #include "../trace.h" > =20 > +#include "hvm_info_table.h" /* HVM_MAX_VCPUS */ > + > /* Get/set subcommands: extra argument =3D=3D pointer to xen_hvm_param = struct.=20 > */ > #define HVMOP_set_param 0 > #define HVMOP_get_param 1 > @@ -227,6 +229,53 @@ struct xen_hvm_inject_trap { > typedef struct xen_hvm_inject_trap xen_hvm_inject_trap_t; > DEFINE_XEN_GUEST_HANDLE(xen_hvm_inject_trap_t); > =20 > +#define HVMOP_register_ioreq_server 20 > +struct xen_hvm_register_ioreq_server { > + domid_t domid; /* IN - domain to be serviced */ > + unsigned int id; /* OUT - handle for identifying this server = */ > +}; > +typedef struct xen_hvm_register_ioreq_server=20 > xen_hvm_register_ioreq_server_t; > +DEFINE_XEN_GUEST_HANDLE(xen_hvm_register_ioreq_server_t); > + > +#define HVMOP_get_ioreq_server_buf_channel 21 > +struct xen_hvm_get_ioreq_server_buf_channel { > + domid_t domid; /* IN - domain to be serviced */ > + servid_t id; /* IN - handle from HVMOP_register_ioreq_server= */ > + unsigned int channel; /* OUT - buf ioreq channel */ > +}; > +typedef struct xen_hvm_get_ioreq_server_buf_channel=20 > xen_hvm_get_ioreq_server_buf_channel_t; > +DEFINE_XEN_GUEST_HANDLE(xen_hvm_get_ioreq_server_buf_channel_t); > + > +#define HVMOP_map_io_range_to_ioreq_server 22 > +struct xen_hvm_map_io_range_to_ioreq_server { > + domid_t domid; /* IN - domain to be serviced */ > + uint8_t is_mmio; /* IN - MMIO or port IO? */ > + servid_t id; /* IN - handle from HVMOP_register_ioreq_ser= ver=20 > */ > + uint64_aligned_t s, e; /* IN - inclusive start and end of range */ > +}; > +typedef struct xen_hvm_map_io_range_to_ioreq_server=20 > xen_hvm_map_io_range_to_ioreq_server_t; > +DEFINE_XEN_GUEST_HANDLE(xen_hvm_map_io_range_to_ioreq_server_t); > + > +#define HVMOP_unmap_io_range_from_ioreq_server 23 > +struct xen_hvm_unmap_io_range_from_ioreq_server { > + domid_t domid; /* IN - domain to be serviced */ > + uint8_t is_mmio; /* IN - MMIO or port IO? */ > + servid_t id; /* IN - handle from HVMOP_register_ioreq_ser= ver=20 > */ > + uint64_aligned_t addr; /* IN - address inside the range to remove = */ > +}; > +typedef struct xen_hvm_unmap_io_range_from_ioreq_server=20 > xen_hvm_unmap_io_range_from_ioreq_server_t; > +DEFINE_XEN_GUEST_HANDLE(xen_hvm_unmap_io_range_from_ioreq_server_t); > + > +#define HVMOP_register_pcidev 24 > +struct xen_hvm_register_pcidev { > + domid_t domid; /* IN - domain to be serviced */ > + servid_t id; /* IN - handle from HVMOP_register_ioreq_server = */ > + uint16_t bdf; /* IN - pci */ Can we please avoid the mistake of again not surfacing the PCI segment in interface definitions, even if it may be required to be zero for the immediate needs? Jan > +}; > +typedef struct xen_hvm_register_pcidev xen_hvm_register_pcidev_t; > +DEFINE_XEN_GUEST_HANDLE(xen_hvm_register_pcidev_t); > + > + > #endif /* defined(__XEN__) || defined(__XEN_TOOLS__) */ > =20 > #define HVMOP_get_mem_type 15 From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: Re: [XEN][RFC PATCH 01/15] hvm: Modify interface to support multiple ioreq server Date: Fri, 23 Mar 2012 08:18:17 +0000 Message-ID: <4F6C3FD9020000780007A717@nat28.tlf.novell.com> References: <2187e535bf91f5f650401a4e08e0e795003ad2aa.1332430810.git.julien.grall@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <2187e535bf91f5f650401a4e08e0e795003ad2aa.1332430810.git.julien.grall@citrix.com> Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Julien Grall Cc: qemu-devel@nongnu.org, xen-devel , julian.pidancet@citrix.com, Stefano.Stabellini@eu.citrix.com List-Id: xen-devel@lists.xenproject.org >>> On 22.03.12 at 16:59, Julien Grall wrote: > --- a/xen/include/public/hvm/hvm_op.h > +++ b/xen/include/public/hvm/hvm_op.h > @@ -24,6 +24,8 @@ > #include "../xen.h" > #include "../trace.h" > > +#include "hvm_info_table.h" /* HVM_MAX_VCPUS */ > + > /* Get/set subcommands: extra argument == pointer to xen_hvm_param struct. > */ > #define HVMOP_set_param 0 > #define HVMOP_get_param 1 > @@ -227,6 +229,53 @@ struct xen_hvm_inject_trap { > typedef struct xen_hvm_inject_trap xen_hvm_inject_trap_t; > DEFINE_XEN_GUEST_HANDLE(xen_hvm_inject_trap_t); > > +#define HVMOP_register_ioreq_server 20 > +struct xen_hvm_register_ioreq_server { > + domid_t domid; /* IN - domain to be serviced */ > + unsigned int id; /* OUT - handle for identifying this server */ > +}; > +typedef struct xen_hvm_register_ioreq_server > xen_hvm_register_ioreq_server_t; > +DEFINE_XEN_GUEST_HANDLE(xen_hvm_register_ioreq_server_t); > + > +#define HVMOP_get_ioreq_server_buf_channel 21 > +struct xen_hvm_get_ioreq_server_buf_channel { > + domid_t domid; /* IN - domain to be serviced */ > + servid_t id; /* IN - handle from HVMOP_register_ioreq_server */ > + unsigned int channel; /* OUT - buf ioreq channel */ > +}; > +typedef struct xen_hvm_get_ioreq_server_buf_channel > xen_hvm_get_ioreq_server_buf_channel_t; > +DEFINE_XEN_GUEST_HANDLE(xen_hvm_get_ioreq_server_buf_channel_t); > + > +#define HVMOP_map_io_range_to_ioreq_server 22 > +struct xen_hvm_map_io_range_to_ioreq_server { > + domid_t domid; /* IN - domain to be serviced */ > + uint8_t is_mmio; /* IN - MMIO or port IO? */ > + servid_t id; /* IN - handle from HVMOP_register_ioreq_server > */ > + uint64_aligned_t s, e; /* IN - inclusive start and end of range */ > +}; > +typedef struct xen_hvm_map_io_range_to_ioreq_server > xen_hvm_map_io_range_to_ioreq_server_t; > +DEFINE_XEN_GUEST_HANDLE(xen_hvm_map_io_range_to_ioreq_server_t); > + > +#define HVMOP_unmap_io_range_from_ioreq_server 23 > +struct xen_hvm_unmap_io_range_from_ioreq_server { > + domid_t domid; /* IN - domain to be serviced */ > + uint8_t is_mmio; /* IN - MMIO or port IO? */ > + servid_t id; /* IN - handle from HVMOP_register_ioreq_server > */ > + uint64_aligned_t addr; /* IN - address inside the range to remove */ > +}; > +typedef struct xen_hvm_unmap_io_range_from_ioreq_server > xen_hvm_unmap_io_range_from_ioreq_server_t; > +DEFINE_XEN_GUEST_HANDLE(xen_hvm_unmap_io_range_from_ioreq_server_t); > + > +#define HVMOP_register_pcidev 24 > +struct xen_hvm_register_pcidev { > + domid_t domid; /* IN - domain to be serviced */ > + servid_t id; /* IN - handle from HVMOP_register_ioreq_server */ > + uint16_t bdf; /* IN - pci */ Can we please avoid the mistake of again not surfacing the PCI segment in interface definitions, even if it may be required to be zero for the immediate needs? Jan > +}; > +typedef struct xen_hvm_register_pcidev xen_hvm_register_pcidev_t; > +DEFINE_XEN_GUEST_HANDLE(xen_hvm_register_pcidev_t); > + > + > #endif /* defined(__XEN__) || defined(__XEN_TOOLS__) */ > > #define HVMOP_get_mem_type 15