Avi Kivity wrote:
> 
> Other than these minor issues, the patch looks fine.

Here is the rebased one. 

If gsi/level is not enough, then following patch can fix this. But not
sure so far.
thx,eddie

against: cfc329b216bc3e54fe1107e8f714c7b3bc133224

 drivers/kvm/Makefile   |    2
 drivers/kvm/i8259.c    |  440
+++++++++++++++++++++++++++++++++++++++++++++++++
 drivers/kvm/irq.c      |   59 ++++++
 drivers/kvm/irq.h      |   64 +++++++
 drivers/kvm/kvm.h      |   12 +
 drivers/kvm/kvm_main.c |   46 ++++-
 drivers/kvm/svm.c      |   55 +++++-
 drivers/kvm/vmx.c      |   83 ++++++++-
 include/linux/kvm.h    |   14 +
 9 files changed, 749 insertions(+), 26 deletions(-)

diff --git a/user/kvmctl.c b/user/kvmctl.c
index b9c9f2b..2713c82 100644
--- a/user/kvmctl.c
+++ b/user/kvmctl.c
@@ -425,7 +425,8 @@ int kvm_set_irq_level(kvm_context_t kvm, int irq,
int level)
        if (!kvm->irqchip_in_kernel)
                return 0;
        event.level = level;
-       event.gsi = irq;
+       event.pin = irq % 8;
+       event.chip = irq / 8;
        r = ioctl(kvm->vm_fd, KVM_IRQ_LINE, &event);
        if (r == -1)
                perror("kvm_set_irq_level");


diff --git a/drivers/kvm/kvm_main.c b/drivers/kvm/kvm_main.c
index 02bf208..642b3cd 100644
--- a/drivers/kvm/kvm_main.c
+++ b/drivers/kvm/kvm_main.c
@@ -2875,9 +2875,9 @@ static long kvm_vm_ioctl(struct file *filp,
                if (copy_from_user(&irq_event, argp, sizeof irq_event))
                        goto out;
                if (irqchip_in_kernel(kvm)) {
-                       if (irq_event.gsi < 16)
+                       if (irq_event.chip < 2)
                                kvm_pic_set_irq(pic_irqchip(kvm),
-                                       irq_event.gsi,
+                                       irq_event.chip * 8 +
irq_event.pin,
                                        irq_event.level);
                        /* TODO: IOAPIC */
                        r = 0;
diff --git a/include/linux/kvm.h b/include/linux/kvm.h
index 1d1270a..d27dbca 100644
--- a/include/linux/kvm.h
+++ b/include/linux/kvm.h
@@ -43,7 +43,8 @@ struct kvm_memory_alias {

 /* for KVM_SET_IRQ_LEVEL */
 struct kvm_irq_level {
-       __u32 gsi;
+       __u16 chip;
+       __u16 pin;
        __u32 level;
 };

Attachment: pic-kernel-v26.patch.rebase
Description: pic-kernel-v26.patch.rebase

Attachment: pic-user-v26.patch.rebase
Description: pic-user-v26.patch.rebase

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel

Reply via email to