All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] fix pv-on-hvm for ia64
@ 2006-12-20 16:21 Alex Williamson
  2006-12-21 11:12 ` Keir Fraser
  0 siblings, 1 reply; 6+ messages in thread
From: Alex Williamson @ 2006-12-20 16:21 UTC (permalink / raw)
  To: Keir Fraser; +Cc: xen-devel, DOI Tsunehisa

Hi Keir,

   It looks like 3.0.4 had been tagged, so I assume any updates need to
come in via patches now.  We have one final patch for ia64 which fixes
PV-on-HVM driver support for ia64.  If there's still time for a last
minute patch, please consider adding this one to the xen-3.0.4-testing
tree.  The patch is below.  Thanks,

	Alex

-- 
Alex Williamson                             HP Open Source & Linux Org.

# HG changeset patch
# User awilliam@xenbuild2.aw
# Date 1166630022 25200
# Node ID 46c44b5e6a1b4d462cf02990098a63dfcc36913a
# Parent  c3b455c4676c6446cd541d4c67a521609d046ddb
[IA64] Follow new interrupt deliver mechanism for PV-on-HVM/IPF

This fixes PV-on-HVM drivers for ia64

Signed-off-by: Tsunehisa Doi <Doi.Tsunehisa@jp.fujitsu.com>

diff -r c3b455c4676c -r 46c44b5e6a1b unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
--- a/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c	Tue Dec 19 13:31:48 2006 -0700
+++ b/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c	Wed Dec 20 08:53:42 2006 -0700
@@ -182,12 +182,17 @@ static int get_callback_irq(struct pci_d
 static int get_callback_irq(struct pci_dev *pdev)
 {
 #ifdef __ia64__
-	int irq;
+	int irq, rid;
 	for (irq = 0; irq < 16; irq++) {
 		if (isa_irq_to_vector(irq) == pdev->irq)
 			return irq;
 	}
-	return 0;
+	/* use Requester-ID as callback_irq */
+	/* RID: '<#bus(8)><#dev(5)><#func(3)>' (cf. PCI-Express spec) */
+	rid = ((pdev->bus->number & 0xff) << 8) | pdev->devfn;
+	printk(KERN_INFO DRV_NAME ":use Requester-ID(%04x) as callback irq\n",
+	       rid);
+	return rid | HVM_PARAM_CALLBACK_IRQ_RID;
 #else /* !__ia64__ */
 	return pdev->irq;
 #endif
diff -r c3b455c4676c -r 46c44b5e6a1b xen/arch/ia64/vmx/vmx_process.c
--- a/xen/arch/ia64/vmx/vmx_process.c	Tue Dec 19 13:31:48 2006 -0700
+++ b/xen/arch/ia64/vmx/vmx_process.c	Wed Dec 20 08:53:42 2006 -0700
@@ -212,8 +212,17 @@ void leave_hypervisor_tail(struct pt_reg
             if (callback_irq != 0 && local_events_need_delivery()) {
                 /* change level for para-device callback irq */
                 /* use level irq to send discrete event */
-                viosapic_set_irq(d, callback_irq, 1);
-                viosapic_set_irq(d, callback_irq, 0);
+                if (callback_irq & HVM_PARAM_CALLBACK_IRQ_RID) {
+                    /* case of using Requester-ID as callback irq */
+                    /* RID: '<#bus(8)><#dev(5)><#func(3)>' */
+                    int dev = (callback_irq >> 3) & 0x1f;
+                    viosapic_set_pci_irq(d, dev, 0, 1);
+                    viosapic_set_pci_irq(d, dev, 0, 0);
+                } else {
+                    /* case of using GSI as callback irq */
+                    viosapic_set_irq(d, callback_irq, 1);
+                    viosapic_set_irq(d, callback_irq, 0);
+                }
             }
         }
 
diff -r c3b455c4676c -r 46c44b5e6a1b xen/include/public/arch-ia64.h
--- a/xen/include/public/arch-ia64.h	Tue Dec 19 13:31:48 2006 -0700
+++ b/xen/include/public/arch-ia64.h	Wed Dec 20 08:53:42 2006 -0700
@@ -61,6 +61,10 @@ DEFINE_XEN_GUEST_HANDLE(xen_pfn_t);
 #define VIRQ_ITC        VIRQ_ARCH_0 /* V. Virtual itc timer */
 #define VIRQ_MCA_CMC    VIRQ_ARCH_1 /* MCA cmc interrupt */
 #define VIRQ_MCA_CPE    VIRQ_ARCH_2 /* MCA cpe interrupt */
+
+/* Arch specific callback irq definition */
+/* using Requester-ID(RID) as callback irq */
+#define HVM_PARAM_CALLBACK_IRQ_RID        (1 << 31)
 
 /* Maximum number of virtual CPUs in multi-processor guests. */
 /* WARNING: before changing this, check that shared_info fits on a page */

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

end of thread, other threads:[~2007-01-04  3:19 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-12-20 16:21 [PATCH] fix pv-on-hvm for ia64 Alex Williamson
2006-12-21 11:12 ` Keir Fraser
2006-12-21 23:33   ` Doi.Tsunehisa
2006-12-22  0:06     ` DOI Tsunehisa
2006-12-22  9:01       ` Keir Fraser
2007-01-04  3:19       ` Alex Williamson

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.