diff options
author | kfraser@localhost.localdomain <kfraser@localhost.localdomain> | 2006-11-10 18:20:49 +0000 |
---|---|---|
committer | kfraser@localhost.localdomain <kfraser@localhost.localdomain> | 2006-11-10 18:20:49 +0000 |
commit | 8a02f12b77511c9b109abdecd5c10227189d88c8 (patch) | |
tree | 1148e475eb446d7b189129cb279b56efadc97651 /xen/arch/x86/hvm/vioapic.c | |
parent | 63ffe9b07eed7a2cc7dfc3d02d51c70b29bd389b (diff) | |
download | xen-8a02f12b77511c9b109abdecd5c10227189d88c8.tar.gz xen-8a02f12b77511c9b109abdecd5c10227189d88c8.tar.bz2 xen-8a02f12b77511c9b109abdecd5c10227189d88c8.zip |
[HVM] Simplify apic dest-matching code. Refactor
across vlapic/vioapic source files to reduce code
duplication.
Signed-off-by: Keir Fraser <keir@xensource.com>
Diffstat (limited to 'xen/arch/x86/hvm/vioapic.c')
-rw-r--r-- | xen/arch/x86/hvm/vioapic.c | 37 |
1 files changed, 1 insertions, 36 deletions
diff --git a/xen/arch/x86/hvm/vioapic.c b/xen/arch/x86/hvm/vioapic.c index dc7f29d820..c32ece46e3 100644 --- a/xen/arch/x86/hvm/vioapic.c +++ b/xen/arch/x86/hvm/vioapic.c @@ -35,6 +35,7 @@ #include <public/hvm/ioreq.h> #include <asm/hvm/io.h> #include <asm/hvm/vpic.h> +#include <asm/hvm/vlapic.h> #include <asm/hvm/support.h> #include <asm/current.h> #include <asm/event.h> @@ -285,42 +286,6 @@ static int ioapic_inj_irq(struct vioapic *vioapic, return result; } -#ifndef __ia64__ -static int vlapic_match_logical_addr(struct vlapic *vlapic, uint8_t dest) -{ - int result = 0; - uint32_t logical_dest; - - HVM_DBG_LOG(DBG_LEVEL_IOAPIC, "vlapic_match_logical_addr " - "vcpu=%d vlapic_id=%x dest=%x\n", - vlapic_vcpu(vlapic)->vcpu_id, VLAPIC_ID(vlapic), dest); - - logical_dest = vlapic_get_reg(vlapic, APIC_LDR); - - switch ( vlapic_get_reg(vlapic, APIC_DFR) ) - { - case APIC_DFR_FLAT: - result = ((dest & GET_APIC_LOGICAL_ID(logical_dest)) != 0); - break; - case APIC_DFR_CLUSTER: - /* Should we support flat cluster mode ?*/ - if ( (GET_APIC_LOGICAL_ID(logical_dest) >> 4 - == ((dest >> 0x4) & 0xf)) && - (logical_dest & (dest & 0xf)) ) - result = 1; - break; - default: - gdprintk(XENLOG_WARNING, "error DFR value for lapic of vcpu %d\n", - vlapic_vcpu(vlapic)->vcpu_id); - break; - } - - return result; -} -#else -extern int vlapic_match_logical_addr(struct vlapic *vlapic, uint16_t dest); -#endif - static uint32_t ioapic_get_delivery_bitmask(struct vioapic *vioapic, uint16_t dest, uint8_t dest_mode, |