mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
x86/vpt: only try to resume timers belonging to enabled devices
Check whether the emulated device is actually enabled before trying to resume the associated timers. Thankfully all those structures are zeroed at initialization, and since the devices are not enabled they are never populated, which triggers the pt->vcpu check at the beginning of pt_resume forcing an exit from the function. While there limit the scope of i and make it unsigned. Signed-off-by: Roger Pau Monné <roger.pau@citrix.com> Reviewed-by: Jan Beulich <jbeulich@suse.com>
This commit is contained in:
1 parent
dc036ab9d5
commit
b9e9ccbb11
1 file changed
+11
-6
+11
-6
@@ -636,14 +636,19 @@ static void pt_resume(struct periodic_time *pt)
|
||||
|
||||
void pt_may_unmask_irq(struct domain *d, struct periodic_time *vlapic_pt)
|
||||
{
|
||||
int i;
|
||||
|
||||
if ( d )
|
||||
{
|
||||
pt_resume(&d->arch.vpit.pt0);
|
||||
pt_resume(&d->arch.hvm.pl_time->vrtc.pt);
|
||||
for ( i = 0; i < HPET_TIMER_NUM; i++ )
|
||||
pt_resume(&d->arch.hvm.pl_time->vhpet.pt[i]);
|
||||
if ( has_vpit(d) )
|
||||
pt_resume(&d->arch.vpit.pt0);
|
||||
if ( has_vrtc(d) )
|
||||
pt_resume(&d->arch.hvm.pl_time->vrtc.pt);
|
||||
if ( has_vhpet(d) )
|
||||
{
|
||||
unsigned int i;
|
||||
|
||||
for ( i = 0; i < HPET_TIMER_NUM; i++ )
|
||||
pt_resume(&d->arch.hvm.pl_time->vhpet.pt[i]);
|
||||
}
|
||||
}
|
||||
|
||||
if ( vlapic_pt )
|
||||
|
||||