[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PULL 1/5] linux-headers: Update from v3.13-rc3
From: |
Greg Kurz |
Subject: |
Re: [Qemu-devel] [PULL 1/5] linux-headers: Update from v3.13-rc3 |
Date: |
Wed, 11 Dec 2013 12:09:44 +0100 |
On Fri, 06 Dec 2013 13:48:25 -0700
Alex Williamson <address@hidden> wrote:
> Update to tag v3.13-rc3 (374b105797c3d4f29c685f3be535c35f5689b30e)
>
> Signed-off-by: Alex Williamson <address@hidden>
> ---
> linux-headers/asm-arm/kvm.h | 3 +
> linux-headers/asm-powerpc/epapr_hcalls.h | 4 +
> linux-headers/asm-powerpc/kvm.h | 86
> +++++++++++++++++++++++++++++- linux-headers/asm-x86/hyperv.h
> | 19 +++++++ linux-headers/asm-x86/kvm.h | 6 +-
> linux-headers/linux/kvm.h | 11 ++++
> 6 files changed, 119 insertions(+), 10 deletions(-)
>
> diff --git a/linux-headers/asm-arm/kvm.h b/linux-headers/asm-arm/kvm.h
> index c1ee007..c498b60 100644
> --- a/linux-headers/asm-arm/kvm.h
> +++ b/linux-headers/asm-arm/kvm.h
> @@ -63,7 +63,8 @@ struct kvm_regs {
>
> /* Supported Processor Types */
> #define KVM_ARM_TARGET_CORTEX_A15 0
> -#define KVM_ARM_NUM_TARGETS 1
> +#define KVM_ARM_TARGET_CORTEX_A7 1
> +#define KVM_ARM_NUM_TARGETS 2
>
> /* KVM_ARM_SET_DEVICE_ADDR ioctl id encoding */
> #define KVM_ARM_DEVICE_TYPE_SHIFT 0
> diff --git a/linux-headers/asm-powerpc/epapr_hcalls.h
> b/linux-headers/asm-powerpc/epapr_hcalls.h index 33b3f89..06f7247 100644
> --- a/linux-headers/asm-powerpc/epapr_hcalls.h
> +++ b/linux-headers/asm-powerpc/epapr_hcalls.h
> @@ -78,7 +78,7 @@
> #define EV_SUCCESS 0
> #define EV_EPERM 1 /* Operation not permitted */
> #define EV_ENOENT 2 /* Entry Not Found */
> -#define EV_EIO 3 /* I/O error occurred */
> +#define EV_EIO 3 /* I/O error occured */
> #define EV_EAGAIN 4 /* The operation had
> insufficient
> * resources to complete and
> should be
> * retried
> @@ -89,7 +89,7 @@
> #define EV_ENODEV 7 /* No such device */
> #define EV_EINVAL 8 /* An argument supplied to the
> hcall was out of range or invalid */
> -#define EV_INTERNAL 9 /* An internal error
> occurred */ +#define EV_INTERNAL 9 /* An internal
> error occured */ #define EV_CONFIG 10 /* A
> configuration error was detected */ #define EV_INVALID_STATE
> 11 /* The object is in an invalid state */ #define
> EV_UNIMPLEMENTED 12 /* Unimplemented hypercall */ diff
> --git a/linux-headers/asm-powerpc/kvm.h b/linux-headers/asm-powerpc/kvm.h
> index 0fb1a6e..6836ec7 100644 --- a/linux-headers/asm-powerpc/kvm.h
> +++ b/linux-headers/asm-powerpc/kvm.h
> @@ -27,6 +27,7 @@
> #define __KVM_HAVE_PPC_SMT
> #define __KVM_HAVE_IRQCHIP
> #define __KVM_HAVE_IRQ_LINE
> +#define __KVM_HAVE_GUEST_DEBUG
>
This define breaks the build on ppc:
kvm-all.o: In function `kvm_update_guest_debug':
kvm-all.c:1910: undefined reference to `kvm_arch_update_guest_debug'
kvm-all.o: In function `kvm_insert_breakpoint':
kvm-all.c:1937: undefined reference to `kvm_arch_insert_sw_breakpoint'
kvm-all.c:1945: undefined reference to `kvm_arch_insert_hw_breakpoint'
kvm-all.o: In function `kvm_remove_breakpoint':
kvm-all.c:1977: undefined reference to `kvm_arch_remove_sw_breakpoint'
kvm-all.c:1985: undefined reference to `kvm_arch_remove_hw_breakpoint'
kvm-all.o: In function `kvm_remove_all_breakpoints':
kvm-all.c:2009: undefined reference to `kvm_arch_remove_sw_breakpoint'
kvm-all.c:2006: undefined reference to `kvm_arch_remove_sw_breakpoint'
kvm-all.c:2017: undefined reference to `kvm_arch_remove_all_hw_breakpoints'
The ppc support is missing...
Regards.
--
Greg
> struct kvm_regs {
> __u64 pc;
> @@ -269,7 +270,24 @@ struct kvm_fpu {
> __u64 fpr[32];
> };
>
> +/*
> + * Defines for h/w breakpoint, watchpoint (read, write or both) and
> + * software breakpoint.
> + * These are used as "type" in KVM_SET_GUEST_DEBUG ioctl and "status"
> + * for KVM_DEBUG_EXIT.
> + */
> +#define KVMPPC_DEBUG_NONE 0x0
> +#define KVMPPC_DEBUG_BREAKPOINT (1UL << 1)
> +#define KVMPPC_DEBUG_WATCH_WRITE (1UL << 2)
> +#define KVMPPC_DEBUG_WATCH_READ (1UL << 3)
> struct kvm_debug_exit_arch {
> + __u64 address;
> + /*
> + * exiting to userspace because of h/w breakpoint, watchpoint
> + * (read, write or both) and software breakpoint.
> + */
> + __u32 status;
> + __u32 reserved;
> };
>
> /* for KVM_SET_GUEST_DEBUG */
> @@ -281,10 +299,6 @@ struct kvm_guest_debug_arch {
> * Type denotes h/w breakpoint, read watchpoint, write
> * watchpoint or watchpoint (both read and write).
> */
> -#define KVMPPC_DEBUG_NONE 0x0
> -#define KVMPPC_DEBUG_BREAKPOINT (1UL << 1)
> -#define KVMPPC_DEBUG_WATCH_WRITE (1UL << 2)
> -#define KVMPPC_DEBUG_WATCH_READ (1UL << 3)
> __u32 type;
> __u32 reserved;
> } bp[16];
> @@ -429,6 +443,11 @@ struct kvm_get_htab_header {
> #define KVM_REG_PPC_MMCR0 (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0x10)
> #define KVM_REG_PPC_MMCR1 (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0x11)
> #define KVM_REG_PPC_MMCRA (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0x12)
> +#define KVM_REG_PPC_MMCR2 (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0x13)
> +#define KVM_REG_PPC_MMCRS (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0x14)
> +#define KVM_REG_PPC_SIAR (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0x15)
> +#define KVM_REG_PPC_SDAR (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0x16)
> +#define KVM_REG_PPC_SIER (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0x17)
>
> #define KVM_REG_PPC_PMC1 (KVM_REG_PPC | KVM_REG_SIZE_U32 | 0x18)
> #define KVM_REG_PPC_PMC2 (KVM_REG_PPC | KVM_REG_SIZE_U32 | 0x19)
> @@ -499,6 +518,65 @@ struct kvm_get_htab_header {
> #define KVM_REG_PPC_TLB3PS (KVM_REG_PPC | KVM_REG_SIZE_U32 | 0x9a)
> #define KVM_REG_PPC_EPTCFG (KVM_REG_PPC | KVM_REG_SIZE_U32 | 0x9b)
>
> +/* Timebase offset */
> +#define KVM_REG_PPC_TB_OFFSET (KVM_REG_PPC | KVM_REG_SIZE_U64 |
> 0x9c) +
> +/* POWER8 registers */
> +#define KVM_REG_PPC_SPMC1 (KVM_REG_PPC | KVM_REG_SIZE_U32 | 0x9d)
> +#define KVM_REG_PPC_SPMC2 (KVM_REG_PPC | KVM_REG_SIZE_U32 | 0x9e)
> +#define KVM_REG_PPC_IAMR (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0x9f)
> +#define KVM_REG_PPC_TFHAR (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xa0)
> +#define KVM_REG_PPC_TFIAR (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xa1)
> +#define KVM_REG_PPC_TEXASR (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xa2)
> +#define KVM_REG_PPC_FSCR (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xa3)
> +#define KVM_REG_PPC_PSPB (KVM_REG_PPC | KVM_REG_SIZE_U32 | 0xa4)
> +#define KVM_REG_PPC_EBBHR (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xa5)
> +#define KVM_REG_PPC_EBBRR (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xa6)
> +#define KVM_REG_PPC_BESCR (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xa7)
> +#define KVM_REG_PPC_TAR (KVM_REG_PPC | KVM_REG_SIZE_U64 |
> 0xa8) +#define KVM_REG_PPC_DPDES (KVM_REG_PPC | KVM_REG_SIZE_U64 |
> 0xa9) +#define KVM_REG_PPC_DAWR (KVM_REG_PPC | KVM_REG_SIZE_U64 |
> 0xaa) +#define KVM_REG_PPC_DAWRX (KVM_REG_PPC | KVM_REG_SIZE_U64 |
> 0xab) +#define KVM_REG_PPC_CIABR (KVM_REG_PPC | KVM_REG_SIZE_U64 |
> 0xac) +#define KVM_REG_PPC_IC (KVM_REG_PPC |
> KVM_REG_SIZE_U64 | 0xad) +#define KVM_REG_PPC_VTB
> (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xae) +#define KVM_REG_PPC_CSIGR
> (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xaf) +#define KVM_REG_PPC_TACR
> (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xb0) +#define KVM_REG_PPC_TCSCR
> (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xb1) +#define
> KVM_REG_PPC_PID (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xb2)
> +#define KVM_REG_PPC_ACOP (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xb3) +
> +#define KVM_REG_PPC_VRSAVE (KVM_REG_PPC | KVM_REG_SIZE_U32 | 0xb4)
> +#define KVM_REG_PPC_LPCR (KVM_REG_PPC | KVM_REG_SIZE_U32 | 0xb5)
> +#define KVM_REG_PPC_PPR (KVM_REG_PPC | KVM_REG_SIZE_U64 |
> 0xb6) +
> +/* Architecture compatibility level */
> +#define KVM_REG_PPC_ARCH_COMPAT (KVM_REG_PPC | KVM_REG_SIZE_U32 |
> 0xb7) +
> +/* Transactional Memory checkpointed state:
> + * This is all GPRs, all VSX regs and a subset of SPRs
> + */
> +#define KVM_REG_PPC_TM (KVM_REG_PPC | 0x80000000)
> +/* TM GPRs */
> +#define KVM_REG_PPC_TM_GPR0 (KVM_REG_PPC_TM | KVM_REG_SIZE_U64 |
> 0) +#define KVM_REG_PPC_TM_GPR(n) (KVM_REG_PPC_TM_GPR0 + (n))
> +#define KVM_REG_PPC_TM_GPR31 (KVM_REG_PPC_TM | KVM_REG_SIZE_U64 |
> 0x1f) +/* TM VSX */
> +#define KVM_REG_PPC_TM_VSR0 (KVM_REG_PPC_TM | KVM_REG_SIZE_U128 |
> 0x20) +#define KVM_REG_PPC_TM_VSR(n) (KVM_REG_PPC_TM_VSR0 + (n))
> +#define KVM_REG_PPC_TM_VSR63 (KVM_REG_PPC_TM | KVM_REG_SIZE_U128
> | 0x5f) +/* TM SPRS */
> +#define KVM_REG_PPC_TM_CR (KVM_REG_PPC_TM | KVM_REG_SIZE_U64 |
> 0x60) +#define KVM_REG_PPC_TM_LR (KVM_REG_PPC_TM |
> KVM_REG_SIZE_U64 | 0x61) +#define KVM_REG_PPC_TM_CTR
> (KVM_REG_PPC_TM | KVM_REG_SIZE_U64 | 0x62) +#define
> KVM_REG_PPC_TM_FPSCR (KVM_REG_PPC_TM | KVM_REG_SIZE_U64 | 0x63)
> +#define KVM_REG_PPC_TM_AMR (KVM_REG_PPC_TM | KVM_REG_SIZE_U64 |
> 0x64) +#define KVM_REG_PPC_TM_PPR (KVM_REG_PPC_TM |
> KVM_REG_SIZE_U64 | 0x65) +#define KVM_REG_PPC_TM_VRSAVE
> (KVM_REG_PPC_TM | KVM_REG_SIZE_U64 | 0x66) +#define
> KVM_REG_PPC_TM_VSCR (KVM_REG_PPC_TM | KVM_REG_SIZE_U32 | 0x67)
> +#define KVM_REG_PPC_TM_DSCR (KVM_REG_PPC_TM | KVM_REG_SIZE_U64 |
> 0x68) +#define KVM_REG_PPC_TM_TAR (KVM_REG_PPC_TM |
> KVM_REG_SIZE_U64 | 0x69) + /* PPC64 eXternal Interrupt Controller
> Specification */ #define KVM_DEV_XICS_GRP_SOURCES 1 /*
> 64-bit source attributes */
>
> diff --git a/linux-headers/asm-x86/hyperv.h
> b/linux-headers/asm-x86/hyperv.h index b80420b..b8f1c01 100644
> --- a/linux-headers/asm-x86/hyperv.h
> +++ b/linux-headers/asm-x86/hyperv.h
> @@ -27,6 +27,19 @@
> #define HV_X64_MSR_VP_RUNTIME_AVAILABLE (1 << 0)
> /* Partition Reference Counter (HV_X64_MSR_TIME_REF_COUNT) available*/
> #define HV_X64_MSR_TIME_REF_COUNT_AVAILABLE (1 << 1)
> +
> +/*
> + * There is a single feature flag that signifies the presence of the MSR
> + * that can be used to retrieve both the local APIC Timer frequency as
> + * well as the TSC frequency.
> + */
> +
> +/* Local APIC timer frequency MSR (HV_X64_MSR_APIC_FREQUENCY) is
> available */ +#define HV_X64_MSR_APIC_FREQUENCY_AVAILABLE (1 << 11)
> +
> +/* TSC frequency MSR (HV_X64_MSR_TSC_FREQUENCY) is available */
> +#define HV_X64_MSR_TSC_FREQUENCY_AVAILABLE (1 << 11)
> +
> /*
> * Basic SynIC MSRs (HV_X64_MSR_SCONTROL through HV_X64_MSR_EOM
> * and HV_X64_MSR_SINT0 through HV_X64_MSR_SINT15) available
> @@ -136,6 +149,12 @@
> /* MSR used to read the per-partition time reference counter */
> #define HV_X64_MSR_TIME_REF_COUNT 0x40000020
>
> +/* MSR used to retrieve the TSC frequency */
> +#define HV_X64_MSR_TSC_FREQUENCY 0x40000022
> +
> +/* MSR used to retrieve the local APIC timer frequency */
> +#define HV_X64_MSR_APIC_FREQUENCY 0x40000023
> +
> /* Define the virtual APIC registers */
> #define HV_X64_MSR_EOI 0x40000070
> #define HV_X64_MSR_ICR 0x40000071
> diff --git a/linux-headers/asm-x86/kvm.h b/linux-headers/asm-x86/kvm.h
> index 5d9a303..d3a8778 100644
> --- a/linux-headers/asm-x86/kvm.h
> +++ b/linux-headers/asm-x86/kvm.h
> @@ -211,9 +211,9 @@ struct kvm_cpuid_entry2 {
> __u32 padding[3];
> };
>
> -#define KVM_CPUID_FLAG_SIGNIFCANT_INDEX 1
> -#define KVM_CPUID_FLAG_STATEFUL_FUNC 2
> -#define KVM_CPUID_FLAG_STATE_READ_NEXT 4
> +#define KVM_CPUID_FLAG_SIGNIFCANT_INDEX BIT(0)
> +#define KVM_CPUID_FLAG_STATEFUL_FUNC BIT(1)
> +#define KVM_CPUID_FLAG_STATE_READ_NEXT BIT(2)
>
> /* for KVM_SET_CPUID2 */
> struct kvm_cpuid2 {
> diff --git a/linux-headers/linux/kvm.h b/linux-headers/linux/kvm.h
> index 13e890c..5a49671 100644
> --- a/linux-headers/linux/kvm.h
> +++ b/linux-headers/linux/kvm.h
> @@ -518,6 +518,10 @@ struct kvm_ppc_smmu_info {
> /* machine type bits, to be used as argument to KVM_CREATE_VM */
> #define KVM_VM_S390_UCONTROL 1
>
> +/* on ppc, 0 indicate default, 1 should force HV and 2 PR */
> +#define KVM_VM_PPC_HV 1
> +#define KVM_VM_PPC_PR 2
> +
> #define KVM_S390_SIE_PAGE_OFFSET 1
>
> /*
> @@ -541,6 +545,7 @@ struct kvm_ppc_smmu_info {
> #define KVM_TRACE_ENABLE __KVM_DEPRECATED_MAIN_W_0x06
> #define KVM_TRACE_PAUSE __KVM_DEPRECATED_MAIN_0x07
> #define KVM_TRACE_DISABLE __KVM_DEPRECATED_MAIN_0x08
> +#define KVM_GET_EMULATED_CPUID _IOWR(KVMIO, 0x09, struct
> kvm_cpuid2)
>
> /*
> * Extension capability list.
> @@ -668,6 +673,7 @@ struct kvm_ppc_smmu_info {
> #define KVM_CAP_IRQ_XICS 92
> #define KVM_CAP_ARM_EL1_32BIT 93
> #define KVM_CAP_SPAPR_MULTITCE 94
> +#define KVM_CAP_EXT_EMUL_CPUID 95
>
> #ifdef KVM_CAP_IRQ_ROUTING
>
> @@ -843,6 +849,10 @@ struct kvm_device_attr {
> #define KVM_DEV_TYPE_FSL_MPIC_20 1
> #define KVM_DEV_TYPE_FSL_MPIC_42 2
> #define KVM_DEV_TYPE_XICS 3
> +#define KVM_DEV_TYPE_VFIO 4
> +#define KVM_DEV_VFIO_GROUP 1
> +#define KVM_DEV_VFIO_GROUP_ADD 1
> +#define KVM_DEV_VFIO_GROUP_DEL 2
>
> /*
> * ioctls for VM fds
> @@ -1012,6 +1022,7 @@ struct kvm_s390_ucas_mapping {
> /* VM is being stopped by host */
> #define KVM_KVMCLOCK_CTRL _IO(KVMIO, 0xad)
> #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)
>
> #define KVM_DEV_ASSIGN_ENABLE_IOMMU (1 << 0)
>
>
--
Gregory Kurz address@hidden
address@hidden
Software Engineer @ IBM/Meiosys http://www.ibm.com
Tel +33 (0)562 165 496
"Anarchy is about taking complete responsibility for yourself."
Alan Moore.
[Qemu-devel] [PULL 2/5] vfio-pci: Make use of new KVM-VFIO device, Alex Williamson, 2013/12/06
[Qemu-devel] [PULL 3/5] vfio-pci: Fix Nvidia MSI ACK through 0x88000 quirk, Alex Williamson, 2013/12/06
[Qemu-devel] [PULL 4/5] vfio-pci: Add debug config options to disable MSI/X KVM support, Alex Williamson, 2013/12/06