All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 0/2] header update request
@ 2013-06-06  3:59 Alexey Kardashevskiy
  2013-06-06  3:59 ` [Qemu-devel] [PATCH 1/2] linux-headers: Update to v3.10-rc4 Alexey Kardashevskiy
  2013-06-06  3:59 ` [Qemu-devel] [PATCH 2/2] KVM: PPC: Add dummy kvm_arch_init_irq_routing() Alexey Kardashevskiy
  0 siblings, 2 replies; 7+ messages in thread
From: Alexey Kardashevskiy @ 2013-06-06  3:59 UTC (permalink / raw)
  To: David Gibson
  Cc: Alexey Kardashevskiy, qemu-devel, Alexander Graf, qemu-trivial,
	qemu-ppc, Scott Wood

We need new headers for live migration and in-kernel interrupt controller support.
However just copying new headers breaks PPC so dummy kvm_arch_init_irq_routing() is
required as well.


Alexey Kardashevskiy (1):
  linux-headers: Update to v3.10-rc4

Scott Wood (1):
  KVM: PPC: Add dummy kvm_arch_init_irq_routing()

 linux-headers/asm-arm/kvm.h       |   12 ++---
 linux-headers/asm-mips/kvm.h      |   55 +++++++++++++++++++++++
 linux-headers/asm-mips/kvm_para.h |    1 +
 linux-headers/asm-powerpc/kvm.h   |   89 +++++++++++++++++++++++++++++++++++++
 linux-headers/asm-x86/kvm.h       |    1 -
 linux-headers/linux/kvm.h         |   42 ++++++++++++++---
 linux-headers/linux/vfio.h        |    1 +
 linux-headers/linux/vhost.h       |   28 ++++++++++++
 target-ppc/kvm.c                  |    4 ++
 9 files changed, 220 insertions(+), 13 deletions(-)
 create mode 100644 linux-headers/asm-mips/kvm.h
 create mode 100644 linux-headers/asm-mips/kvm_para.h

-- 
1.7.10.4

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Qemu-devel] [PATCH 1/2] linux-headers: Update to v3.10-rc4
  2013-06-06  3:59 [Qemu-devel] [PATCH 0/2] header update request Alexey Kardashevskiy
@ 2013-06-06  3:59 ` Alexey Kardashevskiy
  2013-06-06  3:59 ` [Qemu-devel] [PATCH 2/2] KVM: PPC: Add dummy kvm_arch_init_irq_routing() Alexey Kardashevskiy
  1 sibling, 0 replies; 7+ messages in thread
From: Alexey Kardashevskiy @ 2013-06-06  3:59 UTC (permalink / raw)
  To: David Gibson
  Cc: Alexey Kardashevskiy, qemu-devel, Alexander Graf, qemu-trivial,
	qemu-ppc, Scott Wood

This adds symbols required for sPAPR live migration and in-kernel XICS
interrupt controller.

Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
---
 linux-headers/asm-arm/kvm.h       |   12 ++---
 linux-headers/asm-mips/kvm.h      |   55 +++++++++++++++++++++++
 linux-headers/asm-mips/kvm_para.h |    1 +
 linux-headers/asm-powerpc/kvm.h   |   89 +++++++++++++++++++++++++++++++++++++
 linux-headers/asm-x86/kvm.h       |    1 -
 linux-headers/linux/kvm.h         |   42 ++++++++++++++---
 linux-headers/linux/vfio.h        |    1 +
 linux-headers/linux/vhost.h       |   28 ++++++++++++
 8 files changed, 216 insertions(+), 13 deletions(-)
 create mode 100644 linux-headers/asm-mips/kvm.h
 create mode 100644 linux-headers/asm-mips/kvm_para.h

diff --git a/linux-headers/asm-arm/kvm.h b/linux-headers/asm-arm/kvm.h
index 023bfeb..c1ee007 100644
--- a/linux-headers/asm-arm/kvm.h
+++ b/linux-headers/asm-arm/kvm.h
@@ -53,12 +53,12 @@
 #define KVM_ARM_FIQ_spsr	fiq_regs[7]
 
 struct kvm_regs {
-	struct pt_regs usr_regs;/* R0_usr - R14_usr, PC, CPSR */
-	__u32 svc_regs[3];	/* SP_svc, LR_svc, SPSR_svc */
-	__u32 abt_regs[3];	/* SP_abt, LR_abt, SPSR_abt */
-	__u32 und_regs[3];	/* SP_und, LR_und, SPSR_und */
-	__u32 irq_regs[3];	/* SP_irq, LR_irq, SPSR_irq */
-	__u32 fiq_regs[8];	/* R8_fiq - R14_fiq, SPSR_fiq */
+	struct pt_regs usr_regs;	/* R0_usr - R14_usr, PC, CPSR */
+	unsigned long svc_regs[3];	/* SP_svc, LR_svc, SPSR_svc */
+	unsigned long abt_regs[3];	/* SP_abt, LR_abt, SPSR_abt */
+	unsigned long und_regs[3];	/* SP_und, LR_und, SPSR_und */
+	unsigned long irq_regs[3];	/* SP_irq, LR_irq, SPSR_irq */
+	unsigned long fiq_regs[8];	/* R8_fiq - R14_fiq, SPSR_fiq */
 };
 
 /* Supported Processor Types */
diff --git a/linux-headers/asm-mips/kvm.h b/linux-headers/asm-mips/kvm.h
new file mode 100644
index 0000000..85789ea
--- /dev/null
+++ b/linux-headers/asm-mips/kvm.h
@@ -0,0 +1,55 @@
+/*
+* This file is subject to the terms and conditions of the GNU General Public
+* License.  See the file "COPYING" in the main directory of this archive
+* for more details.
+*
+* Copyright (C) 2012  MIPS Technologies, Inc.  All rights reserved.
+* Authors: Sanjay Lal <sanjayl@kymasys.com>
+*/
+
+#ifndef __LINUX_KVM_MIPS_H
+#define __LINUX_KVM_MIPS_H
+
+#include <linux/types.h>
+
+#define __KVM_MIPS
+
+#define N_MIPS_COPROC_REGS      32
+#define N_MIPS_COPROC_SEL   	8
+
+/* for KVM_GET_REGS and KVM_SET_REGS */
+struct kvm_regs {
+	__u32 gprs[32];
+	__u32 hi;
+	__u32 lo;
+	__u32 pc;
+
+	__u32 cp0reg[N_MIPS_COPROC_REGS][N_MIPS_COPROC_SEL];
+};
+
+/* for KVM_GET_SREGS and KVM_SET_SREGS */
+struct kvm_sregs {
+};
+
+/* for KVM_GET_FPU and KVM_SET_FPU */
+struct kvm_fpu {
+};
+
+struct kvm_debug_exit_arch {
+};
+
+/* for KVM_SET_GUEST_DEBUG */
+struct kvm_guest_debug_arch {
+};
+
+struct kvm_mips_interrupt {
+	/* in */
+	__u32 cpu;
+	__u32 irq;
+};
+
+/* definition of registers in kvm_run */
+struct kvm_sync_regs {
+};
+
+#endif /* __LINUX_KVM_MIPS_H */
diff --git a/linux-headers/asm-mips/kvm_para.h b/linux-headers/asm-mips/kvm_para.h
new file mode 100644
index 0000000..14fab8f
--- /dev/null
+++ b/linux-headers/asm-mips/kvm_para.h
@@ -0,0 +1 @@
+#include <asm-generic/kvm_para.h>
diff --git a/linux-headers/asm-powerpc/kvm.h b/linux-headers/asm-powerpc/kvm.h
index ef072b1..0fb1a6e 100644
--- a/linux-headers/asm-powerpc/kvm.h
+++ b/linux-headers/asm-powerpc/kvm.h
@@ -25,6 +25,8 @@
 /* Select powerpc specific features in <linux/kvm.h> */
 #define __KVM_HAVE_SPAPR_TCE
 #define __KVM_HAVE_PPC_SMT
+#define __KVM_HAVE_IRQCHIP
+#define __KVM_HAVE_IRQ_LINE
 
 struct kvm_regs {
 	__u64 pc;
@@ -272,8 +274,31 @@ struct kvm_debug_exit_arch {
 
 /* for KVM_SET_GUEST_DEBUG */
 struct kvm_guest_debug_arch {
+	struct {
+		/* H/W breakpoint/watchpoint address */
+		__u64 addr;
+		/*
+		 * 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];
 };
 
+/* Debug related defines */
+/*
+ * kvm_guest_debug->control is a 32 bit field. The lower 16 bits are generic
+ * and upper 16 bits are architecture specific. Architecture specific defines
+ * that ioctl is for setting hardware breakpoint or software breakpoint.
+ */
+#define KVM_GUESTDBG_USE_SW_BP		0x00010000
+#define KVM_GUESTDBG_USE_HW_BP		0x00020000
+
 /* definition of registers in kvm_run */
 struct kvm_sync_regs {
 };
@@ -299,6 +324,12 @@ struct kvm_allocate_rma {
 	__u64 rma_size;
 };
 
+/* for KVM_CAP_PPC_RTAS */
+struct kvm_rtas_token_args {
+	char name[120];
+	__u64 token;	/* Use a token of 0 to undefine a mapping */
+};
+
 struct kvm_book3e_206_tlb_entry {
 	__u32 mas8;
 	__u32 mas1;
@@ -359,6 +390,26 @@ struct kvm_get_htab_header {
 	__u16	n_invalid;
 };
 
+/* Per-vcpu XICS interrupt controller state */
+#define KVM_REG_PPC_ICP_STATE	(KVM_REG_PPC | KVM_REG_SIZE_U64 | 0x8c)
+
+#define  KVM_REG_PPC_ICP_CPPR_SHIFT	56	/* current proc priority */
+#define  KVM_REG_PPC_ICP_CPPR_MASK	0xff
+#define  KVM_REG_PPC_ICP_XISR_SHIFT	32	/* interrupt status field */
+#define  KVM_REG_PPC_ICP_XISR_MASK	0xffffff
+#define  KVM_REG_PPC_ICP_MFRR_SHIFT	24	/* pending IPI priority */
+#define  KVM_REG_PPC_ICP_MFRR_MASK	0xff
+#define  KVM_REG_PPC_ICP_PPRI_SHIFT	16	/* pending irq priority */
+#define  KVM_REG_PPC_ICP_PPRI_MASK	0xff
+
+/* Device control API: PPC-specific devices */
+#define KVM_DEV_MPIC_GRP_MISC		1
+#define   KVM_DEV_MPIC_BASE_ADDR	0	/* 64-bit */
+
+#define KVM_DEV_MPIC_GRP_REGISTER	2	/* 32-bit */
+#define KVM_DEV_MPIC_GRP_IRQ_ACTIVE	3	/* 32-bit */
+
+/* One-Reg API: PPC-specific registers */
 #define KVM_REG_PPC_HIOR	(KVM_REG_PPC | KVM_REG_SIZE_U64 | 0x1)
 #define KVM_REG_PPC_IAC1	(KVM_REG_PPC | KVM_REG_SIZE_U64 | 0x2)
 #define KVM_REG_PPC_IAC2	(KVM_REG_PPC | KVM_REG_SIZE_U64 | 0x3)
@@ -422,4 +473,42 @@ struct kvm_get_htab_header {
 #define KVM_REG_PPC_CLEAR_TSR	(KVM_REG_PPC | KVM_REG_SIZE_U32 | 0x88)
 #define KVM_REG_PPC_TCR		(KVM_REG_PPC | KVM_REG_SIZE_U32 | 0x89)
 #define KVM_REG_PPC_TSR		(KVM_REG_PPC | KVM_REG_SIZE_U32 | 0x8a)
+
+/* Debugging: Special instruction for software breakpoint */
+#define KVM_REG_PPC_DEBUG_INST	(KVM_REG_PPC | KVM_REG_SIZE_U32 | 0x8b)
+
+/* MMU registers */
+#define KVM_REG_PPC_MAS0	(KVM_REG_PPC | KVM_REG_SIZE_U32 | 0x8c)
+#define KVM_REG_PPC_MAS1	(KVM_REG_PPC | KVM_REG_SIZE_U32 | 0x8d)
+#define KVM_REG_PPC_MAS2	(KVM_REG_PPC | KVM_REG_SIZE_U64 | 0x8e)
+#define KVM_REG_PPC_MAS7_3	(KVM_REG_PPC | KVM_REG_SIZE_U64 | 0x8f)
+#define KVM_REG_PPC_MAS4	(KVM_REG_PPC | KVM_REG_SIZE_U32 | 0x90)
+#define KVM_REG_PPC_MAS6	(KVM_REG_PPC | KVM_REG_SIZE_U32 | 0x91)
+#define KVM_REG_PPC_MMUCFG	(KVM_REG_PPC | KVM_REG_SIZE_U32 | 0x92)
+/*
+ * TLBnCFG fields TLBnCFG_N_ENTRY and TLBnCFG_ASSOC can be changed only using
+ * KVM_CAP_SW_TLB ioctl
+ */
+#define KVM_REG_PPC_TLB0CFG	(KVM_REG_PPC | KVM_REG_SIZE_U32 | 0x93)
+#define KVM_REG_PPC_TLB1CFG	(KVM_REG_PPC | KVM_REG_SIZE_U32 | 0x94)
+#define KVM_REG_PPC_TLB2CFG	(KVM_REG_PPC | KVM_REG_SIZE_U32 | 0x95)
+#define KVM_REG_PPC_TLB3CFG	(KVM_REG_PPC | KVM_REG_SIZE_U32 | 0x96)
+#define KVM_REG_PPC_TLB0PS	(KVM_REG_PPC | KVM_REG_SIZE_U32 | 0x97)
+#define KVM_REG_PPC_TLB1PS	(KVM_REG_PPC | KVM_REG_SIZE_U32 | 0x98)
+#define KVM_REG_PPC_TLB2PS	(KVM_REG_PPC | KVM_REG_SIZE_U32 | 0x99)
+#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)
+
+/* PPC64 eXternal Interrupt Controller Specification */
+#define KVM_DEV_XICS_GRP_SOURCES	1	/* 64-bit source attributes */
+
+/* Layout of 64-bit source attribute values */
+#define  KVM_XICS_DESTINATION_SHIFT	0
+#define  KVM_XICS_DESTINATION_MASK	0xffffffffULL
+#define  KVM_XICS_PRIORITY_SHIFT	32
+#define  KVM_XICS_PRIORITY_MASK		0xff
+#define  KVM_XICS_LEVEL_SENSITIVE	(1ULL << 40)
+#define  KVM_XICS_MASKED		(1ULL << 41)
+#define  KVM_XICS_PENDING		(1ULL << 42)
+
 #endif /* __LINUX_KVM_POWERPC_H */
diff --git a/linux-headers/asm-x86/kvm.h b/linux-headers/asm-x86/kvm.h
index a65ec29..5d9a303 100644
--- a/linux-headers/asm-x86/kvm.h
+++ b/linux-headers/asm-x86/kvm.h
@@ -29,7 +29,6 @@
 #define __KVM_HAVE_PIT
 #define __KVM_HAVE_IOAPIC
 #define __KVM_HAVE_IRQ_LINE
-#define __KVM_HAVE_DEVICE_ASSIGNMENT
 #define __KVM_HAVE_MSI
 #define __KVM_HAVE_USER_NMI
 #define __KVM_HAVE_GUEST_DEBUG
diff --git a/linux-headers/linux/kvm.h b/linux-headers/linux/kvm.h
index eb02d8a..c614070 100644
--- a/linux-headers/linux/kvm.h
+++ b/linux-headers/linux/kvm.h
@@ -561,9 +561,7 @@ struct kvm_ppc_smmu_info {
 #define KVM_CAP_MP_STATE 14
 #define KVM_CAP_COALESCED_MMIO 15
 #define KVM_CAP_SYNC_MMU 16  /* Changes to host mmap are reflected in guest */
-#ifdef __KVM_HAVE_DEVICE_ASSIGNMENT
 #define KVM_CAP_DEVICE_ASSIGNMENT 17
-#endif
 #define KVM_CAP_IOMMU 18
 #ifdef __KVM_HAVE_MSI
 #define KVM_CAP_DEVICE_MSI 20
@@ -579,13 +577,9 @@ struct kvm_ppc_smmu_info {
 #ifdef __KVM_HAVE_PIT
 #define KVM_CAP_REINJECT_CONTROL 24
 #endif
-#ifdef __KVM_HAVE_IOAPIC
 #define KVM_CAP_IRQ_ROUTING 25
-#endif
 #define KVM_CAP_IRQ_INJECT_STATUS 26
-#ifdef __KVM_HAVE_DEVICE_ASSIGNMENT
 #define KVM_CAP_DEVICE_DEASSIGNMENT 27
-#endif
 #ifdef __KVM_HAVE_MSIX
 #define KVM_CAP_DEVICE_MSIX 28
 #endif
@@ -668,6 +662,10 @@ struct kvm_ppc_smmu_info {
 #define KVM_CAP_PPC_EPR 86
 #define KVM_CAP_ARM_PSCI 87
 #define KVM_CAP_ARM_SET_DEVICE_ADDR 88
+#define KVM_CAP_DEVICE_CTRL 89
+#define KVM_CAP_IRQ_MPIC 90
+#define KVM_CAP_PPC_RTAS 91
+#define KVM_CAP_IRQ_XICS 92
 
 #ifdef KVM_CAP_IRQ_ROUTING
 
@@ -821,6 +819,28 @@ struct kvm_arm_device_addr {
 };
 
 /*
+ * Device control API, available with KVM_CAP_DEVICE_CTRL
+ */
+#define KVM_CREATE_DEVICE_TEST		1
+
+struct kvm_create_device {
+	__u32	type;	/* in: KVM_DEV_TYPE_xxx */
+	__u32	fd;	/* out: device handle */
+	__u32	flags;	/* in: KVM_CREATE_DEVICE_xxx */
+};
+
+struct kvm_device_attr {
+	__u32	flags;		/* no flags currently defined */
+	__u32	group;		/* device-defined */
+	__u64	attr;		/* group-defined */
+	__u64	addr;		/* userspace address of attr data */
+};
+
+#define KVM_DEV_TYPE_FSL_MPIC_20	1
+#define KVM_DEV_TYPE_FSL_MPIC_42	2
+#define KVM_DEV_TYPE_XICS		3
+
+/*
  * ioctls for VM fds
  */
 #define KVM_SET_MEMORY_REGION     _IOW(KVMIO,  0x40, struct kvm_memory_region)
@@ -907,6 +927,16 @@ struct kvm_s390_ucas_mapping {
 #define KVM_PPC_GET_HTAB_FD	  _IOW(KVMIO,  0xaa, struct kvm_get_htab_fd)
 /* Available with KVM_CAP_ARM_SET_DEVICE_ADDR */
 #define KVM_ARM_SET_DEVICE_ADDR	  _IOW(KVMIO,  0xab, struct kvm_arm_device_addr)
+/* Available with KVM_CAP_PPC_RTAS */
+#define KVM_PPC_RTAS_DEFINE_TOKEN _IOW(KVMIO,  0xac, struct kvm_rtas_token_args)
+
+/* ioctl for vm fd */
+#define KVM_CREATE_DEVICE	  _IOWR(KVMIO,  0xe0, struct kvm_create_device)
+
+/* ioctls for fds returned by KVM_CREATE_DEVICE */
+#define KVM_SET_DEVICE_ATTR	  _IOW(KVMIO,  0xe1, struct kvm_device_attr)
+#define KVM_GET_DEVICE_ATTR	  _IOW(KVMIO,  0xe2, struct kvm_device_attr)
+#define KVM_HAS_DEVICE_ATTR	  _IOW(KVMIO,  0xe3, struct kvm_device_attr)
 
 /*
  * ioctls for vcpu fds
diff --git a/linux-headers/linux/vfio.h b/linux-headers/linux/vfio.h
index e094121..7ec1864 100644
--- a/linux-headers/linux/vfio.h
+++ b/linux-headers/linux/vfio.h
@@ -319,6 +319,7 @@ enum {
 	VFIO_PCI_INTX_IRQ_INDEX,
 	VFIO_PCI_MSI_IRQ_INDEX,
 	VFIO_PCI_MSIX_IRQ_INDEX,
+	VFIO_PCI_ERR_IRQ_INDEX,
 	VFIO_PCI_NUM_IRQS
 };
 
diff --git a/linux-headers/linux/vhost.h b/linux-headers/linux/vhost.h
index 165a484..c656f61 100644
--- a/linux-headers/linux/vhost.h
+++ b/linux-headers/linux/vhost.h
@@ -127,4 +127,32 @@ struct vhost_memory {
 /* vhost-net should add virtio_net_hdr for RX, and strip for TX packets. */
 #define VHOST_NET_F_VIRTIO_NET_HDR 27
 
+/* VHOST_SCSI specific definitions */
+
+/*
+ * Used by QEMU userspace to ensure a consistent vhost-scsi ABI.
+ *
+ * ABI Rev 0: July 2012 version starting point for v3.6-rc merge candidate +
+ *            RFC-v2 vhost-scsi userspace.  Add GET_ABI_VERSION ioctl usage
+ * ABI Rev 1: January 2013. Ignore vhost_tpgt filed in struct vhost_scsi_target.
+ *            All the targets under vhost_wwpn can be seen and used by guset.
+ */
+
+#define VHOST_SCSI_ABI_VERSION	1
+
+struct vhost_scsi_target {
+	int abi_version;
+	char vhost_wwpn[224]; /* TRANSPORT_IQN_LEN */
+	unsigned short vhost_tpgt;
+	unsigned short reserved;
+};
+
+#define VHOST_SCSI_SET_ENDPOINT _IOW(VHOST_VIRTIO, 0x40, struct vhost_scsi_target)
+#define VHOST_SCSI_CLEAR_ENDPOINT _IOW(VHOST_VIRTIO, 0x41, struct vhost_scsi_target)
+/* Changing this breaks userspace. */
+#define VHOST_SCSI_GET_ABI_VERSION _IOW(VHOST_VIRTIO, 0x42, int)
+/* Set and get the events missed flag */
+#define VHOST_SCSI_SET_EVENTS_MISSED _IOW(VHOST_VIRTIO, 0x43, __u32)
+#define VHOST_SCSI_GET_EVENTS_MISSED _IOW(VHOST_VIRTIO, 0x44, __u32)
+
 #endif
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [Qemu-devel] [PATCH 2/2] KVM: PPC: Add dummy kvm_arch_init_irq_routing()
  2013-06-06  3:59 [Qemu-devel] [PATCH 0/2] header update request Alexey Kardashevskiy
  2013-06-06  3:59 ` [Qemu-devel] [PATCH 1/2] linux-headers: Update to v3.10-rc4 Alexey Kardashevskiy
@ 2013-06-06  3:59 ` Alexey Kardashevskiy
  2013-06-06 15:59   ` Scott Wood
  2013-06-08  7:24   ` [Qemu-devel] [Qemu-trivial] " Michael Tokarev
  1 sibling, 2 replies; 7+ messages in thread
From: Alexey Kardashevskiy @ 2013-06-06  3:59 UTC (permalink / raw)
  To: David Gibson
  Cc: aik, qemu-devel, Alexander Graf, qemu-trivial, qemu-ppc, Scott Wood

From: Scott Wood <scottwood@freescale.com>

The common KVM code insists on calling kvm_arch_init_irq_routing()
as soon as it sees kernel header support for it (regardless of whether
QEMU supports it).  Provide a dummy function to satisfy this.

Unlike x86, PPC does not have one default irqchip, so there's no common
code that we'd stick here.  Even if you ignore the routes themselves,
which even on x86 are not set up in this function, the initial XICS
kernel implementation will not support IRQ routing, so it's best to
leave even the general feature flags up to the specific irqchip code.

Signed-off-by: Scott Wood <scottwood@freescale.com>
Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
---
 target-ppc/kvm.c |    4 ++++
 1 file changed, 4 insertions(+)

diff --git a/target-ppc/kvm.c b/target-ppc/kvm.c
index 3ab2946..2bbc3b8 100644
--- a/target-ppc/kvm.c
+++ b/target-ppc/kvm.c
@@ -1797,3 +1797,7 @@ int kvm_arch_on_sigbus(int code, void *addr)
 {
     return 1;
 }
+
+void kvm_arch_init_irq_routing(KVMState *s)
+{
+}
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [Qemu-devel] [PATCH 2/2] KVM: PPC: Add dummy kvm_arch_init_irq_routing()
  2013-06-06  3:59 ` [Qemu-devel] [PATCH 2/2] KVM: PPC: Add dummy kvm_arch_init_irq_routing() Alexey Kardashevskiy
@ 2013-06-06 15:59   ` Scott Wood
  2013-06-08  7:24   ` [Qemu-devel] [Qemu-trivial] " Michael Tokarev
  1 sibling, 0 replies; 7+ messages in thread
From: Scott Wood @ 2013-06-06 15:59 UTC (permalink / raw)
  To: Alexey Kardashevskiy
  Cc: Alexander Graf, qemu-devel, qemu-trivial, qemu-ppc, David Gibson

On 06/05/2013 10:59:06 PM, Alexey Kardashevskiy wrote:
> From: Scott Wood <scottwood@freescale.com>
> 
> The common KVM code insists on calling kvm_arch_init_irq_routing()
> as soon as it sees kernel header support for it (regardless of whether
> QEMU supports it).  Provide a dummy function to satisfy this.
> 
> Unlike x86, PPC does not have one default irqchip, so there's no  
> common
> code that we'd stick here.  Even if you ignore the routes themselves,
> which even on x86 are not set up in this function, the initial XICS
> kernel implementation will not support IRQ routing, so it's best to
> leave even the general feature flags up to the specific irqchip code.
> 
> Signed-off-by: Scott Wood <scottwood@freescale.com>
> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
> ---
>  target-ppc/kvm.c |    4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/target-ppc/kvm.c b/target-ppc/kvm.c
> index 3ab2946..2bbc3b8 100644
> --- a/target-ppc/kvm.c
> +++ b/target-ppc/kvm.c
> @@ -1797,3 +1797,7 @@ int kvm_arch_on_sigbus(int code, void *addr)
>  {
>      return 1;
>  }
> +
> +void kvm_arch_init_irq_routing(KVMState *s)
> +{
> +}

This should come before the header update, to avoid breaking  
bisectability.

-Scott

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Qemu-devel] [Qemu-trivial] [PATCH 2/2] KVM: PPC: Add dummy kvm_arch_init_irq_routing()
  2013-06-06  3:59 ` [Qemu-devel] [PATCH 2/2] KVM: PPC: Add dummy kvm_arch_init_irq_routing() Alexey Kardashevskiy
  2013-06-06 15:59   ` Scott Wood
@ 2013-06-08  7:24   ` Michael Tokarev
  2013-06-08  8:33     ` Alexey Kardashevskiy
  2013-06-10 18:40     ` Scott Wood
  1 sibling, 2 replies; 7+ messages in thread
From: Michael Tokarev @ 2013-06-08  7:24 UTC (permalink / raw)
  To: Alexey Kardashevskiy
  Cc: qemu-trivial, Alexander Graf, qemu-devel, qemu-ppc, Scott Wood,
	David Gibson

06.06.2013 07:59, Alexey Kardashevskiy wrote:
> From: Scott Wood <scottwood@freescale.com>
> 
> The common KVM code insists on calling kvm_arch_init_irq_routing()
> as soon as it sees kernel header support for it (regardless of whether
> QEMU supports it).  Provide a dummy function to satisfy this.
> 
> Unlike x86, PPC does not have one default irqchip, so there's no common
> code that we'd stick here.  Even if you ignore the routes themselves,
> which even on x86 are not set up in this function, the initial XICS
> kernel implementation will not support IRQ routing, so it's best to
> leave even the general feature flags up to the specific irqchip code.

As Scott Wood already pointed out, this should come in before the
actual header update, which is no problem.  We'll have to deal
with a new warning (-Wmissing-prototypes) which can be dealt with
by wrapping this function into #ifdef KVM_CAP_IRQ_ROUTING .. #endif
(I can add this).

But how about other architectures?  Before, this function were only
defined for x86, now it is defined for two arches - x86 and ppc.
Aren't other arches need this as well?

Thanks,

/mjt

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Qemu-devel] [Qemu-trivial] [PATCH 2/2] KVM: PPC: Add dummy kvm_arch_init_irq_routing()
  2013-06-08  7:24   ` [Qemu-devel] [Qemu-trivial] " Michael Tokarev
@ 2013-06-08  8:33     ` Alexey Kardashevskiy
  2013-06-10 18:40     ` Scott Wood
  1 sibling, 0 replies; 7+ messages in thread
From: Alexey Kardashevskiy @ 2013-06-08  8:33 UTC (permalink / raw)
  To: Michael Tokarev
  Cc: qemu-trivial, Alexander Graf, qemu-devel, qemu-ppc, Scott Wood,
	David Gibson

On 06/08/2013 05:24 PM, Michael Tokarev wrote:
> 06.06.2013 07:59, Alexey Kardashevskiy wrote:
>> From: Scott Wood <scottwood@freescale.com>
>>
>> The common KVM code insists on calling kvm_arch_init_irq_routing()
>> as soon as it sees kernel header support for it (regardless of whether
>> QEMU supports it).  Provide a dummy function to satisfy this.
>>
>> Unlike x86, PPC does not have one default irqchip, so there's no common
>> code that we'd stick here.  Even if you ignore the routes themselves,
>> which even on x86 are not set up in this function, the initial XICS
>> kernel implementation will not support IRQ routing, so it's best to
>> leave even the general feature flags up to the specific irqchip code.
> 
> As Scott Wood already pointed out, this should come in before the
> actual header update, which is no problem.  We'll have to deal
> with a new warning (-Wmissing-prototypes) which can be dealt with
> by wrapping this function into #ifdef KVM_CAP_IRQ_ROUTING .. #endif
> (I can add this).

Ah. I'll repost it early next week.

> 
> But how about other architectures?  Before, this function were only
> defined for x86, now it is defined for two arches - x86 and ppc.
> Aren't other arches need this as well?

Good point, will check (and fix if needed). Thanks!


-- 
Alexey

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Qemu-devel] [Qemu-trivial] [PATCH 2/2] KVM: PPC: Add dummy kvm_arch_init_irq_routing()
  2013-06-08  7:24   ` [Qemu-devel] [Qemu-trivial] " Michael Tokarev
  2013-06-08  8:33     ` Alexey Kardashevskiy
@ 2013-06-10 18:40     ` Scott Wood
  1 sibling, 0 replies; 7+ messages in thread
From: Scott Wood @ 2013-06-10 18:40 UTC (permalink / raw)
  To: Michael Tokarev
  Cc: Alexey Kardashevskiy, Alexander Graf, qemu-devel, qemu-trivial,
	qemu-ppc, David Gibson

On 06/08/2013 02:24:21 AM, Michael Tokarev wrote:
> 06.06.2013 07:59, Alexey Kardashevskiy wrote:
> > From: Scott Wood <scottwood@freescale.com>
> >
> > The common KVM code insists on calling kvm_arch_init_irq_routing()
> > as soon as it sees kernel header support for it (regardless of  
> whether
> > QEMU supports it).  Provide a dummy function to satisfy this.
> >
> > Unlike x86, PPC does not have one default irqchip, so there's no  
> common
> > code that we'd stick here.  Even if you ignore the routes  
> themselves,
> > which even on x86 are not set up in this function, the initial XICS
> > kernel implementation will not support IRQ routing, so it's best to
> > leave even the general feature flags up to the specific irqchip  
> code.
> 
> As Scott Wood already pointed out, this should come in before the
> actual header update, which is no problem.  We'll have to deal
> with a new warning (-Wmissing-prototypes) which can be dealt with
> by wrapping this function into #ifdef KVM_CAP_IRQ_ROUTING .. #endif
> (I can add this).

Why?  I don't see where the prototype is guarded by that, and I don't  
see a warning when applying this patch to master...

> But how about other architectures?  Before, this function were only
> defined for x86, now it is defined for two arches - x86 and ppc.
> Aren't other arches need this as well?

Yes, it looks like KVM_CAP_IRQ_ROUTING is no longer conditionally  
defined, so all KVM architectures will need this (unless they provide a  
non-dummy version).  Are weak functions acceptable in QEMU?  I don't  
see any current examples.

-Scott

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2013-06-10 18:41 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-06-06  3:59 [Qemu-devel] [PATCH 0/2] header update request Alexey Kardashevskiy
2013-06-06  3:59 ` [Qemu-devel] [PATCH 1/2] linux-headers: Update to v3.10-rc4 Alexey Kardashevskiy
2013-06-06  3:59 ` [Qemu-devel] [PATCH 2/2] KVM: PPC: Add dummy kvm_arch_init_irq_routing() Alexey Kardashevskiy
2013-06-06 15:59   ` Scott Wood
2013-06-08  7:24   ` [Qemu-devel] [Qemu-trivial] " Michael Tokarev
2013-06-08  8:33     ` Alexey Kardashevskiy
2013-06-10 18:40     ` Scott Wood

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.