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

[Xen-changelog] [xen-unstable] vtd: ia64 fix of intremap.c



# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1244108925 -3600
# Node ID abdd365e2ec3d9a1cc45c5b083465652e0d0ffe9
# Parent  d8b7b51f482b709a8691c3020cfec68bee4a204c
vtd: ia64 fix of intremap.c

19707:07cf79dfb59c caused compilation error on ia64.
This patch fixes it.

Signed-off-by: Isaku Yamahata <yamahata@xxxxxxxxxxxxx>
---
 xen/arch/ia64/linux-xen/iosapic.c            |   18 ++++++++++++++++++
 xen/drivers/passthrough/vtd/intremap.c       |    8 ++++++--
 xen/include/asm-ia64/linux-xen/asm/iosapic.h |    3 +++
 3 files changed, 27 insertions(+), 2 deletions(-)

diff -r d8b7b51f482b -r abdd365e2ec3 xen/arch/ia64/linux-xen/iosapic.c
--- a/xen/arch/ia64/linux-xen/iosapic.c Thu Jun 04 10:47:56 2009 +0100
+++ b/xen/arch/ia64/linux-xen/iosapic.c Thu Jun 04 10:48:45 2009 +0100
@@ -1275,4 +1275,22 @@ int iosapic_guest_write(unsigned long ph
        spin_unlock_irqrestore(&irq_descp(vec)->lock, flags);
        return 0;
 }
+
+/* for vtd interrupt remapping. xen/drivers/vtd/intremap.c */
+int iosapic_get_nr_iosapics(void)
+{
+       int index;
+
+       for (index = NR_IOSAPICS - 1; index >= 0; index--) {
+               if (iosapic_lists[index].addr)
+                       break;
+       }
+
+       return index + 1;
+}
+
+int iosapic_get_nr_pins(int index)
+{
+       return iosapic_lists[index].num_rte;
+}
 #endif /* XEN */
diff -r d8b7b51f482b -r abdd365e2ec3 xen/drivers/passthrough/vtd/intremap.c
--- a/xen/drivers/passthrough/vtd/intremap.c    Thu Jun 04 10:47:56 2009 +0100
+++ b/xen/drivers/passthrough/vtd/intremap.c    Thu Jun 04 10:48:45 2009 +0100
@@ -33,6 +33,10 @@
 
 #ifdef __ia64__
 #define dest_SMI -1
+#define nr_ioapics              iosapic_get_nr_iosapics()
+#define nr_ioapic_registers(i)  iosapic_get_nr_pins(i)
+#else
+#define nr_ioapic_registers(i)  nr_ioapic_registers[i]
 #endif
 
 /* apic_pin_2_ir_idx[apicid][pin] = interrupt remapping table index */
@@ -45,7 +49,7 @@ static int init_apic_pin_2_ir_idx(void)
 
     nr_pins = 0;
     for ( i = 0; i < nr_ioapics; i++ )
-        nr_pins += nr_ioapic_registers[i];
+        nr_pins += nr_ioapic_registers(i);
 
     _apic_pin_2_ir_idx = xmalloc_array(unsigned int, nr_pins);
     apic_pin_2_ir_idx = xmalloc_array(unsigned int *, nr_ioapics);
@@ -63,7 +67,7 @@ static int init_apic_pin_2_ir_idx(void)
     for ( i = 0; i < nr_ioapics; i++ )
     {
         apic_pin_2_ir_idx[i] = &_apic_pin_2_ir_idx[nr_pins];
-        nr_pins += nr_ioapic_registers[i];
+        nr_pins += nr_ioapic_registers(i);
     }
 
     return 0;
diff -r d8b7b51f482b -r abdd365e2ec3 
xen/include/asm-ia64/linux-xen/asm/iosapic.h
--- a/xen/include/asm-ia64/linux-xen/asm/iosapic.h      Thu Jun 04 10:47:56 
2009 +0100
+++ b/xen/include/asm-ia64/linux-xen/asm/iosapic.h      Thu Jun 04 10:48:45 
2009 +0100
@@ -186,6 +186,9 @@ struct rte_entry {
 #define IOSAPIC_RTEINDEX(reg)  (((reg) - 0x10) >> 1)
 extern unsigned long ia64_vector_mask[];
 extern unsigned long ia64_xen_vector[];
+
+int iosapic_get_nr_iosapics(void);
+int iosapic_get_nr_pins(int index);
 #endif /* XEN */
 
 #define IO_APIC_BASE(idx) ((unsigned int *)iosapic_lists[idx].addr)

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


 


Rackspace

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