On 3/8/24 09:56, Laurent Vivier wrote:
On resume e1000e_vm_state_change() always calls e1000e_autoneg_resume()
that sets link_down to false, and thus activates the link even
if we have disabled it.

The problem can be reproduced starting qemu in paused state (-S) and
then set the link to down. When we resume the machine the link appears
to be up.

Reproducer:

    # qemu-system-x86_64 ... -device e1000e,netdev=netdev0,id=net0 -S

    {"execute": "qmp_capabilities" }
    {"execute": "set_link", "arguments": {"name": "net0", "up": false}}
    {"execute": "cont" }

To fix the problem, merge the content of e1000e_vm_state_change()
into e1000e_core_post_load() as e1000 does.

Buglink: https://issues.redhat.com/browse/RHEL-21867
Suggested-by: Akihiko Odaki <akihiko.od...@daynix.com>
Signed-off-by: Laurent Vivier <lviv...@redhat.com>
---
  hw/net/e1000e_core.c | 56 +++-----------------------------------------
  hw/net/e1000e_core.h |  2 --
  2 files changed, 3 insertions(+), 55 deletions(-)

v3:
  - remove e1000e_autoneg_pause()



Reply via email to