From nobody Wed May 1 17:59:55 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) client-ip=207.211.31.81; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=none dis=none) header.from=ixsystems.com ARC-Seal: i=1; a=rsa-sha256; t=1582526817; cv=none; d=zohomail.com; s=zohoarc; b=Oe7C7mTfTKnhMO90XAwsU8JfHi9/v7fF7+86ECZpb4dQs8MmGtIa9S+MzSo+Jn40BXdjzTtoP7/T5ewtGCi8bhSlJvrPUCGxRCFlQphLhPzGXLJa4dhB3lwBsk1mEqve30cQo/e8tSj1OXbhUA1X6cL4L0hZZPYW5h3XaS0MpCQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1582526817; 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=luOGNUOxRZodfCD1NSmWn6OExTqFaXIhIjNu3/H05zk=; b=k5wQC0EbD0x5j9y/tY6fHsLuev2dLc80DL/RuR20XIjE2XChUS81+RtHnPZueyt2c6HCPDBvpE9EGdU0yzYocUmMc0/G4IvqwlOF/AdauYDPNmbsZEFLctVljLQekR1rIYlur1NGsA1BDIQymMt2vzIVW+BPVSXybFi/nszkiRM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from us-smtp-delivery-1.mimecast.com (us-smtp-2.mimecast.com [207.211.31.81]) by mx.zohomail.com with SMTPS id 1582526817248814.8164287712701; Sun, 23 Feb 2020 22:46:57 -0800 (PST) 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-341-AE4kaF6WN0GFx7DpTjQXaA-1; Mon, 24 Feb 2020 01:46:53 -0500 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 31CE4107ACC7; Mon, 24 Feb 2020 06:46:48 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 324EB396; Mon, 24 Feb 2020 06:46:47 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 7D1B618095FF; Mon, 24 Feb 2020 06:46:41 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 01O6kcW2025537 for ; Mon, 24 Feb 2020 01:46:38 -0500 Received: by smtp.corp.redhat.com (Postfix) id 43CE210E60DC; Mon, 24 Feb 2020 06:46:38 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast01.extmail.prod.ext.rdu2.redhat.com [10.11.55.17]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 3C9C510E60DE for ; Mon, 24 Feb 2020 06:46:36 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [205.139.110.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 38BA485A308 for ; Mon, 24 Feb 2020 06:46:36 +0000 (UTC) Received: from mail-yb1-f196.google.com (mail-yb1-f196.google.com [209.85.219.196]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-4-mB1w8aSqNRqrTW9C-_06bg-1; Mon, 24 Feb 2020 01:46:33 -0500 Received: by mail-yb1-f196.google.com with SMTP id u26so4194347ybd.3 for ; Sun, 23 Feb 2020 22:46:33 -0800 (PST) Received: from xeon-freebsd.freqlabs.com. (69-228-200-148.lightspeed.knvltn.sbcglobal.net. [69.228.200.148]) by smtp.gmail.com with ESMTPSA id j184sm4821447ywa.39.2020.02.23.22.46.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 23 Feb 2020 22:46:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1582526816; h=from:from:sender:sender: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:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=luOGNUOxRZodfCD1NSmWn6OExTqFaXIhIjNu3/H05zk=; b=UJZEIb9qop7gTAd0aiuDgTYbmwfdcO4GBl1/3ukzD5E30/lNzqkg9/EaByTbw3SdRLUXtw kWf0O2dY+1H1vqYpZ3lRyJe977GCAmU3nvHb1zHZoX+pmvqcOHdNfLqllEfWHgMMm+HoqP ttV6MOUnTcUPgOJxaptNNJjLgvOIeeg= X-MC-Unique: AE4kaF6WN0GFx7DpTjQXaA-1 X-MC-Unique: mB1w8aSqNRqrTW9C-_06bg-1 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=RepiImqKtit3Sd9mVA53n61A+sa8sLfLeWE8if6UWJg=; b=MjqGsgLQKOwCLzmnweMNsbB9drKfOe8bTOOMQEoJzLK+8KUvgV1WLDFhnseeeFBHNs NmDZQUlAB49htnd+734mv9Z425N7XXQPbyA9Y0l5TS8KJMPgi+4XQSk32vfuvGX6qZk7 xsi3cAI1tlQIH15w9YS/qmb35Ki6A5Y96pGiAWw2zhZsXK/Q5pl89qPtAqrOqLKj52VL 6+k7lj3FbeXHqPCHKRdWMhC8m1lthVq2odOIm9D+vtM45qQOLtdMTToB1/s3vW3KoXWi 4SrNDHe8y/vsp9ov0aDdEhwOd7vpGZycIEvjkQaosvgMCWSqSXNfq2JUDyeK4otbhpLJ qhKg== X-Gm-Message-State: APjAAAWwW3qhrCbOQUFBKcvUg8j0ypHfQHlEJDGVzgeoUdTQ3karpxkW 1/26Bmf7NE43AGl6bb67PijpecvJwa4KJgH7NdQDRdstqnA57/8TpPY1f3af467lOTyVTSixQz+ IIsADj/rB63ej/kLXXsD1OHhR2AiHxVpNQutiesZu0Nh6iNi4MhtTfdxgiD+e8zq1LSs= X-Google-Smtp-Source: APXvYqzJQb4TYBWVRDC6z4luq41qGp1sByDSwxlOws5cY1tDUrTTTFz2KrGq/w8qOrE1rhejufSeog== X-Received: by 2002:a25:210:: with SMTP id 16mr45934396ybc.415.1582526792521; Sun, 23 Feb 2020 22:46:32 -0800 (PST) From: Ryan Moeller X-Google-Original-From: Ryan Moeller To: libvir-list@redhat.com Subject: [PATCH v1 01/12] bhyve: process: remove unneeded header Date: Mon, 24 Feb 2020 01:46:13 -0500 Message-Id: <20200224064624.66649-2-ryan@iXsystems.com> In-Reply-To: <20200224064624.66649-1-ryan@iXsystems.com> References: <20200224064624.66649-1-ryan@iXsystems.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 01O6kcW2025537 X-loop: libvir-list@redhat.com Cc: Ryan Moeller X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" Signed-off-by: Ryan Moeller Reviewed-by: Daniel P. Berrang=C3=A9 --- src/bhyve/bhyve_process.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/bhyve/bhyve_process.c b/src/bhyve/bhyve_process.c index f05be849d4..b0b428eeb4 100644 --- a/src/bhyve/bhyve_process.c +++ b/src/bhyve/bhyve_process.c @@ -27,7 +27,6 @@ #include #include #include -#include #include #include =20 --=20 2.24.1 From nobody Wed May 1 17:59:55 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 207.211.31.120 as permitted sender) client-ip=207.211.31.120; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.120 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=none dis=none) header.from=ixsystems.com ARC-Seal: i=1; a=rsa-sha256; t=1582526817; cv=none; d=zohomail.com; s=zohoarc; b=WFo9TuXq00AutsLAfKBnZBjZnzvrUR6zwNbr4GyQWX574BWVzkSBxp7zvsVt/0cTNZSaWFRrvIHt7XgkJ9PY6W6Way2g23QhlsweSO3Qn697LhzSV7wyWP0O3lCw6URvh3vFoH21zH+CEOkIK1Bog/qI//H8Gr0eo3mqRrYU2sk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1582526817; 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=CAvfZ0Yr86NpFcHvXsRBi0mDOcNHYbYQeQGnNMy4zrU=; b=Js+QAro+hR5n9KChD41g0k+yfL9r53z81Ol17P4TY6w4Xx0wDei4Sj8LIuvpDB4WFOQ8ZqHBjp80ks75I8ecZUEEw1uy9fVzvuz7BYO/8DJHcdrGXcNjY7nCWLpY0h9H8vZ2656Hbfi3IyjTp/MSavuunMamF5ZfCZ2hVGnYetg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.120 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [207.211.31.120]) by mx.zohomail.com with SMTPS id 1582526817245122.83843319551727; Sun, 23 Feb 2020 22:46:57 -0800 (PST) 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-245-ZxJ2wOonOqmoEPULM2hdUg-1; Mon, 24 Feb 2020 01:46:53 -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 279CF13E2; Mon, 24 Feb 2020 06:46:47 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id CA87F8AC41; Mon, 24 Feb 2020 06:46:46 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 53E2F18089CD; Mon, 24 Feb 2020 06:46:41 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 01O6kcIT025535 for ; Mon, 24 Feb 2020 01:46:38 -0500 Received: by smtp.corp.redhat.com (Postfix) id 418B010E60DF; Mon, 24 Feb 2020 06:46:38 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast06.extmail.prod.ext.rdu2.redhat.com [10.11.55.22]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 3BE7C10E60DD for ; Mon, 24 Feb 2020 06:46:36 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-1.mimecast.com [207.211.31.81]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 50BB6185A78F for ; Mon, 24 Feb 2020 06:46:36 +0000 (UTC) Received: from mail-yb1-f178.google.com (mail-yb1-f178.google.com [209.85.219.178]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-183-fhPDSytQOpu5MjO4z25xig-1; Mon, 24 Feb 2020 01:46:34 -0500 Received: by mail-yb1-f178.google.com with SMTP id f130so4179124ybc.7 for ; Sun, 23 Feb 2020 22:46:33 -0800 (PST) Received: from xeon-freebsd.freqlabs.com. (69-228-200-148.lightspeed.knvltn.sbcglobal.net. [69.228.200.148]) by smtp.gmail.com with ESMTPSA id j184sm4821447ywa.39.2020.02.23.22.46.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 23 Feb 2020 22:46:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1582526816; h=from:from:sender:sender: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:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=CAvfZ0Yr86NpFcHvXsRBi0mDOcNHYbYQeQGnNMy4zrU=; b=VS4oYNj6UuCEyGVhUhgiTdtSXtDpmSOP7/xBPAisAdo622vnHgy5UYbV/6bvtvEJO+K9L/ cpiZIWs41RunUJfneUzv9P9Fp7FDDmvpQO5lxZsHvI9TAaFylP/12alenEHKZ/tLi74PtA DkrIlOJKz0rE0gFWE6DRlsLD7mdWdE0= X-MC-Unique: ZxJ2wOonOqmoEPULM2hdUg-1 X-MC-Unique: fhPDSytQOpu5MjO4z25xig-1 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=s4ok1dRUqzdWMRIhpNRYjA/BlsAEK4JrNzgG+JqPlOs=; b=DVgnTPTqcnWyqMaQAyG7yxivvZIQp5hh3K5hZA5/z1AjGh9Lt9Gt+8SP0nQGJ997TQ oqlBLpMOHvMWW4nvkWxOaNd2qsG2bFARL+4ZX+hoghtgoD8OG4QpIErR4x8Jol036FhU bXbgo/tNwCe07X+OuiLbKyb7cuAb1d3hS12C2MWYVOqe+61hgAFlYIC0yPXziKw4htG7 bfXijrJS60Gux8NThz4jjKAI5KMQt8tVdjxdMI0HyGJ+v7ZBW2kaKIVuyWWA1UdM66mY gnGuCW2CBT1nj608507TQTWHTfnOHk+MVvSIay19OLswjxD/Yrdq1AKJ0VjxkuC2BAIE bMzg== X-Gm-Message-State: APjAAAUJxF+Da6ERt4KAB5sydg89ZXrsPgjJvT5v7l3nNLdPdO+gXQ4U 0S0zntXvXP0mr7G28cX91qdkT9vm7nVDiHWZrm3YZ/onmIsBbNTmjERfpbw587EdhhYY6BZCPtv aw2ZQCZl5UcTa9NIczyzgay9LpLPBJ7gxE56JJT66RFwSKKkWRfF4lPkQn3mrR6ylFXw= X-Google-Smtp-Source: APXvYqy2lzKMR1MRHaPeQ4BnrzqKTvJIDNVNCoWWFOndnMXxZHykX4SoVfXXUDRtp22jXQggqmTwFw== X-Received: by 2002:a25:4156:: with SMTP id o83mr42428958yba.344.1582526793194; Sun, 23 Feb 2020 22:46:33 -0800 (PST) From: Ryan Moeller X-Google-Original-From: Ryan Moeller To: libvir-list@redhat.com Subject: [PATCH v1 02/12] conf: fix use after free Date: Mon, 24 Feb 2020 01:46:14 -0500 Message-Id: <20200224064624.66649-3-ryan@iXsystems.com> In-Reply-To: <20200224064624.66649-1-ryan@iXsystems.com> References: <20200224064624.66649-1-ryan@iXsystems.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 01O6kcIT025535 X-loop: libvir-list@redhat.com Cc: Ryan Moeller X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" Signed-off-by: Ryan Moeller Reviewed-by: Daniel P. Berrang=C3=A9 --- src/conf/virnetworkobj.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/conf/virnetworkobj.c b/src/conf/virnetworkobj.c index 299cdba52d..b2affaacd3 100644 --- a/src/conf/virnetworkobj.c +++ b/src/conf/virnetworkobj.c @@ -1886,7 +1886,7 @@ virNetworkObjLoadAllPorts(virNetworkObjPtr net, } =20 while ((rc =3D virDirRead(dh, &de, dir)) > 0) { - char *file =3D NULL; + g_autofree char *file =3D NULL; =20 if (!virStringStripSuffix(de->d_name, ".xml")) continue; @@ -1894,9 +1894,6 @@ virNetworkObjLoadAllPorts(virNetworkObjPtr net, file =3D g_strdup_printf("%s/%s.xml", dir, de->d_name); =20 portdef =3D virNetworkPortDefParseFile(file); - VIR_FREE(file); - file =3D NULL; - if (!portdef) { VIR_WARN("Cannot parse port %s", file); continue; --=20 2.24.1 From nobody Wed May 1 17:59:55 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) client-ip=207.211.31.81; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=none dis=none) header.from=ixsystems.com ARC-Seal: i=1; a=rsa-sha256; t=1582526841; cv=none; d=zohomail.com; s=zohoarc; b=VnFnGSBsf2SvID6/HC2p6oZxz4YOFW7nKdLeHcJfDkAUrvLQoFWlEP51z6BvnqRPAP11o7uL4svgkQcR2GTPB6PpeHO1BaHT6pAllSxA26cywHwkipXryAOC3CYQ7ryS/ypC8sF2X0Twcb4YsPVoWxJuo0Ap99J1rWng3b/Bd9Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1582526841; 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=h/T91oCeNts83S55X1apGNxFfQr9BEqCgDn+0P8Y38A=; b=GElLRh8SQk5GbuHwErGiQ2nTAqedsf/uU0aaspL0BR9q63NBRbGjD73BTlP4caDagBNTi4E8o8VY7uYOl8s1gLCnAOHUqn1DWDiDuoidWD7i37GTXTVObw0KXJeL4XUV0v6VGRsQLJERh4itpgqENp4IjTo9aN0wyVXnULBmplE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from us-smtp-delivery-1.mimecast.com (us-smtp-2.mimecast.com [207.211.31.81]) by mx.zohomail.com with SMTPS id 15825268412827.353573626607613; Sun, 23 Feb 2020 22:47:21 -0800 (PST) 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-197-4leJRM_OOteVfFIpK71enA-1; Mon, 24 Feb 2020 01:47:18 -0500 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id F3468800053; Mon, 24 Feb 2020 06:47:12 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id C97D95C114; Mon, 24 Feb 2020 06:47:12 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 802DD860E3; Mon, 24 Feb 2020 06:47:12 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 01O6kden025555 for ; Mon, 24 Feb 2020 01:46:40 -0500 Received: by smtp.corp.redhat.com (Postfix) id BB7B42028CD6; Mon, 24 Feb 2020 06:46:39 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast03.extmail.prod.ext.rdu2.redhat.com [10.11.55.19]) by smtp.corp.redhat.com (Postfix) with ESMTPS id B60D92028CD2 for ; Mon, 24 Feb 2020 06:46:37 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [207.211.31.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 5168A8002E0 for ; Mon, 24 Feb 2020 06:46:37 +0000 (UTC) Received: from mail-yb1-f195.google.com (mail-yb1-f195.google.com [209.85.219.195]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-275-sdvpC-2sO6uZSHdkYob-pA-1; Mon, 24 Feb 2020 01:46:34 -0500 Received: by mail-yb1-f195.google.com with SMTP id u47so4204700ybi.1 for ; Sun, 23 Feb 2020 22:46:34 -0800 (PST) Received: from xeon-freebsd.freqlabs.com. (69-228-200-148.lightspeed.knvltn.sbcglobal.net. [69.228.200.148]) by smtp.gmail.com with ESMTPSA id j184sm4821447ywa.39.2020.02.23.22.46.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 23 Feb 2020 22:46:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1582526840; h=from:from:sender:sender: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:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=h/T91oCeNts83S55X1apGNxFfQr9BEqCgDn+0P8Y38A=; b=V7haD9Cq4RrFTR1jNnpkQQyRJsdt8x9k+rUmjAyPS9MzkJtMWN0Esly05jK38iyJmaNyHm pUVIE+wgGqC8Qg0ZWlC3+XQqy5mRKjK9pDFI8lPfy7whdUOdfseGGGT9zLnuCSwFU3Utgq n3iOrwjXQuO0BYLB2f95oojF7TJjmRg= X-MC-Unique: 4leJRM_OOteVfFIpK71enA-1 X-MC-Unique: sdvpC-2sO6uZSHdkYob-pA-1 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=CkHfI4pFe4lX7gMzldDJlJB/IkzzTqH7iYgIydangWk=; b=dv5NFsV8DW9JKYTGMXw6uoGlssrJ7760f1lZ+8tYnpwWUov0vT59hO1E0S+Sg4tVm/ IPRfgRxH39dysG352lty774Y1xjsRHPhj6YQhmDyOtfZoGPSQjAWEyTBz32bsfOLSdEB jRcG9JfAC6+1/wloE4rSwp1S+yawR8tqOXBsptz4Wvoe3ddHowhqelvbs5bgLbKWrTzw vu9NDWSXKasfAUzMuCMEVdfcmL6pEMW1NT/Gs80PB4Y31G1vVxnVzThau7ylfyg/O3ml 7x4rl6ecDHxCAJ7X3rb0peurX7o6ae2hT5shQjKA0cr7iWeVJpD0R3ajkxu14FOIlNr+ oQmg== X-Gm-Message-State: APjAAAXPp8weEb3sBmMALs5wvk2NYciofVQRjZaO8JJRR0uN8Q1rZoS0 LyxBzoCj/3KBCSc3/lX0TkmXpAEz0pMmoXDQCKRyZu7vU/FG4/MiWlEOeVGBtfi+Y0SzFlAxw58 Z32SByJUZPH+uZBVByIcJNDqB4H4uH5mw7bWGzgc7u/9sIDdGUfL6LH89VrdU8lhci9E= X-Google-Smtp-Source: APXvYqzdHFRFqJvlNk1Z5JLSBgX731uMCPmWCP9Gk5o7TqLlmHn4vuYfJ5/vONbAzXaWg/UjCbu8bA== X-Received: by 2002:a25:be91:: with SMTP id i17mr45489709ybk.452.1582526793953; Sun, 23 Feb 2020 22:46:33 -0800 (PST) From: Ryan Moeller X-Google-Original-From: Ryan Moeller To: libvir-list@redhat.com Subject: [PATCH v1 03/12] bhyve: process: don't bother seeking to end of log Date: Mon, 24 Feb 2020 01:46:15 -0500 Message-Id: <20200224064624.66649-4-ryan@iXsystems.com> In-Reply-To: <20200224064624.66649-1-ryan@iXsystems.com> References: <20200224064624.66649-1-ryan@iXsystems.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 01O6kden025555 X-loop: libvir-list@redhat.com Cc: Ryan Moeller X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" The file is opened O_APPEND. Signed-off-by: Ryan Moeller Reviewed-by: Daniel P. Berrang=C3=A9 --- src/bhyve/bhyve_process.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/bhyve/bhyve_process.c b/src/bhyve/bhyve_process.c index b0b428eeb4..a11f75a894 100644 --- a/src/bhyve/bhyve_process.c +++ b/src/bhyve/bhyve_process.c @@ -101,8 +101,6 @@ virBhyveProcessStart(virConnectPtr conn, char *devicemap =3D NULL; char *logfile =3D NULL; int logfd =3D -1; - off_t pos =3D -1; - char ebuf[1024]; virCommandPtr cmd =3D NULL; virCommandPtr load_cmd =3D NULL; bhyveConnPtr driver =3D conn->privateData; @@ -172,9 +170,6 @@ virBhyveProcessStart(virConnectPtr conn, =20 /* Log generated command line */ virCommandWriteArgLog(load_cmd, logfd); - if ((pos =3D lseek(logfd, 0, SEEK_END)) < 0) - VIR_WARN("Unable to seek to end of logfile: %s", - virStrerror(errno, ebuf, sizeof(ebuf))); =20 VIR_DEBUG("Loading domain '%s'", vm->def->name); if (virCommandRun(load_cmd, NULL) < 0) --=20 2.24.1 From nobody Wed May 1 17:59:55 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) client-ip=205.139.110.61; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=none dis=none) header.from=ixsystems.com ARC-Seal: i=1; a=rsa-sha256; t=1582526845; cv=none; d=zohomail.com; s=zohoarc; b=TXNC8F63sZmkF3rel3BxAYawYvUc8XLGJMpbOfzHeF9zkE8f2g/WQpqzsoXlkd6HedN0T/ZPNpmxOn3vmJHQPsyy+9rlTD8NkIvMYmiIPBx9ffBV8S01VTmz+2VKh019OD3sN7iu0OorGOVKj7bNQO9XdnoYK5AU/OtlNOkw9Z4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1582526845; 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=qp8iQSB64ivSp2BjDdC5rZYApRZUcWbkUjB+gJShWmM=; b=c2aumJK8woeFlp/o+p2HhaZiZWCovJBZOHAYXLRvhTCW+YPnD8aKklWX9Ik7qeNfxCRuGz7X7+nwZryuyXjTTCChm7ozoklKdaDEEK07IZhwV3/9AYDY0kG7ySCXiCb8SnDcuisJ3diHp6P5lmrtKH/ZkbaSaLi1BFh5FRNBiVY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from us-smtp-delivery-1.mimecast.com (us-smtp-2.mimecast.com [205.139.110.61]) by mx.zohomail.com with SMTPS id 1582526845488209.20863840403285; Sun, 23 Feb 2020 22:47:25 -0800 (PST) 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-418-fAOUk2L7M9muO5hIpAWPJA-1; Mon, 24 Feb 2020 01:47:22 -0500 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 1B575185735D; Mon, 24 Feb 2020 06:47:17 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E55085C578; Mon, 24 Feb 2020 06:47:16 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 9DD7418089C8; Mon, 24 Feb 2020 06:47:16 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 01O6kdrI025553 for ; Mon, 24 Feb 2020 01:46:39 -0500 Received: by smtp.corp.redhat.com (Postfix) id BB7132028CD5; Mon, 24 Feb 2020 06:46:39 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast03.extmail.prod.ext.rdu2.redhat.com [10.11.55.19]) by smtp.corp.redhat.com (Postfix) with ESMTPS id B5B5E2026D68 for ; Mon, 24 Feb 2020 06:46:37 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [207.211.31.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id A5123800646 for ; Mon, 24 Feb 2020 06:46:37 +0000 (UTC) Received: from mail-yb1-f195.google.com (mail-yb1-f195.google.com [209.85.219.195]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-75-8ubzdL1pO9Clu0Mh6qEhDQ-1; Mon, 24 Feb 2020 01:46:35 -0500 Received: by mail-yb1-f195.google.com with SMTP id y18so1426650ybj.8 for ; Sun, 23 Feb 2020 22:46:35 -0800 (PST) Received: from xeon-freebsd.freqlabs.com. (69-228-200-148.lightspeed.knvltn.sbcglobal.net. [69.228.200.148]) by smtp.gmail.com with ESMTPSA id j184sm4821447ywa.39.2020.02.23.22.46.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 23 Feb 2020 22:46:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1582526844; h=from:from:sender:sender: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:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=qp8iQSB64ivSp2BjDdC5rZYApRZUcWbkUjB+gJShWmM=; b=Ej89kz7ABLY5HTlELqsLJrirW1vpy/sMIPTLXWbguOEfa5o1tD+tVayZ2Gj/d36TnA6IP+ qqKCHnof3RrOUEf8RUvTIYhYZLbnlmKV4LlNqDcs0NFfDJ3f32AZSwxe8NoadesZ8/XN89 vdbGqGn4tBWpvKvkdR2WR4VrXKaj30w= X-MC-Unique: fAOUk2L7M9muO5hIpAWPJA-1 X-MC-Unique: 8ubzdL1pO9Clu0Mh6qEhDQ-1 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=wcEwGHBENlNMP4PN7jYz10y2K+9YPaac/bbYf2GDphQ=; b=CGjjmoTQmzEkwVNs7SIcXD+JwaPMTgrAWoD09lkRWhTIjyEQpOXFWH3Mb3bSzFW1iY couuU9aAJ6xCO37NowxDIm3D8sC734G5Y3dY+yW7HOE5ZlH/348vi2+o0xA8LX8quymS DzRf6zQ0Qkk1YArAB/SYoywORkb+YG6OiShWGYiYJCBxXj6BgExLPrPTVJjI9YakRMNn v5BYCMdGvrLz7SLIJPP1AyLCWU0+JNLqs9W1AeNAVFGhG6fUolQ6C7S3KMuEB7zmA74y ikM65kjIi8cLklk94uSw6PUjkgRkYsdwzsKP7CSv8xUofuGH9sqT6LSarVGMQIZlP+v5 zHSA== X-Gm-Message-State: APjAAAX2YFl+vCGQzXGKee5qj7uyg7csQlZ09q9cpoVaW57To0l+B5lj j7Sq+NNrrTbXC2aRIiVqy+osfZVzCr+miSGSMILwcsXEVaL0X9aw3vG/ofTHQ0YId44o8W7PbQM bEDllKDZGFoKyshovsMxzGufVlFeTBwvbcBLaIlFaYhpG1xdFIJyONu9QZGXM4enRcaY= X-Google-Smtp-Source: APXvYqzkrwsHMEz3RLxhwhjSBqDqi+DW9dmBt7a8qtTV4HoqpZ9X5fUaurAWx+vQV2AZYmQnfEfzxA== X-Received: by 2002:a25:3203:: with SMTP id y3mr41504698yby.424.1582526794469; Sun, 23 Feb 2020 22:46:34 -0800 (PST) From: Ryan Moeller X-Google-Original-From: Ryan Moeller To: libvir-list@redhat.com Subject: [PATCH v1 04/12] bhyve: monitor: Make bhyveMonitor a virClass Date: Mon, 24 Feb 2020 01:46:16 -0500 Message-Id: <20200224064624.66649-5-ryan@iXsystems.com> In-Reply-To: <20200224064624.66649-1-ryan@iXsystems.com> References: <20200224064624.66649-1-ryan@iXsystems.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 01O6kdrI025553 X-loop: libvir-list@redhat.com Cc: Ryan Moeller X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" This makes lifecycle management a bit easier thanks to ref counting, and it is closer to what the qemu driver does. Signed-off-by: Ryan Moeller Reviewed-by: Daniel P. Berrang=C3=A9 --- src/bhyve/bhyve_monitor.c | 116 +++++++++++++++++++++++++------------- 1 file changed, 76 insertions(+), 40 deletions(-) diff --git a/src/bhyve/bhyve_monitor.c b/src/bhyve/bhyve_monitor.c index 0e55e19772..58d40e1f70 100644 --- a/src/bhyve/bhyve_monitor.c +++ b/src/bhyve/bhyve_monitor.c @@ -32,24 +32,51 @@ #include "virerror.h" #include "virfile.h" #include "virlog.h" +#include "virobject.h" =20 #define VIR_FROM_THIS VIR_FROM_BHYVE =20 VIR_LOG_INIT("bhyve.bhyve_monitor"); =20 struct _bhyveMonitor { + virObject parent; + int kq; int watch; bhyveConnPtr driver; + virDomainObjPtr vm; }; =20 +static virClassPtr bhyveMonitorClass; + +static void +bhyveMonitorDispose(void *obj) +{ + bhyveMonitorPtr mon =3D obj; + + VIR_FORCE_CLOSE(mon->kq); + virObjectUnref(mon->vm); +} + +static int +bhyveMonitorOnceInit(void) +{ + if (!VIR_CLASS_NEW(bhyveMonitor, virClassForObject())) + return -1; + + return 0; +} + +VIR_ONCE_GLOBAL_INIT(bhyveMonitor); + static void bhyveMonitorIO(int watch, int kq, int events G_GNUC_UNUSED, void *opaque) { const struct timespec zerowait =3D { 0, 0 }; - virDomainObjPtr vm =3D opaque; - bhyveDomainObjPrivatePtr priv =3D vm->privateData; - bhyveMonitorPtr mon =3D priv->mon; + bhyveMonitorPtr mon =3D opaque; + virDomainObjPtr vm =3D mon->vm; + bhyveConnPtr driver =3D mon->driver; + const char *name; struct kevent kev; int rc, status; =20 @@ -82,60 +109,49 @@ bhyveMonitorIO(int watch, int kq, int events G_GNUC_UN= USED, void *opaque) return; } =20 + name =3D vm->def->name; status =3D kev.data; if (WIFSIGNALED(status) && WCOREDUMP(status)) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Guest %s got signal %d and crashed"), - vm->def->name, - WTERMSIG(status)); - virBhyveProcessStop(mon->driver, vm, - VIR_DOMAIN_SHUTOFF_CRASHED); + name, WTERMSIG(status)); + virBhyveProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_CRASHED); } else if (WIFEXITED(status)) { if (WEXITSTATUS(status) =3D=3D 0) { /* 0 - reboot */ /* TODO: Implementing reboot is a little more complicated.= */ - VIR_INFO("Guest %s rebooted; destroying domain.", - vm->def->name); - virBhyveProcessStop(mon->driver, vm, - VIR_DOMAIN_SHUTOFF_SHUTDOWN); + VIR_INFO("Guest %s rebooted; destroying domain.", name); + virBhyveProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_SHUTDOW= N); } else if (WEXITSTATUS(status) < 3) { /* 1 - shutdown, 2 - halt, 3 - triple fault. others - erro= r */ - VIR_INFO("Guest %s shut itself down; destroying domain.", - vm->def->name); - virBhyveProcessStop(mon->driver, vm, - VIR_DOMAIN_SHUTOFF_SHUTDOWN); + VIR_INFO("Guest %s shut itself down; destroying domain.", = name); + virBhyveProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_SHUTDOW= N); } else { VIR_INFO("Guest %s had an error and exited with status %d;= destroying domain.", - vm->def->name, WEXITSTATUS(status)); - virBhyveProcessStop(mon->driver, vm, - VIR_DOMAIN_SHUTOFF_UNKNOWN); + name, WEXITSTATUS(status)); + virBhyveProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_UNKNOWN= ); } } } } =20 -static void -bhyveMonitorRelease(void *opaque) -{ - virDomainObjPtr vm =3D opaque; - bhyveDomainObjPrivatePtr priv =3D vm->privateData; - bhyveMonitorPtr mon =3D priv->mon; - - VIR_FORCE_CLOSE(mon->kq); - VIR_FREE(mon); -} - -bhyveMonitorPtr -bhyveMonitorOpen(virDomainObjPtr vm, bhyveConnPtr driver) +static bhyveMonitorPtr +bhyveMonitorOpenImpl(virDomainObjPtr vm, bhyveConnPtr driver) { - bhyveMonitorPtr mon =3D NULL; + bhyveMonitorPtr mon; struct kevent kev; =20 - if (VIR_ALLOC(mon) < 0) + if (bhyveMonitorInitialize() < 0) + return NULL; + + if (!(mon =3D virObjectNew(bhyveMonitorClass))) return NULL; =20 mon->driver =3D driver; =20 + virObjectRef(vm); + mon->vm =3D vm; + mon->kq =3D kqueue(); if (mon->kq < 0) { virReportError(VIR_ERR_SYSTEM_ERROR, "%s", @@ -150,14 +166,17 @@ bhyveMonitorOpen(virDomainObjPtr vm, bhyveConnPtr dri= ver) goto cleanup; } =20 + virObjectRef(mon); mon->watch =3D virEventAddHandle(mon->kq, VIR_EVENT_HANDLE_READABLE | VIR_EVENT_HANDLE_ERROR | VIR_EVENT_HANDLE_HANGUP, bhyveMonitorIO, - vm, - bhyveMonitorRelease); + mon, + virObjectFreeCallback); if (mon->watch < 0) { + VIR_DEBUG("failed to add event handle for mon %p", mon); + virObjectUnref(mon); virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("unable to register monitor events")); goto cleanup; @@ -166,18 +185,35 @@ bhyveMonitorOpen(virDomainObjPtr vm, bhyveConnPtr dri= ver) return mon; =20 cleanup: - bhyveMonitorRelease(mon); + bhyveMonitorClose(mon); return NULL; } =20 +bhyveMonitorPtr +bhyveMonitorOpen(virDomainObjPtr vm, bhyveConnPtr driver) +{ + bhyveMonitorPtr mon; + + virObjectRef(vm); + mon =3D bhyveMonitorOpenImpl(vm, driver); + virObjectUnref(vm); + + return mon; +} + void bhyveMonitorClose(bhyveMonitorPtr mon) { if (mon =3D=3D NULL) return; =20 - if (mon->watch > 0) - virEventRemoveHandle(mon->watch); - else - bhyveMonitorRelease(mon); + VIR_DEBUG("cleaning up bhyveMonitor %p", mon); + + if (mon->watch < 0) + return; + + virEventRemoveHandle(mon->watch); + mon->watch =3D -1; + + virObjectUnref(mon); } --=20 2.24.1 From nobody Wed May 1 17:59:55 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) client-ip=205.139.110.61; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=none dis=none) header.from=ixsystems.com ARC-Seal: i=1; a=rsa-sha256; t=1582526816; cv=none; d=zohomail.com; s=zohoarc; b=SLyNH6Q580iHyP2rsXxchGIK+i31QgIn9ee3L3CY512LAZN+qBUH4jFPnAcbdNivTe7zKq1qadQ60JdDHvWsmK6dyxM13XA9il7uecVXBrnFB8TgsUe/A2T79TRtA6oNDx3zhn8u4l5egPIKwV3GfXJ8Hji+7psT0CVuIVl/Aqk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1582526816; 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=F73Rh1mKbzBa3EAjcp3zxFccRZBC31e0WP+dVw+SVxE=; b=BdzMg6byf/EcGggnxUSo90oGRHZYfPIoE7qlH2vIpryM5SnscL63LS3IxwN9FVSzMVJZTt78sy27x8V1cGNAWx6oBRL2ctT970cDG9qsD0uTIYyVPdWIGmMb4eOkKwKIrAfK4+IIFi8IYCqN3Oq5NhUUZEtL01kD6uOlypKMCRQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from us-smtp-delivery-1.mimecast.com (us-smtp-2.mimecast.com [205.139.110.61]) by mx.zohomail.com with SMTPS id 15825268165301011.8433092361939; Sun, 23 Feb 2020 22:46:56 -0800 (PST) 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-438-8nvDjnVJOTa4L011oaXpWQ-1; Mon, 24 Feb 2020 01:46:53 -0500 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 2A5DA800D50; Mon, 24 Feb 2020 06:46:47 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id D02685C10D; Mon, 24 Feb 2020 06:46:46 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 7D318860D9; Mon, 24 Feb 2020 06:46:41 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 01O6kdLE025554 for ; Mon, 24 Feb 2020 01:46:39 -0500 Received: by smtp.corp.redhat.com (Postfix) id BDC192026D68; Mon, 24 Feb 2020 06:46:39 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast01.extmail.prod.ext.rdu2.redhat.com [10.11.55.17]) by smtp.corp.redhat.com (Postfix) with ESMTPS id B645D2028CD4 for ; Mon, 24 Feb 2020 06:46:38 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [205.139.110.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 3245085A30F for ; Mon, 24 Feb 2020 06:46:38 +0000 (UTC) Received: from mail-yb1-f195.google.com (mail-yb1-f195.google.com [209.85.219.195]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-172-4L18YX8fMVqGnSpMCxQcCw-1; Mon, 24 Feb 2020 01:46:36 -0500 Received: by mail-yb1-f195.google.com with SMTP id b141so4170396ybg.10 for ; Sun, 23 Feb 2020 22:46:35 -0800 (PST) Received: from xeon-freebsd.freqlabs.com. (69-228-200-148.lightspeed.knvltn.sbcglobal.net. [69.228.200.148]) by smtp.gmail.com with ESMTPSA id j184sm4821447ywa.39.2020.02.23.22.46.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 23 Feb 2020 22:46:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1582526815; h=from:from:sender:sender: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:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=F73Rh1mKbzBa3EAjcp3zxFccRZBC31e0WP+dVw+SVxE=; b=R+Sq+DOHYJaAuuYL5qCvdUGLvDyr6E4a1OfeLXgrXY1x1l7w4m1EVwr4it4NFQcfqs4u9x hmLlSGNk9HBDJoc3RLAzn0xr1uBPs5gqNn1QNbvKfjmz3Wml9t1Btlfp8ZhzwfkOSzEcB8 pFGvXvvju2Q3Otcys7wy3H994nVunn8= X-MC-Unique: 8nvDjnVJOTa4L011oaXpWQ-1 X-MC-Unique: 4L18YX8fMVqGnSpMCxQcCw-1 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=EaSKwksq/N+6pynW94MO1B2aEF7cl/RR9XrUnxQ9Jrw=; b=ffCcxFgaAVVgIuhQ0uLaHVfEJgBteOQ8ZhU4tBAsMALXmk/sI39VLDcsobiJcAsteV lUKD7Q0Mt24tCYxw6Ezrr0vJYgqryx7KCmXLvywfjpJXlFkvRPfhxqT8OZ3IhY/NjiIk 2rfSwvYmBI9e1Iu5AI9bbyBEQsA/FSpNEPx7mn82QHARDWd2oMmB3ec3eG3e4l5OWWGY iyrhVcMWjc6PbCWmuB88VX+KNamAGBlZyOH7EmbkIyfA8jwpM2wQbDJkBNzDlxKtaIV4 XD1cucqsmXEivlg0ESmiyNwhsgl34dqs7nut/Etzb4c0y57MBIyzN+Pw3rG8E0YXG0HI XOVw== X-Gm-Message-State: APjAAAVQ+ra5RSjMZQSb+3CovBuFchVQ7NzCxIqQRNNYH+tcRHQMOhIU AUvS6xaV9DVGgOEeHE4tOKb5mPKLsZiFu74VmN5ozavAh/CDCadEa+B3xytQMXEK2nIwR/ZTB00 SdRPRwJlfZDMx3RMIWASXFyVUmAPuK77xxHc6qrIS4DMW/oYqFOki45XXE32MvPBtW6s= X-Google-Smtp-Source: APXvYqwpMAQNdXoWdJKBaJWqW3ir3j5dhImE/FpmjqCgOXwzi2N08pcO76TZ7ct0hr2hvBodqHQG+A== X-Received: by 2002:a25:bb81:: with SMTP id y1mr7122280ybg.139.1582526795153; Sun, 23 Feb 2020 22:46:35 -0800 (PST) From: Ryan Moeller X-Google-Original-From: Ryan Moeller To: libvir-list@redhat.com Subject: [PATCH v1 05/12] bhyve: monitor: refactor register/unregister Date: Mon, 24 Feb 2020 01:46:17 -0500 Message-Id: <20200224064624.66649-6-ryan@iXsystems.com> In-Reply-To: <20200224064624.66649-1-ryan@iXsystems.com> References: <20200224064624.66649-1-ryan@iXsystems.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 01O6kdLE025554 X-loop: libvir-list@redhat.com Cc: Ryan Moeller X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" Pull the code for registering and unregistering a bhyve monitor object into separate functions to improve code clarity. Signed-off-by: Ryan Moeller Reviewed-by: Daniel P. Berrang=C3=A9 --- src/bhyve/bhyve_monitor.c | 50 ++++++++++++++++++++++++++------------- 1 file changed, 33 insertions(+), 17 deletions(-) diff --git a/src/bhyve/bhyve_monitor.c b/src/bhyve/bhyve_monitor.c index 58d40e1f70..a1b1a21a6f 100644 --- a/src/bhyve/bhyve_monitor.c +++ b/src/bhyve/bhyve_monitor.c @@ -69,6 +69,37 @@ bhyveMonitorOnceInit(void) =20 VIR_ONCE_GLOBAL_INIT(bhyveMonitor); =20 +static void bhyveMonitorIO(int, int, int, void *); + +static bool +bhyveMonitorRegister(bhyveMonitorPtr mon) +{ + virObjectRef(mon); + mon->watch =3D virEventAddHandle(mon->kq, + VIR_EVENT_HANDLE_READABLE | + VIR_EVENT_HANDLE_ERROR | + VIR_EVENT_HANDLE_HANGUP, + bhyveMonitorIO, + mon, + virObjectFreeCallback); + if (mon->watch < 0) { + VIR_DEBUG("failed to add event handle for mon %p", mon); + virObjectUnref(mon); + return false; + } + return true; +} + +static void +bhyveMonitorUnregister(bhyveMonitorPtr mon) +{ + if (mon->watch < 0) + return; + + virEventRemoveHandle(mon->watch); + mon->watch =3D -1; +} + static void bhyveMonitorIO(int watch, int kq, int events G_GNUC_UNUSED, void *opaque) { @@ -166,17 +197,7 @@ bhyveMonitorOpenImpl(virDomainObjPtr vm, bhyveConnPtr = driver) goto cleanup; } =20 - virObjectRef(mon); - mon->watch =3D virEventAddHandle(mon->kq, - VIR_EVENT_HANDLE_READABLE | - VIR_EVENT_HANDLE_ERROR | - VIR_EVENT_HANDLE_HANGUP, - bhyveMonitorIO, - mon, - virObjectFreeCallback); - if (mon->watch < 0) { - VIR_DEBUG("failed to add event handle for mon %p", mon); - virObjectUnref(mon); + if (!bhyveMonitorRegister(mon)) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("unable to register monitor events")); goto cleanup; @@ -209,11 +230,6 @@ bhyveMonitorClose(bhyveMonitorPtr mon) =20 VIR_DEBUG("cleaning up bhyveMonitor %p", mon); =20 - if (mon->watch < 0) - return; - - virEventRemoveHandle(mon->watch); - mon->watch =3D -1; - + bhyveMonitorUnregister(mon); virObjectUnref(mon); } --=20 2.24.1 From nobody Wed May 1 17:59:55 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) client-ip=207.211.31.81; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=none dis=none) header.from=ixsystems.com ARC-Seal: i=1; a=rsa-sha256; t=1582526846; cv=none; d=zohomail.com; s=zohoarc; b=nvU+6qDgllE4c63HxY0GxrEQ+5aI5FXIIKHgNqf0ssdqIFJLhW91c2cm38ypUYx2SigFNYsekmZPRwIL108CvgF3C46VllEqlqnoroJGWJBYzfICDuKjPzcyv6+I5KLzxx/M8UuNPIkedgM8tCH+Jx83IDK4ZzIcLe+IVCxkQhA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1582526846; 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=+KEnc/M2u1vtOq7byLY/tjxqteMUZASB3RpwswtsBa4=; b=SEqBYSIoFSKgm79eYi82WNqMy0rpWCTpKIClRR7vUI0FYRkBcCQ8L5GBe2a3FOq/x7DbmiUVsOjtJ4BOx0/mMDhTW7eu9jr3hsqs6H5PZBRkMShdzTygkxALfAbshq0wBhQcSDHhVqdgIlByhzWfpK9w4O3JhHbduFswxK8AlMY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from us-smtp-delivery-1.mimecast.com (us-smtp-2.mimecast.com [207.211.31.81]) by mx.zohomail.com with SMTPS id 1582526846349551.2394199567022; Sun, 23 Feb 2020 22:47:26 -0800 (PST) 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-387-dM7g38oWPwCYLBbpE2uz3Q-1; Mon, 24 Feb 2020 01:47:23 -0500 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id B522D801E66; Mon, 24 Feb 2020 06:47:17 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 88CF75D9E2; Mon, 24 Feb 2020 06:47:17 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 386FB860EB; Mon, 24 Feb 2020 06:47:17 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 01O6kfFv025571 for ; Mon, 24 Feb 2020 01:46:41 -0500 Received: by smtp.corp.redhat.com (Postfix) id 039272166B30; Mon, 24 Feb 2020 06:46:41 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast02.extmail.prod.ext.rdu2.redhat.com [10.11.55.18]) by smtp.corp.redhat.com (Postfix) with ESMTPS id F27BF2166B2B for ; Mon, 24 Feb 2020 06:46:38 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-2.mimecast.com [205.139.110.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id AEB398007AC for ; Mon, 24 Feb 2020 06:46:38 +0000 (UTC) Received: from mail-yb1-f195.google.com (mail-yb1-f195.google.com [209.85.219.195]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-396-HujJtd4cNlK5DuZGjaTfOw-1; Mon, 24 Feb 2020 01:46:36 -0500 Received: by mail-yb1-f195.google.com with SMTP id x9so2089956ybl.5 for ; Sun, 23 Feb 2020 22:46:36 -0800 (PST) Received: from xeon-freebsd.freqlabs.com. (69-228-200-148.lightspeed.knvltn.sbcglobal.net. [69.228.200.148]) by smtp.gmail.com with ESMTPSA id j184sm4821447ywa.39.2020.02.23.22.46.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 23 Feb 2020 22:46:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1582526845; h=from:from:sender:sender: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:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=+KEnc/M2u1vtOq7byLY/tjxqteMUZASB3RpwswtsBa4=; b=IQnHb7m6ilO1rJCj3jJAUqJr6aDexzWvpbd3NdzG9j2D4QdV2dyJiZ1dFJ6CMjtZYAhs+W /7CljLtHwtadxIA3Hp93UK+khfqzw2wsIuxTW2XgITvTJz57sKzfhe7oPTzkk7oMeKQzIu 4kPa5pF9WOtguXY0c3DFPQz//FY7Up4= X-MC-Unique: dM7g38oWPwCYLBbpE2uz3Q-1 X-MC-Unique: HujJtd4cNlK5DuZGjaTfOw-1 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=XGvJLsTREio1QIpp5c7NrMw6Sg6CQdK0mb5OfvwWbqM=; b=Hq6h+um3GQHAJK1zx5hyDIQgPBlwoqBzQeyGiNN3VPtEWkwPCyasMa553PgyPF6Vgn mKG2bb4tloKqVo61+KLh7g5wUWpPnULkNTYv37tZkmKToO0AMEinEXwGTdVD5JZUEK7H yI9vR2vbOfT7/HwOgTjRvB3C6JkxlQ0AnIdN51NtQ2jQnxXnfwQ2R5ks7mUiErZUQ7// 2Q/HxW3VoRoj3Y+Jl6kbXIkasxe4Nz2shwW7SDuD0KlZ2oSDaw+OvqTAeOz4bpd6XKyt NANdj6sH/X2wYQjs2MfNS9d6ACyu68JAJwHkW2LQwWMOV05dMWNii3uNf9dBabdnbG8O z5ew== X-Gm-Message-State: APjAAAV/Ew+JWFt3L2RaOwbjk3CpQLy7/3byfrcX77mLOtcY6zPDjBpc rEwtpUKuE20Dlhd+avBv80FtEmrKpJiJ/5IL5WbR5gYali/gSzgbc8NhAwxHrxf5+6lQtb5Nas4 UqlpOwVvAAVpQ2s8dH7nAPfW98jSWXCNk4z2mF3BEN9CiobZm8angjtuZbXPd5VZm2V4= X-Google-Smtp-Source: APXvYqwTz87D6u9Lf2h2U+WISBPRmW1OsCblUF2RtBC6dkd8UL5T6R+IzcQcDG6AATGVqN1MQDhkUw== X-Received: by 2002:a25:d20f:: with SMTP id j15mr97926ybg.74.1582526795678; Sun, 23 Feb 2020 22:46:35 -0800 (PST) From: Ryan Moeller X-Google-Original-From: Ryan Moeller To: libvir-list@redhat.com Subject: [PATCH v1 06/12] bhyve: add hooks Date: Mon, 24 Feb 2020 01:46:18 -0500 Message-Id: <20200224064624.66649-7-ryan@iXsystems.com> In-Reply-To: <20200224064624.66649-1-ryan@iXsystems.com> References: <20200224064624.66649-1-ryan@iXsystems.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 01O6kfFv025571 X-loop: libvir-list@redhat.com Cc: Ryan Moeller X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" Signed-off-by: Ryan Moeller Reviewed-by: Daniel P. Berrang=C3=A9 --- src/bhyve/bhyve_process.c | 33 +++++++++++++++++++++++++++++++++ src/util/virhook.c | 15 +++++++++++++++ src/util/virhook.h | 11 +++++++++++ 3 files changed, 59 insertions(+) diff --git a/src/bhyve/bhyve_process.c b/src/bhyve/bhyve_process.c index a11f75a894..45162503d4 100644 --- a/src/bhyve/bhyve_process.c +++ b/src/bhyve/bhyve_process.c @@ -37,6 +37,7 @@ #include "bhyve_process.h" #include "datatypes.h" #include "virerror.h" +#include "virhook.h" #include "virlog.h" #include "virfile.h" #include "viralloc.h" @@ -91,6 +92,24 @@ virBhyveFormatDevMapFile(const char *vm_name, char **fn_= out) *fn_out =3D g_strdup_printf("%s/grub_bhyve-%s-device.map", BHYVE_STATE= _DIR, vm_name); } =20 +static int +bhyveProcessStartHook(virDomainObjPtr vm, virHookBhyveOpType op) +{ + if (!virHookPresent(VIR_HOOK_DRIVER_BHYVE)) + return 0; + + return virHookCall(VIR_HOOK_DRIVER_BHYVE, vm->def->name, op, + VIR_HOOK_SUBOP_BEGIN, NULL, NULL, NULL); +} + +static void +bhyveProcessStopHook(virDomainObjPtr vm, virHookBhyveOpType op) +{ + if (virHookPresent(VIR_HOOK_DRIVER_BHYVE)) + virHookCall(VIR_HOOK_DRIVER_BHYVE, vm->def->name, op, + VIR_HOOK_SUBOP_END, NULL, NULL, NULL); +} + int virBhyveProcessStart(virConnectPtr conn, virDomainObjPtr vm, @@ -135,6 +154,10 @@ virBhyveProcessStart(virConnectPtr conn, if (bhyveDomainAssignAddresses(vm->def, NULL) < 0) goto cleanup; =20 + /* Run an early hook to setup missing devices. */ + if (bhyveProcessStartHook(vm, VIR_HOOK_BHYVE_OP_PREPARE) < 0) + goto cleanup; + /* Call bhyve to start the VM */ if (!(cmd =3D virBhyveProcessBuildBhyveCmd(driver, vm->def, false))) goto cleanup; @@ -176,6 +199,9 @@ virBhyveProcessStart(virConnectPtr conn, goto cleanup; } =20 + if (bhyveProcessStartHook(vm, VIR_HOOK_BHYVE_OP_START) < 0) + goto cleanup; + /* Now we can start the domain */ VIR_DEBUG("Starting domain '%s'", vm->def->name); if (virCommandRun(cmd, NULL) < 0) @@ -200,6 +226,9 @@ virBhyveProcessStart(virConnectPtr conn, BHYVE_STATE_DIR) < 0) goto cleanup; =20 + if (bhyveProcessStartHook(vm, VIR_HOOK_BHYVE_OP_STARTED) < 0) + goto cleanup; + ret =3D 0; =20 cleanup: @@ -263,6 +292,8 @@ virBhyveProcessStop(bhyveConnPtr driver, if ((priv !=3D NULL) && (priv->mon !=3D NULL)) bhyveMonitorClose(priv->mon); =20 + bhyveProcessStopHook(vm, VIR_HOOK_BHYVE_OP_STOPPED); + /* Cleanup network interfaces */ bhyveNetCleanup(vm); =20 @@ -284,6 +315,8 @@ virBhyveProcessStop(bhyveConnPtr driver, vm->pid =3D -1; vm->def->id =3D -1; =20 + bhyveProcessStopHook(vm, VIR_HOOK_BHYVE_OP_RELEASE); + cleanup: virCommandFree(cmd); =20 diff --git a/src/util/virhook.c b/src/util/virhook.c index 5bdacdd79f..e499841f66 100644 --- a/src/util/virhook.c +++ b/src/util/virhook.c @@ -47,6 +47,7 @@ VIR_ENUM_DECL(virHookQemuOp); VIR_ENUM_DECL(virHookLxcOp); VIR_ENUM_DECL(virHookNetworkOp); VIR_ENUM_DECL(virHookLibxlOp); +VIR_ENUM_DECL(virHookBhyveOp); =20 VIR_ENUM_IMPL(virHookDriver, VIR_HOOK_DRIVER_LAST, @@ -55,6 +56,7 @@ VIR_ENUM_IMPL(virHookDriver, "lxc", "network", "libxl", + "bhyve", ); =20 VIR_ENUM_IMPL(virHookDaemonOp, @@ -115,6 +117,15 @@ VIR_ENUM_IMPL(virHookLibxlOp, "reconnect", ); =20 +VIR_ENUM_IMPL(virHookBhyveOp, + VIR_HOOK_BHYVE_OP_LAST, + "start", + "stopped", + "prepare", + "release", + "started", +); + static int virHooksFound =3D -1; =20 /** @@ -283,6 +294,10 @@ virHookCall(int driver, break; case VIR_HOOK_DRIVER_NETWORK: opstr =3D virHookNetworkOpTypeToString(op); + break; + case VIR_HOOK_DRIVER_BHYVE: + opstr =3D virHookBhyveOpTypeToString(op); + break; } if (opstr =3D=3D NULL) { virReportError(VIR_ERR_INTERNAL_ERROR, diff --git a/src/util/virhook.h b/src/util/virhook.h index f91cb87b10..d8237c837e 100644 --- a/src/util/virhook.h +++ b/src/util/virhook.h @@ -29,6 +29,7 @@ typedef enum { VIR_HOOK_DRIVER_LXC, /* LXC domains related events */ VIR_HOOK_DRIVER_NETWORK, /* network related events */ VIR_HOOK_DRIVER_LIBXL, /* Xen libxl domains related events= */ + VIR_HOOK_DRIVER_BHYVE, /* Bhyve domains related events */ =20 VIR_HOOK_DRIVER_LAST, } virHookDriverType; @@ -97,6 +98,16 @@ typedef enum { VIR_HOOK_LIBXL_OP_LAST, } virHookLibxlOpType; =20 +typedef enum { + VIR_HOOK_BHYVE_OP_START, /* domain is about to start */ + VIR_HOOK_BHYVE_OP_STOPPED, /* domain has stopped */ + VIR_HOOK_BHYVE_OP_PREPARE, /* domain startup initiated */ + VIR_HOOK_BHYVE_OP_RELEASE, /* domain destruction is over */ + VIR_HOOK_BHYVE_OP_STARTED, /* domain has started */ + + VIR_HOOK_BHYVE_OP_LAST, +} virHookBhyveOpType; + int virHookInitialize(void); =20 int virHookPresent(int driver); --=20 2.24.1 From nobody Wed May 1 17:59:55 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) client-ip=207.211.31.81; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=none dis=none) header.from=ixsystems.com ARC-Seal: i=1; a=rsa-sha256; t=1582526848; cv=none; d=zohomail.com; s=zohoarc; b=ELyno5P9BIIh+kxqM4EU159HcVCGsSI099Vpe1OFIS12jsfl93oFgxuueyYRUR9zZX20fryc7WDw3jTJMs4vcdq+S9IWJQ8+gOCkjpy7PmJGa0rnY1c0o3yaZC54S4kjivHQkZcPa67SQtDY2pK9YNOQ15TEhhX54O/x//I2ER0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1582526848; 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=ITlRbxUaLtP6HeziRCZZEZKL8ecpRPv07lIYBDd51g8=; b=AV7pBT4vmEtkOTcvlv2Mf79fKZkP4qpEwr4OFRsbM3z+5XCLpQZIGP/NDbKki9O+X9sCftSItUwWE/HovlBOeq9cFeH1ZScPKbD/ZH9AKCR6el3JEh5qfgrAZ5lBxvN0P5geJUUPYAmErrSK8WPvk6VRNYO2Rpz7gn49OuGhaCQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from us-smtp-delivery-1.mimecast.com (us-smtp-2.mimecast.com [207.211.31.81]) by mx.zohomail.com with SMTPS id 1582526848239101.14721121346543; Sun, 23 Feb 2020 22:47:28 -0800 (PST) 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-73-jDisn7UyM3qf2neGtFOVlA-1; Mon, 24 Feb 2020 01:47:25 -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 AAF06107ACC4; Mon, 24 Feb 2020 06:47:19 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 7D43F8B57A; Mon, 24 Feb 2020 06:47:19 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 34BC8860ED; Mon, 24 Feb 2020 06:47:19 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 01O6kfBR025572 for ; Mon, 24 Feb 2020 01:46:41 -0500 Received: by smtp.corp.redhat.com (Postfix) id 05D0D2166B2E; Mon, 24 Feb 2020 06:46:41 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast05.extmail.prod.ext.rdu2.redhat.com [10.11.55.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 014B52166B2F for ; Mon, 24 Feb 2020 06:46:39 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-2.mimecast.com [207.211.31.81]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 1930A800260 for ; Mon, 24 Feb 2020 06:46:39 +0000 (UTC) Received: from mail-yb1-f194.google.com (mail-yb1-f194.google.com [209.85.219.194]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-41-dtxqqFnvNuydDYJiONtHJg-1; Mon, 24 Feb 2020 01:46:37 -0500 Received: by mail-yb1-f194.google.com with SMTP id j78so4166012ybg.12 for ; Sun, 23 Feb 2020 22:46:36 -0800 (PST) Received: from xeon-freebsd.freqlabs.com. (69-228-200-148.lightspeed.knvltn.sbcglobal.net. [69.228.200.148]) by smtp.gmail.com with ESMTPSA id j184sm4821447ywa.39.2020.02.23.22.46.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 23 Feb 2020 22:46:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1582526847; h=from:from:sender:sender: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:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=ITlRbxUaLtP6HeziRCZZEZKL8ecpRPv07lIYBDd51g8=; b=X+2mEd78SO62O30t8ak3qcHHlWbN4yq0LpGyvyHD8FS/CLeFXDCxBdbHpLVTOFV2K8PSeQ 29jOIWNT1VweZMkOSbvp8Fl6SW/56mdSiuo5NSsCTKNoQAuJw/WdGMMUfJS0uyvvxuAcVE XM88pub0LwD0njZ7mGaiQibpELG4Zso= X-MC-Unique: jDisn7UyM3qf2neGtFOVlA-1 X-MC-Unique: dtxqqFnvNuydDYJiONtHJg-1 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=5wVTud9ilV8De9l3NZaP/kXUQVtho4TEL2gccD9UyTA=; b=qOJvTKHC6avyt0JmymdBSOt0gaIh9swdWMgArzNzOdZoxUfiXeaFgy6ZBeWWEdn2D7 FbKBiDW83xL+IBwBOVMGE6ARW5kew/sfyVzZK5YWSjhAEyu/i3+b3pBx/pxfVSZGwAMI YWVwsKe5eKNIewp58FHx08e8SLSqtK+RBNV6cvLm7NqQv2HhokCrieSv305u8Ajz0e4+ EVWrL7M+ZHbByeAma7rW1OH8J5mmPi0x5LtONxhJgH27yMXk5OGwV0KPIkzAV0Lifsg2 p1gdKJ5LW0/PmEN9oZPhO25kD2vUWHjcOARqz7hdYS+bb5TQ7EuAoyCbDD6rINTeA8Ey RAjw== X-Gm-Message-State: APjAAAXY2wsCUJdmWPjX7lgkOWXkY6ZTmShE3aPpv7PPAi45/umXePt4 SKCV895MqfqpI9T5JG/1b2+9MUHMDiCfSGknHFp3AaHDXQ5zbXks2Ha5iQJBVCXBoDT3aOkWax2 dUJbSAY+X24/QDSkyK9eFIm3DhaYJrGz5Dr+ZtuOeJMx4j8aUbR7FDpL/3jbbZzmIUrg= X-Google-Smtp-Source: APXvYqzpaxIPDHClwG08mfFVP7qK4EUaxkmLeQ7+05134ieKhlyhT1Oc1amOIXfi1s0B1egPDJKAig== X-Received: by 2002:a25:bd87:: with SMTP id f7mr48734521ybh.11.1582526796176; Sun, 23 Feb 2020 22:46:36 -0800 (PST) From: Ryan Moeller X-Google-Original-From: Ryan Moeller To: libvir-list@redhat.com Subject: [PATCH v1 07/12] bhyve: add reboot support Date: Mon, 24 Feb 2020 01:46:19 -0500 Message-Id: <20200224064624.66649-8-ryan@iXsystems.com> In-Reply-To: <20200224064624.66649-1-ryan@iXsystems.com> References: <20200224064624.66649-1-ryan@iXsystems.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 01O6kfBR025572 X-loop: libvir-list@redhat.com Cc: Ryan Moeller X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" Signed-off-by: Ryan Moeller Reviewed-by: Daniel P. Berrang=C3=A9 --- src/bhyve/bhyve_driver.c | 30 ++++++++++++++++++++++ src/bhyve/bhyve_monitor.c | 19 +++++++++----- src/bhyve/bhyve_monitor.h | 2 ++ src/bhyve/bhyve_process.c | 52 ++++++++++++++++++++++++++++----------- src/bhyve/bhyve_process.h | 3 +++ 5 files changed, 85 insertions(+), 21 deletions(-) diff --git a/src/bhyve/bhyve_driver.c b/src/bhyve/bhyve_driver.c index 625dc0ec22..05ffc2f050 100644 --- a/src/bhyve/bhyve_driver.c +++ b/src/bhyve/bhyve_driver.c @@ -1013,6 +1013,35 @@ bhyveDomainShutdown(virDomainPtr dom) return bhyveDomainShutdownFlags(dom, 0); } =20 +static int +bhyveDomainReboot(virDomainPtr dom, unsigned int flags) +{ + virConnectPtr conn =3D dom->conn; + virDomainObjPtr vm; + bhyveDomainObjPrivatePtr priv; + int ret =3D -1; + + virCheckFlags(VIR_DOMAIN_REBOOT_ACPI_POWER_BTN, -1); + + if (!(vm =3D bhyveDomObjFromDomain(dom))) + goto cleanup; + + if (virDomainRebootEnsureACL(conn, vm->def, flags) < 0) + goto cleanup; + + if (virDomainObjCheckActive(vm) < 0) + goto cleanup; + + priv =3D vm->privateData; + bhyveMonitorSetReboot(priv->mon); + + ret =3D virBhyveProcessShutdown(vm); + + cleanup: + virDomainObjEndAPI(&vm); + return ret; +} + static int bhyveDomainOpenConsole(virDomainPtr dom, const char *dev_name G_GNUC_UNUSED, @@ -1657,6 +1686,7 @@ static virHypervisorDriver bhyveHypervisorDriver =3D { .domainDestroyFlags =3D bhyveDomainDestroyFlags, /* 5.6.0 */ .domainShutdown =3D bhyveDomainShutdown, /* 1.3.3 */ .domainShutdownFlags =3D bhyveDomainShutdownFlags, /* 5.6.0 */ + .domainReboot =3D bhyveDomainReboot, /* TBD */ .domainLookupByUUID =3D bhyveDomainLookupByUUID, /* 1.2.2 */ .domainLookupByName =3D bhyveDomainLookupByName, /* 1.2.2 */ .domainLookupByID =3D bhyveDomainLookupByID, /* 1.2.3 */ diff --git a/src/bhyve/bhyve_monitor.c b/src/bhyve/bhyve_monitor.c index a1b1a21a6f..e5cd39a086 100644 --- a/src/bhyve/bhyve_monitor.c +++ b/src/bhyve/bhyve_monitor.c @@ -41,10 +41,11 @@ VIR_LOG_INIT("bhyve.bhyve_monitor"); struct _bhyveMonitor { virObject parent; =20 - int kq; - int watch; bhyveConnPtr driver; virDomainObjPtr vm; + int kq; + int watch; + bool reboot; }; =20 static virClassPtr bhyveMonitorClass; @@ -100,6 +101,12 @@ bhyveMonitorUnregister(bhyveMonitorPtr mon) mon->watch =3D -1; } =20 +void +bhyveMonitorSetReboot(bhyveMonitorPtr mon) +{ + mon->reboot =3D true; +} + static void bhyveMonitorIO(int watch, int kq, int events G_GNUC_UNUSED, void *opaque) { @@ -148,11 +155,10 @@ bhyveMonitorIO(int watch, int kq, int events G_GNUC_U= NUSED, void *opaque) name, WTERMSIG(status)); virBhyveProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_CRASHED); } else if (WIFEXITED(status)) { - if (WEXITSTATUS(status) =3D=3D 0) { + if (WEXITSTATUS(status) =3D=3D 0 || mon->reboot) { /* 0 - reboot */ - /* TODO: Implementing reboot is a little more complicated.= */ - VIR_INFO("Guest %s rebooted; destroying domain.", name); - virBhyveProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_SHUTDOW= N); + VIR_INFO("Guest %s rebooted; restarting domain.", name); + virBhyveProcessRestart(driver, vm); } else if (WEXITSTATUS(status) < 3) { /* 1 - shutdown, 2 - halt, 3 - triple fault. others - erro= r */ VIR_INFO("Guest %s shut itself down; destroying domain.", = name); @@ -179,6 +185,7 @@ bhyveMonitorOpenImpl(virDomainObjPtr vm, bhyveConnPtr d= river) return NULL; =20 mon->driver =3D driver; + mon->reboot =3D false; =20 virObjectRef(vm); mon->vm =3D vm; diff --git a/src/bhyve/bhyve_monitor.h b/src/bhyve/bhyve_monitor.h index 226866e6d9..175cc87192 100644 --- a/src/bhyve/bhyve_monitor.h +++ b/src/bhyve/bhyve_monitor.h @@ -29,3 +29,5 @@ typedef bhyveMonitor *bhyveMonitorPtr; =20 bhyveMonitorPtr bhyveMonitorOpen(virDomainObjPtr vm, bhyveConnPtr driver); void bhyveMonitorClose(bhyveMonitorPtr mon); + +void bhyveMonitorSetReboot(bhyveMonitorPtr mon); diff --git a/src/bhyve/bhyve_process.c b/src/bhyve/bhyve_process.c index 45162503d4..060018bc70 100644 --- a/src/bhyve/bhyve_process.c +++ b/src/bhyve/bhyve_process.c @@ -110,11 +110,10 @@ bhyveProcessStopHook(virDomainObjPtr vm, virHookBhyve= OpType op) VIR_HOOK_SUBOP_END, NULL, NULL, NULL); } =20 -int -virBhyveProcessStart(virConnectPtr conn, - virDomainObjPtr vm, - virDomainRunningReason reason, - unsigned int flags) +static int +virBhyveProcessStartImpl(bhyveConnPtr driver, + virDomainObjPtr vm, + virDomainRunningReason reason) { char *devmap_file =3D NULL; char *devicemap =3D NULL; @@ -122,7 +121,6 @@ virBhyveProcessStart(virConnectPtr conn, int logfd =3D -1; virCommandPtr cmd =3D NULL; virCommandPtr load_cmd =3D NULL; - bhyveConnPtr driver =3D conn->privateData; bhyveDomainObjPrivatePtr priv =3D vm->privateData; int ret =3D -1, rc; =20 @@ -154,10 +152,6 @@ virBhyveProcessStart(virConnectPtr conn, if (bhyveDomainAssignAddresses(vm->def, NULL) < 0) goto cleanup; =20 - /* Run an early hook to setup missing devices. */ - if (bhyveProcessStartHook(vm, VIR_HOOK_BHYVE_OP_PREPARE) < 0) - goto cleanup; - /* Call bhyve to start the VM */ if (!(cmd =3D virBhyveProcessBuildBhyveCmd(driver, vm->def, false))) goto cleanup; @@ -213,11 +207,6 @@ virBhyveProcessStart(virConnectPtr conn, goto cleanup; } =20 - if (flags & VIR_BHYVE_PROCESS_START_AUTODESTROY && - virCloseCallbacksSet(driver->closeCallbacks, vm, - conn, bhyveProcessAutoDestroy) < 0) - goto cleanup; - vm->def->id =3D vm->pid; virDomainObjSetState(vm, VIR_DOMAIN_RUNNING, reason); priv->mon =3D bhyveMonitorOpen(vm, driver); @@ -262,6 +251,26 @@ virBhyveProcessStart(virConnectPtr conn, return ret; } =20 +int +virBhyveProcessStart(virConnectPtr conn, + virDomainObjPtr vm, + virDomainRunningReason reason, + unsigned int flags) +{ + bhyveConnPtr driver =3D conn->privateData; + + /* Run an early hook to setup missing devices. */ + if (bhyveProcessStartHook(vm, VIR_HOOK_BHYVE_OP_PREPARE) < 0) + return -1; + + if (flags & VIR_BHYVE_PROCESS_START_AUTODESTROY && + virCloseCallbacksSet(driver->closeCallbacks, vm, + conn, bhyveProcessAutoDestroy) < 0) + return -1; + + return virBhyveProcessStartImpl(driver, vm, reason); +} + int virBhyveProcessStop(bhyveConnPtr driver, virDomainObjPtr vm, @@ -349,6 +358,19 @@ virBhyveProcessShutdown(virDomainObjPtr vm) return 0; } =20 +int +virBhyveProcessRestart(bhyveConnPtr driver, + virDomainObjPtr vm) +{ + if (virBhyveProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_SHUTDOWN) < 0) + return -1; + + if (virBhyveProcessStartImpl(driver, vm, VIR_DOMAIN_RUNNING_BOOTED) < = 0) + return -1; + + return 0; +} + int virBhyveGetDomainTotalCpuStats(virDomainObjPtr vm, unsigned long long *cpustats) diff --git a/src/bhyve/bhyve_process.h b/src/bhyve/bhyve_process.h index 8419e44faa..d7b4e0bd4e 100644 --- a/src/bhyve/bhyve_process.h +++ b/src/bhyve/bhyve_process.h @@ -32,6 +32,9 @@ int virBhyveProcessStop(bhyveConnPtr driver, virDomainObjPtr vm, virDomainShutoffReason reason); =20 +int virBhyveProcessRestart(bhyveConnPtr driver, + virDomainObjPtr vm); + int virBhyveProcessShutdown(virDomainObjPtr vm); =20 int virBhyveGetDomainTotalCpuStats(virDomainObjPtr vm, --=20 2.24.1 From nobody Wed May 1 17:59:55 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) client-ip=205.139.110.61; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=none dis=none) header.from=ixsystems.com ARC-Seal: i=1; a=rsa-sha256; t=1582526851; cv=none; d=zohomail.com; s=zohoarc; b=XQMIRSuLWlAWGm9b5zV78rSGR7ayrAWlsySJyoEDDu10w7vtvI8SXa3p/oGuAtkfCfEKlQxwceIweZTXKyhkShwWMrkuXZDXwhwU+a2xE03YRFjMzh9QsV516X/w8dcfnpP6CA8Sl845agP8QniPXzv5D6/IlU8wq1NoQ3cTezs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1582526851; 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=Vvx1g0xz3fOCHX6uIMqVQyBdNgaPT6bSUNXN6HFTxOw=; b=Dlmpvu5GK94a160n/c4h2W7wdga6ukny6PG/8JZyKTK9heCGmVOes1tkR/obiW4LnBqbIaVdA0TF2Al+u1W2gmG6MYEMom7xdhk1MJI+fHrEZlP3Eo/mtz2QHiEf8mehTgGd8oxt92Tw3mFsZEP9g3CZAeVKHO+Wxn5iSvsl6Q8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from us-smtp-delivery-1.mimecast.com (us-smtp-1.mimecast.com [205.139.110.61]) by mx.zohomail.com with SMTPS id 1582526851767763.304326357094; Sun, 23 Feb 2020 22:47:31 -0800 (PST) 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-234-6ZjdrnIkPDmEN7ukQPb7xg-1; Mon, 24 Feb 2020 01:47:28 -0500 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 67E0B13F8; Mon, 24 Feb 2020 06:47:22 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 3C13027186; Mon, 24 Feb 2020 06:47:22 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id E686418089D6; Mon, 24 Feb 2020 06:47:21 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 01O6kfYK025573 for ; Mon, 24 Feb 2020 01:46:41 -0500 Received: by smtp.corp.redhat.com (Postfix) id 04F002166B2B; Mon, 24 Feb 2020 06:46:41 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast01.extmail.prod.ext.rdu2.redhat.com [10.11.55.17]) by smtp.corp.redhat.com (Postfix) with ESMTPS id F33AD2166B2E for ; Mon, 24 Feb 2020 06:46:39 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-1.mimecast.com [207.211.31.81]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id B2BDF85A308 for ; Mon, 24 Feb 2020 06:46:39 +0000 (UTC) Received: from mail-yb1-f196.google.com (mail-yb1-f196.google.com [209.85.219.196]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-225-1FUf-bpDO167GU_c1B9dDw-1; Mon, 24 Feb 2020 01:46:37 -0500 Received: by mail-yb1-f196.google.com with SMTP id u47so4204744ybi.1 for ; Sun, 23 Feb 2020 22:46:37 -0800 (PST) Received: from xeon-freebsd.freqlabs.com. (69-228-200-148.lightspeed.knvltn.sbcglobal.net. [69.228.200.148]) by smtp.gmail.com with ESMTPSA id j184sm4821447ywa.39.2020.02.23.22.46.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 23 Feb 2020 22:46:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1582526850; h=from:from:sender:sender: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:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=Vvx1g0xz3fOCHX6uIMqVQyBdNgaPT6bSUNXN6HFTxOw=; b=Kbm9y6J/JuRhuhJCTeaQMAOD7zMehAhwQfG5PaFcjEVgj6CUzzxsPOXmFQcFytdYCZXYJ4 xB7AQIJREqaSFOpy7UWjtvj3n+dwAM1Vfj4ZBFhrnU7H9BFQyBHqvULWOCFX+lgtgj7Or5 KUTErlGwjmdeAReXq/b3xd4wHtQMlCs= X-MC-Unique: 6ZjdrnIkPDmEN7ukQPb7xg-1 X-MC-Unique: 1FUf-bpDO167GU_c1B9dDw-1 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=JSuX2SI6moT+0423I6OE0QOdYx7jVLrVuGkefso3SIM=; b=r3rqvyoMgPc7S0HRzez05yiNs9/xAxIu/N/yzsxRFHPEgRbBRcuXbdquH1QdS79Yff GhZ5MDrZ1uFvn0X6MWPYBpPyAdD4lqRRxfB+5gMySYwNy2RzLwPCg1bF+K76mtLWDRb8 RpATlzq0jZrS+C7D4W6SL430LNxk5WOdijV+PI93WdATH7ylG7ereQ1okrRPV/kD0CRE MrKrEh7CKKsNFEljZ0R+CLQmXTAVR70Be2qwZmuDZtv9njP8C9t/NDvKDJydSPK7bP+z TASrk3VZ5JWZJaJWEDH31BEMHQwkl2aFOLvqMdNF2hCulaM69NFeo39xSFF4lNNrpJKi 0jOg== X-Gm-Message-State: APjAAAUFQWoHJJVwqXIU5aQxIkMa1J51OM48fJgf/EwA+iTHKh7o5E+2 qHXj+7uycszSy0naVsDoYmhVpxRyW8j+r7/HnLKbI/yAX6iQ5HH9+0zoFknjWLPCTeOZLFm+w2a IRHUljnvftsZkD8iToFLcxW09Q/KExf6V0VdjRzSy0q1atJJ9Rb177gv8w5w3WlKsM1g= X-Google-Smtp-Source: APXvYqyyp/tAmxtxy4J3DqG8NWgOCyneuF6aXfhi6DwL7NwM/iXtdyRfXt3V/193ho36dXt5O8UCoQ== X-Received: by 2002:a25:1042:: with SMTP id 63mr44557976ybq.165.1582526796637; Sun, 23 Feb 2020 22:46:36 -0800 (PST) From: Ryan Moeller X-Google-Original-From: Ryan Moeller To: libvir-list@redhat.com Subject: [PATCH v1 08/12] bhyve: command: refactor virBhyveProcessBuildBhyveCmd Date: Mon, 24 Feb 2020 01:46:20 -0500 Message-Id: <20200224064624.66649-9-ryan@iXsystems.com> In-Reply-To: <20200224064624.66649-1-ryan@iXsystems.com> References: <20200224064624.66649-1-ryan@iXsystems.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 01O6kfYK025573 X-loop: libvir-list@redhat.com Cc: Ryan Moeller X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" Reduce the complexity by isolating loop bodies in separate functions. Signed-off-by: Ryan Moeller Reviewed-by: Daniel P. Berrang=C3=A9 --- src/bhyve/bhyve_command.c | 115 ++++++++++++++++++++++---------------- 1 file changed, 67 insertions(+), 48 deletions(-) diff --git a/src/bhyve/bhyve_command.c b/src/bhyve/bhyve_command.c index 8eb99cc876..5b1d80083a 100644 --- a/src/bhyve/bhyve_command.c +++ b/src/bhyve/bhyve_command.c @@ -40,9 +40,9 @@ VIR_LOG_INIT("bhyve.bhyve_command"); =20 static int -bhyveBuildNetArgStr(bhyveConnPtr driver, - const virDomainDef *def, +bhyveBuildNetArgStr(const virDomainDef *def, virDomainNetDefPtr net, + bhyveConnPtr driver, virCommandPtr cmd, bool dryRun) { @@ -307,6 +307,61 @@ bhyveBuildVirtIODiskArgStr(const virDomainDef *def G_G= NUC_UNUSED, return 0; } =20 +static int +bhyveBuildDiskArgStr(const virDomainDef *def, + virDomainDiskDefPtr disk, + virCommandPtr cmd) +{ + switch (disk->bus) { + case VIR_DOMAIN_DISK_BUS_SATA: + /* Handled by bhyveBuildAHCIControllerArgStr() */ + break; + case VIR_DOMAIN_DISK_BUS_VIRTIO: + if (bhyveBuildVirtIODiskArgStr(def, disk, cmd) < 0) + return -1; + break; + default: + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("unsupported disk device")); + return -1; + } + return 0; +} + +static int +bhyveBuildControllerArgStr(const virDomainDef *def, + virDomainControllerDefPtr controller, + bhyveConnPtr driver, + virCommandPtr cmd, + unsigned *nusbcontrollers) +{ + switch (controller->type) { + case VIR_DOMAIN_CONTROLLER_TYPE_PCI: + if (controller->model !=3D VIR_DOMAIN_CONTROLLER_MODEL_PCI_ROOT) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("unsupported PCI controller model: " + "only PCI root supported")); + return -1; + } + break; + case VIR_DOMAIN_CONTROLLER_TYPE_SATA: + if (bhyveBuildAHCIControllerArgStr(def, controller, driver, cmd) <= 0) + return -1; + break; + case VIR_DOMAIN_CONTROLLER_TYPE_USB: + if (++*nusbcontrollers > 1) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("only single USB controller is supported")); + return -1; + } + + if (bhyveBuildUSBControllerArgStr(def, controller, cmd) < 0) + return -1; + break; + } + return 0; +} + static int bhyveBuildLPCArgStr(const virDomainDef *def G_GNUC_UNUSED, virCommandPtr cmd) @@ -428,8 +483,8 @@ bhyveBuildGraphicsArgStr(const virDomainDef *def, } =20 virCommandPtr -virBhyveProcessBuildBhyveCmd(bhyveConnPtr driver, - virDomainDefPtr def, bool dryRun) +virBhyveProcessBuildBhyveCmd(bhyveConnPtr driver, virDomainDefPtr def, + bool dryRun) { /* * /usr/sbin/bhyve -c 2 -m 256 -AI -H -P \ @@ -439,11 +494,10 @@ virBhyveProcessBuildBhyveCmd(bhyveConnPtr driver, * -S 31,uart,stdio \ * vm0 */ - size_t i; - int nusbcontrollers =3D 0; - unsigned int nvcpus =3D virDomainDefGetVcpus(def); - virCommandPtr cmd =3D virCommandNew(BHYVE); + size_t i; + unsigned nusbcontrollers =3D 0; + unsigned nvcpus =3D virDomainDefGetVcpus(def); =20 /* CPUs */ virCommandAddArg(cmd, "-c"); @@ -547,52 +601,17 @@ virBhyveProcessBuildBhyveCmd(bhyveConnPtr driver, =20 /* Devices */ for (i =3D 0; i < def->ncontrollers; i++) { - virDomainControllerDefPtr controller =3D def->controllers[i]; - switch (controller->type) { - case VIR_DOMAIN_CONTROLLER_TYPE_PCI: - if (controller->model !=3D VIR_DOMAIN_CONTROLLER_MODEL_PCI_ROO= T) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - "%s", _("unsupported PCI controller model: = only PCI root supported")); - goto error; - } - break; - case VIR_DOMAIN_CONTROLLER_TYPE_SATA: - if (bhyveBuildAHCIControllerArgStr(def, controller, driver, cm= d) < 0) - goto error; - break; - case VIR_DOMAIN_CONTROLLER_TYPE_USB: - if (++nusbcontrollers > 1) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - "%s", _("only single USB controller is supp= orted")); - goto error; - } - - if (bhyveBuildUSBControllerArgStr(def, controller, cmd) < 0) - goto error; - break; - } + if (bhyveBuildControllerArgStr(def, def->controllers[i], driver, c= md, + &nusbcontrollers) < 0) + goto error; } for (i =3D 0; i < def->nnets; i++) { - virDomainNetDefPtr net =3D def->nets[i]; - if (bhyveBuildNetArgStr(driver, def, net, cmd, dryRun) < 0) + if (bhyveBuildNetArgStr(def, def->nets[i], driver, cmd, dryRun) < = 0) goto error; } for (i =3D 0; i < def->ndisks; i++) { - virDomainDiskDefPtr disk =3D def->disks[i]; - - switch (disk->bus) { - case VIR_DOMAIN_DISK_BUS_SATA: - /* Handled by bhyveBuildAHCIControllerArgStr() */ - break; - case VIR_DOMAIN_DISK_BUS_VIRTIO: - if (bhyveBuildVirtIODiskArgStr(def, disk, cmd) < 0) - goto error; - break; - default: - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("unsupported disk device")); + if (bhyveBuildDiskArgStr(def, def->disks[i], cmd) < 0) goto error; - } } =20 if (def->ngraphics && def->nvideos) { --=20 2.24.1 From nobody Wed May 1 17:59:55 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 207.211.31.120 as permitted sender) client-ip=207.211.31.120; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.120 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=none dis=none) header.from=ixsystems.com ARC-Seal: i=1; a=rsa-sha256; t=1582526856; cv=none; d=zohomail.com; s=zohoarc; b=PiIggoutHOW14PjfX79voBd8OQ9NJ7esJoyF/kaUGlyvRssbRpsZUyOm30WjjAJRwexU8dCRwg6zf5KdlEcgJt0FAJqVEotaO5gTSAkbMtPLUy0OQbEsgvC3HR+qHh/FOKSoqhLjS9PJb5uRY2GlROp8k8KxuhXn11UXt8EldwY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1582526856; 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=aWE8/ZnHZR8MlzA0CC9WI4D0HudxGJ/bNvOMtXO3qkI=; b=NNdVbD0ju5sk1nyie9rTA5R3UG3ajJEIlIzw1VlUvK9/wZp9MdgvO4a3A3K8TGLL0OK5ihvvA6cyAI2/s+cbcby9gzrqvmMgBdp1gSasWZhrfXbq9oX0GbnHzhv4scE3hPG1omPwLV/3HngZvg20d66VLdXkPBwkUCVnyTXqa7k= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.120 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [207.211.31.120]) by mx.zohomail.com with SMTPS id 1582526856530701.3882041733493; Sun, 23 Feb 2020 22:47:36 -0800 (PST) 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-7-tr3sLUw7OcWVNXPDj3E1YQ-1; Mon, 24 Feb 2020 01:47:33 -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 9B35613F7; Mon, 24 Feb 2020 06:47:27 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 71B9C8B74A; Mon, 24 Feb 2020 06:47:27 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 23CE7860EB; Mon, 24 Feb 2020 06:47:27 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 01O6kge5025592 for ; Mon, 24 Feb 2020 01:46:42 -0500 Received: by smtp.corp.redhat.com (Postfix) id 266E1C690D; Mon, 24 Feb 2020 06:46:42 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast02.extmail.prod.ext.rdu2.redhat.com [10.11.55.18]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 21B90D0B39 for ; Mon, 24 Feb 2020 06:46:40 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-1.mimecast.com [205.139.110.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id F40F88007C9 for ; Mon, 24 Feb 2020 06:46:39 +0000 (UTC) Received: from mail-yb1-f195.google.com (mail-yb1-f195.google.com [209.85.219.195]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-156-4Zoq1YrPPY2tUHrf59hYRQ-1; Mon, 24 Feb 2020 01:46:38 -0500 Received: by mail-yb1-f195.google.com with SMTP id p123so4200717ybp.2 for ; Sun, 23 Feb 2020 22:46:38 -0800 (PST) Received: from xeon-freebsd.freqlabs.com. (69-228-200-148.lightspeed.knvltn.sbcglobal.net. [69.228.200.148]) by smtp.gmail.com with ESMTPSA id j184sm4821447ywa.39.2020.02.23.22.46.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 23 Feb 2020 22:46:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1582526855; h=from:from:sender:sender: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:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=aWE8/ZnHZR8MlzA0CC9WI4D0HudxGJ/bNvOMtXO3qkI=; b=TtZ1X+0gUm2yc9m9YGqH0SJShmM0LJgnAzS2PGvQDYW5sMyh4LX0N9eHNqjroyrTTHxyQq 216xABuUeT8XmkLgFoT74LujIHqi9NdjGcxU72AAi6wkOogcJkfgLCAc3IA+imLKrwrZx1 PdekImmQptK47TUAjlUzIyVOt6vXpMg= X-MC-Unique: tr3sLUw7OcWVNXPDj3E1YQ-1 X-MC-Unique: 4Zoq1YrPPY2tUHrf59hYRQ-1 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=vFN3zFwCvozzmghGxS+Og86Nz8uVQoujAylproiYdns=; b=XvsclH5iCZRIkgxlS5lUCOawBOw9GMJ9H4bpHw34jfGAWL8dyk4KV0IKNIEOQ6Gdl9 q2f6q5OcNxpWgy5FHKqJ17T5BHnaNE6VrgC7QHZ9A1TEBewzCqxsrIZVt/Gohn2ANHpi TqAcA5/GT0vdhw+/yTw4bsTkbVCtKe13JvNydB+eWOym8kt28z4/khU8UZ4YpSpOfIF5 PCXuANIAPVvxfBESj0QD9q+1yOofJXqVOJf+Q4WZpdaYTnIWWN2vRHIkRhhSgeMYyW9r aAR4gYwTQktx4X5Helm4yauzvoHkqiOIj8Na/ACODcbxq6GLj3M29NjpR6G7/GThHTWm kwtg== X-Gm-Message-State: APjAAAXYi590SaCJ0i4+qEnu0QSLDVmsnOM40JfMmnnv4sfmceEj2XmU IFRxYP6lA+ogsZ6RtiU1z8wS830TojTsdM0sR1ZaMm9MLjUf8qRGhJbifY7dEwYyh6Z/3cl37VL DTT2tfGS0TE+SrMzq2jm1Pd8FpR/UClIMXMSF0oH/hnhfLQMk06rDgPQFoXNjWq1ACR0= X-Google-Smtp-Source: APXvYqybuVkRoNfxQGB6BGsxfQYsFOA83yR6bgVAtSLpT20j8JLvkV34GdDOds2SZfZV3CEj7eRz4A== X-Received: by 2002:a25:b8cc:: with SMTP id g12mr45361778ybm.485.1582526797180; Sun, 23 Feb 2020 22:46:37 -0800 (PST) From: Ryan Moeller X-Google-Original-From: Ryan Moeller To: libvir-list@redhat.com Subject: [PATCH v1 09/12] bhyve: parse_command: slot, bus, func -> bus, slot, func Date: Mon, 24 Feb 2020 01:46:21 -0500 Message-Id: <20200224064624.66649-10-ryan@iXsystems.com> In-Reply-To: <20200224064624.66649-1-ryan@iXsystems.com> References: <20200224064624.66649-1-ryan@iXsystems.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 01O6kge5025592 X-loop: libvir-list@redhat.com Cc: Ryan Moeller X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" This *is* a no-op, but there was a period of sickening dread while auditing to be sure that no actual confusion between bus and slot had occurred. I hope to avoid that by following the conventional order. Signed-off-by: Ryan Moeller Reviewed-by: Daniel P. Berrang=C3=A9 --- src/bhyve/bhyve_parse_command.c | 34 ++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/bhyve/bhyve_parse_command.c b/src/bhyve/bhyve_parse_comman= d.c index dd6a626ff4..76423730d9 100644 --- a/src/bhyve/bhyve_parse_command.c +++ b/src/bhyve/bhyve_parse_command.c @@ -352,8 +352,8 @@ bhyveParseBhyveLPCArg(virDomainDefPtr def, =20 static int bhyveParsePCISlot(const char *slotdef, - unsigned *pcislot, unsigned *bus, + unsigned *slot, unsigned *function) { /* slot[:function] | bus:slot:function */ @@ -385,7 +385,7 @@ bhyveParsePCISlot(const char *slotdef, } =20 *bus =3D 0; - *pcislot =3D 0; + *slot =3D 0; *function =3D 0; =20 switch (i + 1) { @@ -393,12 +393,12 @@ bhyveParsePCISlot(const char *slotdef, /* pcislot[:function] */ *function =3D values[1]; case 1: - *pcislot =3D values[0]; + *slot =3D values[0]; break; case 3: /* bus:pcislot:function */ *bus =3D values[0]; - *pcislot =3D values[1]; + *slot =3D values[1]; *function =3D values[2]; break; } @@ -409,8 +409,8 @@ bhyveParsePCISlot(const char *slotdef, static int bhyveParsePCIDisk(virDomainDefPtr def, unsigned caps G_GNUC_UNUSED, - unsigned pcislot, unsigned pcibus, + unsigned pcislot, unsigned function, int bus, int device, @@ -430,8 +430,8 @@ bhyveParsePCIDisk(virDomainDefPtr def, disk->device =3D device; =20 disk->info.type =3D VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI; - disk->info.addr.pci.slot =3D pcislot; disk->info.addr.pci.bus =3D pcibus; + disk->info.addr.pci.slot =3D pcislot; disk->info.addr.pci.function =3D function; =20 if (STRPREFIX(config, "/dev/")) @@ -480,8 +480,8 @@ static int bhyveParsePCINet(virDomainDefPtr def, virDomainXMLOptionPtr xmlopt, unsigned caps G_GNUC_UNUSED, - unsigned pcislot, - unsigned pcibus, + unsigned bus, + unsigned slot, unsigned function, int model, const char *config) @@ -503,8 +503,8 @@ bhyveParsePCINet(virDomainDefPtr def, =20 net->model =3D model; net->info.type =3D VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI; - net->info.addr.pci.slot =3D pcislot; - net->info.addr.pci.bus =3D pcibus; + net->info.addr.pci.bus =3D bus; + net->info.addr.pci.slot =3D slot; net->info.addr.pci.function =3D function; =20 if (!config) @@ -565,7 +565,7 @@ bhyveParseBhyvePCIArg(virDomainDefPtr def, char *slotdef =3D NULL; char *emulation =3D NULL; char *conf =3D NULL; - unsigned pcislot, bus, function; + unsigned bus, slot, function; =20 separator =3D strchr(arg, ','); =20 @@ -584,35 +584,35 @@ bhyveParseBhyvePCIArg(virDomainDefPtr def, emulation =3D g_strdup(separator); } =20 - if (bhyveParsePCISlot(slotdef, &pcislot, &bus, &function) < 0) + if (bhyveParsePCISlot(slotdef, &bus, &slot, &function) < 0) goto error; =20 if (STREQ(emulation, "ahci-cd")) - bhyveParsePCIDisk(def, caps, pcislot, bus, function, + bhyveParsePCIDisk(def, caps, bus, slot, function, VIR_DOMAIN_DISK_BUS_SATA, VIR_DOMAIN_DISK_DEVICE_CDROM, nvirtiodisk, nahcidisk, conf); else if (STREQ(emulation, "ahci-hd")) - bhyveParsePCIDisk(def, caps, pcislot, bus, function, + bhyveParsePCIDisk(def, caps, bus, slot, function, VIR_DOMAIN_DISK_BUS_SATA, VIR_DOMAIN_DISK_DEVICE_DISK, nvirtiodisk, nahcidisk, conf); else if (STREQ(emulation, "virtio-blk")) - bhyveParsePCIDisk(def, caps, pcislot, bus, function, + bhyveParsePCIDisk(def, caps, bus, slot, function, VIR_DOMAIN_DISK_BUS_VIRTIO, VIR_DOMAIN_DISK_DEVICE_DISK, nvirtiodisk, nahcidisk, conf); else if (STREQ(emulation, "virtio-net")) - bhyveParsePCINet(def, xmlopt, caps, pcislot, bus, function, + bhyveParsePCINet(def, xmlopt, caps, bus, slot, function, VIR_DOMAIN_NET_MODEL_VIRTIO, conf); else if (STREQ(emulation, "e1000")) - bhyveParsePCINet(def, xmlopt, caps, pcislot, bus, function, + bhyveParsePCINet(def, xmlopt, caps, bus, slot, function, VIR_DOMAIN_NET_MODEL_E1000, conf); =20 VIR_FREE(emulation); --=20 2.24.1 From nobody Wed May 1 17:59:55 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) client-ip=205.139.110.61; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=none dis=none) header.from=ixsystems.com ARC-Seal: i=1; a=rsa-sha256; t=1582526865; cv=none; d=zohomail.com; s=zohoarc; b=QMV6nX52U4r0Bet5biI9KRp6dBVOw5tX/4HjwF27zLvx0XU3S4fs95/zDT5BIXXUfUTDgIJVfPPdUlTFfdqHaPSVPsUmDGuOx5FbfZnXAIivcWAO7GcTM0uLvMTmJ8tDO0JNAe/REESRatQBk1mqf+luqyADgKbVOaROWxOBDb0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1582526865; 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=VpaBXH0IRYA079tyG5jMkvvrGs3I2nqeXpZE+cvjih8=; b=PuHTYbAu+y1qcLbMczw3hU0N0DTHbD3a/hAJ3Ep8ctMripo64drmMJTVwF91OgKsoEkZbugLaP2c9WRSiGizM3qSv7RaUQSlvYbc1x7simpgeHUxVtwj/ikJmQFX52Oai2w5rU8k8lH9m7NQ4plqztBtYeMgQi060f3lqxrIMhY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from us-smtp-delivery-1.mimecast.com (us-smtp-2.mimecast.com [205.139.110.61]) by mx.zohomail.com with SMTPS id 1582526865987495.798683827044; Sun, 23 Feb 2020 22:47:45 -0800 (PST) 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-382-RJaUmuvPMYGcKbwHGGjxog-1; Mon, 24 Feb 2020 01:47:42 -0500 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 2E2E8800D5C; Mon, 24 Feb 2020 06:47:37 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id F3BA42709B; Mon, 24 Feb 2020 06:47:36 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id ADD97180880C; Mon, 24 Feb 2020 06:47:36 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 01O6kgia025604 for ; Mon, 24 Feb 2020 01:46:42 -0500 Received: by smtp.corp.redhat.com (Postfix) id 8A88B2166B2E; Mon, 24 Feb 2020 06:46:42 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast06.extmail.prod.ext.rdu2.redhat.com [10.11.55.22]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 851782166B2B for ; Mon, 24 Feb 2020 06:46:42 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-1.mimecast.com [205.139.110.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 6051D185A78E for ; Mon, 24 Feb 2020 06:46:42 +0000 (UTC) Received: from mail-yb1-f193.google.com (mail-yb1-f193.google.com [209.85.219.193]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-152-ANr2v6_HNV-chZrS7Zw2pA-1; Mon, 24 Feb 2020 01:46:40 -0500 Received: by mail-yb1-f193.google.com with SMTP id f130so4179205ybc.7 for ; Sun, 23 Feb 2020 22:46:39 -0800 (PST) Received: from xeon-freebsd.freqlabs.com. (69-228-200-148.lightspeed.knvltn.sbcglobal.net. [69.228.200.148]) by smtp.gmail.com with ESMTPSA id j184sm4821447ywa.39.2020.02.23.22.46.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 23 Feb 2020 22:46:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1582526864; h=from:from:sender:sender: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:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=VpaBXH0IRYA079tyG5jMkvvrGs3I2nqeXpZE+cvjih8=; b=bUyQqDTsq64cRkicml7UDSuXeh3dsQPwrrRzw0zEY9wRXHIbcAbR+ckOdCp+T+s4aYfvgv nOXWvFzq0WEJT9+K8Wzdte0D6eV8M39xjQzRRNb3aLPYEBtgay1rNOvzd3raBccvK72UsK +DJq9nIuUFx3alfVqJ1bkC+XZu+Bd/Q= X-MC-Unique: RJaUmuvPMYGcKbwHGGjxog-1 X-MC-Unique: ANr2v6_HNV-chZrS7Zw2pA-1 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=U6aoUUoYVQtyoMh2K3r2YW/3buh5iBFartrBUz2vbEg=; b=K+Uthu97vNGU8UaXWkeHkVs7NkZ2WU4Q4lThqGgTieQwmYin2K/gOCV6f91kQAL6GX It5nZr7wCiiKCe7elY7Au7cxvO6xubSvyiB81IvFZxlMxW9gYUy2S0furi7Co0XOiitd 9hdaiiv1vOSMCunvNIgQhzlzV5d+PWqAeAh3F14bZw6ep8s8ehzJfjp6S6HYg4tQb0qU 7Rocs5GznwlT5zJyctiK8C0d5IvpWJ7i+W7DOGezTo7pSs6sG2hFfoJRlLv9Bjec16Ux 4PkIavpUulC+s+v6qs+CuWyqbi18XDVy0yflpqA5s4l4okKcIMTJFym4szX3uBeq3UOy 9MPQ== X-Gm-Message-State: APjAAAX+7fuOg0aemsgKm0K2Eqciz2tYIrlJnrR4u9mjb2g58IS+ewTn NGSoVrR0TGMRMQDn6nec6OQUPxRZg+QZuPATbWW8jim6UkLS0xTiB3ChKeFaK39lyWTF5RiEj2i zdP5tCvRhOaewN29/h+xhJy/KzwsHj9dA1RCcJ4WDJupIcC1FY7VOJG0t/VR5yj5trBQ= X-Google-Smtp-Source: APXvYqwzRaSSGrduk3pAkGrpZDxC2SRTtEfL0yoZeO1NSRvU5yDjM7vqd0mnv4HS72LYpG0HvWelyQ== X-Received: by 2002:a5b:74e:: with SMTP id s14mr43294790ybq.295.1582526797810; Sun, 23 Feb 2020 22:46:37 -0800 (PST) From: Ryan Moeller X-Google-Original-From: Ryan Moeller To: libvir-list@redhat.com Subject: [PATCH v1 10/12] add hostdev handling for bhyve Date: Mon, 24 Feb 2020 01:46:22 -0500 Message-Id: <20200224064624.66649-11-ryan@iXsystems.com> In-Reply-To: <20200224064624.66649-1-ryan@iXsystems.com> References: <20200224064624.66649-1-ryan@iXsystems.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 01O6kgia025604 X-loop: libvir-list@redhat.com Cc: Ryan Moeller X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" Handle PCI passthrough and virtio-scsi using hostdev devices. Example PCI passthrough: domain xml snippet ```
``` loader.conf snippet ``` vmm_load=3D"YES" pptdevs=3D"6/2/0" ``` Example SCSI passthrough: domain xml snippet ```
``` ctl.conf snippet ``` portal-group "pg0" { discovery-auth-group "no-authentication" listen "127.0.0.1" } target iqn.2020-01.com.example:target0 { auth-group "no-authentication" portal-group "pg0" port ioctl/5/0 lun 0 { path "/dev/zvol/storage/lun0" } lun 1 { path "/dev/zvol/storage/lun1" } lun 2 { path "/dev/zvol/storage/lun2" } lun 3 { path "/dev/zvol/storage/lun3" } } ``` Signed-off-by: Ryan Moeller --- docs/schemas/domaincommon.rng | 30 ++++ src/bhyve/bhyve_capabilities.c | 14 ++ src/bhyve/bhyve_capabilities.h | 1 + src/bhyve/bhyve_command.c | 121 ++++++++++++++++ src/bhyve/bhyve_parse_command.c | 90 ++++++++++++ src/conf/domain_audit.c | 5 + src/conf/domain_conf.c | 131 ++++++++++++++++++ src/conf/domain_conf.h | 29 +++- src/conf/virconftypes.h | 3 + src/qemu/qemu_command.c | 2 + src/qemu/qemu_domain.c | 5 + src/qemu/qemu_hostdev.c | 1 + src/qemu/qemu_hotplug.c | 2 + src/qemu/qemu_migration.c | 1 + src/security/security_apparmor.c | 1 + src/security/security_dac.c | 28 ++++ src/security/security_selinux.c | 8 ++ .../bhyveargv2xml-passthru.args | 8 ++ .../bhyveargv2xml-passthru.xml | 26 ++++ .../bhyveargv2xml-virtio-scsi.args | 9 ++ .../bhyveargv2xml-virtio-scsi.xml | 20 +++ tests/bhyveargv2xmltest.c | 2 + .../bhyvexml2argv-passthru.args | 11 ++ .../bhyvexml2argv-passthru.ldargs | 1 + .../bhyvexml2argv-passthru.xml | 22 +++ .../bhyvexml2argv-virtio-scsi.args | 9 ++ .../bhyvexml2argv-virtio-scsi.ldargs | 1 + .../bhyvexml2argv-virtio-scsi.xml | 21 +++ tests/bhyvexml2argvtest.c | 4 +- .../bhyvexml2xmlout-passthru.xml | 29 ++++ .../bhyvexml2xmlout-virtio-scsi.xml | 23 +++ tests/bhyvexml2xmltest.c | 2 + 32 files changed, 658 insertions(+), 2 deletions(-) create mode 100644 tests/bhyveargv2xmldata/bhyveargv2xml-passthru.args create mode 100644 tests/bhyveargv2xmldata/bhyveargv2xml-passthru.xml create mode 100644 tests/bhyveargv2xmldata/bhyveargv2xml-virtio-scsi.args create mode 100644 tests/bhyveargv2xmldata/bhyveargv2xml-virtio-scsi.xml create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-passthru.args create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-passthru.ldargs create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-passthru.xml create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-virtio-scsi.args create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-virtio-scsi.ldargs create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-virtio-scsi.xml create mode 100644 tests/bhyvexml2xmloutdata/bhyvexml2xmlout-passthru.xml create mode 100644 tests/bhyvexml2xmloutdata/bhyvexml2xmlout-virtio-scsi.x= ml diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng index c00ace7d9c..e5250e1f32 100644 --- a/docs/schemas/domaincommon.rng +++ b/docs/schemas/domaincommon.rng @@ -4697,6 +4697,7 @@ + @@ -4723,6 +4724,34 @@ =20 =20 + + + scsi_ctl + + + + + virtio + + + + + + + + ioctl + + + + + + + + + + + + pci @@ -4734,6 +4763,7 @@ kvm vfio + vmm xen diff --git a/src/bhyve/bhyve_capabilities.c b/src/bhyve/bhyve_capabilities.c index fb8829d571..fb6be0aaba 100644 --- a/src/bhyve/bhyve_capabilities.c +++ b/src/bhyve/bhyve_capabilities.c @@ -323,6 +323,17 @@ bhyveProbeCapsXHCIController(unsigned int *caps, char = *binary) } =20 =20 +static int +bhyveProbeCapsVirtioSCSI(unsigned int *caps, char *binary) +{ + return bhyveProbeCapsDeviceHelper(caps, binary, + "-s", + "0,virtio-scsi", + "pci slot 0:0: unknown device \"virt= io-scsi\"", + BHYVE_CAP_VIRTIOSCSI); +} + + int virBhyveProbeCaps(unsigned int *caps) { @@ -351,6 +362,9 @@ virBhyveProbeCaps(unsigned int *caps) if ((ret =3D bhyveProbeCapsXHCIController(caps, binary))) goto out; =20 + if ((ret =3D bhyveProbeCapsVirtioSCSI(caps, binary))) + goto out; + out: VIR_FREE(binary); return ret; diff --git a/src/bhyve/bhyve_capabilities.h b/src/bhyve/bhyve_capabilities.h index 12926cf423..bb62bdfb15 100644 --- a/src/bhyve/bhyve_capabilities.h +++ b/src/bhyve/bhyve_capabilities.h @@ -49,6 +49,7 @@ typedef enum { BHYVE_CAP_FBUF =3D 1 << 4, BHYVE_CAP_XHCI =3D 1 << 5, BHYVE_CAP_CPUTOPOLOGY =3D 1 << 6, + BHYVE_CAP_VIRTIOSCSI =3D 1 << 7, } virBhyveCapsFlags; =20 int virBhyveProbeGrubCaps(virBhyveGrubCapsFlags *caps); diff --git a/src/bhyve/bhyve_command.c b/src/bhyve/bhyve_command.c index 5b1d80083a..9f4030f6a3 100644 --- a/src/bhyve/bhyve_command.c +++ b/src/bhyve/bhyve_command.c @@ -362,6 +362,123 @@ bhyveBuildControllerArgStr(const virDomainDef *def, return 0; } =20 +static int +bhyveBuildHostdevSubsysPCIArgStr(const virDomainDef *def, + virDomainHostdevDefPtr dev, + bhyveConnPtr driver G_GNUC_UNUSED, + virCommandPtr cmd) +{ + virDomainHostdevSubsysPCIPtr pcisrc =3D &dev->source.subsys.u.pci; + + switch (pcisrc->backend) { + case VIR_DOMAIN_HOSTDEV_PCI_BACKEND_DEFAULT: + pcisrc->backend =3D VIR_DOMAIN_HOSTDEV_PCI_BACKEND_VMM; + G_GNUC_FALLTHROUGH; + case VIR_DOMAIN_HOSTDEV_PCI_BACKEND_VMM: + if (!def->mem.locked) { + /* TODO: maybe just configure it automatically? */ + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("guest memory must be locked (wired) for " + "PCI passthrough")); + return -1; + } + virCommandAddArg(cmd, "-s"); + virCommandAddArgFormat(cmd, "%u:%u:%u,passthru,%u/%u/%u", + dev->info->addr.pci.bus, + dev->info->addr.pci.slot, + dev->info->addr.pci.function, + pcisrc->addr.bus, + pcisrc->addr.slot, + pcisrc->addr.function); + break; + default: + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("unsupported hostdev pci backend")); + return -1; + } + return 0; +} + +static int +bhyveBuildHostdevSubsysSCSICTLArgStr(const virDomainDef *def G_GNUC_UNUSED, + virDomainHostdevDefPtr dev, + bhyveConnPtr driver, + virCommandPtr cmd) +{ + virDomainHostdevSubsysSCSICTLPtr ctlsrc =3D &dev->source.subsys.u.scsi= _ctl; + + /* Actually CAM Target Layer (CTL), not VHost on FreeBSD. */ + if (!(bhyveDriverGetBhyveCaps(driver) & BHYVE_CAP_VIRTIOSCSI)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("Installed bhyve binary does not support " + "defining virtio-scsi devices")); + return -1; + } + if (ctlsrc->protocol !=3D + VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_CTL_PROTOCOL_TYPE_IOCTL) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("unsupported hostdev scsi_ctl protocol")); + return -1; + } + switch (ctlsrc->model) { + case VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_CTL_MODEL_TYPE_DEFAULT: + ctlsrc->model =3D + VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_CTL_MODEL_TYPE_VIRTIO; + G_GNUC_FALLTHROUGH; + case VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_CTL_MODEL_TYPE_VIRTIO: + virCommandAddArg(cmd, "-s"); + virCommandAddArgFormat(cmd, "%u:%u,virtio-scsi,/dev/cam/ctl%u.%u", + dev->info->addr.pci.slot, + dev->info->addr.pci.function, + ctlsrc->pp, ctlsrc->vp); + break; + default: + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("unsupported hostdev scsi_ctl model")); + return -1; + } + return 0; +} + +static int +bhyveBuildHostdevSubsysArgStr(const virDomainDef *def, + virDomainHostdevDefPtr dev, + bhyveConnPtr driver, + virCommandPtr cmd) +{ + switch (dev->source.subsys.type) { + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI: + if (bhyveBuildHostdevSubsysPCIArgStr(def, dev, driver, cmd) < 0) + return -1; + break; + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_CTL: + if (bhyveBuildHostdevSubsysSCSICTLArgStr(def, dev, driver, cmd) < = 0) + return -1; + break; + default: + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("unsupported hostdev subsystem type")); + return -1; + } + return 0; +} + +static int +bhyveBuildHostdevArgStr(const virDomainDef *def, + virDomainHostdevDefPtr dev, + bhyveConnPtr driver, + virCommandPtr cmd) +{ + switch (dev->mode) { + case VIR_DOMAIN_HOSTDEV_MODE_SUBSYS: + return bhyveBuildHostdevSubsysArgStr(def, dev, driver, cmd); + default: + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("unsupported hostdev device mode")); + return -1; + } +} + static int bhyveBuildLPCArgStr(const virDomainDef *def G_GNUC_UNUSED, virCommandPtr cmd) @@ -613,6 +730,10 @@ virBhyveProcessBuildBhyveCmd(bhyveConnPtr driver, virD= omainDefPtr def, if (bhyveBuildDiskArgStr(def, def->disks[i], cmd) < 0) goto error; } + for (i =3D 0; i < def->nhostdevs; i++) { + if (bhyveBuildHostdevArgStr(def, def->hostdevs[i], driver, cmd) < = 0) + goto error; + } =20 if (def->ngraphics && def->nvideos) { if (def->ngraphics =3D=3D 1 && def->nvideos =3D=3D 1) { diff --git a/src/bhyve/bhyve_parse_command.c b/src/bhyve/bhyve_parse_comman= d.c index 76423730d9..d69d23ace8 100644 --- a/src/bhyve/bhyve_parse_command.c +++ b/src/bhyve/bhyve_parse_command.c @@ -476,6 +476,92 @@ bhyveParsePCIDisk(virDomainDefPtr def, return -1; } =20 +static int +bhyveParsePCIPassthru(virDomainDefPtr def, + unsigned vmbus, + unsigned vmslot, + unsigned vmfunction, + char *config) +{ + /* -s bus:slot:function,passthru,BUS/SLOT/FUNCTION */ + virDomainHostdevDefPtr dev =3D NULL; + virDomainHostdevSubsysPCIPtr pcisrc =3D NULL; + unsigned hostbus, hostslot, hostfunction; + + hostslot =3D hostbus =3D hostfunction =3D 0; + if (sscanf(config, "%u/%u/%u", &hostbus, &hostslot, &hostfunction) != =3D 3) + return -1; + + if ((dev =3D virDomainHostdevDefNew()) =3D=3D NULL) + return -1; + dev->info->type =3D VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI; + dev->info->addr.pci.bus =3D vmbus; + dev->info->addr.pci.slot =3D vmslot; + dev->info->addr.pci.function =3D vmfunction; + dev->mode =3D VIR_DOMAIN_HOSTDEV_MODE_SUBSYS; + dev->source.subsys.type =3D VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI; + pcisrc =3D &dev->source.subsys.u.pci; + pcisrc->backend =3D VIR_DOMAIN_HOSTDEV_PCI_BACKEND_VMM; + pcisrc->addr.bus =3D hostbus; + pcisrc->addr.slot =3D hostslot; + pcisrc->addr.function =3D hostfunction; + + if (VIR_APPEND_ELEMENT(def->hostdevs, def->nhostdevs, dev) < 0) + goto error; + + return 0; + + error: + virDomainHostdevDefFree(dev); + return -1; +} + +static int +bhyveParseSCSICTL(virDomainDefPtr def, + unsigned bus, + unsigned slot, + unsigned function, + char *config) +{ + /* -s slot,virtio-scsi,[dev=3D]/dev/cam/ctlPP.VP[,scsi-device-options]= */ + virDomainHostdevDefPtr dev =3D NULL; + virDomainHostdevSubsysSCSICTLPtr ctlsrc =3D NULL; + unsigned pp, vp; + + /* Skip [dev=3D] if present. */ + if (STRPREFIX(config, "dev=3D")) + config =3D strchr(config, '=3D') + 1; + + pp =3D vp =3D 0; + if (sscanf(config, "/dev/cam/ctl%u.%u", &pp, &vp) !=3D 2) + return -1; + + if ((dev =3D virDomainHostdevDefNew()) =3D=3D NULL) + return -1; + dev->info->type =3D VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI; + dev->info->addr.pci.bus =3D bus; + dev->info->addr.pci.slot =3D slot; + dev->info->addr.pci.function =3D function; + dev->mode =3D VIR_DOMAIN_HOSTDEV_MODE_SUBSYS; + dev->source.subsys.type =3D VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_CTL; + ctlsrc =3D &dev->source.subsys.u.scsi_ctl; + ctlsrc->model =3D + VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_CTL_MODEL_TYPE_VIRTIO; + ctlsrc->protocol =3D + VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_CTL_PROTOCOL_TYPE_IOCTL; + ctlsrc->pp =3D pp; + ctlsrc->vp =3D vp; + + if (VIR_APPEND_ELEMENT(def->hostdevs, def->nhostdevs, dev) < 0) + goto error; + + return 0; + + error: + virDomainHostdevDefFree(dev); + return -1; +} + static int bhyveParsePCINet(virDomainDefPtr def, virDomainXMLOptionPtr xmlopt, @@ -601,6 +687,8 @@ bhyveParseBhyvePCIArg(virDomainDefPtr def, nvirtiodisk, nahcidisk, conf); + else if (STREQ(emulation, "passthru")) + bhyveParsePCIPassthru(def, bus, slot, function, conf); else if (STREQ(emulation, "virtio-blk")) bhyveParsePCIDisk(def, caps, bus, slot, function, VIR_DOMAIN_DISK_BUS_VIRTIO, @@ -611,6 +699,8 @@ bhyveParseBhyvePCIArg(virDomainDefPtr def, else if (STREQ(emulation, "virtio-net")) bhyveParsePCINet(def, xmlopt, caps, bus, slot, function, VIR_DOMAIN_NET_MODEL_VIRTIO, conf); + else if (STREQ(emulation, "virtio-scsi")) + bhyveParseSCSICTL(def, bus, slot, function, conf); else if (STREQ(emulation, "e1000")) bhyveParsePCINet(def, xmlopt, caps, bus, slot, function, VIR_DOMAIN_NET_MODEL_E1000, conf); diff --git a/src/conf/domain_audit.c b/src/conf/domain_audit.c index 1b0abb21a0..7322eca80c 100644 --- a/src/conf/domain_audit.c +++ b/src/conf/domain_audit.c @@ -348,6 +348,7 @@ virDomainAuditHostdev(virDomainObjPtr vm, virDomainHost= devDefPtr hostdev, virDomainHostdevSubsysUSBPtr usbsrc =3D &hostdev->source.subsys.u.usb; virDomainHostdevSubsysPCIPtr pcisrc =3D &hostdev->source.subsys.u.pci; virDomainHostdevSubsysSCSIPtr scsisrc =3D &hostdev->source.subsys.u.sc= si; + virDomainHostdevSubsysSCSICTLPtr ctlsrc =3D &hostdev->source.subsys.u.= scsi_ctl; virDomainHostdevSubsysSCSIVHostPtr hostsrc =3D &hostdev->source.subsys= .u.scsi_host; virDomainHostdevSubsysMediatedDevPtr mdevsrc =3D &hostdev->source.subs= ys.u.mdev; =20 @@ -387,6 +388,10 @@ virDomainAuditHostdev(virDomainObjPtr vm, virDomainHos= tdevDefPtr hostdev, } break; } + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_CTL: + address =3D g_strdup_printf("/dev/cam/ctl%u.%u", + ctlsrc->pp, ctlsrc->vp); + break; case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_HOST: address =3D g_strdup(hostsrc->wwpn); break; diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index cef49df3f8..12f8bb43c0 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -898,6 +898,7 @@ VIR_ENUM_IMPL(virDomainHostdevSubsys, "usb", "pci", "scsi", + "scsi_ctl", "scsi_host", "mdev", ); @@ -908,6 +909,7 @@ VIR_ENUM_IMPL(virDomainHostdevSubsysPCIBackend, "kvm", "vfio", "xen", + "vmm", ); =20 VIR_ENUM_IMPL(virDomainHostdevSubsysSCSIProtocol, @@ -916,6 +918,18 @@ VIR_ENUM_IMPL(virDomainHostdevSubsysSCSIProtocol, "iscsi", ); =20 +VIR_ENUM_IMPL(virDomainHostdevSubsysSCSICTLProtocol, + VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_CTL_PROTOCOL_TYPE_LAST, + "none", + "ioctl", +); + +VIR_ENUM_IMPL(virDomainHostdevSubsysSCSICTLModel, + VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_CTL_MODEL_TYPE_LAST, + "default", + "virtio", +); + VIR_ENUM_IMPL(virDomainHostdevSubsysSCSIHostProtocol, VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_HOST_PROTOCOL_TYPE_LAST, "none", @@ -2958,6 +2972,7 @@ void virDomainHostdevDefClear(virDomainHostdevDefPtr = def) break; case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB: case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI: + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_CTL: case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV: case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST: break; @@ -5046,6 +5061,7 @@ virDomainHostdevDefPostParse(virDomainHostdevDefPtr d= ev, =20 case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB: case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI: + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_CTL: case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_HOST: case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST: break; @@ -6484,6 +6500,16 @@ virDomainHostdevDefValidate(const virDomainHostdevDe= f *hostdev) return -1; } break; + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_CTL: + if (hostdev->info->type !=3D VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NO= NE && + hostdev->info->type !=3D VIR_DOMAIN_DEVICE_ADDRESS_TYPE_UN= ASSIGNED && + hostdev->info->type !=3D VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PC= I) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("SCSI CTL host devices must use 'pci' or " + "'unassigned' address type")); + return -1; + } + break; case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_HOST: if (hostdev->info->type !=3D VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NO= NE && hostdev->info->type !=3D VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PC= I && @@ -8320,6 +8346,64 @@ virDomainHostdevSubsysSCSIVHostDefParseXML(xmlNodePt= r sourcenode, return 0; } =20 +static int +virDomainHostdevSubsysSCSICTLDefParseXML(xmlNodePtr sourcenode, + virDomainHostdevDefPtr def) +{ + virDomainHostdevSubsysSCSICTLPtr ctlsrc =3D &def->source.subsys.u.scsi= _ctl; + g_autofree char *protocol =3D NULL; + g_autofree char *pp =3D NULL; + g_autofree char *vp =3D NULL; + + if (!(protocol =3D virXMLPropString(sourcenode, "protocol"))) { + virReportError(VIR_ERR_XML_ERROR, "%s", + _("Missing scsi_ctl subsystem protocol")); + return -1; + } + + if ((ctlsrc->protocol =3D + virDomainHostdevSubsysSCSICTLProtocolTypeFromString(protocol)) <= =3D 0) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Unknown scsi_ctl subsystem protocol '%s'"), + protocol); + return -1; + } + + switch ((virDomainHostdevSubsysSCSICTLProtocolType) ctlsrc->protocol) { + case VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_CTL_PROTOCOL_TYPE_IOCTL: + if (!(pp =3D virXMLPropString(sourcenode, "pp"))) { + virReportError(VIR_ERR_XML_ERROR, "%s", + _("missing scsi_ctl hostdev source pp")); + return -1; + } + if (virStrToLong_ui(pp, NULL, 10, &ctlsrc->pp) < 0) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("Cannot parse scsi_ctl hostdev source 'pp' at= tribute")); + return -1; + } + if (!(vp =3D virXMLPropString(sourcenode, "vp"))) { + virReportError(VIR_ERR_XML_ERROR, "%s", + _("missing scsi_ctl hostdev source vp")); + return -1; + } + if (virStrToLong_ui(vp, NULL, 10, &ctlsrc->vp) < 0) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("Cannot parse scsi_ctl hostdev source 'vp' at= tribute")); + return -1; + } + break; + case VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_CTL_PROTOCOL_TYPE_NONE: + case VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_CTL_PROTOCOL_TYPE_LAST: + virReportError(VIR_ERR_XML_ERROR, + _("Invalid hostdev protocol '%s'"), + virDomainHostdevSubsysSCSICTLProtocolTypeToString(c= tlsrc->protocol)); + return -1; + break; + } + + return 0; +} + static int virDomainHostdevSubsysMediatedDevDefParseXML(virDomainHostdevDefPtr def, xmlXPathContextPtr ctxt) @@ -8363,6 +8447,7 @@ virDomainHostdevDefParseXMLSubsys(xmlNodePtr node, int backend; virDomainHostdevSubsysPCIPtr pcisrc =3D &def->source.subsys.u.pci; virDomainHostdevSubsysSCSIPtr scsisrc =3D &def->source.subsys.u.scsi; + virDomainHostdevSubsysSCSICTLPtr scsictlsrc =3D &def->source.subsys.u.= scsi_ctl; virDomainHostdevSubsysSCSIVHostPtr scsihostsrc =3D &def->source.subsys= .u.scsi_host; virDomainHostdevSubsysMediatedDevPtr mdevsrc =3D &def->source.subsys.u= .mdev; g_autofree char *managed =3D NULL; @@ -8453,6 +8538,7 @@ virDomainHostdevDefParseXMLSubsys(xmlNodePtr node, } =20 if (def->source.subsys.type !=3D VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV && + def->source.subsys.type !=3D VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_C= TL && def->source.subsys.type !=3D VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_H= OST) { if (model) { virReportError(VIR_ERR_XML_ERROR, @@ -8471,6 +8557,14 @@ virDomainHostdevDefParseXMLSubsys(xmlNodePtr node, model); return -1; } + } else if (def->source.subsys.type =3D=3D VIR_DOMAIN_HOSTDEV_SUBSYS_TY= PE_SCSI_CTL) { + if (model && + ((scsictlsrc->model =3D virDomainHostdevSubsysSCSICTLModelType= FromString(model)) < 0)) { + virReportError(VIR_ERR_XML_ERROR, + _("unknown hostdev model '%s'"), + model); + return -1; + } } else if (def->source.subsys.type =3D=3D VIR_DOMAIN_HOSTDEV_SUBSYS_TY= PE_MDEV) { if (!model) { virReportError(VIR_ERR_XML_ERROR, "%s", @@ -8533,10 +8627,16 @@ virDomainHostdevDefParseXMLSubsys(xmlNodePtr node, return -1; break; =20 + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_CTL: + if (virDomainHostdevSubsysSCSICTLDefParseXML(sourcenode, def) < 0) + return -1; + break; + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_HOST: if (virDomainHostdevSubsysSCSIVHostDefParseXML(sourcenode, def) < = 0) return -1; break; + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV: if (virDomainHostdevSubsysMediatedDevDefParseXML(def, ctxt) < 0) return -1; @@ -15914,6 +16014,7 @@ virDomainHostdevDefParseXML(virDomainXMLOptionPtr x= mlopt, =20 case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB: case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI: + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_CTL: case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_HOST: case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV: case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST: @@ -16963,6 +17064,13 @@ virDomainHostdevMatchSubsys(virDomainHostdevDefPtr= a, return virDomainHostdevMatchSubsysSCSIiSCSI(a, b); else return virDomainHostdevMatchSubsysSCSIHost(a, b); + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_CTL: + return ((a->source.subsys.u.scsi_ctl.protocol =3D=3D + b->source.subsys.u.scsi_ctl.protocol) && + (a->source.subsys.u.scsi_ctl.pp =3D=3D + b->source.subsys.u.scsi_ctl.pp) && + (a->source.subsys.u.scsi_ctl.vp =3D=3D + b->source.subsys.u.scsi_ctl.vp)) ? 1 : 0; case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_HOST: if (a->source.subsys.u.scsi_host.protocol !=3D b->source.subsys.u.scsi_host.protocol) @@ -25354,6 +25462,7 @@ virDomainHostdevDefFormatSubsys(virBufferPtr buf, virDomainHostdevSubsysUSBPtr usbsrc =3D &def->source.subsys.u.usb; virDomainHostdevSubsysPCIPtr pcisrc =3D &def->source.subsys.u.pci; virDomainHostdevSubsysSCSIPtr scsisrc =3D &def->source.subsys.u.scsi; + virDomainHostdevSubsysSCSICTLPtr ctlsrc =3D &def->source.subsys.u.scsi= _ctl; virDomainHostdevSubsysSCSIVHostPtr hostsrc =3D &def->source.subsys.u.s= csi_host; virDomainHostdevSubsysMediatedDevPtr mdevsrc =3D &def->source.subsys.u= .mdev; virDomainHostdevSubsysSCSIHostPtr scsihostsrc =3D &scsisrc->u.host; @@ -25396,6 +25505,15 @@ virDomainHostdevDefFormatSubsys(virBufferPtr buf, protocol, iscsisrc->src->path); } =20 + if (def->source.subsys.type =3D=3D VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI= _CTL) { + const char *protocol =3D + virDomainHostdevSubsysSCSICTLProtocolTypeToString(ctlsrc->prot= ocol); + closedSource =3D true; + + virBufferAsprintf(buf, " protocol=3D'%s' pp=3D'%u' vp=3D'%u'/", + protocol, ctlsrc->pp, ctlsrc->vp); + } + if (def->source.subsys.type =3D=3D VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI= _HOST) { const char *protocol =3D virDomainHostdevSubsysSCSIHostProtocolTypeToString(hostsrc->pr= otocol); @@ -25457,6 +25575,7 @@ virDomainHostdevDefFormatSubsys(virBufferPtr buf, scsihostsrc->unit); } break; + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_CTL: case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_HOST: break; case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV: @@ -27560,6 +27679,7 @@ virDomainHostdevDefFormat(virBufferPtr buf, virDomainHostdevSubsysSCSIPtr scsisrc =3D &def->source.subsys.u.scsi; virDomainHostdevSubsysMediatedDevPtr mdevsrc =3D &def->source.subsys.u= .mdev; virDomainHostdevSubsysSCSIVHostPtr scsihostsrc =3D &def->source.subsys= .u.scsi_host; + virDomainHostdevSubsysSCSICTLPtr scsictlsrc =3D &def->source.subsys.u.= scsi_ctl; const char *type; =20 if (!mode) { @@ -27610,6 +27730,12 @@ virDomainHostdevDefFormat(virBufferPtr buf, virTristateBoolTypeToString(scsisrc->rawio)); } =20 + if (def->source.subsys.type =3D=3D VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_= SCSI_CTL && + scsictlsrc->model) { + virBufferAsprintf(buf, " model=3D'%s'", + virDomainHostdevSubsysSCSICTLModelTypeToStri= ng(scsictlsrc->model)); + } + if (def->source.subsys.type =3D=3D VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_= SCSI_HOST && scsihostsrc->model) { virBufferAsprintf(buf, " model=3D'%s'", @@ -31142,6 +31268,11 @@ virDomainNetDefActualToNetworkPort(virDomainDefPtr= dom, port->plug.hostdevpci.driver =3D VIR_NETWORK_FORWARD_DRIVER_NA= ME_VFIO; break; =20 + case VIR_DOMAIN_HOSTDEV_PCI_BACKEND_VMM: + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("Unexpected PCI backend 'vmm'")); + break; + case VIR_DOMAIN_HOSTDEV_PCI_BACKEND_XEN: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", _("Unexpected PCI backend 'xen'")); diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index cdc4d25700..4e0fc01c2b 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -195,6 +195,7 @@ typedef enum { VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB, VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI, VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI, + VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_CTL, VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_HOST, VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV, =20 @@ -203,10 +204,11 @@ typedef enum { =20 /* the backend driver used for PCI hostdev devices */ typedef enum { - VIR_DOMAIN_HOSTDEV_PCI_BACKEND_DEFAULT, /* detect automatically, prefe= r VFIO */ + VIR_DOMAIN_HOSTDEV_PCI_BACKEND_DEFAULT, /* detect automatically, prefe= r VFIO or VMM */ VIR_DOMAIN_HOSTDEV_PCI_BACKEND_KVM, /* force legacy kvm style */ VIR_DOMAIN_HOSTDEV_PCI_BACKEND_VFIO, /* force vfio */ VIR_DOMAIN_HOSTDEV_PCI_BACKEND_XEN, /* force legacy xen style, use = pciback */ + VIR_DOMAIN_HOSTDEV_PCI_BACKEND_VMM, /* force vmm (FreeBSD bhyve) */ =20 VIR_DOMAIN_HOSTDEV_PCI_BACKEND_TYPE_LAST } virDomainHostdevSubsysPCIBackendType; @@ -258,6 +260,30 @@ struct _virDomainHostdevSubsysSCSI { } u; }; =20 +typedef enum { + VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_CTL_PROTOCOL_TYPE_NONE, + VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_CTL_PROTOCOL_TYPE_IOCTL, + + VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_CTL_PROTOCOL_TYPE_LAST, +} virDomainHostdevSubsysSCSICTLProtocolType; + +VIR_ENUM_DECL(virDomainHostdevSubsysSCSICTLProtocol); + +typedef enum { + VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_CTL_MODEL_TYPE_DEFAULT, + VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_CTL_MODEL_TYPE_VIRTIO, + + VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_CTL_MODEL_TYPE_LAST, +} virDomainHostdevSubsysSCSICTLModelType; + +VIR_ENUM_DECL(virDomainHostdevSubsysSCSICTLModel); + +struct _virDomainHostdevSubsysSCSICTL { + int protocol; /* enum virDomainHostdevSubsysSCSICTLProtocolType */ + unsigned pp, vp; + int model; /* enum virDomainHostdevSubsysSCSICTLModelType */ +}; + struct _virDomainHostdevSubsysMediatedDev { int model; /* enum virMediatedDeviceModelType= */ int display; /* virTristateSwitch */ @@ -298,6 +324,7 @@ struct _virDomainHostdevSubsys { virDomainHostdevSubsysPCI pci; virDomainHostdevSubsysSCSI scsi; virDomainHostdevSubsysSCSIVHost scsi_host; + virDomainHostdevSubsysSCSICTL scsi_ctl; virDomainHostdevSubsysMediatedDev mdev; } u; }; diff --git a/src/conf/virconftypes.h b/src/conf/virconftypes.h index 1c62cde251..66cf40f8f0 100644 --- a/src/conf/virconftypes.h +++ b/src/conf/virconftypes.h @@ -180,6 +180,9 @@ typedef virDomainHostdevSubsysPCI *virDomainHostdevSubs= ysPCIPtr; typedef struct _virDomainHostdevSubsysSCSI virDomainHostdevSubsysSCSI; typedef virDomainHostdevSubsysSCSI *virDomainHostdevSubsysSCSIPtr; =20 +typedef struct _virDomainHostdevSubsysSCSICTL virDomainHostdevSubsysSCSICT= L; +typedef virDomainHostdevSubsysSCSICTL *virDomainHostdevSubsysSCSICTLPtr; + typedef struct _virDomainHostdevSubsysSCSIHost virDomainHostdevSubsysSCSIH= ost; typedef virDomainHostdevSubsysSCSIHost *virDomainHostdevSubsysSCSIHostPtr; =20 diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index f69a9e651c..fdd59a35a4 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -4677,6 +4677,7 @@ qemuBuildPCIHostdevDevStr(const virDomainDef *def, =20 case VIR_DOMAIN_HOSTDEV_PCI_BACKEND_KVM: case VIR_DOMAIN_HOSTDEV_PCI_BACKEND_DEFAULT: + case VIR_DOMAIN_HOSTDEV_PCI_BACKEND_VMM: case VIR_DOMAIN_HOSTDEV_PCI_BACKEND_XEN: case VIR_DOMAIN_HOSTDEV_PCI_BACKEND_TYPE_LAST: virReportError(VIR_ERR_INTERNAL_ERROR, @@ -5439,6 +5440,7 @@ qemuBuildHostdevCommandLine(virCommandPtr cmd, =20 break; =20 + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_CTL: case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST: break; } diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index af6817cc05..3ebb864b4c 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -6674,8 +6674,11 @@ qemuDomainDeviceDefValidateHostdev(const virDomainHo= stdevDef *hostdev, return -1; } break; + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV: return qemuDomainMdevDefValidate(hostdev, def, qemuCaps); + + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_CTL: case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST: default: virReportEnumRangeError(virDomainHostdevSubsysType, @@ -14031,6 +14034,8 @@ qemuDomainGetHostdevPath(virDomainHostdevDefPtr dev, =20 perm =3D VIR_CGROUP_DEVICE_RW; break; + + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_CTL: case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST: break; } diff --git a/src/qemu/qemu_hostdev.c b/src/qemu/qemu_hostdev.c index 1774850640..0e1432f23d 100644 --- a/src/qemu/qemu_hostdev.c +++ b/src/qemu/qemu_hostdev.c @@ -203,6 +203,7 @@ qemuHostdevPreparePCIDevicesCheckSupport(virDomainHostd= evDefPtr *hostdevs, return false; break; =20 + case VIR_DOMAIN_HOSTDEV_PCI_BACKEND_VMM: case VIR_DOMAIN_HOSTDEV_PCI_BACKEND_XEN: case VIR_DOMAIN_HOSTDEV_PCI_BACKEND_TYPE_LAST: break; diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index 9800491755..94fa64f216 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -1576,6 +1576,7 @@ qemuDomainAttachHostPCIDevice(virQEMUDriverPtr driver, case VIR_DOMAIN_HOSTDEV_PCI_BACKEND_KVM: break; =20 + case VIR_DOMAIN_HOSTDEV_PCI_BACKEND_VMM: case VIR_DOMAIN_HOSTDEV_PCI_BACKEND_XEN: case VIR_DOMAIN_HOSTDEV_PCI_BACKEND_TYPE_LAST: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, @@ -4535,6 +4536,7 @@ qemuDomainRemoveHostDevice(virQEMUDriverPtr driver, case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV: qemuDomainRemoveMediatedDevice(driver, vm, hostdev); break; + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_CTL: case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST: break; } diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index a307c5ebe2..93144b741f 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -1105,6 +1105,7 @@ qemuMigrationSrcIsAllowedHostdev(const virDomainDef *= def) continue; =20 case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI: + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_CTL: case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_HOST: case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV: virReportError(VIR_ERR_OPERATION_UNSUPPORTED, diff --git a/src/security/security_apparmor.c b/src/security/security_appar= mor.c index ca02631f7f..eadf2580b6 100644 --- a/src/security/security_apparmor.c +++ b/src/security/security_apparmor.c @@ -959,6 +959,7 @@ AppArmorSetSecurityHostdevLabel(virSecurityManagerPtr m= gr, break; } =20 + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_CTL: case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST: ret =3D 0; break; diff --git a/src/security/security_dac.c b/src/security/security_dac.c index d75b18170b..de85e53a9a 100644 --- a/src/security/security_dac.c +++ b/src/security/security_dac.c @@ -1212,6 +1212,7 @@ virSecurityDACSetHostdevLabel(virSecurityManagerPtr m= gr, virDomainHostdevSubsysUSBPtr usbsrc =3D &dev->source.subsys.u.usb; virDomainHostdevSubsysPCIPtr pcisrc =3D &dev->source.subsys.u.pci; virDomainHostdevSubsysSCSIPtr scsisrc =3D &dev->source.subsys.u.scsi; + virDomainHostdevSubsysSCSICTLPtr ctlsrc =3D &dev->source.subsys.u.scsi= _ctl; virDomainHostdevSubsysSCSIVHostPtr hostsrc =3D &dev->source.subsys.u.s= csi_host; virDomainHostdevSubsysMediatedDevPtr mdevsrc =3D &dev->source.subsys.u= .mdev; int ret =3D -1; @@ -1300,6 +1301,19 @@ virSecurityDACSetHostdevLabel(virSecurityManagerPtr = mgr, break; } =20 + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_CTL: { + char *ctldev =3D g_strdup_printf("/dev/cam/ctl%u.%u", + ctlsrc->pp, ctlsrc->vp); + + if (!ctldev) + return -1; + + ret =3D virSecurityDACSetHostdevLabelHelper(ctldev, true, &cbdata); + + VIR_FREE(ctldev); + break; + } + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_HOST: { virSCSIVHostDevicePtr host =3D virSCSIVHostDeviceNew(hostsrc->wwpn= ); =20 @@ -1386,6 +1400,7 @@ virSecurityDACRestoreHostdevLabel(virSecurityManagerP= tr mgr, virDomainHostdevSubsysUSBPtr usbsrc =3D &dev->source.subsys.u.usb; virDomainHostdevSubsysPCIPtr pcisrc =3D &dev->source.subsys.u.pci; virDomainHostdevSubsysSCSIPtr scsisrc =3D &dev->source.subsys.u.scsi; + virDomainHostdevSubsysSCSICTLPtr ctlsrc =3D &dev->source.subsys.u.scsi= _ctl; virDomainHostdevSubsysSCSIVHostPtr hostsrc =3D &dev->source.subsys.u.s= csi_host; virDomainHostdevSubsysMediatedDevPtr mdevsrc =3D &dev->source.subsys.u= .mdev; int ret =3D -1; @@ -1463,6 +1478,19 @@ virSecurityDACRestoreHostdevLabel(virSecurityManager= Ptr mgr, break; } =20 + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_CTL: { + char *ctldev =3D g_strdup_printf("/dev/cam/ctl%u.%u", + ctlsrc->pp, ctlsrc->vp); + + if (!ctldev) + return -1; + + ret =3D virSecurityDACRestoreFileLabel(mgr, ctldev); + + VIR_FREE(ctldev); + break; + } + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_HOST: { virSCSIVHostDevicePtr host =3D virSCSIVHostDeviceNew(hostsrc->wwpn= ); =20 diff --git a/src/security/security_selinux.c b/src/security/security_selinu= x.c index 3f6968a57a..96f483ee14 100644 --- a/src/security/security_selinux.c +++ b/src/security/security_selinux.c @@ -2149,6 +2149,10 @@ virSecuritySELinuxSetHostdevSubsysLabel(virSecurityM= anagerPtr mgr, break; } =20 + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_CTL: + /* FreeBSD only */ + return -1; + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_HOST: { virSCSIVHostDevicePtr host =3D virSCSIVHostDeviceNew(hostsrc->wwpn= ); =20 @@ -2384,6 +2388,10 @@ virSecuritySELinuxRestoreHostdevSubsysLabel(virSecur= ityManagerPtr mgr, break; } =20 + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_CTL: + /* FreeBSD only */ + return -1; + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_HOST: { virSCSIVHostDevicePtr host =3D virSCSIVHostDeviceNew(hostsrc->wwpn= ); =20 diff --git a/tests/bhyveargv2xmldata/bhyveargv2xml-passthru.args b/tests/bh= yveargv2xmldata/bhyveargv2xml-passthru.args new file mode 100644 index 0000000000..697bafd642 --- /dev/null +++ b/tests/bhyveargv2xmldata/bhyveargv2xml-passthru.args @@ -0,0 +1,8 @@ +/usr/sbin/bhyve \ +-c 1 \ +-m 214 \ +-H \ +-P \ +-S \ +-s 0:0,hostbridge \ +-s 0:1:0,passthru,5/0/7 bhyve diff --git a/tests/bhyveargv2xmldata/bhyveargv2xml-passthru.xml b/tests/bhy= veargv2xmldata/bhyveargv2xml-passthru.xml new file mode 100644 index 0000000000..af99279448 --- /dev/null +++ b/tests/bhyveargv2xmldata/bhyveargv2xml-passthru.xml @@ -0,0 +1,26 @@ + + bhyve + c7a5fdbd-edaf-9455-926a-d65c16db1809 + 219136 + 219136 + + + + 1 + + hvm + + + destroy + destroy + destroy + + + + +
+ +
+ + + diff --git a/tests/bhyveargv2xmldata/bhyveargv2xml-virtio-scsi.args b/tests= /bhyveargv2xmldata/bhyveargv2xml-virtio-scsi.args new file mode 100644 index 0000000000..ae38208853 --- /dev/null +++ b/tests/bhyveargv2xmldata/bhyveargv2xml-virtio-scsi.args @@ -0,0 +1,9 @@ +/usr/sbin/bhyve \ +-c 1 \ +-m 214 \ +-H \ +-P \ +-l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI_CODE-devel.fd \ +-s 0:0,hostbridge \ +-s 1:0,lpc \ +-s 2:0,virtio-scsi,/dev/cam/ctl5.0 bhyve diff --git a/tests/bhyveargv2xmldata/bhyveargv2xml-virtio-scsi.xml b/tests/= bhyveargv2xmldata/bhyveargv2xml-virtio-scsi.xml new file mode 100644 index 0000000000..23ad90a2a5 --- /dev/null +++ b/tests/bhyveargv2xmldata/bhyveargv2xml-virtio-scsi.xml @@ -0,0 +1,20 @@ + + bhyve + c7a5fdbd-edaf-9455-926a-d65c16db1809 + 219136 + 219136 + 1 + + hvm + + + destroy + destroy + destroy + + + +
+ + + diff --git a/tests/bhyveargv2xmltest.c b/tests/bhyveargv2xmltest.c index 735cc4b338..1cfe4e3ddb 100644 --- a/tests/bhyveargv2xmltest.c +++ b/tests/bhyveargv2xmltest.c @@ -173,6 +173,8 @@ mymain(void) DO_TEST("ahci-hd"); DO_TEST("virtio-blk"); DO_TEST("virtio-net"); + DO_TEST("virtio-scsi"); + DO_TEST("passthru"); DO_TEST("e1000"); DO_TEST_WARN("virtio-net2"); DO_TEST_WARN("virtio-net3"); diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-passthru.args b/tests/bh= yvexml2argvdata/bhyvexml2argv-passthru.args new file mode 100644 index 0000000000..c268da957c --- /dev/null +++ b/tests/bhyvexml2argvdata/bhyvexml2argv-passthru.args @@ -0,0 +1,11 @@ +/usr/sbin/bhyve \ +-c 1 \ +-m 214 \ +-S \ +-u \ +-H \ +-P \ +-s 0:0,hostbridge \ +-l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI_CODE-devel.fd \ +-s 0:3:0,passthru,5/0/7 \ +-s 1,lpc bhyve diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-passthru.ldargs b/tests/= bhyvexml2argvdata/bhyvexml2argv-passthru.ldargs new file mode 100644 index 0000000000..2995a4d0e7 --- /dev/null +++ b/tests/bhyvexml2argvdata/bhyvexml2argv-passthru.ldargs @@ -0,0 +1 @@ +dummy \ No newline at end of file diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-passthru.xml b/tests/bhy= vexml2argvdata/bhyvexml2argv-passthru.xml new file mode 100644 index 0000000000..ba0744f35d --- /dev/null +++ b/tests/bhyvexml2argvdata/bhyvexml2argv-passthru.xml @@ -0,0 +1,22 @@ + + bhyve + df3be7e7-a104-11e3-aeb0-50e5492bd3dc + 219136 + + + + 1 + + hvm + /usr/local/share/uefi-firmwar= e/BHYVE_UEFI_CODE-devel.fd + + + + + +
+ +
+ + + diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-virtio-scsi.args b/tests= /bhyvexml2argvdata/bhyvexml2argv-virtio-scsi.args new file mode 100644 index 0000000000..90b82cc02b --- /dev/null +++ b/tests/bhyvexml2argvdata/bhyvexml2argv-virtio-scsi.args @@ -0,0 +1,9 @@ +/usr/sbin/bhyve \ +-c 1 \ +-m 214 \ +-H \ +-P \ +-s 0:0,hostbridge \ +-l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI_CODE-devel.fd \ +-s 2:0,virtio-scsi,/dev/cam/ctl5.0 \ +-s 1,lpc bhyve diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-virtio-scsi.ldargs b/tes= ts/bhyvexml2argvdata/bhyvexml2argv-virtio-scsi.ldargs new file mode 100644 index 0000000000..421376db9e --- /dev/null +++ b/tests/bhyvexml2argvdata/bhyvexml2argv-virtio-scsi.ldargs @@ -0,0 +1 @@ +dummy diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-virtio-scsi.xml b/tests/= bhyvexml2argvdata/bhyvexml2argv-virtio-scsi.xml new file mode 100644 index 0000000000..394ff20ffc --- /dev/null +++ b/tests/bhyvexml2argvdata/bhyvexml2argv-virtio-scsi.xml @@ -0,0 +1,21 @@ + + bhyve + c7a5fdbd-edaf-9455-926a-d65c16db1809 + 219136 + 219136 + 1 + + hvm + /usr/local/share/uefi-firmwar= e/BHYVE_UEFI_CODE-devel.fd + + + destroy + destroy + destroy + + + +
+ + + diff --git a/tests/bhyvexml2argvtest.c b/tests/bhyvexml2argvtest.c index 9e7eb218b8..7ce2d5c6b1 100644 --- a/tests/bhyvexml2argvtest.c +++ b/tests/bhyvexml2argvtest.c @@ -175,7 +175,7 @@ mymain(void) driver.bhyvecaps =3D BHYVE_CAP_RTC_UTC | BHYVE_CAP_AHCI32SLOT | \ BHYVE_CAP_NET_E1000 | BHYVE_CAP_LPC_BOOTROM | \ BHYVE_CAP_FBUF | BHYVE_CAP_XHCI | \ - BHYVE_CAP_CPUTOPOLOGY; + BHYVE_CAP_CPUTOPOLOGY | BHYVE_CAP_VIRTIOSCSI; =20 DO_TEST("base"); DO_TEST("wired"); @@ -210,6 +210,8 @@ mymain(void) DO_TEST_FAILURE("cputopology-nvcpu-mismatch"); DO_TEST("commandline"); DO_TEST("msrs"); + DO_TEST("virtio-scsi"); + DO_TEST("passthru"); =20 /* Address allocation tests */ DO_TEST("addr-single-sata-disk"); diff --git a/tests/bhyvexml2xmloutdata/bhyvexml2xmlout-passthru.xml b/tests= /bhyvexml2xmloutdata/bhyvexml2xmlout-passthru.xml new file mode 100644 index 0000000000..0313fa0dfa --- /dev/null +++ b/tests/bhyvexml2xmloutdata/bhyvexml2xmlout-passthru.xml @@ -0,0 +1,29 @@ + + bhyve + df3be7e7-a104-11e3-aeb0-50e5492bd3dc + 219136 + 219136 + + + + 1 + + hvm + /usr/local/share/uefi-firmwar= e/BHYVE_UEFI_CODE-devel.fd + + + + destroy + restart + destroy + + + + + +
+ +
+ + + diff --git a/tests/bhyvexml2xmloutdata/bhyvexml2xmlout-virtio-scsi.xml b/te= sts/bhyvexml2xmloutdata/bhyvexml2xmlout-virtio-scsi.xml new file mode 100644 index 0000000000..771591689a --- /dev/null +++ b/tests/bhyvexml2xmloutdata/bhyvexml2xmlout-virtio-scsi.xml @@ -0,0 +1,23 @@ + + bhyve + c7a5fdbd-edaf-9455-926a-d65c16db1809 + 219136 + 219136 + 1 + + hvm + /usr/local/share/uefi-firmwar= e/BHYVE_UEFI_CODE-devel.fd + + + + destroy + destroy + destroy + + + + +
+ + + diff --git a/tests/bhyvexml2xmltest.c b/tests/bhyvexml2xmltest.c index a0c20a14c1..3a2a46014a 100644 --- a/tests/bhyvexml2xmltest.c +++ b/tests/bhyvexml2xmltest.c @@ -83,6 +83,7 @@ mymain(void) DO_TEST_DIFFERENT("acpiapic"); DO_TEST_DIFFERENT("base"); DO_TEST_DIFFERENT("wired"); + DO_TEST_DIFFERENT("passthru"); DO_TEST_DIFFERENT("bhyveload-bootorder"); DO_TEST_DIFFERENT("bhyveload-bootorder1"); DO_TEST_DIFFERENT("bhyveload-bootorder2"); @@ -94,6 +95,7 @@ mymain(void) DO_TEST_DIFFERENT("disk-cdrom"); DO_TEST_DIFFERENT("disk-cdrom-grub"); DO_TEST_DIFFERENT("disk-virtio"); + DO_TEST_DIFFERENT("virtio-scsi"); DO_TEST_DIFFERENT("grub-bootorder"); DO_TEST_DIFFERENT("grub-bootorder2"); DO_TEST_DIFFERENT("grub-defaults"); --=20 2.24.1 From nobody Wed May 1 17:59:55 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 205.139.110.120 as permitted sender) client-ip=205.139.110.120; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.120 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=none dis=none) header.from=ixsystems.com ARC-Seal: i=1; a=rsa-sha256; t=1582526860; cv=none; d=zohomail.com; s=zohoarc; b=ZME4bJio0bQYQCTXNjnvwBkvLz3Kt9415N7hbLHetDPTgG8Noloq2hKj8iSCUeRtVpBooNu0x89vyzf+mBAwjKba2qG2RUEs/seoSHbVBucoS14KPiEDOVMccgFH55HDtK9UIyuSUcwcT7u8n/O55ZQDLnmvDgZ63VYxLvX0A4Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1582526860; 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=cEOCd32GjTUW9ACBMe0Fx1yUdLk6ynecMXxiyo6qzCU=; b=XECNsPGAmwDYtGj0yZtAwZt1f/xRjWxvEneQ5WFSwq4om+kWzqRmc/H2w/qVoNwEnH7sSJcGMuyuYYRDs0pRI/K0hRLC6ECzx/F36xFv2pig9UPHCkkRNqUnk8h54/mdDj8yjVtTa0GDFDmnU+EWbxtdRceMjHFGpKGelQNxhUk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.120 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [205.139.110.120]) by mx.zohomail.com with SMTPS id 1582526860656953.5252842596785; Sun, 23 Feb 2020 22:47:40 -0800 (PST) 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-32-xbMUZvhkOr2gu8bgScppFA-1; Mon, 24 Feb 2020 01:47:37 -0500 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 6856D8018AB; Mon, 24 Feb 2020 06:47:32 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 3B59D5D9CD; Mon, 24 Feb 2020 06:47:32 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id DFEDD860F6; Mon, 24 Feb 2020 06:47:31 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 01O6kgDB025593 for ; Mon, 24 Feb 2020 01:46:42 -0500 Received: by smtp.corp.redhat.com (Postfix) id 2683ED19B6; Mon, 24 Feb 2020 06:46:42 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast04.extmail.prod.ext.rdu2.redhat.com [10.11.55.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 21C44D0B4D for ; Mon, 24 Feb 2020 06:46:41 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [207.211.31.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 7E3DD101A55A for ; Mon, 24 Feb 2020 06:46:41 +0000 (UTC) Received: from mail-yw1-f66.google.com (mail-yw1-f66.google.com [209.85.161.66]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-313-aK_LeNoXNCi5clPoMp-Q-Q-1; Mon, 24 Feb 2020 01:46:39 -0500 Received: by mail-yw1-f66.google.com with SMTP id 10so4779004ywv.5 for ; Sun, 23 Feb 2020 22:46:38 -0800 (PST) Received: from xeon-freebsd.freqlabs.com. (69-228-200-148.lightspeed.knvltn.sbcglobal.net. [69.228.200.148]) by smtp.gmail.com with ESMTPSA id j184sm4821447ywa.39.2020.02.23.22.46.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 23 Feb 2020 22:46:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1582526859; h=from:from:sender:sender: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:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=cEOCd32GjTUW9ACBMe0Fx1yUdLk6ynecMXxiyo6qzCU=; b=EjidCs7tt/BRwU5MPV2PVA/fx0jGTo858BneJ8ntvbHqPcENLL5nAE8ThQ2AcoqQP9cfHJ lUe4ydYZHoZ3OBuaoP+MJaIhvzIv6cV4MhRcsyDw4iHo4uMMznRBa767D69cXftRZJu++s qsFdOtRy5btmwl7bTWs9Mn3WMnQ2W6E= X-MC-Unique: xbMUZvhkOr2gu8bgScppFA-1 X-MC-Unique: aK_LeNoXNCi5clPoMp-Q-Q-1 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=AwFmPwo0LslEA8ENqP63M8N6/fQNn5xtZXlh+xOpSbo=; b=XLM2ytckH2s+TRplb3Bf/fH0pevPA06bUROF305cYggxMitlPyv1uMOic865Te3v20 eokf5W95bcbHGsLCDsOeX2g/iAYChkeSioI3s20V2DtI0L4gyQjY3git3kTFJGL/McHL GrPwn2Jd4b2y/sM1LfpoSN3owKLp08F3HzLb3MiMbKXnvSDTOkyCOOqBV3HNadRwZIjz PklKqTiQi3ns2PBpJzn4iEnGZvVWdZgZg7UJhJhVEi1wzLDpyj4uTMp14GY1h47319ne QqsUWJnB6k2dg9DynV0+RZ7ycRUPaPWbTRCzU0Xvjhz0LwaTrnG3o/f3hcwF1r4lWo1r 0AnA== X-Gm-Message-State: APjAAAXN2YGYLKbn8mVSFZ2E+cWr9Q8M/4p5ux1AXcgswvmlHp6Zwt0G Fi5BQagNkA6DQSwq8WUpBOshJoZT9Ef2DOCOcWabYzOFUjMADhBOooekfWWhLf8AFrkHVPj3JpA tiE+jJzsHjpulFXFNlIF6gWg0E3twu6SZswLpRcuLLyIqFqIN1Mn9MN1hbr+Zg/Y/3b0= X-Google-Smtp-Source: APXvYqwGts/2v3xb4IOOQxRAY90tQTbp3hjot6oc4rzQFHUduFZ+2oHk2LGNh6xYtJ2DnHox8csUUg== X-Received: by 2002:a81:6055:: with SMTP id u82mr41880058ywb.35.1582526798282; Sun, 23 Feb 2020 22:46:38 -0800 (PST) From: Ryan Moeller X-Google-Original-From: Ryan Moeller To: libvir-list@redhat.com Subject: [PATCH v1 11/12] bhyve: command: enable booting from hostdevs Date: Mon, 24 Feb 2020 01:46:23 -0500 Message-Id: <20200224064624.66649-12-ryan@iXsystems.com> In-Reply-To: <20200224064624.66649-1-ryan@iXsystems.com> References: <20200224064624.66649-1-ryan@iXsystems.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 01O6kgDB025593 X-loop: libvir-list@redhat.com Cc: Ryan Moeller X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" It is possible to boot from virtio-scsi with UEFI-devel, for example. Signed-off-by: Ryan Moeller --- src/bhyve/bhyve_command.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/bhyve/bhyve_command.c b/src/bhyve/bhyve_command.c index 9f4030f6a3..048c26733a 100644 --- a/src/bhyve/bhyve_command.c +++ b/src/bhyve/bhyve_command.c @@ -993,11 +993,8 @@ virBhyveGetBootDisk(virDomainDefPtr def) virDomainDiskDefPtr match =3D NULL; int boot_dev =3D -1; =20 - if (def->ndisks < 1) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("Domain should have at least one disk defined")); + if (def->ndisks =3D=3D 0) return NULL; - } =20 if (def->os.nBootDevs > 1) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", --=20 2.24.1 From nobody Wed May 1 17:59:55 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) client-ip=205.139.110.61; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=none dis=none) header.from=ixsystems.com ARC-Seal: i=1; a=rsa-sha256; t=1582526852; cv=none; d=zohomail.com; s=zohoarc; b=VSmYkqlcLxB8bTpvDqi5+jQnImRsMS8RwWBgS7e0roRfOnJL0pV9UkYOpWdcBD6BfAO3//4nHrw7i2wzv9DdVGwD0humGYxzSiAQraLbuVtXO7scAvarwubVs5x863SIGGxZeIC0QbuoGyXyZ3KPASZcbxbCpmVYHvomGboxLDc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1582526852; 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=IlZJmqHWvBLRotVXu8AmFOdiaTRsrrJeq3sqvimYm4s=; b=njdjyGt/25lwtTDdHMQZ/kqF9n/YsHXzOKfTEPLqawbHiGvcrFDlXxdNv8JvGdvykHM7NJUJ9b7rp3O+0SSbg9cIK3KQA5AT9ZkBRdiCGosNZ+c82wy53obKLAadoqTAAHJP3bvFJCkFtdpGGadpbV2Gx86UsRmInP+bfgwqsvU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from us-smtp-delivery-1.mimecast.com (us-smtp-1.mimecast.com [205.139.110.61]) by mx.zohomail.com with SMTPS id 1582526852533790.2665156342617; Sun, 23 Feb 2020 22:47:32 -0800 (PST) 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-212-2LXywDIjOYS4Tdb54aHnTw-1; Mon, 24 Feb 2020 01:47:29 -0500 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 5B1D010CE788; Mon, 24 Feb 2020 06:47:22 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 3192C5C10D; Mon, 24 Feb 2020 06:47:22 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id D926118089D8; Mon, 24 Feb 2020 06:47:21 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 01O6kghR025589 for ; Mon, 24 Feb 2020 01:46:42 -0500 Received: by smtp.corp.redhat.com (Postfix) id E4E422028CD2; Mon, 24 Feb 2020 06:46:41 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast06.extmail.prod.ext.rdu2.redhat.com [10.11.55.22]) by smtp.corp.redhat.com (Postfix) with ESMTPS id DF7972026D68 for ; Mon, 24 Feb 2020 06:46:41 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-2.mimecast.com [207.211.31.81]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id C35C2185A78E for ; Mon, 24 Feb 2020 06:46:41 +0000 (UTC) Received: from mail-yb1-f170.google.com (mail-yb1-f170.google.com [209.85.219.170]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-463-9B7k7sLGP4GmBI9JbLTdIQ-1; Mon, 24 Feb 2020 01:46:39 -0500 Received: by mail-yb1-f170.google.com with SMTP id n131so4158660ybg.13 for ; Sun, 23 Feb 2020 22:46:39 -0800 (PST) Received: from xeon-freebsd.freqlabs.com. (69-228-200-148.lightspeed.knvltn.sbcglobal.net. [69.228.200.148]) by smtp.gmail.com with ESMTPSA id j184sm4821447ywa.39.2020.02.23.22.46.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 23 Feb 2020 22:46:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1582526851; h=from:from:sender:sender: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:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=IlZJmqHWvBLRotVXu8AmFOdiaTRsrrJeq3sqvimYm4s=; b=BpFZxzmwEEwiETXCjb2nOCKlXtCBMLCcW8OT6cAqhXVP1znmwomMV0gP2PYv1L0AXaDtQk TVXU2fBMLE6BXBFrMWEwjnvVrGvs+L0zIm/HU+u0zA0garOjI7roQJswRfKHTAfew7sBKf cVjLnLM7qFpzLvfyHGyeYdww7/js8sU= X-MC-Unique: 2LXywDIjOYS4Tdb54aHnTw-1 X-MC-Unique: 9B7k7sLGP4GmBI9JbLTdIQ-1 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=WXdMUZEE4F8VjPUbwE7iSWjwBrJMAHwANrzcAhSYbz4=; b=TalQrcnWHh6KuV8xgK6cuWhbvZKCiOBPnzJ/McSXoiTizNuXi+iHanUZzaMOcBzo88 q+aKmgdVjf9GRoQclPUuy+WpD7ZTbsUxvtVnJtZrzpnScnr7YYBveuuWhF+8vzoPZv9U XDnmqXqxjnuDvZGJwjnDOYxOb1pYRp7hmfqancHaALfT0+SPgsSmZoqEv1CYbmfTlL2Y YEF5eJFHYNfpg6JuZd44KxiAfCKNb72UdTtXw9IO6Uy2uZyAC3cwmGk4OPvS7etLt7N6 laVHVUWjTmHYiY82lIqxUpWoh6K/tOoRjN1UneCi8NdOgdV5J82Q0CzaUl0k2WGAzBZt niHQ== X-Gm-Message-State: APjAAAWsIWt5xjaVYzSGJKkTVa2vEEsVmLhGTolRpdhOZzYiT66o8laA DFyE8lrI59eNeRo1LMgYs6WTUgE2CmKQAUMALPBrOJut9vtNupceJScsc3Q7im+4CjNES9gp54I 5Lwtc7GkC7RcCLx6kmWRq6sBfIjBKG+NMYo4muKhgDLVPho6VXgHuwrFamDtOFdC2/cc= X-Google-Smtp-Source: APXvYqwWg+O2G/+TJfxyq2gwk4ZsiQnvuikKAmneFtDqogl5lFzsJLkSdYmiZyjxNahXu+Tk3OkrFw== X-Received: by 2002:a5b:d09:: with SMTP id y9mr20807057ybp.188.1582526798776; Sun, 23 Feb 2020 22:46:38 -0800 (PST) From: Ryan Moeller X-Google-Original-From: Ryan Moeller To: libvir-list@redhat.com Subject: [PATCH v1 12/12] Allow PCI functions up to 255 for PCI ARI Date: Mon, 24 Feb 2020 01:46:24 -0500 Message-Id: <20200224064624.66649-13-ryan@iXsystems.com> In-Reply-To: <20200224064624.66649-1-ryan@iXsystems.com> References: <20200224064624.66649-1-ryan@iXsystems.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 01O6kghR025589 X-loop: libvir-list@redhat.com Cc: Ryan Moeller X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" PCI Alternative Routing-ID Interpretation (ARI) capable devices use an implied Device Number of 0 and repurpose those bits to allow for 256 Function Numbers instead of 8. An example of such a device is the Chelsio T580-LP-CR, which uses the additional function numbers to provide Virtual Function (VF) features. Below is an excerpt from the `pciconf -lvc` output for this device when a few VFs are configured: ppt7@pci0:5:0:21: class=3D0x020000 card=3D0x00001425 chip=3D0x5810142= 5 rev=3D0x00 hdr=3D0x00 vendor =3D 'Chelsio Communications Inc' device =3D 'T580-LP-CR Unified Wire Ethernet Controller [VF]' class =3D network subclass =3D ethernet cap 10[70] =3D PCI-Express 2 endpoint max data 256(2048) FLR NS link x0(x8) speed 0.0(8.0) ASPM disabled(L0s/L1) cap 11[b0] =3D MSI-X supports 8 messages Table in map 0x20[0x0], PBA in map 0x20[0x8000] cap 05[50] =3D MSI supports 32 messages, 64 bit, vector masks ecap 0001[100] =3D AER 2 0 fatal 0 non-fatal 0 corrected ecap 000e[140] =3D ARI 1 ecap 0017[150] =3D TPH Requester 1 Of note: the Bus/Device/Function 5/0/21 and the ARI ecap. Attempting to pass this through to a VM as a PCI device produces a validation error due to the function number being out of range. To enable use of devices that use ARI, relax the schema and validity check for PCI addresses to permit function numbers up to 255. Update a few tests to give coverage. Ref: https://pcisig.com/sites/default/files/specification_documents/ECN-alt= -rid-interpretation-070604.pdf Signed-off-by: Ryan Moeller --- docs/schemas/basictypes.rng | 10 +--------- src/util/virpci.c | 4 ++-- tests/bhyveargv2xmldata/bhyveargv2xml-passthru.args | 2 +- tests/bhyveargv2xmldata/bhyveargv2xml-passthru.xml | 2 +- tests/bhyvexml2argvdata/bhyvexml2argv-passthru.args | 2 +- tests/bhyvexml2argvdata/bhyvexml2argv-passthru.xml | 2 +- tests/bhyvexml2xmloutdata/bhyvexml2xmlout-passthru.xml | 2 +- tests/qemuxml2argvdata/pci-function-invalid.xml | 2 +- 8 files changed, 9 insertions(+), 17 deletions(-) diff --git a/docs/schemas/basictypes.rng b/docs/schemas/basictypes.rng index 81465273c8..03ce3f3be3 100644 --- a/docs/schemas/basictypes.rng +++ b/docs/schemas/basictypes.rng @@ -341,15 +341,7 @@ - - - (0x)?[0-7] - - - 0 - 7 - - + =20 diff --git a/src/util/virpci.c b/src/util/virpci.c index 0b1222373e..d60cf5eff7 100644 --- a/src/util/virpci.c +++ b/src/util/virpci.c @@ -1302,11 +1302,11 @@ virPCIDeviceAddressIsValid(virPCIDeviceAddressPtr a= ddr, addr->slot); return false; } - if (addr->function > 7) { + if (addr->function > 255) { if (report) virReportError(VIR_ERR_XML_ERROR, _("Invalid PCI address function=3D0x%x, " - "must be <=3D 7"), + "must be <=3D 255"), addr->function); return false; } diff --git a/tests/bhyveargv2xmldata/bhyveargv2xml-passthru.args b/tests/bh= yveargv2xmldata/bhyveargv2xml-passthru.args index 697bafd642..726dade59e 100644 --- a/tests/bhyveargv2xmldata/bhyveargv2xml-passthru.args +++ b/tests/bhyveargv2xmldata/bhyveargv2xml-passthru.args @@ -5,4 +5,4 @@ -P \ -S \ -s 0:0,hostbridge \ --s 0:1:0,passthru,5/0/7 bhyve +-s 0:1:0,passthru,5/0/9 bhyve diff --git a/tests/bhyveargv2xmldata/bhyveargv2xml-passthru.xml b/tests/bhy= veargv2xmldata/bhyveargv2xml-passthru.xml index af99279448..a8d7a574af 100644 --- a/tests/bhyveargv2xmldata/bhyveargv2xml-passthru.xml +++ b/tests/bhyveargv2xmldata/bhyveargv2xml-passthru.xml @@ -18,7 +18,7 @@ -
+
diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-passthru.args b/tests/bh= yvexml2argvdata/bhyvexml2argv-passthru.args index c268da957c..afa99344af 100644 --- a/tests/bhyvexml2argvdata/bhyvexml2argv-passthru.args +++ b/tests/bhyvexml2argvdata/bhyvexml2argv-passthru.args @@ -7,5 +7,5 @@ -P \ -s 0:0,hostbridge \ -l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI_CODE-devel.fd \ --s 0:3:0,passthru,5/0/7 \ +-s 0:3:0,passthru,5/0/9 \ -s 1,lpc bhyve diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-passthru.xml b/tests/bhy= vexml2argvdata/bhyvexml2argv-passthru.xml index ba0744f35d..e8b3a4064f 100644 --- a/tests/bhyvexml2argvdata/bhyvexml2argv-passthru.xml +++ b/tests/bhyvexml2argvdata/bhyvexml2argv-passthru.xml @@ -14,7 +14,7 @@ -
+
diff --git a/tests/bhyvexml2xmloutdata/bhyvexml2xmlout-passthru.xml b/tests= /bhyvexml2xmloutdata/bhyvexml2xmlout-passthru.xml index 0313fa0dfa..7f96831df9 100644 --- a/tests/bhyvexml2xmloutdata/bhyvexml2xmlout-passthru.xml +++ b/tests/bhyvexml2xmloutdata/bhyvexml2xmlout-passthru.xml @@ -21,7 +21,7 @@ -
+
diff --git a/tests/qemuxml2argvdata/pci-function-invalid.xml b/tests/qemuxm= l2argvdata/pci-function-invalid.xml index 5642809ec0..eced7b3fa6 100644 --- a/tests/qemuxml2argvdata/pci-function-invalid.xml +++ b/tests/qemuxml2argvdata/pci-function-invalid.xml @@ -26,7 +26,7 @@ -
+
--=20 2.24.1