v7 changes: - Remove v4v_send from the API (v4v_sendv should be used instead). - Remove internal_v4v_iov - Remove useless padding - Switch back to use uint64_t for the pfn list instead of xen_pfn_t (to avoid some compat code) - Rename v4v_iptable to v4v_table. - Use __copy_to/from_guest when possible v6 changes: - Check compiler before using [0] or []. v5 changes: - Fix prototypes in v4v.h for do_v4v_op - Add padding to make sure all the structures are 64 bits aligned - Replace [0] with [] v4 changes: - Stop using ssize_t, use long instead - Return -MSGSIZE for message bigger than 2GB - Fixup size handling - Rename protocol with message_type to avoid the confusion with the IP protocol flag - Replaced V4V_DOMID_ANY value with DOMID_INVALID - Replaced v4v_pfn_t with xen_pfn_t - Add padding to struct v4v_info - Fixup hypercall documentation - Move V4V_ROUNDUP to v4v.c - Remove v4v_utils.h (we could potentially add it later). v3 changes: - Switch to event channel - Allocated a unbound event channel per domain. - Add a new v4v call to share the event channel port. - Public headers with actual type definition - Align all the v4v type to 64 bits - Modify v4v MAGIC numbers because we won''t but backward compatible anymore - Merge insert and insertv - Merge send and sendv - Turn all the lock prerequisite from comment to ASSERT() - Make use or write_atomic instead of volatile pointers - Merge v4v_memcpy_to_guest_ring and v4v_memcpy_to_guest_ring_from_guest - Introduce copy_from_guest_maybe that can take a void * and a handle as src address. - Replace 6 arguments hypercalls with 5 arguments hypercalls. v2 changes: - Cleanup plugin header - Include basic access control - Use guest_handle_for_field Jean Guyader (3): xen: virq, remove VIRQ_XC_RESERVED xen: events, exposes evtchn_alloc_unbound_domain xen: Add V4V implementation xen/arch/x86/hvm/hvm.c | 6 +- xen/arch/x86/x86_64/compat/entry.S | 2 + xen/arch/x86/x86_64/entry.S | 2 + xen/common/Makefile | 1 + xen/common/domain.c | 13 +- xen/common/event_channel.c | 39 +- xen/common/v4v.c | 1848 ++++++++++++++++++++++++++++++++++++ xen/include/public/v4v.h | 308 ++++++ xen/include/public/xen.h | 3 +- xen/include/xen/event.h | 3 + xen/include/xen/sched.h | 4 + xen/include/xen/v4v.h | 134 +++ 12 files changed, 2346 insertions(+), 17 deletions(-) create mode 100644 xen/common/v4v.c create mode 100644 xen/include/public/v4v.h create mode 100644 xen/include/xen/v4v.h -- 1.7.9.5 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel
VIRQ_XC_RESERVED was reserved for V4V but we have switched to event channels so this place holder is no longer required. Signed-off-by: Jean Guyader <jean.guyader@citrix.com> --- xen/include/public/xen.h | 1 - 1 file changed, 1 deletion(-) _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel
Jean Guyader
2012-Oct-25 11:52 UTC
[PATCH 2/3] xen: events, exposes evtchn_alloc_unbound_domain
Exposes evtchn_alloc_unbound_domain to the rest of Xen so we can create allocated unbound evtchn within Xen. Signed-off-by: Jean Guyader <jean.guyader@citrix.com> --- xen/common/event_channel.c | 39 +++++++++++++++++++++++++++------------ xen/include/xen/event.h | 3 +++ 2 files changed, 30 insertions(+), 12 deletions(-) _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel
Setup of v4v domains a domain gets created and cleanup when a domain die. Wire up the v4v hypercall. Include v4v internal and public headers. Signed-off-by: Jean Guyader <jean.guyader@citrix.com> --- xen/arch/x86/hvm/hvm.c | 6 +- xen/arch/x86/x86_64/compat/entry.S | 2 + xen/arch/x86/x86_64/entry.S | 2 + xen/common/Makefile | 1 + xen/common/domain.c | 13 +- xen/common/v4v.c | 1848 ++++++++++++++++++++++++++++++++++++ xen/include/public/v4v.h | 308 ++++++ xen/include/public/xen.h | 2 +- xen/include/xen/sched.h | 4 + xen/include/xen/v4v.h | 134 +++ 10 files changed, 2316 insertions(+), 4 deletions(-) create mode 100644 xen/common/v4v.c create mode 100644 xen/include/public/v4v.h create mode 100644 xen/include/xen/v4v.h _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel
>>> On 25.10.12 at 13:52, Jean Guyader <jean.guyader@citrix.com> wrote: > VIRQ_XC_RESERVED was reserved for V4V but we have switched > to event channels so this place holder is no longer required.I don''t recall what we settled on in earlier discussions here: Is it certain that re-use of this vIRQ won''t cause problems when a guest trying to use it for another purpose would be run on a host having the supposed old meaning of it in use? If not, it may need to remain permanently reserved. Jan
On 25 October 2012 13:36, Jan Beulich <JBeulich@suse.com> wrote:>>>> On 25.10.12 at 13:52, Jean Guyader <jean.guyader@citrix.com> wrote: >> VIRQ_XC_RESERVED was reserved for V4V but we have switched >> to event channels so this place holder is no longer required. > > I don''t recall what we settled on in earlier discussions here: Is it > certain that re-use of this vIRQ won''t cause problems when a > guest trying to use it for another purpose would be run on a > host having the supposed old meaning of it in use? If not, it may > need to remain permanently reserved. >Ok. I''ll remove this patch from the next series. That can be done later down the road. Jean
>>> On 25.10.12 at 13:52, Jean Guyader <jean.guyader@citrix.com> wrote: >+typedef struct v4v_ring_data_ent >+{ >+ v4v_addr_t ring; >+ uint16_t flags;Missing padding here?>+ uint32_t space_required; >+ uint32_t max_message_size; >+} v4v_ring_data_ent_t;>+typedef struct v4vtables_rule >+{ >+ v4v_addr_t src; >+ v4v_addr_t dst; >+ uint32_t accept; >+ uint32_t pad;Pointless padding here?>+} v4vtables_rule_t;>+DEFINE_XEN_GUEST_HANDLE (v4v_iov_t); >+DEFINE_XEN_GUEST_HANDLE (v4v_addr_t); >+DEFINE_XEN_GUEST_HANDLE (v4v_send_addr_t); >+DEFINE_XEN_GUEST_HANDLE (v4v_ring_t); >+DEFINE_XEN_GUEST_HANDLE (v4v_ring_data_ent_t); >+DEFINE_XEN_GUEST_HANDLE (v4v_ring_data_t); >+DEFINE_XEN_GUEST_HANDLE (v4v_info_t); >+DEFINE_XEN_GUEST_HANDLE (v4v_pfn_t); >+ >+DEFINE_XEN_GUEST_HANDLE (v4vtables_rule_t); >+DEFINE_XEN_GUEST_HANDLE (v4vtables_list_t);Extra blanks before opening parens (also elsewhere).>+/* >+ * Helper functions >+ */ >+ >+static inline uint16_t >+v4v_hash_fn (v4v_ring_id_t *id) >+{These and the types further down make sense to be put in a globally visible header only if they are expected to be used from more than one source file. Jan
Jean Guyader
2012-Oct-25 13:42 UTC
Re: [PATCH 2/3] xen: events, exposes evtchn_alloc_unbound_domain
On 25 October 2012 12:52, Jean Guyader <jean.guyader@citrix.com> wrote:> > Exposes evtchn_alloc_unbound_domain to the rest of > Xen so we can create allocated unbound evtchn within Xen. > > Signed-off-by: Jean Guyader <jean.guyader@citrix.com> > --- > xen/common/event_channel.c | 39 +++++++++++++++++++++++++++------------ > xen/include/xen/event.h | 3 +++ > 2 files changed, 30 insertions(+), 12 deletions(-) >I think this patch could be applied on its own. That will make the next v4v round one patch smaller. Jean