[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 06/10] linux-headers: update
From: |
Eric Auger |
Subject: |
Re: [Qemu-devel] [PATCH v2 06/10] linux-headers: update |
Date: |
Wed, 29 Apr 2015 15:07:11 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 |
On 04/27/2015 10:55 AM, Cornelia Huck wrote:
> This updates linux-headers against master 4.1-rc1 (commit
> b787f68c36d49bb1d9236f403813641efa74a031).
>
> Signed-off-by: Cornelia Huck <address@hidden>
> ---
> include/standard-headers/linux/virtio_balloon.h | 28 +++-
> include/standard-headers/linux/virtio_blk.h | 8 +-
> include/standard-headers/linux/virtio_ids.h | 1 +
> include/standard-headers/linux/virtio_input.h | 76 +++++++++++
Hi Cornelia,
Comparing my new update against 4.1rc1 and yours, I do not have the
virtio input header. Did I miss something?
Best Regards
Eric
> linux-headers/asm-arm/kvm.h | 9 +-
> linux-headers/asm-arm64/kvm.h | 9 +-
> linux-headers/asm-mips/kvm.h | 164
> +++++++++++++++---------
> linux-headers/asm-s390/kvm.h | 4 +
> linux-headers/asm-x86/hyperv.h | 2 +
> linux-headers/linux/kvm.h | 66 +++++++++-
> linux-headers/linux/vfio.h | 2 +
> 11 files changed, 299 insertions(+), 70 deletions(-)
> create mode 100644 include/standard-headers/linux/virtio_input.h
>
> diff --git a/include/standard-headers/linux/virtio_balloon.h
> b/include/standard-headers/linux/virtio_balloon.h
> index 799376d..88ada1d 100644
> --- a/include/standard-headers/linux/virtio_balloon.h
> +++ b/include/standard-headers/linux/virtio_balloon.h
> @@ -25,6 +25,7 @@
> * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
> * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
> * SUCH DAMAGE. */
> +#include "standard-headers/linux/types.h"
> #include "standard-headers/linux/virtio_ids.h"
> #include "standard-headers/linux/virtio_config.h"
>
> @@ -51,9 +52,32 @@ struct virtio_balloon_config {
> #define VIRTIO_BALLOON_S_MEMTOT 5 /* Total amount of memory */
> #define VIRTIO_BALLOON_S_NR 6
>
> +/*
> + * Memory statistics structure.
> + * Driver fills an array of these structures and passes to device.
> + *
> + * NOTE: fields are laid out in a way that would make compiler add padding
> + * between and after fields, so we have to use compiler-specific attributes
> to
> + * pack it, to disable this padding. This also often causes compiler to
> + * generate suboptimal code.
> + *
> + * We maintain this statistics structure format for backwards compatibility,
> + * but don't follow this example.
> + *
> + * If implementing a similar structure, do something like the below instead:
> + * struct virtio_balloon_stat {
> + * __virtio16 tag;
> + * uint8_t reserved[6];
> + * __virtio64 val;
> + * };
> + *
> + * In other words, add explicit reserved fields to align field and
> + * structure boundaries at field size, avoiding compiler padding
> + * without the packed attribute.
> + */
> struct virtio_balloon_stat {
> - uint16_t tag;
> - uint64_t val;
> + __virtio16 tag;
> + __virtio64 val;
> } QEMU_PACKED;
>
> #endif /* _LINUX_VIRTIO_BALLOON_H */
> diff --git a/include/standard-headers/linux/virtio_blk.h
> b/include/standard-headers/linux/virtio_blk.h
> index 12016b4..cd601f4 100644
> --- a/include/standard-headers/linux/virtio_blk.h
> +++ b/include/standard-headers/linux/virtio_blk.h
> @@ -58,7 +58,7 @@ struct virtio_blk_config {
> uint32_t size_max;
> /* The maximum number of segments (if VIRTIO_BLK_F_SEG_MAX) */
> uint32_t seg_max;
> - /* geometry the device (if VIRTIO_BLK_F_GEOMETRY) */
> + /* geometry of the device (if VIRTIO_BLK_F_GEOMETRY) */
> struct virtio_blk_geometry {
> uint16_t cylinders;
> uint8_t heads;
> @@ -117,7 +117,11 @@ struct virtio_blk_config {
> #define VIRTIO_BLK_T_BARRIER 0x80000000
> #endif /* !VIRTIO_BLK_NO_LEGACY */
>
> -/* This is the first element of the read scatter-gather list. */
> +/*
> + * This comes first in the read scatter-gather list.
> + * For legacy virtio, if VIRTIO_F_ANY_LAYOUT is not negotiated,
> + * this is the first element of the read scatter-gather list.
> + */
> struct virtio_blk_outhdr {
> /* VIRTIO_BLK_T* */
> __virtio32 type;
> diff --git a/include/standard-headers/linux/virtio_ids.h
> b/include/standard-headers/linux/virtio_ids.h
> index 284fc3a..5f60aa4 100644
> --- a/include/standard-headers/linux/virtio_ids.h
> +++ b/include/standard-headers/linux/virtio_ids.h
> @@ -39,5 +39,6 @@
> #define VIRTIO_ID_9P 9 /* 9p virtio console */
> #define VIRTIO_ID_RPROC_SERIAL 11 /* virtio remoteproc serial link */
> #define VIRTIO_ID_CAIF 12 /* Virtio caif */
> +#define VIRTIO_ID_INPUT 18 /* virtio input */
>
> #endif /* _LINUX_VIRTIO_IDS_H */
> diff --git a/include/standard-headers/linux/virtio_input.h
> b/include/standard-headers/linux/virtio_input.h
> new file mode 100644
> index 0000000..a98a797
> --- /dev/null
> +++ b/include/standard-headers/linux/virtio_input.h
> @@ -0,0 +1,76 @@
> +#ifndef _LINUX_VIRTIO_INPUT_H
> +#define _LINUX_VIRTIO_INPUT_H
> +/* This header is BSD licensed so anyone can use the definitions to implement
> + * compatible drivers/servers.
> + *
> + * Redistribution and use in source and binary forms, with or without
> + * modification, are permitted provided that the following conditions
> + * are met:
> + * 1. Redistributions of source code must retain the above copyright
> + * notice, this list of conditions and the following disclaimer.
> + * 2. Redistributions in binary form must reproduce the above copyright
> + * notice, this list of conditions and the following disclaimer in the
> + * documentation and/or other materials provided with the distribution.
> + * 3. Neither the name of IBM nor the names of its contributors
> + * may be used to endorse or promote products derived from this software
> + * without specific prior written permission.
> + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
> + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
> + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
> + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL IBM OR
> + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
> + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
> + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
> + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
> + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
> + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
> + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
> + * SUCH DAMAGE. */
> +
> +#include "standard-headers/linux/types.h"
> +
> +enum virtio_input_config_select {
> + VIRTIO_INPUT_CFG_UNSET = 0x00,
> + VIRTIO_INPUT_CFG_ID_NAME = 0x01,
> + VIRTIO_INPUT_CFG_ID_SERIAL = 0x02,
> + VIRTIO_INPUT_CFG_ID_DEVIDS = 0x03,
> + VIRTIO_INPUT_CFG_PROP_BITS = 0x10,
> + VIRTIO_INPUT_CFG_EV_BITS = 0x11,
> + VIRTIO_INPUT_CFG_ABS_INFO = 0x12,
> +};
> +
> +struct virtio_input_absinfo {
> + uint32_t min;
> + uint32_t max;
> + uint32_t fuzz;
> + uint32_t flat;
> + uint32_t res;
> +};
> +
> +struct virtio_input_devids {
> + uint16_t bustype;
> + uint16_t vendor;
> + uint16_t product;
> + uint16_t version;
> +};
> +
> +struct virtio_input_config {
> + uint8_t select;
> + uint8_t subsel;
> + uint8_t size;
> + uint8_t reserved[5];
> + union {
> + char string[128];
> + uint8_t bitmap[128];
> + struct virtio_input_absinfo abs;
> + struct virtio_input_devids ids;
> + } u;
> +};
> +
> +struct virtio_input_event {
> + uint16_t type;
> + uint16_t code;
> + uint32_t value;
> +};
> +
> +#endif /* _LINUX_VIRTIO_INPUT_H */
> diff --git a/linux-headers/asm-arm/kvm.h b/linux-headers/asm-arm/kvm.h
> index 0db25bc..c98e4dc 100644
> --- a/linux-headers/asm-arm/kvm.h
> +++ b/linux-headers/asm-arm/kvm.h
> @@ -195,9 +195,16 @@ struct kvm_arch_memory_slot {
> #define KVM_ARM_IRQ_CPU_IRQ 0
> #define KVM_ARM_IRQ_CPU_FIQ 1
>
> -/* Highest supported SPI, from VGIC_NR_IRQS */
> +/*
> + * This used to hold the highest supported SPI, but it is now obsolete
> + * and only here to provide source code level compatibility with older
> + * userland. The highest SPI number can be set via
> KVM_DEV_ARM_VGIC_GRP_NR_IRQS.
> + */
> #define KVM_ARM_IRQ_GIC_MAX 127
>
> +/* One single KVM irqchip, ie. the VGIC */
> +#define KVM_NR_IRQCHIPS 1
> +
> /* PSCI interface */
> #define KVM_PSCI_FN_BASE 0x95c1ba5e
> #define KVM_PSCI_FN(n) (KVM_PSCI_FN_BASE + (n))
> diff --git a/linux-headers/asm-arm64/kvm.h b/linux-headers/asm-arm64/kvm.h
> index 3ef77a4..c8abf25 100644
> --- a/linux-headers/asm-arm64/kvm.h
> +++ b/linux-headers/asm-arm64/kvm.h
> @@ -188,9 +188,16 @@ struct kvm_arch_memory_slot {
> #define KVM_ARM_IRQ_CPU_IRQ 0
> #define KVM_ARM_IRQ_CPU_FIQ 1
>
> -/* Highest supported SPI, from VGIC_NR_IRQS */
> +/*
> + * This used to hold the highest supported SPI, but it is now obsolete
> + * and only here to provide source code level compatibility with older
> + * userland. The highest SPI number can be set via
> KVM_DEV_ARM_VGIC_GRP_NR_IRQS.
> + */
> #define KVM_ARM_IRQ_GIC_MAX 127
>
> +/* One single KVM irqchip, ie. the VGIC */
> +#define KVM_NR_IRQCHIPS 1
> +
> /* PSCI interface */
> #define KVM_PSCI_FN_BASE 0x95c1ba5e
> #define KVM_PSCI_FN(n) (KVM_PSCI_FN_BASE + (n))
> diff --git a/linux-headers/asm-mips/kvm.h b/linux-headers/asm-mips/kvm.h
> index 2c04b6d..6985eb5 100644
> --- a/linux-headers/asm-mips/kvm.h
> +++ b/linux-headers/asm-mips/kvm.h
> @@ -36,77 +36,85 @@ struct kvm_regs {
>
> /*
> * for KVM_GET_FPU and KVM_SET_FPU
> - *
> - * If Status[FR] is zero (32-bit FPU), the upper 32-bits of the FPRs
> - * are zero filled.
> */
> struct kvm_fpu {
> - __u64 fpr[32];
> - __u32 fir;
> - __u32 fccr;
> - __u32 fexr;
> - __u32 fenr;
> - __u32 fcsr;
> - __u32 pad;
> };
>
>
> /*
> - * For MIPS, we use KVM_SET_ONE_REG and KVM_GET_ONE_REG to access CP0
> + * For MIPS, we use KVM_SET_ONE_REG and KVM_GET_ONE_REG to access various
> * registers. The id field is broken down as follows:
> *
> - * bits[2..0] - Register 'sel' index.
> - * bits[7..3] - Register 'rd' index.
> - * bits[15..8] - Must be zero.
> - * bits[31..16] - 1 -> CP0 registers.
> - * bits[51..32] - Must be zero.
> * bits[63..52] - As per linux/kvm.h
> + * bits[51..32] - Must be zero.
> + * bits[31..16] - Register set.
> + *
> + * Register set = 0: GP registers from kvm_regs (see definitions below).
> + *
> + * Register set = 1: CP0 registers.
> + * bits[15..8] - Must be zero.
> + * bits[7..3] - Register 'rd' index.
> + * bits[2..0] - Register 'sel' index.
> + *
> + * Register set = 2: KVM specific registers (see definitions below).
> + *
> + * Register set = 3: FPU / MSA registers (see definitions below).
> *
> * Other sets registers may be added in the future. Each set would
> * have its own identifier in bits[31..16].
> - *
> - * The registers defined in struct kvm_regs are also accessible, the
> - * id values for these are below.
> */
>
> -#define KVM_REG_MIPS_R0 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 0)
> -#define KVM_REG_MIPS_R1 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 1)
> -#define KVM_REG_MIPS_R2 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 2)
> -#define KVM_REG_MIPS_R3 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 3)
> -#define KVM_REG_MIPS_R4 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 4)
> -#define KVM_REG_MIPS_R5 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 5)
> -#define KVM_REG_MIPS_R6 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 6)
> -#define KVM_REG_MIPS_R7 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 7)
> -#define KVM_REG_MIPS_R8 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 8)
> -#define KVM_REG_MIPS_R9 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 9)
> -#define KVM_REG_MIPS_R10 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 10)
> -#define KVM_REG_MIPS_R11 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 11)
> -#define KVM_REG_MIPS_R12 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 12)
> -#define KVM_REG_MIPS_R13 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 13)
> -#define KVM_REG_MIPS_R14 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 14)
> -#define KVM_REG_MIPS_R15 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 15)
> -#define KVM_REG_MIPS_R16 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 16)
> -#define KVM_REG_MIPS_R17 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 17)
> -#define KVM_REG_MIPS_R18 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 18)
> -#define KVM_REG_MIPS_R19 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 19)
> -#define KVM_REG_MIPS_R20 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 20)
> -#define KVM_REG_MIPS_R21 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 21)
> -#define KVM_REG_MIPS_R22 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 22)
> -#define KVM_REG_MIPS_R23 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 23)
> -#define KVM_REG_MIPS_R24 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 24)
> -#define KVM_REG_MIPS_R25 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 25)
> -#define KVM_REG_MIPS_R26 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 26)
> -#define KVM_REG_MIPS_R27 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 27)
> -#define KVM_REG_MIPS_R28 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 28)
> -#define KVM_REG_MIPS_R29 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 29)
> -#define KVM_REG_MIPS_R30 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 30)
> -#define KVM_REG_MIPS_R31 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 31)
> -
> -#define KVM_REG_MIPS_HI (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 32)
> -#define KVM_REG_MIPS_LO (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 33)
> -#define KVM_REG_MIPS_PC (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 34)
> -
> -/* KVM specific control registers */
> +#define KVM_REG_MIPS_GP (KVM_REG_MIPS | 0x0000000000000000ULL)
> +#define KVM_REG_MIPS_CP0 (KVM_REG_MIPS | 0x0000000000010000ULL)
> +#define KVM_REG_MIPS_KVM (KVM_REG_MIPS | 0x0000000000020000ULL)
> +#define KVM_REG_MIPS_FPU (KVM_REG_MIPS | 0x0000000000030000ULL)
> +
> +
> +/*
> + * KVM_REG_MIPS_GP - General purpose registers from kvm_regs.
> + */
> +
> +#define KVM_REG_MIPS_R0 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 |
> 0)
> +#define KVM_REG_MIPS_R1 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 |
> 1)
> +#define KVM_REG_MIPS_R2 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 |
> 2)
> +#define KVM_REG_MIPS_R3 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 |
> 3)
> +#define KVM_REG_MIPS_R4 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 |
> 4)
> +#define KVM_REG_MIPS_R5 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 |
> 5)
> +#define KVM_REG_MIPS_R6 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 |
> 6)
> +#define KVM_REG_MIPS_R7 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 |
> 7)
> +#define KVM_REG_MIPS_R8 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 |
> 8)
> +#define KVM_REG_MIPS_R9 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 |
> 9)
> +#define KVM_REG_MIPS_R10 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 10)
> +#define KVM_REG_MIPS_R11 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 11)
> +#define KVM_REG_MIPS_R12 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 12)
> +#define KVM_REG_MIPS_R13 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 13)
> +#define KVM_REG_MIPS_R14 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 14)
> +#define KVM_REG_MIPS_R15 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 15)
> +#define KVM_REG_MIPS_R16 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 16)
> +#define KVM_REG_MIPS_R17 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 17)
> +#define KVM_REG_MIPS_R18 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 18)
> +#define KVM_REG_MIPS_R19 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 19)
> +#define KVM_REG_MIPS_R20 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 20)
> +#define KVM_REG_MIPS_R21 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 21)
> +#define KVM_REG_MIPS_R22 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 22)
> +#define KVM_REG_MIPS_R23 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 23)
> +#define KVM_REG_MIPS_R24 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 24)
> +#define KVM_REG_MIPS_R25 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 25)
> +#define KVM_REG_MIPS_R26 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 26)
> +#define KVM_REG_MIPS_R27 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 27)
> +#define KVM_REG_MIPS_R28 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 28)
> +#define KVM_REG_MIPS_R29 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 29)
> +#define KVM_REG_MIPS_R30 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 30)
> +#define KVM_REG_MIPS_R31 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 31)
> +
> +#define KVM_REG_MIPS_HI (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 |
> 32)
> +#define KVM_REG_MIPS_LO (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 |
> 33)
> +#define KVM_REG_MIPS_PC (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 |
> 34)
> +
> +
> +/*
> + * KVM_REG_MIPS_KVM - KVM specific control registers.
> + */
>
> /*
> * CP0_Count control
> @@ -118,8 +126,7 @@ struct kvm_fpu {
> * safely without losing time or guest timer interrupts.
> * Other: Reserved, do not change.
> */
> -#define KVM_REG_MIPS_COUNT_CTL (KVM_REG_MIPS |
> KVM_REG_SIZE_U64 | \
> - 0x20000 | 0)
> +#define KVM_REG_MIPS_COUNT_CTL (KVM_REG_MIPS_KVM |
> KVM_REG_SIZE_U64 | 0)
> #define KVM_REG_MIPS_COUNT_CTL_DC 0x00000001
>
> /*
> @@ -131,15 +138,46 @@ struct kvm_fpu {
> * emulated.
> * Modifications to times in the future are rejected.
> */
> -#define KVM_REG_MIPS_COUNT_RESUME (KVM_REG_MIPS | KVM_REG_SIZE_U64 | \
> - 0x20000 | 1)
> +#define KVM_REG_MIPS_COUNT_RESUME (KVM_REG_MIPS_KVM | KVM_REG_SIZE_U64 | 1)
> /*
> * CP0_Count rate in Hz
> * Specifies the rate of the CP0_Count timer in Hz. Modifications occur
> without
> * discontinuities in CP0_Count.
> */
> -#define KVM_REG_MIPS_COUNT_HZ (KVM_REG_MIPS |
> KVM_REG_SIZE_U64 | \
> - 0x20000 | 2)
> +#define KVM_REG_MIPS_COUNT_HZ (KVM_REG_MIPS_KVM |
> KVM_REG_SIZE_U64 | 2)
> +
> +
> +/*
> + * KVM_REG_MIPS_FPU - Floating Point and MIPS SIMD Architecture (MSA)
> registers.
> + *
> + * bits[15..8] - Register subset (see definitions below).
> + * bits[7..5] - Must be zero.
> + * bits[4..0] - Register number within register subset.
> + */
> +
> +#define KVM_REG_MIPS_FPR (KVM_REG_MIPS_FPU | 0x0000000000000000ULL)
> +#define KVM_REG_MIPS_FCR (KVM_REG_MIPS_FPU | 0x0000000000000100ULL)
> +#define KVM_REG_MIPS_MSACR (KVM_REG_MIPS_FPU | 0x0000000000000200ULL)
> +
> +/*
> + * KVM_REG_MIPS_FPR - Floating point / Vector registers.
> + */
> +#define KVM_REG_MIPS_FPR_32(n) (KVM_REG_MIPS_FPR | KVM_REG_SIZE_U32 |
> (n))
> +#define KVM_REG_MIPS_FPR_64(n) (KVM_REG_MIPS_FPR | KVM_REG_SIZE_U64 |
> (n))
> +#define KVM_REG_MIPS_VEC_128(n) (KVM_REG_MIPS_FPR | KVM_REG_SIZE_U128 |
> (n))
> +
> +/*
> + * KVM_REG_MIPS_FCR - Floating point control registers.
> + */
> +#define KVM_REG_MIPS_FCR_IR (KVM_REG_MIPS_FCR | KVM_REG_SIZE_U32 | 0)
> +#define KVM_REG_MIPS_FCR_CSR (KVM_REG_MIPS_FCR | KVM_REG_SIZE_U32 | 31)
> +
> +/*
> + * KVM_REG_MIPS_MSACR - MIPS SIMD Architecture (MSA) control registers.
> + */
> +#define KVM_REG_MIPS_MSA_IR (KVM_REG_MIPS_MSACR | KVM_REG_SIZE_U32 | 0)
> +#define KVM_REG_MIPS_MSA_CSR (KVM_REG_MIPS_MSACR | KVM_REG_SIZE_U32 | 1)
> +
>
> /*
> * KVM MIPS specific structures and definitions
> diff --git a/linux-headers/asm-s390/kvm.h b/linux-headers/asm-s390/kvm.h
> index c5a93eb..512d8f1 100644
> --- a/linux-headers/asm-s390/kvm.h
> +++ b/linux-headers/asm-s390/kvm.h
> @@ -150,6 +150,7 @@ struct kvm_guest_debug_arch {
> #define KVM_SYNC_CRS (1UL << 3)
> #define KVM_SYNC_ARCH0 (1UL << 4)
> #define KVM_SYNC_PFAULT (1UL << 5)
> +#define KVM_SYNC_VRS (1UL << 6)
> /* definition of registers in kvm_run */
> struct kvm_sync_regs {
> __u64 prefix; /* prefix register */
> @@ -164,6 +165,9 @@ struct kvm_sync_regs {
> __u64 pft; /* pfault token [PFAULT] */
> __u64 pfs; /* pfault select [PFAULT] */
> __u64 pfc; /* pfault compare [PFAULT] */
> + __u64 vrs[32][2]; /* vector registers */
> + __u8 reserved[512]; /* for future vector expansion */
> + __u32 fpc; /* only valid with vector registers */
> };
>
> #define KVM_REG_S390_TODPR (KVM_REG_S390 | KVM_REG_SIZE_U32 | 0x1)
> diff --git a/linux-headers/asm-x86/hyperv.h b/linux-headers/asm-x86/hyperv.h
> index 90c458e..ce6068d 100644
> --- a/linux-headers/asm-x86/hyperv.h
> +++ b/linux-headers/asm-x86/hyperv.h
> @@ -225,6 +225,8 @@
> #define HV_STATUS_INVALID_HYPERCALL_CODE 2
> #define HV_STATUS_INVALID_HYPERCALL_INPUT 3
> #define HV_STATUS_INVALID_ALIGNMENT 4
> +#define HV_STATUS_INSUFFICIENT_MEMORY 11
> +#define HV_STATUS_INVALID_CONNECTION_ID 18
> #define HV_STATUS_INSUFFICIENT_BUFFERS 19
>
> typedef struct _HV_REFERENCE_TSC_PAGE {
> diff --git a/linux-headers/linux/kvm.h b/linux-headers/linux/kvm.h
> index 60a54c8..b96d978 100644
> --- a/linux-headers/linux/kvm.h
> +++ b/linux-headers/linux/kvm.h
> @@ -147,6 +147,16 @@ struct kvm_pit_config {
>
> #define KVM_PIT_SPEAKER_DUMMY 1
>
> +struct kvm_s390_skeys {
> + __u64 start_gfn;
> + __u64 count;
> + __u64 skeydata_addr;
> + __u32 flags;
> + __u32 reserved[9];
> +};
> +#define KVM_S390_GET_SKEYS_NONE 1
> +#define KVM_S390_SKEYS_MAX 1048576
> +
> #define KVM_EXIT_UNKNOWN 0
> #define KVM_EXIT_EXCEPTION 1
> #define KVM_EXIT_IO 2
> @@ -172,6 +182,7 @@ struct kvm_pit_config {
> #define KVM_EXIT_S390_TSCH 22
> #define KVM_EXIT_EPR 23
> #define KVM_EXIT_SYSTEM_EVENT 24
> +#define KVM_EXIT_S390_STSI 25
>
> /* For KVM_EXIT_INTERNAL_ERROR */
> /* Emulate instruction failed. */
> @@ -309,6 +320,15 @@ struct kvm_run {
> __u32 type;
> __u64 flags;
> } system_event;
> + /* KVM_EXIT_S390_STSI */
> + struct {
> + __u64 addr;
> + __u8 ar;
> + __u8 reserved;
> + __u8 fc;
> + __u8 sel1;
> + __u16 sel2;
> + } s390_stsi;
> /* Fix the size of the union. */
> char padding[256];
> };
> @@ -324,7 +344,7 @@ struct kvm_run {
> __u64 kvm_dirty_regs;
> union {
> struct kvm_sync_regs regs;
> - char padding[1024];
> + char padding[2048];
> } s;
> };
>
> @@ -365,6 +385,24 @@ struct kvm_translation {
> __u8 pad[5];
> };
>
> +/* for KVM_S390_MEM_OP */
> +struct kvm_s390_mem_op {
> + /* in */
> + __u64 gaddr; /* the guest address */
> + __u64 flags; /* flags */
> + __u32 size; /* amount of bytes */
> + __u32 op; /* type of operation */
> + __u64 buf; /* buffer in userspace */
> + __u8 ar; /* the access register number */
> + __u8 reserved[31]; /* should be set to 0 */
> +};
> +/* types for kvm_s390_mem_op->op */
> +#define KVM_S390_MEMOP_LOGICAL_READ 0
> +#define KVM_S390_MEMOP_LOGICAL_WRITE 1
> +/* flags for kvm_s390_mem_op->flags */
> +#define KVM_S390_MEMOP_F_CHECK_ONLY (1ULL << 0)
> +#define KVM_S390_MEMOP_F_INJECT_EXCEPTION (1ULL << 1)
> +
> /* for KVM_INTERRUPT */
> struct kvm_interrupt {
> /* in */
> @@ -520,6 +558,13 @@ struct kvm_s390_irq {
> } u;
> };
>
> +struct kvm_s390_irq_state {
> + __u64 buf;
> + __u32 flags;
> + __u32 len;
> + __u32 reserved[4];
> +};
> +
> /* for KVM_SET_GUEST_DEBUG */
>
> #define KVM_GUESTDBG_ENABLE 0x00000001
> @@ -760,6 +805,15 @@ struct kvm_ppc_smmu_info {
> #define KVM_CAP_PPC_ENABLE_HCALL 104
> #define KVM_CAP_CHECK_EXTENSION_VM 105
> #define KVM_CAP_S390_USER_SIGP 106
> +#define KVM_CAP_S390_VECTOR_REGISTERS 107
> +#define KVM_CAP_S390_MEM_OP 108
> +#define KVM_CAP_S390_USER_STSI 109
> +#define KVM_CAP_S390_SKEYS 110
> +#define KVM_CAP_MIPS_FPU 111
> +#define KVM_CAP_MIPS_MSA 112
> +#define KVM_CAP_S390_INJECT_IRQ 113
> +#define KVM_CAP_S390_IRQ_STATE 114
> +#define KVM_CAP_PPC_HWRNG 115
>
> #ifdef KVM_CAP_IRQ_ROUTING
>
> @@ -1135,6 +1189,16 @@ struct kvm_s390_ucas_mapping {
> #define KVM_ARM_VCPU_INIT _IOW(KVMIO, 0xae, struct kvm_vcpu_init)
> #define KVM_ARM_PREFERRED_TARGET _IOR(KVMIO, 0xaf, struct kvm_vcpu_init)
> #define KVM_GET_REG_LIST _IOWR(KVMIO, 0xb0, struct kvm_reg_list)
> +/* Available with KVM_CAP_S390_MEM_OP */
> +#define KVM_S390_MEM_OP _IOW(KVMIO, 0xb1, struct
> kvm_s390_mem_op)
> +/* Available with KVM_CAP_S390_SKEYS */
> +#define KVM_S390_GET_SKEYS _IOW(KVMIO, 0xb2, struct kvm_s390_skeys)
> +#define KVM_S390_SET_SKEYS _IOW(KVMIO, 0xb3, struct kvm_s390_skeys)
> +/* Available with KVM_CAP_S390_INJECT_IRQ */
> +#define KVM_S390_IRQ _IOW(KVMIO, 0xb4, struct kvm_s390_irq)
> +/* Available with KVM_CAP_S390_IRQ_STATE */
> +#define KVM_S390_SET_IRQ_STATE _IOW(KVMIO, 0xb5, struct
> kvm_s390_irq_state)
> +#define KVM_S390_GET_IRQ_STATE _IOW(KVMIO, 0xb6, struct
> kvm_s390_irq_state)
>
> #define KVM_DEV_ASSIGN_ENABLE_IOMMU (1 << 0)
> #define KVM_DEV_ASSIGN_PCI_2_3 (1 << 1)
> diff --git a/linux-headers/linux/vfio.h b/linux-headers/linux/vfio.h
> index 95ba870..0508d0b 100644
> --- a/linux-headers/linux/vfio.h
> +++ b/linux-headers/linux/vfio.h
> @@ -160,6 +160,8 @@ struct vfio_device_info {
> __u32 flags;
> #define VFIO_DEVICE_FLAGS_RESET (1 << 0) /* Device supports
> reset */
> #define VFIO_DEVICE_FLAGS_PCI (1 << 1) /* vfio-pci device */
> +#define VFIO_DEVICE_FLAGS_PLATFORM (1 << 2) /* vfio-platform device */
> +#define VFIO_DEVICE_FLAGS_AMBA (1 << 3) /* vfio-amba device */
> __u32 num_regions; /* Max region index + 1 */
> __u32 num_irqs; /* Max IRQ index + 1 */
> };
>
- [Qemu-devel] [PATCH v2 00/10] first batch of s390x patches for 2.4, Cornelia Huck, 2015/04/27
- [Qemu-devel] [PATCH v2 03/10] sclp: sort into categories, Cornelia Huck, 2015/04/27
- [Qemu-devel] [PATCH v2 05/10] s390x/mmu: Use access type definitions instead of magic values, Cornelia Huck, 2015/04/27
- [Qemu-devel] [PATCH v2 07/10] s390x/kvm: Put vm name, extended name and UUID into STSI322 SYSIB, Cornelia Huck, 2015/04/27
- [Qemu-devel] [PATCH v2 04/10] s390x/ipl: sort into categories, Cornelia Huck, 2015/04/27
- [Qemu-devel] [PATCH v2 08/10] s390x/mmu: Use ioctl for reading and writing from/to guest memory, Cornelia Huck, 2015/04/27
- [Qemu-devel] [PATCH v2 10/10] kvm: better advice for failed s390x startup, Cornelia Huck, 2015/04/27
- [Qemu-devel] [PATCH v2 06/10] linux-headers: update, Cornelia Huck, 2015/04/27
- Re: [Qemu-devel] [PATCH v2 06/10] linux-headers: update,
Eric Auger <=
- [Qemu-devel] [PATCH v2 02/10] s390-virtio: sort into categories, Cornelia Huck, 2015/04/27
- [Qemu-devel] [PATCH v2 01/10] virtio-ccw: sort into categories, Cornelia Huck, 2015/04/27
- [Qemu-devel] [PATCH v2 09/10] s390x/kvm: Support access register mode for KVM_S390_MEM_OP ioctl, Cornelia Huck, 2015/04/27