[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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |