void hvm_acpi_power_button(struct domain *d)
{
PMTState *s = &d->arch.hvm_domain.pl_time.vpmt;
+
+ if ( !has_vpm(d) )
+ return;
+
spin_lock(&s->lock);
s->pm.pm1a_sts |= PWRBTN_STS;
pmt_update_sci(s);
void hvm_acpi_sleep_button(struct domain *d)
{
PMTState *s = &d->arch.hvm_domain.pl_time.vpmt;
+
+ if ( !has_vpm(d) )
+ return;
+
spin_lock(&s->lock);
s->pm.pm1a_sts |= SLPBTN_STS;
pmt_update_sci(s);
uint32_t x, msb = s->pm.tmr_val & TMR_VAL_MSB;
int rc;
+ if ( !has_vpm(d) )
+ return 0;
+
spin_lock(&s->lock);
/*
{
PMTState *s = &d->arch.hvm_domain.pl_time.vpmt;
+ if ( !has_vpm(d) )
+ return -ENODEV;
+
spin_lock(&s->lock);
/* Reload the registers */
{
unsigned int old_version;
+ if ( !has_vpm(d) )
+ return -ENODEV;
+
/* Check that version is changing. */
old_version = d->arch.hvm_domain.params[HVM_PARAM_ACPI_IOPORTS_LOCATION];
if ( version == old_version )
{
PMTState *s = &v->domain->arch.hvm_domain.pl_time.vpmt;
+ if ( !has_vpm(v->domain) )
+ return;
+
spin_lock_init(&s->lock);
s->scale = ((uint64_t)FREQUENCE_PMTIMER << 32) / SYSTEM_TIME_HZ;
void pmtimer_deinit(struct domain *d)
{
PMTState *s = &d->arch.hvm_domain.pl_time.vpmt;
+
+ if ( !has_vpm(d) )
+ return;
+
kill_timer(&s->timer);
}
void pmtimer_reset(struct domain *d)
{
+ if ( !has_vpm(d) )
+ return;
+
/* Reset the counter. */
d->arch.hvm_domain.pl_time.vpmt.pm.tmr_val = 0;
}