|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v2 15/23] x86: Add more checks verifying that PIT/PIC/IOAPIC are emulated
Signed-off-by: Boris Ostrovsky <boris.ostrovsky@xxxxxxxxxx>
Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx>
---
v2:
* Added ASSERT(has_vpic(d))
* This patch can go in independent of the rest of the series.
xen/arch/x86/hvm/vlapic.c | 14 ++++++++++++--
xen/arch/x86/hvm/vpt.c | 2 +-
2 files changed, 13 insertions(+), 3 deletions(-)
diff --git a/xen/arch/x86/hvm/vlapic.c b/xen/arch/x86/hvm/vlapic.c
index ba9b293..1d5d287 100644
--- a/xen/arch/x86/hvm/vlapic.c
+++ b/xen/arch/x86/hvm/vlapic.c
@@ -1114,7 +1114,14 @@ static int __vlapic_accept_pic_intr(struct vcpu *v)
struct domain *d = v->domain;
struct vlapic *vlapic = vcpu_vlapic(v);
uint32_t lvt0 = vlapic_get_reg(vlapic, APIC_LVT0);
- union vioapic_redir_entry redir0 = domain_vioapic(d)->redirtbl[0];
+ union vioapic_redir_entry redir0;
+
+ ASSERT(has_vpic(d));
+
+ if ( !has_vioapic(d) )
+ return 0;
+
+ redir0 = domain_vioapic(d)->redirtbl[0];
/* We deliver 8259 interrupts to the appropriate CPU as follows. */
return ((/* IOAPIC pin0 is unmasked and routing to this LAPIC? */
@@ -1130,7 +1137,7 @@ static int __vlapic_accept_pic_intr(struct vcpu *v)
int vlapic_accept_pic_intr(struct vcpu *v)
{
- if ( vlapic_hw_disabled(vcpu_vlapic(v)) )
+ if ( vlapic_hw_disabled(vcpu_vlapic(v)) || !has_vpic(v->domain) )
return 0;
TRACE_2D(TRC_HVM_EMUL_LAPIC_PIC_INTR,
@@ -1145,6 +1152,9 @@ void vlapic_adjust_i8259_target(struct domain *d)
{
struct vcpu *v;
+ if ( !has_vpic(d) )
+ return;
+
for_each_vcpu ( d, v )
if ( __vlapic_accept_pic_intr(v) )
goto found;
diff --git a/xen/arch/x86/hvm/vpt.c b/xen/arch/x86/hvm/vpt.c
index 358ec57..c90aa95 100644
--- a/xen/arch/x86/hvm/vpt.c
+++ b/xen/arch/x86/hvm/vpt.c
@@ -496,7 +496,7 @@ void pt_adjust_global_vcpu_target(struct vcpu *v)
struct pl_time *pl_time;
int i;
- if ( v == NULL )
+ if ( v == NULL || !has_vpit(v->domain) )
return;
vpit = &v->domain->arch.vpit;
--
1.8.3.1
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |