[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Minios-devel] [MINIOS PATCH v2] Update Xen header files again
Wei Liu, on lun. 16 oct. 2017 16:36:41 +0100, wrote: > The most important thing is the update to console.h, which fixes a bug > that requires the consumers to include string.h. > > Update all headers nonetheless for other fixes and new content. > > Signed-off-by: Wei Liu <wei.liu2@xxxxxxxxxx> Acked-by: Samuel Thibault <samuel.thibault@xxxxxxxxxxxx> > --- > include/xen/arch-arm/smccc.h | 66 ++++++++++++++++++++ > include/xen/arch-x86/xen-x86_64.h | 4 +- > include/xen/domctl.h | 4 ++ > include/xen/features.h | 3 + > include/xen/hvm/dm_op.h | 12 ++++ > include/xen/io/console.h | 5 +- > include/xen/io/netif.h | 123 > ++++++++++++++++++++++++++++++++++++++ > include/xen/xen.h | 31 ++++++++++ > 8 files changed, 243 insertions(+), 5 deletions(-) > create mode 100644 include/xen/arch-arm/smccc.h > > diff --git a/include/xen/arch-arm/smccc.h b/include/xen/arch-arm/smccc.h > new file mode 100644 > index 0000000..17dc6d8 > --- /dev/null > +++ b/include/xen/arch-arm/smccc.h > @@ -0,0 +1,66 @@ > +/* > + * smccc.h > + * > + * SMC/HVC interface in accordance with SMC Calling Convention. > + * > + * Permission is hereby granted, free of charge, to any person obtaining a > copy > + * of this software and associated documentation files (the "Software"), to > + * deal in the Software without restriction, including without limitation the > + * rights to use, copy, modify, merge, publish, distribute, sublicense, > and/or > + * sell copies of the Software, and to permit persons to whom the Software is > + * furnished to do so, subject to the following conditions: > + * > + * The above copyright notice and this permission notice shall be included in > + * all copies or substantial portions of the Software. > + * > + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR > + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, > + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL > THE > + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER > + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING > + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER > + * DEALINGS IN THE SOFTWARE. > + * > + * Copyright 2017 (C) EPAM Systems > + */ > + > +#ifndef __XEN_PUBLIC_ARCH_ARM_SMCCC_H__ > +#define __XEN_PUBLIC_ARCH_ARM_SMCCC_H__ > + > +#include "public/xen.h" > + > +/* > + * Hypervisor Service version. > + * > + * We can't use XEN version here, because of SMCCC requirements: > + * Major revision should change every time SMC/HVC function is removed. > + * Minor revision should change every time SMC/HVC function is added. > + * So, it is SMCCC protocol revision code, not XEN version. > + * > + * Those values are subjected to change, when interface will be extended. > + */ > +#define XEN_SMCCC_MAJOR_REVISION 0 > +#define XEN_SMCCC_MINOR_REVISION 1 > + > +/* Hypervisor Service UID. Randomly generated with uuidgen. */ > +#define XEN_SMCCC_UID XEN_DEFINE_UUID(0xa71812dc, 0xc698, 0x4369, 0x9acf, \ > + 0x79, 0xd1, 0x8d, 0xde, 0xe6, 0x67) > + > +/* Standard Service Service Call version. */ > +#define SSSC_SMCCC_MAJOR_REVISION 0 > +#define SSSC_SMCCC_MINOR_REVISION 1 > + > +/* Standard Service Call UID. Randomly generated with uuidgen. */ > +#define SSSC_SMCCC_UID XEN_DEFINE_UUID(0xf863386f, 0x4b39, 0x4cbd, 0x9220,\ > + 0xce, 0x16, 0x41, 0xe5, 0x9f, 0x6f) > + > +#endif /* __XEN_PUBLIC_ARCH_ARM_SMCCC_H__ */ > + > +/* > + * Local variables: > + * mode: C > + * c-file-style: "BSD" > + * c-basic-offset: 4 > + * indent-tabs-mode: nil > + * End:b > + */ > diff --git a/include/xen/arch-x86/xen-x86_64.h > b/include/xen/arch-x86/xen-x86_64.h > index 978f8cb..be52f70 100644 > --- a/include/xen/arch-x86/xen-x86_64.h > +++ b/include/xen/arch-x86/xen-x86_64.h > @@ -203,8 +203,8 @@ struct cpu_user_regs { > uint16_t ss, _pad2[3]; > uint16_t es, _pad3[3]; > uint16_t ds, _pad4[3]; > - uint16_t fs, _pad5[3]; /* Non-zero => takes precedence over fs_base. > */ > - uint16_t gs, _pad6[3]; /* Non-zero => takes precedence over gs_base_usr. > */ > + uint16_t fs, _pad5[3]; /* Non-nul => takes precedence over fs_base. > */ > + uint16_t gs, _pad6[3]; /* Non-nul => takes precedence over gs_base_user. > */ > }; > typedef struct cpu_user_regs cpu_user_regs_t; > DEFINE_XEN_GUEST_HANDLE(cpu_user_regs_t); > diff --git a/include/xen/domctl.h b/include/xen/domctl.h > index 8853445..70027ab 100644 > --- a/include/xen/domctl.h > +++ b/include/xen/domctl.h > @@ -342,6 +342,10 @@ struct xen_domctl_sched_credit2 { > struct xen_domctl_sched_rtds { > uint32_t period; > uint32_t budget; > +/* Can this vCPU execute beyond its reserved amount of time? */ > +#define _XEN_DOMCTL_SCHEDRT_extra 0 > +#define XEN_DOMCTL_SCHEDRT_extra (1U<<_XEN_DOMCTL_SCHEDRT_extra) > + uint32_t flags; > }; > > typedef struct xen_domctl_schedparam_vcpu { > diff --git a/include/xen/features.h b/include/xen/features.h > index 2110b04..1a989b8 100644 > --- a/include/xen/features.h > +++ b/include/xen/features.h > @@ -102,6 +102,9 @@ > /* Guest can use XENMEMF_vnode to specify virtual node for memory op. */ > #define XENFEAT_memory_op_vnode_supported 13 > > +/* arm: Hypervisor supports ARM SMC calling convention. */ > +#define XENFEAT_ARM_SMCCC_supported 14 > + > #define XENFEAT_NR_SUBMAPS 1 > > #endif /* __XEN_PUBLIC_FEATURES_H__ */ > diff --git a/include/xen/hvm/dm_op.h b/include/xen/hvm/dm_op.h > index 6bbab5f..e173085 100644 > --- a/include/xen/hvm/dm_op.h > +++ b/include/xen/hvm/dm_op.h > @@ -357,6 +357,17 @@ struct xen_dm_op_map_mem_type_to_ioreq_server { > has to be set to zero by the caller */ > }; > > +/* > + * XEN_DMOP_remote_shutdown : Declare a shutdown for another domain > + * Identical to SCHEDOP_remote_shutdown > + */ > +#define XEN_DMOP_remote_shutdown 16 > + > +struct xen_dm_op_remote_shutdown { > + uint32_t reason; /* SHUTDOWN_* => enum sched_shutdown_reason */ > + /* (Other reason values are not blocked) */ > +}; > + > struct xen_dm_op { > uint32_t op; > uint32_t pad; > @@ -377,6 +388,7 @@ struct xen_dm_op { > struct xen_dm_op_inject_msi inject_msi; > struct xen_dm_op_map_mem_type_to_ioreq_server > map_mem_type_to_ioreq_server; > + struct xen_dm_op_remote_shutdown remote_shutdown; > } u; > }; > > diff --git a/include/xen/io/console.h b/include/xen/io/console.h > index 0f0711f..1f79ef8 100644 > --- a/include/xen/io/console.h > +++ b/include/xen/io/console.h > @@ -27,8 +27,6 @@ > #ifndef __XEN_PUBLIC_IO_CONSOLE_H__ > #define __XEN_PUBLIC_IO_CONSOLE_H__ > > -#include "ring.h" > - > typedef uint32_t XENCONS_RING_IDX; > > #define MASK_XENCONS_IDX(idx, ring) ((idx) & (sizeof(ring)-1)) > @@ -40,7 +38,8 @@ struct xencons_interface { > XENCONS_RING_IDX out_cons, out_prod; > }; > > -#if defined(__GNUC__) && !defined(__STRICT_ANSI__) > +#ifdef XEN_WANT_FLEX_CONSOLE_RING > +#include "ring.h" > DEFINE_XEN_FLEX_RING(xencons); > #endif > > diff --git a/include/xen/io/netif.h b/include/xen/io/netif.h > index ca00614..2454448 100644 > --- a/include/xen/io/netif.h > +++ b/include/xen/io/netif.h > @@ -353,6 +353,9 @@ struct xen_netif_ctrl_request { > #define XEN_NETIF_CTRL_TYPE_SET_HASH_MAPPING_SIZE 5 > #define XEN_NETIF_CTRL_TYPE_SET_HASH_MAPPING 6 > #define XEN_NETIF_CTRL_TYPE_SET_HASH_ALGORITHM 7 > +#define XEN_NETIF_CTRL_TYPE_GET_GREF_MAPPING_SIZE 8 > +#define XEN_NETIF_CTRL_TYPE_ADD_GREF_MAPPING 9 > +#define XEN_NETIF_CTRL_TYPE_DEL_GREF_MAPPING 10 > > uint32_t data[3]; > }; > @@ -390,6 +393,44 @@ struct xen_netif_ctrl_response { > uint32_t data; > }; > > +/* > + * Static Grants (struct xen_netif_gref) > + * ===================================== > + * > + * A frontend may provide a fixed set of grant references to be mapped on > + * the backend. The message of type XEN_NETIF_CTRL_TYPE_ADD_GREF_MAPPING > + * prior its usage in the command ring allows for creation of these mappings. > + * The backend will maintain a fixed amount of these mappings. > + * > + * XEN_NETIF_CTRL_TYPE_GET_GREF_MAPPING_SIZE lets a frontend query how many > + * of these mappings can be kept. > + * > + * Each entry in the XEN_NETIF_CTRL_TYPE_{ADD,DEL}_GREF_MAPPING input table > has > + * the following format: > + * > + * 0 1 2 3 4 5 6 7 octet > + * +-----+-----+-----+-----+-----+-----+-----+-----+ > + * | grant ref | flags | status | > + * +-----+-----+-----+-----+-----+-----+-----+-----+ > + * > + * grant ref: grant reference (IN) > + * flags: flags describing the control operation (IN) > + * status: XEN_NETIF_CTRL_STATUS_* (OUT) > + * > + * 'status' is an output parameter which does not require to be set to zero > + * prior to its usage in the corresponding control messages. > + */ > + > +struct xen_netif_gref { > + grant_ref_t ref; > + uint16_t flags; > + > +#define _XEN_NETIF_CTRLF_GREF_readonly 0 > +#define XEN_NETIF_CTRLF_GREF_readonly (1U<<_XEN_NETIF_CTRLF_GREF_readonly) > + > + uint16_t status; > +}; > + > /* > * Control messages > * ================ > @@ -609,6 +650,88 @@ struct xen_netif_ctrl_response { > * invalidate any table data outside that range. > * The grant reference may be read-only and must remain valid until > * the response has been processed. > + * > + * XEN_NETIF_CTRL_TYPE_GET_GREF_MAPPING_SIZE > + * ----------------------------------------- > + * > + * This is sent by the frontend to fetch the number of grefs that can be kept > + * mapped in the backend. > + * > + * Request: > + * > + * type = XEN_NETIF_CTRL_TYPE_GET_GREF_MAPPING_SIZE > + * data[0] = queue index (assumed 0 for single queue) > + * data[1] = 0 > + * data[2] = 0 > + * > + * Response: > + * > + * status = XEN_NETIF_CTRL_STATUS_NOT_SUPPORTED - Operation not > + * supported > + * XEN_NETIF_CTRL_STATUS_INVALID_PARAMETER - The queue index is > + * out of range > + * XEN_NETIF_CTRL_STATUS_SUCCESS - Operation successful > + * data = maximum number of entries allowed in the gref mapping table > + * (if operation was successful) or zero if it is not supported. > + * > + * XEN_NETIF_CTRL_TYPE_ADD_GREF_MAPPING > + * ------------------------------------ > + * > + * This is sent by the frontend for backend to map a list of grant > + * references. > + * > + * Request: > + * > + * type = XEN_NETIF_CTRL_TYPE_ADD_GREF_MAPPING > + * data[0] = queue index > + * data[1] = grant reference of page containing the mapping list > + * (r/w and assumed to start at beginning of page) > + * data[2] = size of list in entries > + * > + * Response: > + * > + * status = XEN_NETIF_CTRL_STATUS_NOT_SUPPORTED - Operation not > + * supported > + * XEN_NETIF_CTRL_STATUS_INVALID_PARAMETER - Operation failed > + * XEN_NETIF_CTRL_STATUS_SUCCESS - Operation successful > + * > + * NOTE: Each entry in the input table has the format outlined > + * in struct xen_netif_gref. > + * Contrary to XEN_NETIF_CTRL_TYPE_DEL_GREF_MAPPING, the struct > + * xen_netif_gref 'status' field is not used and therefore the response > + * 'status' determines the success of this operation. In case of > + * failure none of grants mappings get added in the backend. > + * > + * XEN_NETIF_CTRL_TYPE_DEL_GREF_MAPPING > + * ------------------------------------ > + * > + * This is sent by the frontend for backend to unmap a list of grant > + * references. > + * > + * Request: > + * > + * type = XEN_NETIF_CTRL_TYPE_DEL_GREF_MAPPING > + * data[0] = queue index > + * data[1] = grant reference of page containing the mapping list > + * (r/w and assumed to start at beginning of page) > + * data[2] = size of list in entries > + * > + * Response: > + * > + * status = XEN_NETIF_CTRL_STATUS_NOT_SUPPORTED - Operation not > + * supported > + * XEN_NETIF_CTRL_STATUS_INVALID_PARAMETER - Operation failed > + * XEN_NETIF_CTRL_STATUS_SUCCESS - Operation successful > + * data = number of entries that were unmapped > + * > + * NOTE: Each entry in the input table has the format outlined in struct > + * xen_netif_gref. > + * The struct xen_netif_gref 'status' field determines if the entry > + * was successfully removed. > + * The entries used are only the ones representing grant references > that > + * were previously the subject of a > XEN_NETIF_CTRL_TYPE_ADD_GREF_MAPPING > + * operation. Any other entries will have their status set to > + * XEN_NETIF_CTRL_STATUS_INVALID_PARAMETER upon completion. > */ > > DEFINE_RING_TYPES(xen_netif_ctrl, > diff --git a/include/xen/xen.h b/include/xen/xen.h > index 2ac6b1e..308109f 100644 > --- a/include/xen/xen.h > +++ b/include/xen/xen.h > @@ -930,6 +930,37 @@ __DEFINE_XEN_GUEST_HANDLE(uint16, uint16_t); > __DEFINE_XEN_GUEST_HANDLE(uint32, uint32_t); > __DEFINE_XEN_GUEST_HANDLE(uint64, uint64_t); > > +typedef struct { > + uint8_t a[16]; > +} xen_uuid_t; > + > +/* > + * XEN_DEFINE_UUID(0x00112233, 0x4455, 0x6677, 0x8899, > + * 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff) > + * will construct UUID 00112233-4455-6677-8899-aabbccddeeff presented as > + * {0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, > + * 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}; > + * > + * NB: This is compatible with Linux kernel and with libuuid, but it is not > + * compatible with Microsoft, as they use mixed-endian encoding (some > + * components are little-endian, some are big-endian). > + */ > +#define XEN_DEFINE_UUID_(a, b, c, d, e1, e2, e3, e4, e5, e6) \ > + {{((a) >> 24) & 0xFF, ((a) >> 16) & 0xFF, \ > + ((a) >> 8) & 0xFF, ((a) >> 0) & 0xFF, \ > + ((b) >> 8) & 0xFF, ((b) >> 0) & 0xFF, \ > + ((c) >> 8) & 0xFF, ((c) >> 0) & 0xFF, \ > + ((d) >> 8) & 0xFF, ((d) >> 0) & 0xFF, \ > + e1, e2, e3, e4, e5, e6}} > + > +#if defined(__STDC_VERSION__) ? __STDC_VERSION__ >= 199901L : > defined(__GNUC__) > +#define XEN_DEFINE_UUID(a, b, c, d, e1, e2, e3, e4, e5, e6) \ > + ((xen_uuid_t)XEN_DEFINE_UUID_(a, b, c, d, e1, e2, e3, e4, e5, e6)) > +#else > +#define XEN_DEFINE_UUID(a, b, c, d, e1, e2, e3, e4, e5, e6) \ > + XEN_DEFINE_UUID_(a, b, c, d, e1, e2, e3, e4, e5, e6) > +#endif /* __STDC_VERSION__ / __GNUC__ */ > + > #endif /* !__ASSEMBLY__ */ > > /* Default definitions for macros used by domctl/sysctl. */ > -- > 2.11.0 > -- Samuel RK > Some "PC speakers" are actually buzzers in some cases rather than RK > real loudspeakers which give a squark rather than a beep. DW They're not _that_ bad. Even on most recent hardware, mp3s played DW through the PC speaker are relatively recognisable :) -+- lkml -+- _______________________________________________ Minios-devel mailing list Minios-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |