move vmstate registration of vmstate_timers earlier
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
		
							parent
							
								
									a2aaa079df
								
							
						
					
					
						commit
						1b48824fa0
					
				
							
								
								
									
										62
									
								
								vl.c
								
								
								
								
							
							
						
						
									
										62
									
								
								vl.c
								
								
								
								
							| 
						 | 
				
			
			@ -722,36 +722,6 @@ static void icount_adjust_vm(void * opaque)
 | 
			
		|||
    icount_adjust();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void configure_icount(const char *option)
 | 
			
		||||
{
 | 
			
		||||
    if (!option)
 | 
			
		||||
        return;
 | 
			
		||||
 | 
			
		||||
    if (strcmp(option, "auto") != 0) {
 | 
			
		||||
        icount_time_shift = strtol(option, NULL, 0);
 | 
			
		||||
        use_icount = 1;
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    use_icount = 2;
 | 
			
		||||
 | 
			
		||||
    /* 125MIPS seems a reasonable initial guess at the guest speed.
 | 
			
		||||
       It will be corrected fairly quickly anyway.  */
 | 
			
		||||
    icount_time_shift = 3;
 | 
			
		||||
 | 
			
		||||
    /* Have both realtime and virtual time triggers for speed adjustment.
 | 
			
		||||
       The realtime trigger catches emulated time passing too slowly,
 | 
			
		||||
       the virtual time trigger catches emulated time passing too fast.
 | 
			
		||||
       Realtime triggers occur even when idle, so use them less frequently
 | 
			
		||||
       than VM triggers.  */
 | 
			
		||||
    icount_rt_timer = qemu_new_timer(rt_clock, icount_adjust_rt, NULL);
 | 
			
		||||
    qemu_mod_timer(icount_rt_timer,
 | 
			
		||||
                   qemu_get_clock(rt_clock) + 1000);
 | 
			
		||||
    icount_vm_timer = qemu_new_timer(vm_clock, icount_adjust_vm, NULL);
 | 
			
		||||
    qemu_mod_timer(icount_vm_timer,
 | 
			
		||||
                   qemu_get_clock(vm_clock) + get_ticks_per_sec() / 10);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int64_t qemu_icount_round(int64_t count)
 | 
			
		||||
{
 | 
			
		||||
    return (count + (1 << icount_time_shift) - 1) >> icount_time_shift;
 | 
			
		||||
| 
						 | 
				
			
			@ -1056,6 +1026,37 @@ static const VMStateDescription vmstate_timers = {
 | 
			
		|||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static void configure_icount(const char *option)
 | 
			
		||||
{
 | 
			
		||||
    vmstate_register(0, &vmstate_timers, &timers_state);
 | 
			
		||||
    if (!option)
 | 
			
		||||
        return;
 | 
			
		||||
 | 
			
		||||
    if (strcmp(option, "auto") != 0) {
 | 
			
		||||
        icount_time_shift = strtol(option, NULL, 0);
 | 
			
		||||
        use_icount = 1;
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    use_icount = 2;
 | 
			
		||||
 | 
			
		||||
    /* 125MIPS seems a reasonable initial guess at the guest speed.
 | 
			
		||||
       It will be corrected fairly quickly anyway.  */
 | 
			
		||||
    icount_time_shift = 3;
 | 
			
		||||
 | 
			
		||||
    /* Have both realtime and virtual time triggers for speed adjustment.
 | 
			
		||||
       The realtime trigger catches emulated time passing too slowly,
 | 
			
		||||
       the virtual time trigger catches emulated time passing too fast.
 | 
			
		||||
       Realtime triggers occur even when idle, so use them less frequently
 | 
			
		||||
       than VM triggers.  */
 | 
			
		||||
    icount_rt_timer = qemu_new_timer(rt_clock, icount_adjust_rt, NULL);
 | 
			
		||||
    qemu_mod_timer(icount_rt_timer,
 | 
			
		||||
                   qemu_get_clock(rt_clock) + 1000);
 | 
			
		||||
    icount_vm_timer = qemu_new_timer(vm_clock, icount_adjust_vm, NULL);
 | 
			
		||||
    qemu_mod_timer(icount_vm_timer,
 | 
			
		||||
                   qemu_get_clock(vm_clock) + get_ticks_per_sec() / 10);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void qemu_run_all_timers(void)
 | 
			
		||||
{
 | 
			
		||||
    /* rearm timer, if not periodic */
 | 
			
		||||
| 
						 | 
				
			
			@ -5943,7 +5944,6 @@ int main(int argc, char **argv, char **envp)
 | 
			
		|||
    if (qemu_opts_foreach(&qemu_drive_opts, drive_init_func, machine, 1) != 0)
 | 
			
		||||
        exit(1);
 | 
			
		||||
 | 
			
		||||
    vmstate_register(0, &vmstate_timers ,&timers_state);
 | 
			
		||||
    register_savevm_live("ram", 0, 3, NULL, ram_save_live, NULL, 
 | 
			
		||||
                         ram_load, NULL);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue