Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
int rc;
uint64_t guest_time;
+ if ( !has_vhpet(d) )
+ return 0;
+
write_lock(&hp->lock);
guest_time = (v->arch.hvm_vcpu.guest_time ?: hvm_get_guest_time(v)) /
STIME_PER_HPET_TICK;
uint64_t guest_time;
int i;
+ if ( !has_vhpet(d) )
+ return -ENODEV;
+
write_lock(&hp->lock);
/* Reload the HPET registers */
HPETState *h = domain_vhpet(d);
int i;
+ if ( !has_vhpet(d) )
+ return;
+
memset(h, 0, sizeof(HPETState));
rwlock_init(&h->lock);
}
register_mmio_handler(d, &hpet_mmio_ops);
+ d->arch.hvm_domain.params[HVM_PARAM_HPET_ENABLED] = 1;
}
void hpet_deinit(struct domain *d)
int i;
HPETState *h = domain_vhpet(d);
+ if ( !has_vhpet(d) )
+ return;
+
write_lock(&h->lock);
if ( hpet_enabled(h) )
hvm_init_guest_time(d);
- d->arch.hvm_domain.params[HVM_PARAM_HPET_ENABLED] = 1;
d->arch.hvm_domain.params[HVM_PARAM_TRIPLE_FAULT_REASON] = SHUTDOWN_reboot;
vpic_init(d);