From nobody Sat May 18 20:37:09 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1613138242; cv=none; d=zohomail.com; s=zohoarc; b=gy/1Z8DMPQ/2OaRdFdZcGSHH/JEi+VInHmnVXb1bJIHrqLO8ljg98DLn9sHyLRUjURItujQoe2NMI9ymnISMK6qSbBX5crA9S3y8N/771wqB6yB5s0Oxu0w8PTITRiqvJa3eUo0dWxF0qh61F1NQctz/asZMQDAG+dKltsg6ssg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1613138242; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=jcMTMUXlB9fn6rvY/i3Nx6DEu5q7slM2IdVjMLgYj3w=; b=KZmwNxWmwZcN3OxYdBanfbNrGm97kxvx8gwXYHm1Po+edA9XwWBHbnTuz9uH7eUUHIomUynKcYzmMJ8BngXoh8tDN9jVBvuFhJLGS11NMuDYzdAWbvcf+vROcToIeEgnoWEGwR100YtjYOMxVfJMCBz83qXR8iUpPGgkE2fVf8g= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1613138242359312.8117905175586; Fri, 12 Feb 2021 05:57:22 -0800 (PST) Received: from localhost ([::1]:59044 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lAYwj-00081s-BO for importer@patchew.org; Fri, 12 Feb 2021 08:57:21 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:50906) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lAYsm-0004MZ-70 for qemu-devel@nongnu.org; Fri, 12 Feb 2021 08:53:16 -0500 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:29662) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1lAYsk-0006bQ-LG for qemu-devel@nongnu.org; Fri, 12 Feb 2021 08:53:15 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-565-K4ULx2gqNNuBK9acnabdGA-1; Fri, 12 Feb 2021 08:53:12 -0500 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id C9A5A1936B68; Fri, 12 Feb 2021 13:53:10 +0000 (UTC) Received: from thinkpad.redhat.com (ovpn-112-23.ams2.redhat.com [10.36.112.23]) by smtp.corp.redhat.com (Postfix) with ESMTP id 09FA72C154; Fri, 12 Feb 2021 13:53:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1613137994; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=jcMTMUXlB9fn6rvY/i3Nx6DEu5q7slM2IdVjMLgYj3w=; b=ED6xAk+Xb102QuQysB4oQRPltcu30NIM5dfI4mu/74hVRtqP5Z6ospc/cE4TaXV1nYno1C 91E+6WJW9SPWsMEZxcsK1yPbKMxXkOkyCnyeyxCQMrAqy5MaWLwQVySLxTieQSFRr7YUJK e6wZAEJldY97C+ZYnMeyG//wYxOHFaw= X-MC-Unique: K4ULx2gqNNuBK9acnabdGA-1 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PATCH v3 1/4] pci: cleanup failover sanity check Date: Fri, 12 Feb 2021 14:52:47 +0100 Message-Id: <20210212135250.2738750-2-lvivier@redhat.com> In-Reply-To: <20210212135250.2738750-1-lvivier@redhat.com> References: <20210212135250.2738750-1-lvivier@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=lvivier@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=216.205.24.124; envelope-from=lvivier@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -33 X-Spam_score: -3.4 X-Spam_bar: --- X-Spam_report: (-3.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.569, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action 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: alex.williamson@redhat.com, "Michael S. Tsirkin" , qemu-trivial@nongnu.org, Jason Wang , quintela@redhat.com, Michael Tokarev , Laurent Vivier , zhengxiang9@huawei.com, jfreimann@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Commit a1190ab628 has added a "allow_unplug_during_migration =3D true" at the end of the main "if" block, so it is not needed to set it anymore in the previous checking. Remove it, to have only sub-ifs that check for needed conditions and exit if one fails. Fixes: 4f5b6a05a4e7 ("pci: add option for net failover") Fixes: a1190ab628c0 ("migration: allow unplug during migration for failover= devices") Cc: jfreimann@redhat.com Signed-off-by: Laurent Vivier Reviewed-by: Jens Freimann --- hw/pci/pci.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/hw/pci/pci.c b/hw/pci/pci.c index 512e9042ffae..ecb7aa31fabd 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -2120,10 +2120,8 @@ static void pci_qdev_realize(DeviceState *qdev, Erro= r **errp) pci_qdev_unrealize(DEVICE(pci_dev)); return; } - if (!(pci_dev->cap_present & QEMU_PCI_CAP_MULTIFUNCTION) - && (PCI_FUNC(pci_dev->devfn) =3D=3D 0)) { - qdev->allow_unplug_during_migration =3D true; - } else { + if ((pci_dev->cap_present & QEMU_PCI_CAP_MULTIFUNCTION) + || (PCI_FUNC(pci_dev->devfn) !=3D 0)) { error_setg(errp, "failover: primary device must be in its own " "PCI slot"); pci_qdev_unrealize(DEVICE(pci_dev)); --=20 2.29.2 From nobody Sat May 18 20:37:10 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1613138277; cv=none; d=zohomail.com; s=zohoarc; b=U9eArVkqCkHobnvUfBoX7L/g4tgfPmDzW2u7YeeI/WWwVXWAkE/ie6SAFaJTogheTs69F121f7POxEm18ghT4uwYXWcuToZpxXN0xzrLDPvmizbhAf5xMjoIoixJwSmadPbWQoySWNDlqAvUHq2xzEF0DQ5zywcgiK9KdhTN288= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1613138277; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=ZyKUyofWE67481aBG/vXPtlg6uti0I7CC265LmJLkCk=; b=FF48PIM5bMpf7zcx86hB1tyYUHYZsGbE6z/baey7VDWSJeWYxF+aUUGWEJv91d+R0PnQWNxc9ieiA/hbHK9UJKWUJxVRNz/lD4pDFcQBY/ShkuyyWNo9j8MzrggcC0RrTMRkarV+F3ZKe1A71Bo3s0zZqRnFaCIyF5T2Bhi0piM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1613138277281456.8387475082558; Fri, 12 Feb 2021 05:57:57 -0800 (PST) Received: from localhost ([::1]:33176 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lAYxI-0000dh-1z for importer@patchew.org; Fri, 12 Feb 2021 08:57:56 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:51000) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lAYsy-0004gm-CY for qemu-devel@nongnu.org; Fri, 12 Feb 2021 08:53:29 -0500 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:53301) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1lAYsw-0006h3-4X for qemu-devel@nongnu.org; Fri, 12 Feb 2021 08:53:28 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-200-ZQ5KVyguNpKvtg8PFlQDxQ-1; Fri, 12 Feb 2021 08:53:21 -0500 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id C9269107ACC7; Fri, 12 Feb 2021 13:53:19 +0000 (UTC) Received: from thinkpad.redhat.com (ovpn-112-23.ams2.redhat.com [10.36.112.23]) by smtp.corp.redhat.com (Postfix) with ESMTP id 2B8062C154; Fri, 12 Feb 2021 13:53:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1613138004; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ZyKUyofWE67481aBG/vXPtlg6uti0I7CC265LmJLkCk=; b=Gs/FVHAzffco3mCOxcjrNO/8zKAioF3UEjeYholfk9Ji6T7mxXKe6nPEil1894HE1PlePa VOXKjsmSFII/ugUthMmggwHDyWaGO4Sk+EsBM8x2s5R0mnR4aC08dPXNR6ayXHB6sPMcpo bdNL1mllygN1cLvJ/MuId2Ja82DFDa0= X-MC-Unique: ZQ5KVyguNpKvtg8PFlQDxQ-1 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PATCH v3 2/4] virtio-net: add missing object_unref() Date: Fri, 12 Feb 2021 14:52:48 +0100 Message-Id: <20210212135250.2738750-3-lvivier@redhat.com> In-Reply-To: <20210212135250.2738750-1-lvivier@redhat.com> References: <20210212135250.2738750-1-lvivier@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=lvivier@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=63.128.21.124; envelope-from=lvivier@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -33 X-Spam_score: -3.4 X-Spam_bar: --- X-Spam_report: (-3.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.569, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action 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: alex.williamson@redhat.com, "Michael S. Tsirkin" , qemu-trivial@nongnu.org, Jason Wang , quintela@redhat.com, Michael Tokarev , Laurent Vivier , zhengxiang9@huawei.com, jfreimann@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" failover_add_primary() calls qdev_device_add() and doesn't unref the device. Because of that, when the device is unplugged a reference is remaining and prevents the cleanup of the object. This prevents to be able to plugin back the failover primary device, with errors like: (qemu) device_add vfio-pci,host=3D0000:41:00.0,id=3Dhostdev0,bus=3Droot.3= ,failover_pair_id=3Dnet0 (qemu) device_del hostdev0 We can check with "info qtree" and "info pci" that the device has been remo= ved, and then: (qemu) device_add vfio-pci,host=3D0000:41:00.0,id=3Dhostdev1,bus=3Droot.3= ,failover_pair_id=3Dnet0 Error: vfio 0000:41:00.0: device is already attached (qemu) device_add vfio-pci,host=3D0000:41:00.0,id=3Dhostdev0,bus=3Droot.3= ,failover_pair_id=3Dnet0 qemu-kvm: Duplicate ID 'hostdev0' for device Fixes: 21e8709b29cd ("failover: Remove primary_dev member") Cc: quintela@redhat.com Signed-off-by: Laurent Vivier Reviewed-by: Jens Freimann --- hw/net/virtio-net.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c index 5150f295e8c5..1c5af08dc556 100644 --- a/hw/net/virtio-net.c +++ b/hw/net/virtio-net.c @@ -862,6 +862,8 @@ static void failover_add_primary(VirtIONet *n, Error **= errp) dev =3D qdev_device_add(opts, &err); if (err) { qemu_opts_del(opts); + } else { + object_unref(OBJECT(dev)); } } else { error_setg(errp, "Primary device not found"); --=20 2.29.2 From nobody Sat May 18 20:37:10 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1613138588; cv=none; d=zohomail.com; s=zohoarc; b=mXAZ7xPtFkAh2ndsmcHnyvrKpmjdGr4AWVvwz16HjkyIfnefV4gtQl0WwcVldbSYEecBP2lMk2qpfwXGOpMzaQ8TLhIben8A3C12Fvu9b3gYApVjT04hhfgKWTuJakX44eDeA+RXFH5ZIJ6WM8V2Of9ZG7Y049gtjnczLUfszj4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1613138588; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=BZxSqmlJG2Scv7NK7OxzylGd6LnBR15diGzo7UDhz9s=; b=NhOls1W4pZ4DGoGC+7AyKnUCyhViqEPyU9qWM2v8YCG453bIbtwiwxYxKmyzjbBN3PYWxBnCE66Gewx8B/EyITmFTaZh5A+ncmhczikWof2CFWTNQ2eZJZR4IyOIvtbQhwaeJHKPnB2Gish7Y7evMxNDQuzC4nKF8dW2g/xGhMU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1613138587789818.1039261338284; Fri, 12 Feb 2021 06:03:07 -0800 (PST) Received: from localhost ([::1]:47090 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lAZ2H-0006dK-Vk for importer@patchew.org; Fri, 12 Feb 2021 09:03:05 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:51040) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lAYt2-0004ip-5d for qemu-devel@nongnu.org; Fri, 12 Feb 2021 08:53:32 -0500 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:21064) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1lAYsz-0006j2-QK for qemu-devel@nongnu.org; Fri, 12 Feb 2021 08:53:31 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-464-hyE8OQNBPPCM30GoXhM9cQ-1; Fri, 12 Feb 2021 08:53:27 -0500 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id E5B55801962; Fri, 12 Feb 2021 13:53:25 +0000 (UTC) Received: from thinkpad.redhat.com (ovpn-112-23.ams2.redhat.com [10.36.112.23]) by smtp.corp.redhat.com (Postfix) with ESMTP id 2B94F2C154; Fri, 12 Feb 2021 13:53:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1613138009; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=BZxSqmlJG2Scv7NK7OxzylGd6LnBR15diGzo7UDhz9s=; b=TzaJ/KHO1tLALLcsWXe6WnsXm5kWj2qE0+kNlgEkL9Nyt6Mk0yhzXdSMhovn6+vPmsySzo KA6qJXUxv+oycPbV3NN3msbl9bIa+6J5WtnnhDzZfNqoQ1LHl3hA6/mx98UiFZ69q6wQcD 35uA6H74m0Iir+pD5tfjFWxp8RNfpgw= X-MC-Unique: hyE8OQNBPPCM30GoXhM9cQ-1 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PATCH v3 3/4] failover: really display a warning when the primary device is not found Date: Fri, 12 Feb 2021 14:52:49 +0100 Message-Id: <20210212135250.2738750-4-lvivier@redhat.com> In-Reply-To: <20210212135250.2738750-1-lvivier@redhat.com> References: <20210212135250.2738750-1-lvivier@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=lvivier@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=63.128.21.124; envelope-from=lvivier@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -33 X-Spam_score: -3.4 X-Spam_bar: --- X-Spam_report: (-3.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.569, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action 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: alex.williamson@redhat.com, "Michael S. Tsirkin" , qemu-trivial@nongnu.org, Jason Wang , quintela@redhat.com, Michael Tokarev , Laurent Vivier , zhengxiang9@huawei.com, jfreimann@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" In failover_add_primary(), we search the id of the failover device by scanning the list of the devices in the opts list to find a device with a failover_pair_id equals to the id of the virtio-net device. If the failover_pair_id is not found, QEMU ignores the primary device silently (which also means it will not be hidden and it will be enabled directly at boot). After that, we search the id in the opts list to do a qdev_device_add() with it. The device will be always found as otherwise we had exited before, and thus the warning is never displayed. Fix that by moving the error report to the first exit condition. Also add a g_assert() to be sure the compiler will not complain about a possibly NULL pointer. Signed-off-by: Laurent Vivier Reviewed-by: Jens Freimann --- hw/net/virtio-net.c | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c index 1c5af08dc556..439f823b190c 100644 --- a/hw/net/virtio-net.c +++ b/hw/net/virtio-net.c @@ -855,21 +855,19 @@ static void failover_add_primary(VirtIONet *n, Error = **errp) =20 id =3D failover_find_primary_device_id(n); if (!id) { + error_setg(errp, "Primary device not found"); + error_append_hint(errp, "Virtio-net failover will not work. Make " + "sure primary device has parameter" + " failover_pair_id=3D%s\n", n->netclient_name); return; } opts =3D qemu_opts_find(qemu_find_opts("device"), id); - if (opts) { - dev =3D qdev_device_add(opts, &err); - if (err) { - qemu_opts_del(opts); - } else { - object_unref(OBJECT(dev)); - } + g_assert(opts); /* cannot be NULL because id was found using opts list= */ + dev =3D qdev_device_add(opts, &err); + if (err) { + qemu_opts_del(opts); } else { - error_setg(errp, "Primary device not found"); - error_append_hint(errp, "Virtio-net failover will not work. Make " - "sure primary device has parameter" - " failover_pair_id=3D\n"); + object_unref(OBJECT(dev)); } error_propagate(errp, err); } --=20 2.29.2 From nobody Sat May 18 20:37:10 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1613138313; cv=none; d=zohomail.com; s=zohoarc; b=mZFa6dD1l0fe5oXZAxEjjQpHBaXBhqRNRSFr/xFrPKVt2rnuv+9MVO8l+ipJgccwdE3Og/9yNs3B4I3rvpx/rGarKbB0g16aamvYlurL3TP+9dnDXVdZBL76H8lcrAyQRaL824d5FAkLaJYcbAkh95rsx1Y3aJjnk0SRR1qh1Jk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1613138313; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=RBROj3NlDS/OwP564bZDRllLKX2xmnrpv22DcY6ZE2Q=; b=ivSf+Vzc8AU71qV/VMxsqBg2O9BL7tFGzaU1Kf/bPuZvSlyGjxkKQUpy3dtDkzkfUTGZ5u0s3tHgiiRRZ0UR4Q5yRrcCVUarHcotW21s6jbbWP61S4+SCu3pXfvVlJXTUu2gjxRoq2AeSMBCgdWfiP8Id/02vQlJaSG+RQPFfTQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 161313831324690.61214939099375; Fri, 12 Feb 2021 05:58:33 -0800 (PST) Received: from localhost ([::1]:35612 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lAYxs-0001gV-63 for importer@patchew.org; Fri, 12 Feb 2021 08:58:32 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:51120) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lAYtA-0004rg-72 for qemu-devel@nongnu.org; Fri, 12 Feb 2021 08:53:40 -0500 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:23948) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1lAYt8-0006lP-67 for qemu-devel@nongnu.org; Fri, 12 Feb 2021 08:53:39 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-238-ZfxMCGWMMWmqeT9OMqmt6A-1; Fri, 12 Feb 2021 08:53:30 -0500 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 0E5CF6EE2A; Fri, 12 Feb 2021 13:53:29 +0000 (UTC) Received: from thinkpad.redhat.com (ovpn-112-23.ams2.redhat.com [10.36.112.23]) by smtp.corp.redhat.com (Postfix) with ESMTP id 438352C154; Fri, 12 Feb 2021 13:53:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1613138014; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=RBROj3NlDS/OwP564bZDRllLKX2xmnrpv22DcY6ZE2Q=; b=B6H+bx6GIcH8ASAS4oY6aTK14aW5USFUIir+No2YfVzsyXGvTt7MCsX3L2bMOXxoYu/nzE WNbJ5/qMQDGXXRVTL0aaRAQ8At60GFs6HvKMdgM44k0PExHiXrqntCZzfq116w/cPEq39/ Af04+Se5yv1K/cb4VRiwg0pg/yTRAfA= X-MC-Unique: ZfxMCGWMMWmqeT9OMqmt6A-1 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PATCH v3 4/4] pcie: don't set link state active if the slot is empty Date: Fri, 12 Feb 2021 14:52:50 +0100 Message-Id: <20210212135250.2738750-5-lvivier@redhat.com> In-Reply-To: <20210212135250.2738750-1-lvivier@redhat.com> References: <20210212135250.2738750-1-lvivier@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=lvivier@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=63.128.21.124; envelope-from=lvivier@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -33 X-Spam_score: -3.4 X-Spam_bar: --- X-Spam_report: (-3.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.569, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action 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: alex.williamson@redhat.com, "Michael S. Tsirkin" , qemu-trivial@nongnu.org, Jason Wang , quintela@redhat.com, Michael Tokarev , Laurent Vivier , zhengxiang9@huawei.com, jfreimann@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" When the pcie slot is initialized, by default PCI_EXP_LNKSTA_DLLLA (Data Link Layer Link Active) is set in PCI_EXP_LNKSTA (Link Status) without checking if the slot is empty or not. This is confusing for the kernel because as it sees the link is up it tries to read the vendor ID and fails: (From https://bugzilla.kernel.org/show_bug.cgi?id=3D211691) [ 1.661105] pcieport 0000:00:02.2: pciehp: Slot Capabilities : 0x00= 02007b [ 1.661115] pcieport 0000:00:02.2: pciehp: Slot Status : 0x00= 10 [ 1.661123] pcieport 0000:00:02.2: pciehp: Slot Control : 0x07= c0 [ 1.661138] pcieport 0000:00:02.2: pciehp: Slot #0 AttnBtn+ PwrCtrl+ MRL= - AttnInd+ PwrInd+ HotPlug+ Surprise+ Interlock+ NoCompl- IbPresDis- LLActR= ep+ [ 1.662581] pcieport 0000:00:02.2: pciehp: pciehp_get_power_status: SLOT= CTRL 6c value read 7c0 [ 1.662597] pcieport 0000:00:02.2: pciehp: pciehp_check_link_active: lnk= _status =3D 2204 [ 1.662703] pcieport 0000:00:02.2: pciehp: pending interrupts 0x0010 fro= m Slot Status [ 1.662706] pcieport 0000:00:02.2: pciehp: pcie_enable_notification: SLO= TCTRL 6c write cmd 1031 [ 1.662730] pcieport 0000:00:02.2: pciehp: pciehp_check_link_active: lnk= _status =3D 2204 [ 1.662748] pcieport 0000:00:02.2: pciehp: pciehp_check_link_active: lnk= _status =3D 2204 [ 1.662750] pcieport 0000:00:02.2: pciehp: Slot(0-2): Link Up [ 2.896132] pcieport 0000:00:02.2: pciehp: pciehp_check_link_status: lnk= _status =3D 2204 [ 2.896135] pcieport 0000:00:02.2: pciehp: Slot(0-2): No device found [ 2.896900] pcieport 0000:00:02.2: pciehp: pending interrupts 0x0010 fro= m Slot Status [ 2.896903] pcieport 0000:00:02.2: pciehp: pciehp_power_off_slot: SLOTCT= RL 6c write cmd 400 [ 3.656901] pcieport 0000:00:02.2: pciehp: pending interrupts 0x0009 fro= m Slot Status This is really a problem with virtio-net failover that hotplugs a VFIO card during the boot process. The kernel can shutdown the slot while QEMU is hotplugging it, and this likely ends by an automatic unplug of the card. At the end of the boot sequence the card has disappeared. To fix that, don't set the "Link Active" state in the init function, but rely on the plug function to do it, as the mechanism has already been introduced by 2f2b18f60bf1. Fixes: 2f2b18f60bf1 ("pcie: set link state inactive/active after hot unplug= /plug") Cc: zhengxiang9@huawei.com Fixes: 3d67447fe7c2 ("pcie: Fill PCIESlot link fields to support higher spe= eds and widths") Cc: alex.williamson@redhat.com Fixes: b2101eae63ea ("pcie: Set the "link active" in the link status regist= er") Cc: benh@kernel.crashing.org Signed-off-by: Laurent Vivier --- hw/pci/pcie.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/hw/pci/pcie.c b/hw/pci/pcie.c index d4010cf8f361..a733e2fb879a 100644 --- a/hw/pci/pcie.c +++ b/hw/pci/pcie.c @@ -75,11 +75,6 @@ pcie_cap_v1_fill(PCIDevice *dev, uint8_t port, uint8_t t= ype, uint8_t version) QEMU_PCI_EXP_LNKSTA_NLW(QEMU_PCI_EXP_LNK_X1) | QEMU_PCI_EXP_LNKSTA_CLS(QEMU_PCI_EXP_LNK_2_5GT)); =20 - if (dev->cap_present & QEMU_PCIE_LNKSTA_DLLLA) { - pci_word_test_and_set_mask(exp_cap + PCI_EXP_LNKSTA, - PCI_EXP_LNKSTA_DLLLA); - } - /* We changed link status bits over time, and changing them across * migrations is generally fine as hardware changes them too. * Let's not bother checking. @@ -125,8 +120,7 @@ static void pcie_cap_fill_slot_lnk(PCIDevice *dev) */ pci_long_test_and_set_mask(exp_cap + PCI_EXP_LNKCAP, PCI_EXP_LNKCAP_DLLLARC); - pci_word_test_and_set_mask(exp_cap + PCI_EXP_LNKSTA, - PCI_EXP_LNKSTA_DLLLA); + /* the PCI_EXP_LNKSTA_DLLLA will be set in the hotplug function */ =20 /* * Target Link Speed defaults to the highest link speed supported = by @@ -427,6 +421,7 @@ void pcie_cap_slot_plug_cb(HotplugHandler *hotplug_dev,= DeviceState *dev, PCIDevice *hotplug_pdev =3D PCI_DEVICE(hotplug_dev); uint8_t *exp_cap =3D hotplug_pdev->config + hotplug_pdev->exp.exp_cap; PCIDevice *pci_dev =3D PCI_DEVICE(dev); + uint32_t lnkcap =3D pci_get_long(exp_cap + PCI_EXP_LNKCAP); =20 /* Don't send event when device is enabled during qemu machine creatio= n: * it is present on boot, no hotplug event is necessary. We do send an @@ -434,7 +429,8 @@ void pcie_cap_slot_plug_cb(HotplugHandler *hotplug_dev,= DeviceState *dev, if (!dev->hotplugged) { pci_word_test_and_set_mask(exp_cap + PCI_EXP_SLTSTA, PCI_EXP_SLTSTA_PDS); - if (pci_dev->cap_present & QEMU_PCIE_LNKSTA_DLLLA) { + if (pci_dev->cap_present & QEMU_PCIE_LNKSTA_DLLLA || + (lnkcap & PCI_EXP_LNKCAP_DLLLARC)) { pci_word_test_and_set_mask(exp_cap + PCI_EXP_LNKSTA, PCI_EXP_LNKSTA_DLLLA); } @@ -448,7 +444,8 @@ void pcie_cap_slot_plug_cb(HotplugHandler *hotplug_dev,= DeviceState *dev, if (pci_get_function_0(pci_dev)) { pci_word_test_and_set_mask(exp_cap + PCI_EXP_SLTSTA, PCI_EXP_SLTSTA_PDS); - if (pci_dev->cap_present & QEMU_PCIE_LNKSTA_DLLLA) { + if (pci_dev->cap_present & QEMU_PCIE_LNKSTA_DLLLA || + (lnkcap & PCI_EXP_LNKCAP_DLLLARC)) { pci_word_test_and_set_mask(exp_cap + PCI_EXP_LNKSTA, PCI_EXP_LNKSTA_DLLLA); } @@ -640,6 +637,7 @@ void pcie_cap_slot_write_config(PCIDevice *dev, uint32_t pos =3D dev->exp.exp_cap; uint8_t *exp_cap =3D dev->config + pos; uint16_t sltsta =3D pci_get_word(exp_cap + PCI_EXP_SLTSTA); + uint32_t lnkcap =3D pci_get_long(exp_cap + PCI_EXP_LNKCAP); =20 if (ranges_overlap(addr, len, pos + PCI_EXP_SLTSTA, 2)) { /* @@ -695,7 +693,8 @@ void pcie_cap_slot_write_config(PCIDevice *dev, =20 pci_word_test_and_clear_mask(exp_cap + PCI_EXP_SLTSTA, PCI_EXP_SLTSTA_PDS); - if (dev->cap_present & QEMU_PCIE_LNKSTA_DLLLA) { + if (dev->cap_present & QEMU_PCIE_LNKSTA_DLLLA || + (lnkcap & PCI_EXP_LNKCAP_DLLLARC)) { pci_word_test_and_clear_mask(exp_cap + PCI_EXP_LNKSTA, PCI_EXP_LNKSTA_DLLLA); } --=20 2.29.2