e1000: don't raise interrupt in pre_save()
We should not raise any interrupt after VM has been stopped but this is what e1000 currently did when mit timer is active in pre_save(). Fixing this by scheduling a timer in post_load() which can make sure the interrupt was raised when VM is running. Reported-and-tested-by: Longpeng <longpeng2@huawei.com> Signed-off-by: Jason Wang <jasowang@redhat.com>
This commit is contained in:
parent
fff3159900
commit
f46efa9b08
@ -1381,11 +1381,6 @@ static int e1000_pre_save(void *opaque)
|
||||
E1000State *s = opaque;
|
||||
NetClientState *nc = qemu_get_queue(s->nic);
|
||||
|
||||
/* If the mitigation timer is active, emulate a timeout now. */
|
||||
if (s->mit_timer_on) {
|
||||
e1000_mit_timer(s);
|
||||
}
|
||||
|
||||
/*
|
||||
* If link is down and auto-negotiation is supported and ongoing,
|
||||
* complete auto-negotiation immediately. This allows us to look
|
||||
@ -1423,7 +1418,8 @@ static int e1000_post_load(void *opaque, int version_id)
|
||||
s->mit_irq_level = false;
|
||||
}
|
||||
s->mit_ide = 0;
|
||||
s->mit_timer_on = false;
|
||||
s->mit_timer_on = true;
|
||||
timer_mod(s->mit_timer, qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + 1);
|
||||
|
||||
/* nc.link_down can't be migrated, so infer link_down according
|
||||
* to link status bit in mac_reg[STATUS].
|
||||
|
Loading…
Reference in New Issue
Block a user