From nobody Mon Apr 29 07:05:45 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1562613109; cv=none; d=zoho.com; s=zohoarc; b=XW0V/KgLkSm2ALKUmxsI866X1W5CPUI2yjZUeIsVNT5GG68D6nXFRSJfFgwTigo2Go59wpD8Ln4naLhr7EE12VylGUDgrj9GH548/8G9V/qLb2uLn8Zl2H9it/MMlKQBjPY8KVuRLb9/kpdIA3MrXx0KgMrbD5SyuAKHAx45H38= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1562613109; h=Cc:Date:From:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:Sender:Subject:To:ARC-Authentication-Results; bh=BUG3HHgfp9mEv1rHSH3XaWu+sqpOJ8uU5ix3qYXxYT0=; b=m3Wg136uHkImPyTUn9fdTNmCTxhIRlVIb2QYonpy2he5AFrz/o3yWx5oXC1r8pnC+Fe7+zqOmqTPhvwxBiZgiOjg1znAzPxTO/OIX/DF7sFW20zzIT+70FiO6Sdyw7R84ja48T7mpCSezTmQRUOo97OA3qkeR7th68RunttQ62o= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=pass; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 1562613108998487.4455451417343; Mon, 8 Jul 2019 12:11:48 -0700 (PDT) Received: from localhost ([::1]:44086 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hkZ38-00018K-Kw for importer@patchew.org; Mon, 08 Jul 2019 15:11:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60738) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hkZ28-0000jZ-1k for qemu-devel@nongnu.org; Mon, 08 Jul 2019 15:10:41 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hkZ26-0005db-Un for qemu-devel@nongnu.org; Mon, 08 Jul 2019 15:10:39 -0400 Received: from mail-wm1-x342.google.com ([2a00:1450:4864:20::342]:54988) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hkZ26-0005dG-MI for qemu-devel@nongnu.org; Mon, 08 Jul 2019 15:10:38 -0400 Received: by mail-wm1-x342.google.com with SMTP id p74so595560wme.4 for ; Mon, 08 Jul 2019 12:10:38 -0700 (PDT) Received: from localhost.localdomain ([37.142.144.12]) by smtp.gmail.com with ESMTPSA id c78sm444304wmd.16.2019.07.08.12.10.35 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 08 Jul 2019 12:10:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=BUG3HHgfp9mEv1rHSH3XaWu+sqpOJ8uU5ix3qYXxYT0=; b=cDbeBTfewFbMB2pW7cLpwF00SJCcgwEpN8wKebKq27z4OTkq7o7yLafgiZIafLL6Hr HQEWDWKyvqRT5naKapCt4m+dz5y4NXZ8m1svFFI92rOrImbmIk8dxIUlmBsBqAuyiZI9 zWovpB3nIQHhggoMKajJ6nnJpabFj0S4bW7nzIhxHnwjrnzcCNqc+ls/xXL5bcwRh2QB sBkGLZMF/97K+6ZkJEOxs9s4onlFRSsJOITpM1m3mHepJQLvlZvzuBzsFalrvBIn26st AxyUK95O1cDmuihLXyjSoW9zz3k/GZk4a0IETE85iLaqc/6+AL1RwyqCKz1RbSKY6VB+ Ozng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=BUG3HHgfp9mEv1rHSH3XaWu+sqpOJ8uU5ix3qYXxYT0=; b=P1OWQrPIfJNNfEG/Aw16T4C4ihVd2GpLSvlQDyJ8QMsJOaYr7riUPmfpNcqstA+sWC y8Ec3vUFzc6p3AGOjBwE7NZy/tmNpfdVfP+jOAZW61NlOzaAXRQzSursXKaN++oQ6PVL DZ6TKnBUiysJGxyUpMthvIdAHRn4AXK61Ndh993nHFabvi67BBjxNeF7HutSq2iz6uVC pnJnXs9KWCw3yB5qj50XppQ9+A0XLTybVbfLYBd7GZCwF1DUVs+Tua/wyhzrpRHb/AaA QbiH6jzs422Gw/pfYwd+68Hqqnk5oehKJfKnx5V1Fg6gJxrOmMFOcGOWGtg03u6KUQ61 ShCg== X-Gm-Message-State: APjAAAVWNM8dsDAnCsAKN0i9a4tXDMREzQdxaX8oFdvYjL62TdcXWISQ Q6HW8OD3Mb/aClPmq56WO/+KRqj9 X-Google-Smtp-Source: APXvYqyKk12FQqwGDP9D/iSwGsSn6yaFqNecOd7HYfIddjLSh9UrSs3Hsh3kBZ0om1aj8Fwm+aAcPA== X-Received: by 2002:a7b:cc0c:: with SMTP id f12mr17745831wmh.100.1562613037105; Mon, 08 Jul 2019 12:10:37 -0700 (PDT) From: Marcel Apfelbaum To: qemu-devel@nongnu.org, dmitry.fleytman@gmail.com, dgilbert@redhat.com Date: Mon, 8 Jul 2019 22:09:30 +0300 Message-Id: <20190708190930.16642-1-marcel.apfelbaum@gmail.com> X-Mailer: git-send-email 2.17.1 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::342 Subject: [Qemu-devel] [PATCH V2] hw/net: fix vmxnet3 live migration X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: skrtbhtngr@gmail.com, yuval.shaia@oracle.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" At some point vmxnet3 live migration stopped working and git-bisect didn't help finding a working version. The issue is the PCI configuration space is not being migrated successfully and MSIX remains masked at destination. Remove the migration differentiation between PCI and PCIe since the logic resides now inside VMSTATE_PCI_DEVICE. Remove also the VMXNET3_COMPAT_FLAG_DISABLE_PCIE based differentiation since at 'realize' time is decided if the device is PCI or PCIe, then the above macro is enough. Use the opportunity to move to the standard VMSTATE_MSIX instead of the deprecated SaveVMHandlers. Signed-off-by: Marcel Apfelbaum Tested-by: Sukrit Bhatnagar Reviewed-by: Dmitry Fleytman --- V1 -> V2: - Bump migration version (Dave) hw/net/vmxnet3.c | 56 ++++-------------------------------------------- 1 file changed, 4 insertions(+), 52 deletions(-) diff --git a/hw/net/vmxnet3.c b/hw/net/vmxnet3.c index 10d01d0058..eec364f604 100644 --- a/hw/net/vmxnet3.c +++ b/hw/net/vmxnet3.c @@ -2141,21 +2141,6 @@ vmxnet3_cleanup_msi(VMXNET3State *s) msi_uninit(d); } =20 -static void -vmxnet3_msix_save(QEMUFile *f, void *opaque) -{ - PCIDevice *d =3D PCI_DEVICE(opaque); - msix_save(d, f); -} - -static int -vmxnet3_msix_load(QEMUFile *f, void *opaque, int version_id) -{ - PCIDevice *d =3D PCI_DEVICE(opaque); - msix_load(d, f); - return 0; -} - static const MemoryRegionOps b0_ops =3D { .read =3D vmxnet3_io_bar0_read, .write =3D vmxnet3_io_bar0_write, @@ -2176,11 +2161,6 @@ static const MemoryRegionOps b1_ops =3D { }, }; =20 -static SaveVMHandlers savevm_vmxnet3_msix =3D { - .save_state =3D vmxnet3_msix_save, - .load_state =3D vmxnet3_msix_load, -}; - static uint64_t vmxnet3_device_serial_num(VMXNET3State *s) { uint64_t dsn_payload; @@ -2203,7 +2183,6 @@ static uint64_t vmxnet3_device_serial_num(VMXNET3Stat= e *s) =20 static void vmxnet3_pci_realize(PCIDevice *pci_dev, Error **errp) { - DeviceState *dev =3D DEVICE(pci_dev); VMXNET3State *s =3D VMXNET3(pci_dev); int ret; =20 @@ -2249,8 +2228,6 @@ static void vmxnet3_pci_realize(PCIDevice *pci_dev, E= rror **errp) pcie_dev_ser_num_init(pci_dev, VMXNET3_DSN_OFFSET, vmxnet3_device_serial_num(s)); } - - register_savevm_live(dev, "vmxnet3-msix", -1, 1, &savevm_vmxnet3_msix,= s); } =20 static void vmxnet3_instance_init(Object *obj) @@ -2440,39 +2417,15 @@ static const VMStateDescription vmstate_vmxnet3_int= _state =3D { } }; =20 -static bool vmxnet3_vmstate_need_pcie_device(void *opaque) -{ - VMXNET3State *s =3D VMXNET3(opaque); - - return !(s->compat_flags & VMXNET3_COMPAT_FLAG_DISABLE_PCIE); -} - -static bool vmxnet3_vmstate_test_pci_device(void *opaque, int version_id) -{ - return !vmxnet3_vmstate_need_pcie_device(opaque); -} - -static const VMStateDescription vmstate_vmxnet3_pcie_device =3D { - .name =3D "vmxnet3/pcie", - .version_id =3D 1, - .minimum_version_id =3D 1, - .needed =3D vmxnet3_vmstate_need_pcie_device, - .fields =3D (VMStateField[]) { - VMSTATE_PCI_DEVICE(parent_obj, VMXNET3State), - VMSTATE_END_OF_LIST() - } -}; - static const VMStateDescription vmstate_vmxnet3 =3D { .name =3D "vmxnet3", - .version_id =3D 1, - .minimum_version_id =3D 1, + .version_id =3D 2, + .minimum_version_id =3D 2, .pre_save =3D vmxnet3_pre_save, .post_load =3D vmxnet3_post_load, .fields =3D (VMStateField[]) { - VMSTATE_STRUCT_TEST(parent_obj, VMXNET3State, - vmxnet3_vmstate_test_pci_device, 0, - vmstate_pci_device, PCIDevice), + VMSTATE_PCI_DEVICE(parent_obj, VMXNET3State), + VMSTATE_MSIX(parent_obj, VMXNET3State), VMSTATE_BOOL(rx_packets_compound, VMXNET3State), VMSTATE_BOOL(rx_vlan_stripping, VMXNET3State), VMSTATE_BOOL(lro_supported, VMXNET3State), @@ -2508,7 +2461,6 @@ static const VMStateDescription vmstate_vmxnet3 =3D { }, .subsections =3D (const VMStateDescription*[]) { &vmxstate_vmxnet3_mcast_list, - &vmstate_vmxnet3_pcie_device, NULL } }; --=20 2.17.1