qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v3 01/15] linux-headers: update to 5.1-rc1


From: David Gibson
Subject: Re: [Qemu-devel] [PATCH v3 01/15] linux-headers: update to 5.1-rc1
Date: Fri, 22 Mar 2019 11:19:08 +1100
User-agent: Mutt/1.11.3 (2019-02-01)

On Thu, Mar 21, 2019 at 03:49:00PM +0100, Cédric Le Goater wrote:
> These changes provide the interface with the KVM device implementing
> the XIVE native exploitation interrupt mode. Also used to retrieve the
> state of the KVM device for the monitor usage and for migration.
> 
> Available from :
> 
>   https://github.com/legoater/linux/commits/xive-5.1

Obviously the final version of this will need to be against a version
in Linus' tree, and you should give a SHA in the commit message.

> 
> Signed-off-by: Cédric Le Goater <address@hidden>
> ---
>  linux-headers/asm-powerpc/kvm.h | 46 +++++++++++++++++++++++++++++++++
>  linux-headers/linux/kvm.h       | 11 ++++++++
>  2 files changed, 57 insertions(+)
> 
> diff --git a/linux-headers/asm-powerpc/kvm.h b/linux-headers/asm-powerpc/kvm.h
> index 8c876c166ef2..07daf7bf6fe4 100644
> --- a/linux-headers/asm-powerpc/kvm.h
> +++ b/linux-headers/asm-powerpc/kvm.h
> @@ -480,6 +480,8 @@ struct kvm_ppc_cpu_char {
>  #define  KVM_REG_PPC_ICP_PPRI_SHIFT  16      /* pending irq priority */
>  #define  KVM_REG_PPC_ICP_PPRI_MASK   0xff
>  
> +#define KVM_REG_PPC_VP_STATE (KVM_REG_PPC | KVM_REG_SIZE_U128 | 0x8d)
> +
>  /* Device control API: PPC-specific devices */
>  #define KVM_DEV_MPIC_GRP_MISC                1
>  #define   KVM_DEV_MPIC_BASE_ADDR     0       /* 64-bit */
> @@ -675,4 +677,48 @@ struct kvm_ppc_cpu_char {
>  #define  KVM_XICS_PRESENTED          (1ULL << 43)
>  #define  KVM_XICS_QUEUED             (1ULL << 44)
>  
> +/* POWER9 XIVE Native Interrupt Controller */
> +#define KVM_DEV_XIVE_GRP_CTRL                1
> +#define   KVM_DEV_XIVE_RESET         1
> +#define   KVM_DEV_XIVE_EQ_SYNC               2
> +#define KVM_DEV_XIVE_GRP_SOURCE              2       /* 64-bit source 
> identifier */
> +#define KVM_DEV_XIVE_GRP_SOURCE_CONFIG       3       /* 64-bit source 
> identifier */
> +#define KVM_DEV_XIVE_GRP_EQ_CONFIG   4       /* 64-bit EQ identifier */
> +#define KVM_DEV_XIVE_GRP_SOURCE_SYNC 5       /* 64-bit source identifier */
> +
> +/* Layout of 64-bit XIVE source attribute values */
> +#define KVM_XIVE_LEVEL_SENSITIVE     (1ULL << 0)
> +#define KVM_XIVE_LEVEL_ASSERTED              (1ULL << 1)
> +
> +/* Layout of 64-bit XIVE source configuration attribute values */
> +#define KVM_XIVE_SOURCE_PRIORITY_SHIFT       0
> +#define KVM_XIVE_SOURCE_PRIORITY_MASK        0x7
> +#define KVM_XIVE_SOURCE_SERVER_SHIFT 3
> +#define KVM_XIVE_SOURCE_SERVER_MASK  0xfffffff8ULL
> +#define KVM_XIVE_SOURCE_MASKED_SHIFT 32
> +#define KVM_XIVE_SOURCE_MASKED_MASK  0x100000000ULL
> +#define KVM_XIVE_SOURCE_EISN_SHIFT   33
> +#define KVM_XIVE_SOURCE_EISN_MASK    0xfffffffe00000000ULL
> +
> +/* Layout of 64-bit EQ identifier */
> +#define KVM_XIVE_EQ_PRIORITY_SHIFT   0
> +#define KVM_XIVE_EQ_PRIORITY_MASK    0x7
> +#define KVM_XIVE_EQ_SERVER_SHIFT     3
> +#define KVM_XIVE_EQ_SERVER_MASK              0xfffffff8ULL
> +
> +/* Layout of EQ configuration values (64 bytes) */
> +struct kvm_ppc_xive_eq {
> +     __u32 flags;
> +     __u32 qshift;
> +     __u64 qaddr;
> +     __u32 qtoggle;
> +     __u32 qindex;
> +     __u8  pad[40];
> +};
> +
> +#define KVM_XIVE_EQ_ALWAYS_NOTIFY    0x00000001
> +
> +#define KVM_XIVE_TIMA_PAGE_OFFSET    0
> +#define KVM_XIVE_ESB_PAGE_OFFSET     4
> +
>  #endif /* __LINUX_KVM_POWERPC_H */
> diff --git a/linux-headers/linux/kvm.h b/linux-headers/linux/kvm.h
> index b53ee5974802..49ff307fa094 100644
> --- a/linux-headers/linux/kvm.h
> +++ b/linux-headers/linux/kvm.h
> @@ -1,3 +1,4 @@
> +
>  /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
>  #ifndef __LINUX_KVM_H
>  #define __LINUX_KVM_H
> @@ -988,6 +989,7 @@ struct kvm_ppc_resize_hpt {
>  #define KVM_CAP_ARM_VM_IPA_SIZE 165
>  #define KVM_CAP_MANUAL_DIRTY_LOG_PROTECT 166
>  #define KVM_CAP_HYPERV_CPUID 167
> +#define KVM_CAP_PPC_IRQ_XIVE 168
>  
>  #ifdef KVM_CAP_IRQ_ROUTING
>  
> @@ -1182,6 +1184,11 @@ struct kvm_create_device {
>       __u32   flags;  /* in: KVM_CREATE_DEVICE_xxx */
>  };
>  
> +struct kvm_destroy_device {
> +     __u32   fd;     /* in: device handle */
> +     __u32   flags;  /* in: unused */
> +};
> +
>  struct kvm_device_attr {
>       __u32   flags;          /* no flags currently defined */
>       __u32   group;          /* device-defined */
> @@ -1211,6 +1218,8 @@ enum kvm_device_type {
>  #define KVM_DEV_TYPE_ARM_VGIC_V3     KVM_DEV_TYPE_ARM_VGIC_V3
>       KVM_DEV_TYPE_ARM_VGIC_ITS,
>  #define KVM_DEV_TYPE_ARM_VGIC_ITS    KVM_DEV_TYPE_ARM_VGIC_ITS
> +     KVM_DEV_TYPE_XIVE,
> +#define KVM_DEV_TYPE_XIVE            KVM_DEV_TYPE_XIVE
>       KVM_DEV_TYPE_MAX,
>  };
>  
> @@ -1328,6 +1337,8 @@ struct kvm_s390_ucas_mapping {
>  #define KVM_GET_DEVICE_ATTR    _IOW(KVMIO,  0xe2, struct kvm_device_attr)
>  #define KVM_HAS_DEVICE_ATTR    _IOW(KVMIO,  0xe3, struct kvm_device_attr)
>  
> +#define KVM_DESTROY_DEVICE     _IOWR(KVMIO,  0xf0, struct kvm_destroy_device)
> +
>  /*
>   * ioctls for vcpu fds
>   */

-- 
David Gibson                    | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au  | minimalist, thank you.  NOT _the_ _other_
                                | _way_ _around_!
http://www.ozlabs.org/~dgibson

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]