[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v6 09/15] argo: implement the sendv op; evtchn: expose send_guest_global_virq
>>> On 24.01.19 at 03:04, <christopher.w.clark@xxxxxxxxx> wrote: > --- a/xen/common/argo.c > +++ b/xen/common/argo.c > @@ -32,16 +32,24 @@ > #ifdef CONFIG_COMPAT > #include <compat/argo.h> > CHECK_argo_addr; > +#undef CHECK_argo_addr > +#define CHECK_argo_addr struct xen_argo_addr > CHECK_argo_register_ring; > CHECK_argo_ring; > CHECK_argo_unregister_ring; > +CHECK_argo_send_addr; > #endif > --- a/xen/include/public/argo.h > +++ b/xen/include/public/argo.h > @@ -46,6 +46,34 @@ typedef uint32_t xen_argo_port_t; > /* gfn type: 64-bit on all architectures to aid avoiding a compat ABI */ > typedef uint64_t xen_argo_gfn_t; > > +/* > + * XEN_ARGO_MAXIOV : maximum number of iovs accepted in a single sendv. > + * Caution is required if this value is increased: this determines the size > of > + * an array of xen_argo_iov_t structs on the hypervisor stack, so could cause > + * stack overflow if the value is too large. > + * The Linux Argo driver never passes more than two iovs. > + * > + * This value should also not exceed 128 to ensure that the total amount of > data > + * posted in a single Argo sendv operation cannot exceed 2^31 bytes, to > reduce > + * risk of integer overflow defects: > + * Each argo iov can hold ~ 2^24 bytes, so XEN_ARGO_MAXIOV <= 2^(31-24), > + * ie. keep XEN_ARGO_MAXIOV <= 128. > +*/ > +#define XEN_ARGO_MAXIOV 8U > + > +DEFINE_XEN_GUEST_HANDLE(uint8_t); There's no need for this, you can simply use ... > +typedef struct xen_argo_iov > +{ > +#ifdef XEN_GUEST_HANDLE_64 Note that this is defined only when __XEN__ or __XEN_TOOLS__ are defined, i.e. not for an "ordinary" consumer. I'm afraid that - as said before - you won't get around some translation as long as you use any form of handles. > + XEN_GUEST_HANDLE_64(uint8_t) iov_hnd; ... XEN_GUEST_HANDLE(uint8) here. > +#else > + uint64_t iov_hnd; Clearly this is not a suitable alternative for a handle. > --- a/xen/include/xlat.lst > +++ b/xen/include/xlat.lst > @@ -152,3 +152,5 @@ > ? argo_ring argo.h > ? argo_register_ring argo.h > ? argo_unregister_ring argo.h > +! argo_iov argo.h I wasn't able to spot where what this line produces is actually used. As per above I think you will need to use it, but if in the end there's a different solution, then this should not be added without need. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |