|
@@ -517,6 +517,82 @@ struct kvm_fpu {
|
|
|
__u32 pad2;
|
|
|
};
|
|
|
|
|
|
+4.23 KVM_CREATE_IRQCHIP
|
|
|
+
|
|
|
+Capability: KVM_CAP_IRQCHIP
|
|
|
+Architectures: x86, ia64
|
|
|
+Type: vm ioctl
|
|
|
+Parameters: none
|
|
|
+Returns: 0 on success, -1 on error
|
|
|
+
|
|
|
+Creates an interrupt controller model in the kernel. On x86, creates a virtual
|
|
|
+ioapic, a virtual PIC (two PICs, nested), and sets up future vcpus to have a
|
|
|
+local APIC. IRQ routing for GSIs 0-15 is set to both PIC and IOAPIC; GSI 16-23
|
|
|
+only go to the IOAPIC. On ia64, a IOSAPIC is created.
|
|
|
+
|
|
|
+4.24 KVM_IRQ_LINE
|
|
|
+
|
|
|
+Capability: KVM_CAP_IRQCHIP
|
|
|
+Architectures: x86, ia64
|
|
|
+Type: vm ioctl
|
|
|
+Parameters: struct kvm_irq_level
|
|
|
+Returns: 0 on success, -1 on error
|
|
|
+
|
|
|
+Sets the level of a GSI input to the interrupt controller model in the kernel.
|
|
|
+Requires that an interrupt controller model has been previously created with
|
|
|
+KVM_CREATE_IRQCHIP. Note that edge-triggered interrupts require the level
|
|
|
+to be set to 1 and then back to 0.
|
|
|
+
|
|
|
+struct kvm_irq_level {
|
|
|
+ union {
|
|
|
+ __u32 irq; /* GSI */
|
|
|
+ __s32 status; /* not used for KVM_IRQ_LEVEL */
|
|
|
+ };
|
|
|
+ __u32 level; /* 0 or 1 */
|
|
|
+};
|
|
|
+
|
|
|
+4.25 KVM_GET_IRQCHIP
|
|
|
+
|
|
|
+Capability: KVM_CAP_IRQCHIP
|
|
|
+Architectures: x86, ia64
|
|
|
+Type: vm ioctl
|
|
|
+Parameters: struct kvm_irqchip (in/out)
|
|
|
+Returns: 0 on success, -1 on error
|
|
|
+
|
|
|
+Reads the state of a kernel interrupt controller created with
|
|
|
+KVM_CREATE_IRQCHIP into a buffer provided by the caller.
|
|
|
+
|
|
|
+struct kvm_irqchip {
|
|
|
+ __u32 chip_id; /* 0 = PIC1, 1 = PIC2, 2 = IOAPIC */
|
|
|
+ __u32 pad;
|
|
|
+ union {
|
|
|
+ char dummy[512]; /* reserving space */
|
|
|
+ struct kvm_pic_state pic;
|
|
|
+ struct kvm_ioapic_state ioapic;
|
|
|
+ } chip;
|
|
|
+};
|
|
|
+
|
|
|
+4.26 KVM_SET_IRQCHIP
|
|
|
+
|
|
|
+Capability: KVM_CAP_IRQCHIP
|
|
|
+Architectures: x86, ia64
|
|
|
+Type: vm ioctl
|
|
|
+Parameters: struct kvm_irqchip (in)
|
|
|
+Returns: 0 on success, -1 on error
|
|
|
+
|
|
|
+Sets the state of a kernel interrupt controller created with
|
|
|
+KVM_CREATE_IRQCHIP from a buffer provided by the caller.
|
|
|
+
|
|
|
+struct kvm_irqchip {
|
|
|
+ __u32 chip_id; /* 0 = PIC1, 1 = PIC2, 2 = IOAPIC */
|
|
|
+ __u32 pad;
|
|
|
+ union {
|
|
|
+ char dummy[512]; /* reserving space */
|
|
|
+ struct kvm_pic_state pic;
|
|
|
+ struct kvm_ioapic_state ioapic;
|
|
|
+ } chip;
|
|
|
+};
|
|
|
+
|
|
|
5. The kvm_run structure
|
|
|
|
|
|
Application code obtains a pointer to the kvm_run structure by
|