Guido Guenther wrote:
- backout the madt interrupt source override changes
Should these stay, but with active low instead of active high?

They can go away, since active low is the default.

For reference, I'm attaching the patches I'm using.

--
error compiling committee.c: too many arguments to function

>From 736880c1e550f84778e0cd13ae7dd27988dee902 Mon Sep 17 00:00:00 2001
From: Avi Kivity <[EMAIL PROTECTED]>
Date: Mon, 14 Jan 2008 17:34:11 +0200
Subject: [PATCH] kvm: bios: pci interrupts are active low

Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
 bios/acpi-dsdt.dsl |   16 ++++++++--------
 1 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/bios/acpi-dsdt.dsl b/bios/acpi-dsdt.dsl
index df255ce..92fd126 100755
--- a/bios/acpi-dsdt.dsl
+++ b/bios/acpi-dsdt.dsl
@@ -382,7 +382,7 @@ DefinitionBlock (
                 Name(_HID, EISAID("PNP0C0F"))     // PCI interrupt link
                 Name(_UID, 1)
                 Name(_PRS, ResourceTemplate(){
-                    Interrupt (, Level, ActiveHigh, Shared)
+                    Interrupt (, Level, ActiveLow, Shared)
                         { 5, 9, 10, 11 }
                 })
                 Method (_STA, 0, NotSerialized)
@@ -402,7 +402,7 @@ DefinitionBlock (
                 {
                     Name (PRR0, ResourceTemplate ()
                     {
-                        Interrupt (, Level, ActiveHigh, Shared)
+                        Interrupt (, Level, ActiveLow, Shared)
                             {1}
                     })
                     CreateDWordField (PRR0, 0x05, TMP)
@@ -427,7 +427,7 @@ DefinitionBlock (
                 Name(_HID, EISAID("PNP0C0F"))     // PCI interrupt link
                 Name(_UID, 2)
                 Name(_PRS, ResourceTemplate(){
-                    Interrupt (, Level, ActiveHigh, Shared)
+                    Interrupt (, Level, ActiveLow, Shared)
                         { 5, 9, 10, 11 }
                 })
                 Method (_STA, 0, NotSerialized)
@@ -447,7 +447,7 @@ DefinitionBlock (
                 {
                     Name (PRR0, ResourceTemplate ()
                     {
-                        Interrupt (, Level, ActiveHigh, Shared)
+                        Interrupt (, Level, ActiveLow, Shared)
                             {1}
                     })
                     CreateDWordField (PRR0, 0x05, TMP)
@@ -472,7 +472,7 @@ DefinitionBlock (
                 Name(_HID, EISAID("PNP0C0F"))     // PCI interrupt link
                 Name(_UID, 3)
                 Name(_PRS, ResourceTemplate(){
-                    Interrupt (, Level, ActiveHigh, Shared)
+                    Interrupt (, Level, ActiveLow, Shared)
                         { 5, 9, 10, 11 }
                 })
                 Method (_STA, 0, NotSerialized)
@@ -492,7 +492,7 @@ DefinitionBlock (
                 {
                     Name (PRR0, ResourceTemplate ()
                     {
-                        Interrupt (, Level, ActiveHigh, Shared)
+                        Interrupt (, Level, ActiveLow, Shared)
                             {1}
                     })
                     CreateDWordField (PRR0, 0x05, TMP)
@@ -517,7 +517,7 @@ DefinitionBlock (
                 Name(_HID, EISAID("PNP0C0F"))     // PCI interrupt link
                 Name(_UID, 4)
                 Name(_PRS, ResourceTemplate(){
-                    Interrupt (, Level, ActiveHigh, Shared)
+                    Interrupt (, Level, ActiveLow, Shared)
                         { 5, 9, 10, 11 }
                 })
                 Method (_STA, 0, NotSerialized)
@@ -537,7 +537,7 @@ DefinitionBlock (
                 {
                     Name (PRR0, ResourceTemplate ()
                     {
-                        Interrupt (, Level, ActiveHigh, Shared)
+                        Interrupt (, Level, ActiveLow, Shared)
                             {1}
                     })
                     CreateDWordField (PRR0, 0x05, TMP)
-- 
1.5.3.7

>From 96ecf8e23154baa8020c58316cc013b8fa28689c Mon Sep 17 00:00:00 2001
From: Avi Kivity <[EMAIL PROTECTED]>
Date: Mon, 14 Jan 2008 17:47:35 +0200
Subject: [PATCH] kvm: bios: don't advertise the pci interrupts as active high

Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
 bios/rombios32.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/bios/rombios32.c b/bios/rombios32.c
index 967c119..ebfbb24 100755
--- a/bios/rombios32.c
+++ b/bios/rombios32.c
@@ -1369,7 +1369,7 @@ void acpi_bios_init(void)
 
         intsrcovr = (struct madt_intsrcovr*)(io_apic + 1);
         for ( i = 0; i < 16; i++ ) {
-            if ( PCI_ISA_IRQ_MASK & (1U << i) ) {
+            if ( 0 && (PCI_ISA_IRQ_MASK & (1U << i) )) {
                 memset(intsrcovr, 0, sizeof(*intsrcovr));
                 intsrcovr->type   = APIC_XRUPT_OVERRIDE;
                 intsrcovr->length = sizeof(*intsrcovr);
-- 
1.5.3.7

>From 5a5564a0998f42c5394090167d0dbf1e111dde10 Mon Sep 17 00:00:00 2001
From: Avi Kivity <[EMAIL PROTECTED]>
Date: Mon, 14 Jan 2008 17:48:51 +0200
Subject: [PATCH] kvm: qemu: invert pci interrupts so they are active low

qemu treats them as active high, but they really are active low.

Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
 qemu/qemu-kvm.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/qemu/qemu-kvm.c b/qemu/qemu-kvm.c
index dd84686..33db263 100644
--- a/qemu/qemu-kvm.c
+++ b/qemu/qemu-kvm.c
@@ -742,6 +742,8 @@ int kvm_get_phys_ram_page_bitmap(unsigned char *bitmap)
 
 int kvm_set_irq(int irq, int level)
 {
+    if ((1 << irq) & 0xe20)
+	level ^= 1;
     return kvm_set_irq_level(kvm_context, irq, level);
 }
 
-- 
1.5.3.7

>From 1d578b022cfc4973ae3da3b3c639ab41f7a84f28 Mon Sep 17 00:00:00 2001
From: Avi Kivity <[EMAIL PROTECTED]>
Date: Mon, 14 Jan 2008 17:29:38 +0200
Subject: [PATCH] KVM: Hack pci pic irqs to be inverted relative to ioapic irqs

PCI irqs are active low, but the pic wants them active high.

Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
 arch/x86/kvm/x86.c |    9 +++++++--
 1 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 77d57ff..ffce026 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -1434,16 +1434,21 @@ long kvm_arch_vm_ioctl(struct file *filp,
 		break;
 	case KVM_IRQ_LINE: {
 		struct kvm_irq_level irq_event;
+		int isa_irq_level;
 
 		r = -EFAULT;
 		if (copy_from_user(&irq_event, argp, sizeof irq_event))
 			goto out;
 		if (irqchip_in_kernel(kvm)) {
 			mutex_lock(&kvm->lock);
-			if (irq_event.irq < 16)
+			if (irq_event.irq < 16) {
+				isa_irq_level = irq_event.level;
+				if ((1 << irq_event.irq) & 0xe20)
+					isa_irq_level ^= 1;
 				kvm_pic_set_irq(pic_irqchip(kvm),
 					irq_event.irq,
-					irq_event.level);
+					isa_irq_level);
+			}
 			kvm_ioapic_set_irq(kvm->arch.vioapic,
 					irq_event.irq,
 					irq_event.level);
-- 
1.5.3.7

-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel

Reply via email to