On Thu, Mar 12, 2020 at 06:54:27PM +0200, Liran Alon wrote:
> Command currently returns that it is unimplemented by setting
> the reserved-bit in it's return value.
>
> Following patches will return various useful vCPU information
> to guest.
>
> Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
> Signed-off-by: Liran Alon <liran.alon@oracle.com>
> ---
> hw/i386/vmport.c | 14 ++++++++++++++
> include/hw/i386/vmport.h | 1 +
> 2 files changed, 15 insertions(+)
>
> diff --git a/hw/i386/vmport.c b/hw/i386/vmport.c
> index 7e57eda4b526..2ce78aaf7b4c 100644
> --- a/hw/i386/vmport.c
> +++ b/hw/i386/vmport.c
> @@ -55,6 +55,13 @@
> #define VMPORT_COMPAT_CMDS_V2 \
> (1 << VMPORT_COMPAT_CMDS_V2_BIT)
>
> +/* vCPU features reported by CMD_GET_VCPU_INFO */
> +#define VCPU_INFO_SLC64_BIT 0
> +#define VCPU_INFO_SYNC_VTSCS_BIT 1
> +#define VCPU_INFO_HV_REPLAY_OK_BIT 2
> +#define VCPU_INFO_LEGACY_X2APIC_BIT 3
> +#define VCPU_INFO_RESERVED_BIT 31
> +
> #define VMPORT(obj) OBJECT_CHECK(VMPortState, (obj), TYPE_VMPORT)
>
> typedef struct VMPortState {
Prefix with VMPORT_ please, and add comments.
> @@ -199,6 +206,11 @@ static uint32_t vmport_cmd_time_full(void *opaque, uint32_t addr)
> return VMPORT_MAGIC;
> }
>
> +static uint32_t vmport_cmd_get_vcpu_info(void *opaque, uint32_t addr)
> +{
> + return 1 << VCPU_INFO_RESERVED_BIT;
> +}
> +
> /* vmmouse helpers */
> void vmmouse_get_data(uint32_t *data)
> {
> @@ -247,6 +259,8 @@ static void vmport_realizefn(DeviceState *dev, Error **errp)
> vmport_register(VMPORT_CMD_GETBIOSUUID, vmport_cmd_get_bios_uuid, NULL);
> vmport_register(VMPORT_CMD_GETTIME, vmport_cmd_time, NULL);
> vmport_register(VMPORT_CMD_GETTIMEFULL, vmport_cmd_time_full, NULL);
> + vmport_register(VMPORT_CMD_GET_VCPU_INFO, vmport_cmd_get_vcpu_info,
> + NULL);
> }
> }
>
> diff --git a/include/hw/i386/vmport.h b/include/hw/i386/vmport.h
> index 5d19963ed417..34cc050b1ffa 100644
> --- a/include/hw/i386/vmport.h
> +++ b/include/hw/i386/vmport.h
> @@ -13,6 +13,7 @@ typedef enum {
> VMPORT_CMD_VMMOUSE_STATUS = 40,
> VMPORT_CMD_VMMOUSE_COMMAND = 41,
> VMPORT_CMD_GETTIMEFULL = 46,
> + VMPORT_CMD_GET_VCPU_INFO = 68,
> VMPORT_ENTRIES
> } VMPortCommand;
>
> --
> 2.20.1