HVM save restore: save restore dev in HV
PATCH 3/8 HVM save restore: save restore dev in HV
[PATCH 3/8] HVM save restore: save restore dev in HV
Signed-off-by Zhai Edwin <[email protected]>
save/restore all dev state in HV such as PIT/PIC/APIC
xen/arch/x86/hvm/hvm.c +3 -0
@@ -197,6 +197,9 @@ int hvm_vcpu_initialise(struct vcpu *v)rtc_init (v,RTC_PORT (0 ),RTC_IRQ );pmtimer_init (v,ACPI_PM_TMR_BLK_ADDRESS );hpet_init (v); + +/* init hvm sharepage */ +shpage_init (v->domain,get_sp (v->domain));/* Init guest TSC to start from zero. */ hvm_set_guest_time (v,0 );
xen/arch/x86/hvm/i8254.c +151 -2
174 lines not on this page · raw message
xen/arch/x86/hvm/intercept.c +59 -0
65 lines not on this page · raw message
xen/arch/x86/hvm/rtc.c +1 -1
@@ -62,7 +62,7 @@ static void rtc_timer_update(RTCState *s#ifdef DEBUG_RTC printk ("HVM_RTC: period = %uns\n" , period);#endif -create_periodic_time (&s->pt, period,RTC_IRQ ,0 , rtc_periodic_cb, s); +create_periodic_time (current, &s->pt, period,RTC_IRQ ,0 , rtc_periodic_cb, s); }else destroy_periodic_time (&s->pt);
xen/arch/x86/hvm/vioapic.c +128 -0
138 lines not on this page · raw message
xen/arch/x86/hvm/vlapic.c +73 -1
92 lines not on this page · raw message
xen/arch/x86/hvm/vpic.c +83 -0
101 lines not on this page · raw message
xen/arch/x86/hvm/vpt.c +3 -3
@@ -195,7 +195,7 @@ void pt_reset(struct vcpu *v) } } -void create_periodic_time (struct periodic_time *pt,uint64_t period, +void create_periodic_time (struct vcpu *v,struct periodic_time *pt,uint64_t period,uint8_t irq,char one_shot,time_cb *cb,void *data) {destroy_periodic_time (pt);
@@ -209,7 +209,7 @@ void create_periodic_time(struct periodi period =900000 ;/* force to 0.9ms */ } pt->period = period; - pt->vcpu = current; + pt->vcpu = v; pt->last_plt_gtime =hvm_get_guest_time (pt->vcpu); pt->irq = irq; pt->period_cycles = (u64 )period * cpu_khz /1000000L ;
@@ -218,7 +218,7 @@ void create_periodic_time(struct periodi pt->cb = cb; pt->priv = data; -list_add (&pt->list, ¤t->arch.hvm_vcpu.tm_list); +list_add (&pt->list, &v->arch.hvm_vcpu.tm_list);set_timer (&pt->timer, pt->scheduled); }
xen/include/asm-x86/hvm/support.h +2 -0
@@ -246,6 +246,8 @@ extern int arch_sethvm_ctxt(struct vcpuextern int arch_sethvm_ctxt (struct vcpu *v,struct hvm_domain_context *c);extern int arch_gethvm_ctxt (struct vcpu *v,struct hvm_domain_context *c); +extern void shpage_init (struct domain *d,shared_iopage_t *sp); +extern int hvm_enabled;int hvm_copy_to_guest_phys (paddr_t paddr,void *buf,int size);
xen/include/asm-x86/hvm/vpt.h +1 -1
@@ -152,7 +152,7 @@ struct periodic_time *is_pt_irq(struct vstruct periodic_time *is_pt_irq (struct vcpu *v,int vector,int type);void pt_intr_post (struct vcpu *v,int vector,int type);void pt_reset (struct vcpu *v); -void create_periodic_time (struct periodic_time *pt,uint64_t period, +void create_periodic_time (struct vcpu *v,struct periodic_time *pt,uint64_t period,uint8_t irq,char one_shot,time_cb *cb,void *data);void destroy_periodic_time (struct periodic_time *pt);