WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] [IA64] Follow new interrupt deliver mecha

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] [IA64] Follow new interrupt deliver mechanism for PV-on-HVM/IPF
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Thu, 18 Jan 2007 21:10:11 -0800
Delivery-date: Thu, 18 Jan 2007 21:10:15 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User awilliam@xxxxxxxxxxxx
# 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@xxxxxxxxxxxxxx>
---
 unmodified_drivers/linux-2.6/platform-pci/platform-pci.c |    9 +++++++--
 xen/arch/ia64/vmx/vmx_process.c                          |   13 +++++++++++--
 xen/include/public/arch-ia64.h                           |    4 ++++
 3 files changed, 22 insertions(+), 4 deletions(-)

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

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] [IA64] Follow new interrupt deliver mechanism for PV-on-HVM/IPF, Xen patchbot-unstable <=