All of lore.kernel.org
 help / color / mirror / Atom feed
* [patch 0/2] kvm tools, minor nits fixes, updated
@ 2011-05-07 15:02 Cyrill Gorcunov
  2011-05-07 15:02 ` [patch 1/2] kvm tools: Fix up PCI pin assignment to conform specification Cyrill Gorcunov
  2011-05-07 15:02 ` [patch 2/2] kvm tools: mptable -- Fix up srcbusirq assignment for PCI devices Cyrill Gorcunov
  0 siblings, 2 replies; 3+ messages in thread
From: Cyrill Gorcunov @ 2011-05-07 15:02 UTC (permalink / raw)
  To: penberg; +Cc: kvm, mingo, levinsasha928, asias.hejun, prasadjoshi124

Here is an updated series, please review.

Thanks,
 Cyrill

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

* [patch 1/2] kvm tools: Fix up PCI pin assignment to conform specification
  2011-05-07 15:02 [patch 0/2] kvm tools, minor nits fixes, updated Cyrill Gorcunov
@ 2011-05-07 15:02 ` Cyrill Gorcunov
  2011-05-07 15:02 ` [patch 2/2] kvm tools: mptable -- Fix up srcbusirq assignment for PCI devices Cyrill Gorcunov
  1 sibling, 0 replies; 3+ messages in thread
From: Cyrill Gorcunov @ 2011-05-07 15:02 UTC (permalink / raw)
  To: penberg
  Cc: kvm, mingo, levinsasha928, asias.hejun, prasadjoshi124,
	Cyrill Gorcunov

[-- Attachment #1: kvm-tools-irq-pins --]
[-- Type: text/plain, Size: 1051 bytes --]

Only 4 pins are allowed for every PCI compilant device. Mutlifunctional
devices can use up to all INTA#,B#,C#,D# pins, for our sindle function
devices pin INTA# is enough.

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

Index: linux-2.6.git/tools/kvm/irq.c
=====================================================================
--- linux-2.6.git.orig/tools/kvm/irq.c
+++ linux-2.6.git/tools/kvm/irq.c
@@ -7,7 +7,6 @@
 #include <stddef.h>
 #include <stdlib.h>
 
-static u8		next_pin	= 1;
 static u8		next_line	= 3;
 static u8		next_dev	= 1;
 static struct rb_root	pci_tree	= RB_ROOT;
@@ -71,7 +70,13 @@ int irq__register_device(u32 dev, u8 *nu
 
 		*node = (struct pci_dev) {
 			.id	= dev,
-			.pin	= next_pin++,
+			/*
+			 * PCI supports only INTA#,B#,C#,D# per device.
+			 * A#,B#,C#,D# are allowed for multifunctional
+			 * devices so stick with A# for our single
+			 * function devices.
+			 */
+			.pin	= 1,
 		};
 
 		INIT_LIST_HEAD(&node->lines);


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

* [patch 2/2] kvm tools: mptable -- Fix up srcbusirq assignment for PCI devices
  2011-05-07 15:02 [patch 0/2] kvm tools, minor nits fixes, updated Cyrill Gorcunov
  2011-05-07 15:02 ` [patch 1/2] kvm tools: Fix up PCI pin assignment to conform specification Cyrill Gorcunov
@ 2011-05-07 15:02 ` Cyrill Gorcunov
  1 sibling, 0 replies; 3+ messages in thread
From: Cyrill Gorcunov @ 2011-05-07 15:02 UTC (permalink / raw)
  To: penberg
  Cc: kvm, mingo, levinsasha928, asias.hejun, prasadjoshi124,
	Cyrill Gorcunov

[-- Attachment #1: kvm-tools-fix-srcbusirq --]
[-- Type: text/plain, Size: 1234 bytes --]

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(-)

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++;
 		}


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

end of thread, other threads:[~2011-05-07 15:05 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-05-07 15:02 [patch 0/2] kvm tools, minor nits fixes, updated Cyrill Gorcunov
2011-05-07 15:02 ` [patch 1/2] kvm tools: Fix up PCI pin assignment to conform specification Cyrill Gorcunov
2011-05-07 15:02 ` [patch 2/2] kvm tools: mptable -- Fix up srcbusirq assignment for PCI devices Cyrill Gorcunov

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.