if ( !paging_mode_log_dirty(d) )
{
- hap_logdirty_init(d);
rc = paging_log_dirty_enable(d, 0);
if ( rc )
goto out;
flush_tlb_mask(d->domain_dirty_cpumask);
}
-void hap_logdirty_init(struct domain *d)
-{
-
- /* Reinitialize logdirty mechanism */
- paging_log_dirty_init(d, hap_enable_log_dirty,
- hap_disable_log_dirty,
- hap_clean_dirty_bitmap);
-}
-
/************************************************/
/* HAP SUPPORT FUNCTIONS */
/************************************************/
void hap_domain_init(struct domain *d)
{
INIT_PAGE_LIST_HEAD(&d->arch.paging.hap.freelist);
+
+ /* Use HAP logdirty mechanism. */
+ paging_log_dirty_init(d, hap_enable_log_dirty,
+ hap_disable_log_dirty,
+ hap_clean_dirty_bitmap);
}
/* return 0 for success, -errno for failure */
break;
/* Else fall through... */
case XEN_DOMCTL_SHADOW_OP_ENABLE_LOGDIRTY:
- if ( hap_enabled(d) )
- hap_logdirty_init(d);
return paging_log_dirty_enable(d, 1);
case XEN_DOMCTL_SHADOW_OP_OFF:
void hap_final_teardown(struct domain *d);
void hap_teardown(struct domain *d);
void hap_vcpu_init(struct vcpu *v);
-void hap_logdirty_init(struct domain *d);
int hap_track_dirty_vram(struct domain *d,
unsigned long begin_pfn,
unsigned long nr,