diff mbox

[2/2] kvm tools: mptable -- Fix up srcbusirq assignment for PCI devices

Message ID 20110507150520.407115109@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Cyrill Gorcunov May 7, 2011, 3:02 p.m. UTC
The kernel expects srcbusirq follows MP specification and consists
a tuple of PCI device number with pin encoded. Make it so, otherwise
the kernel reports kind of "buggy MP table" found.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
---
 tools/kvm/mptable.c |   10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)


--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

Index: linux-2.6.git/tools/kvm/mptable.c
=====================================================================
--- linux-2.6.git.orig/tools/kvm/mptable.c
+++ linux-2.6.git/tools/kvm/mptable.c
@@ -191,12 +191,16 @@  void mptable_setup(struct kvm *kvm, unsi
 
 	for (pci_tree = irq__get_pci_tree(); pci_tree; pci_tree = rb_next(pci_tree)) {
 		struct pci_dev *dev = rb_entry(pci_tree, struct pci_dev, node);
-		struct irq_line *tmp;
+		struct irq_line *irq_line;
+
+		list_for_each_entry(irq_line, &dev->lines, node) {
+			unsigned char srcbusirq;
+
+			srcbusirq = (dev->id << 2) | (dev->pin - 1);
 
-		list_for_each_entry(tmp, &dev->lines, node) {
 			mpc_intsrc = last_addr;
 
-			mptable_add_irq_src(mpc_intsrc, pcibusid, dev->pin, ioapicid, tmp->line);
+			mptable_add_irq_src(mpc_intsrc, pcibusid, srcbusirq, ioapicid, irq_line->line);
 			last_addr = (void *)&mpc_intsrc[1];
 			nentries++;
 		}