[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] RE: [Xen-ia64-devel] [PATCH] [IA64] Fix serial console freeze issue



Kuwamura, 
   Maybe the fix is not enough and it may break VT-d side after you changing it 
back. In addition, mach_apic.h is also needed to create. I attached the whole 
patch, please check! :-)
Xiantao

# HG changeset patch
# User root@xxxxxxxxxxxxxxxxxxxxx
# Date 1251737187 14400
# Node ID dd71c509f3ff13326ddbb8fa39f638022aa814ff
# Parent  e8004f6c254a5778b50babd527e74208981640b9
[IA64] Fix serial console freeze issue

20110:6e83b0ec2d70 is incomplete. irq_to_vector() is still required,
otherwise the serial console freezes without sync_console.

Signed-off-by: KUWAMURA Shin'ya <kuwa@xxxxxxxxxxxxxx>
Signed-off-by: Xiantao Zhang <xiantao.zhang@xxxxxxxxx>

diff -r e8004f6c254a -r dd71c509f3ff xen/drivers/passthrough/vtd/iommu.c
--- a/xen/drivers/passthrough/vtd/iommu.c       Thu Aug 27 11:25:34 2009 +0100
+++ b/xen/drivers/passthrough/vtd/iommu.c       Mon Aug 31 12:46:27 2009 -0400
@@ -892,7 +892,11 @@ static int iommu_set_interrupt(struct io
 
     irq_desc[irq].handler = &dma_msi_type;
     irq_to_iommu[irq] = iommu;
+#ifdef CONFIG_X86 
     ret = request_irq(irq, iommu_page_fault, 0, "dmar", iommu);
+#else
+    ret = request_irq_vector(irq, iommu_page_fault, 0, "dmar", iommu);
+#endif
     if ( ret )
     {
         irq_desc[irq].handler = &no_irq_type;
diff -r e8004f6c254a -r dd71c509f3ff xen/include/asm-ia64/mach_apic.h
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/asm-ia64/mach_apic.h  Mon Aug 31 12:46:27 2009 -0400
@@ -0,0 +1,1 @@
+/* Leave it as blank for compilation. */
diff -r e8004f6c254a -r dd71c509f3ff xen/include/xen/irq.h
--- a/xen/include/xen/irq.h     Thu Aug 27 11:25:34 2009 +0100
+++ b/xen/include/xen/irq.h     Mon Aug 31 12:46:27 2009 -0400
@@ -82,14 +82,17 @@ extern irq_desc_t irq_desc[NR_VECTORS];
 extern irq_desc_t irq_desc[NR_VECTORS];
 
 #define setup_irq(irq, action) \
-    setup_irq_vector(irq, action)
+    setup_irq_vector(irq_to_vector(irq), action)
 
 #define release_irq(irq) \
-    release_irq_vector(irq)
+    release_irq_vector(irq_to_vector(irq))
 
 #define request_irq(irq, handler, irqflags, devname, devid) \
-    request_irq_vector(irq, handler, irqflags, devname, devid)
+    request_irq_vector(irq_to_vector(irq), handler, irqflags, devname, devid)
 
+static inline unsigned int irq_to_vector(int);
+extern int setup_irq_vector(unsigned int, struct irqaction *);
+extern void release_irq_vector(unsigned int);
 extern int request_irq_vector(unsigned int vector,
                void (*handler)(int, void *, struct cpu_user_regs *),
                unsigned long irqflags, const char * devname, void *dev_id);


KUWAMURA Shin'ya wrote:
> Hi,
> 
> 20110:6e83b0ec2d70 is incomplete. irq_to_vector() is still required,
> otherwise the serial console freezes without sync_console.
> 
> I confirmed that dom0 booted up without sync_console.
> 
> Signed-off-by: KUWAMURA Shin'ya <kuwa@xxxxxxxxxxxxxx>

Attachment: fix_ia64.patch
Description: fix_ia64.patch

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

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.