|
[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 |