All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alex Williamson <alex.williamson@hp.com>
To: Keir Fraser <Keir.Fraser@cl.cam.ac.uk>
Cc: xen-devel <xen-devel@lists.xensource.com>,
	DOI Tsunehisa <Doi.Tsunehisa@jp.fujitsu.com>
Subject: [PATCH] fix pv-on-hvm for ia64
Date: Wed, 20 Dec 2006 09:21:13 -0700	[thread overview]
Message-ID: <1166631673.5586.8.camel@lappy> (raw)

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 */

             reply	other threads:[~2006-12-20 16:21 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-12-20 16:21 Alex Williamson [this message]
2006-12-21 11:12 ` [PATCH] fix pv-on-hvm for ia64 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

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1166631673.5586.8.camel@lappy \
    --to=alex.williamson@hp.com \
    --cc=Doi.Tsunehisa@jp.fujitsu.com \
    --cc=Keir.Fraser@cl.cam.ac.uk \
    --cc=xen-devel@lists.xensource.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.