From nobody Fri May 17 11:58:41 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1597339897; cv=none; d=zohomail.com; s=zohoarc; b=lhbBW2ophrzEWwgqWL2bRH8wCPCpqKrsczyB76dM3WAB1tWXa638c0tHbktR53u3c8byMgTqJUN4y8HHQdMf6R4O45cSdoxzsCbcmGN45OpR/mQmsiQPK+q/RX9UzN9WSrOMDfwiahapJRVqvYzXjcGpEQyKMlAedaNMgFzDTfY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1597339897; 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=l/VJPphHnQHYJp/z6UTov2I8UdZlGH9f7YiYXgJetp0=; b=HL4BXn+tiEB3bLfvK3o3EpeDVLbHjVerNqYe+vRlmLl2WOLOUIKwZOAk460FCG2Tv31BFpOhMbpjbsq8m7Zs8dMxqQ0L7vUSOPfPvhV2Vz5XjzUfMe9rRtO3y9LoYKqnIjCNnGO4Af2USYRvAKxG8tog6RntBXnabL3bk2FutJ4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1597339897335875.7400782670235; Thu, 13 Aug 2020 10:31:37 -0700 (PDT) Received: from localhost ([::1]:34860 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k6H4h-0006B9-VL for importer@patchew.org; Thu, 13 Aug 2020 13:31:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41508) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k6H3L-0004Ye-EG for qemu-devel@nongnu.org; Thu, 13 Aug 2020 13:30:12 -0400 Received: from us-smtp-delivery-1.mimecast.com ([207.211.31.120]:41365 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1k6H3J-0008Di-7V for qemu-devel@nongnu.org; Thu, 13 Aug 2020 13:30:11 -0400 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-577-nQ1u_QcqObef819iJ4RbOg-1; Thu, 13 Aug 2020 13:30:06 -0400 Received: by mail-wm1-f70.google.com with SMTP id p23so2199540wmc.2 for ; Thu, 13 Aug 2020 10:30:06 -0700 (PDT) Received: from localhost.localdomain (121.red-81-40-121.staticip.rima-tde.net. [81.40.121.121]) by smtp.gmail.com with ESMTPSA id y203sm10942200wmc.29.2020.08.13.10.30.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 13 Aug 2020 10:30:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1597339808; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=l/VJPphHnQHYJp/z6UTov2I8UdZlGH9f7YiYXgJetp0=; b=e3eNAq4ojqcf25QDhuKnHZxNaIXRz5F2KIVHSi7XthG6N3+5fDSohBa44S8QwXVJOtmAii CDin5EiEfCfXca64KKVqucCKG7K47gFLIHmiUEAKggZXgEwekj07FAaBhIesawUj6ypNaS VyxrEv6rRqbrG5QNEdgK0YQi+3b27pg= X-MC-Unique: nQ1u_QcqObef819iJ4RbOg-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=l/VJPphHnQHYJp/z6UTov2I8UdZlGH9f7YiYXgJetp0=; b=IgtGyzvfBbYiGQln21ZEltigoKVIva16Xw71PrgOA96M+pypSiJGnMhU8O/nHWAMT+ mmWloJzG3rRRnyw+S0i9UmrkZIg7vSvXopIpRxUZbNtPhVTiCe0zZiG2k15mmptWOcHg t0uAJLsHIDO3AMrZBrCt2RueOpjdK/9vGy52d5OEGFBtE1qFndLeLvwzFHB4dH+4S8z7 hVGT4vdlerZ0ubGZvPUQf5htM4A7cHwn6ySBjbEo5VFfbRWYVdU89DwStxdqqYGV25q8 sEMzuZ2P13f0BnBQmES5j+w2//qdpUxcixeAoaTgRfW2KsaFpwoF34mMCcsXX7TKTdnL jAOQ== X-Gm-Message-State: AOAM533yVtpa2mpow8CIG7Geecwruxrt6yuyPUFJTPgIxweRqheuQrYV qRh2f0qper1DGnsBPbtb64t4afZ0YWYAI9IwfL2dkXii4fLxN0JFOcj+oNG45jlBMAO8zbiHn5Y +aOwTRnrDBxgzfJE= X-Received: by 2002:adf:f149:: with SMTP id y9mr4810315wro.93.1597339805142; Thu, 13 Aug 2020 10:30:05 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzDhJ8cJE3spRIsKV9BGMYioDZnVKomx4W+9h6RJ0tQjlffE9QJDV1c3yAn6ucP3k/b0FVc0w== X-Received: by 2002:adf:f149:: with SMTP id y9mr4810295wro.93.1597339804953; Thu, 13 Aug 2020 10:30:04 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [RFC PATCH v2 1/7] util/vfio-helpers: Store eventfd using int32_t type Date: Thu, 13 Aug 2020 19:29:51 +0200 Message-Id: <20200813172957.8289-2-philmd@redhat.com> X-Mailer: git-send-email 2.21.3 In-Reply-To: <20200813172957.8289-1-philmd@redhat.com> References: <20200813172957.8289-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0.003 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8"; text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=207.211.31.120; envelope-from=philmd@redhat.com; helo=us-smtp-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/08/13 03:45:42 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Fam Zheng , qemu-block@nongnu.org, Max Reitz , Alex Williamson , Stefan Hajnoczi , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Per the documentation in linux-headers/linux/vfio.h: VFIO_DEVICE_SET_IRQS * DATA_EVENTFD binds the specified ACTION to the provided __s32 eventfd. Replace the 'int' by an 'int32_t' to match the documentation. Fixes: 418026ca43 ("util: Introduce vfio helpers") Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- util/vfio-helpers.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/util/vfio-helpers.c b/util/vfio-helpers.c index e399e330e2..9cb9b553a5 100644 --- a/util/vfio-helpers.c +++ b/util/vfio-helpers.c @@ -193,7 +193,7 @@ int qemu_vfio_pci_init_irq(QEMUVFIOState *s, EventNotif= ier *e, return -EINVAL; } =20 - irq_set_size =3D sizeof(*irq_set) + sizeof(int); + irq_set_size =3D sizeof(*irq_set) + sizeof(int32_t); irq_set =3D g_malloc0(irq_set_size); =20 /* Get to a known IRQ state */ @@ -205,7 +205,7 @@ int qemu_vfio_pci_init_irq(QEMUVFIOState *s, EventNotif= ier *e, .count =3D 1, }; =20 - *(int *)&irq_set->data =3D event_notifier_get_fd(e); + *(int32_t *)&irq_set->data =3D event_notifier_get_fd(e); r =3D ioctl(s->device, VFIO_DEVICE_SET_IRQS, irq_set); g_free(irq_set); if (r) { --=20 2.21.3 From nobody Fri May 17 11:58:41 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1597340010; cv=none; d=zohomail.com; s=zohoarc; b=gxFbhGORy4CirXLlnn0yMoqIsjkHQU7McB6drn4saWafYmwXsL4JigsfRub0EyGih4UFUyJ6neU9LkjfQ1N9XeXL3IpyyakwAjXyUQowd31pXOtp9YXCHm0ucpAfckuZm/SuEPGIzvQHMu16EvXQaI0DB2Ydi6EbLWf3e2Aav88= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1597340010; 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=sI7ab5g3rJC9GYuQRXIwek5C1g0rNSicmRi+VygEKww=; b=KKA0+scqp8KxreWTmfMSzzdyAKTQ+GQ4txJpsinxiHFTjF033/gtXMQrWshNKZtWiKJXIyf8gzFgqoM0StQz58GNY5uiOU1jT9Ukv6W+fv3sQfo+KyjBM946INCHCzbvlGrZC/2fc0fOMvGHIC2tkVFqpbawWryXKL81gtBuKA4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1597340010296815.5430913032318; Thu, 13 Aug 2020 10:33:30 -0700 (PDT) Received: from localhost ([::1]:41796 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k6H6W-0000Zg-R7 for importer@patchew.org; Thu, 13 Aug 2020 13:33:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41558) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k6H3R-0004bl-3x for qemu-devel@nongnu.org; Thu, 13 Aug 2020 13:30:17 -0400 Received: from us-smtp-1.mimecast.com ([205.139.110.61]:35711 helo=us-smtp-delivery-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1k6H3P-0008FN-8G for qemu-devel@nongnu.org; Thu, 13 Aug 2020 13:30:16 -0400 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-52-QWquybvlMoKOIRINhYg53w-1; Thu, 13 Aug 2020 13:30:12 -0400 Received: by mail-wr1-f71.google.com with SMTP id d6so2342017wrv.23 for ; Thu, 13 Aug 2020 10:30:12 -0700 (PDT) Received: from localhost.localdomain (121.red-81-40-121.staticip.rima-tde.net. [81.40.121.121]) by smtp.gmail.com with ESMTPSA id k10sm11318261wrm.74.2020.08.13.10.30.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 13 Aug 2020 10:30:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1597339814; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=sI7ab5g3rJC9GYuQRXIwek5C1g0rNSicmRi+VygEKww=; b=OWO9kkBVPk5uA4iQfM6flTPs/1IxLFGgX7v3az7FBLDCXu8qjkhGWQoTJgohCEKbXvn1j+ bF2czVCRuWaFe2IOfAabgJWgK4VmnK2jtI62NLyatNvHlDxsuAbCO8dCukprRlN6nnMI8j LPFQ/WE5pxpSnRZOtKStze0IpJeG20g= X-MC-Unique: QWquybvlMoKOIRINhYg53w-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=sI7ab5g3rJC9GYuQRXIwek5C1g0rNSicmRi+VygEKww=; b=TqXVJUIBs4ImlKZbLCsfoopYw4dyUJooHNOzE+N9dDblfNdCHeT0QG9djnPpTmyftF auUqBJhbKxBaRVe5XA62vM1qOsGlCxaV03to6mgURZVnZotysN1xsfbsZ3RBmWuzsFsu jdUZkrGj/thwhRmaniahg1omidXechcvqqtgn1g7MFMIZN88w4LV/Rr2HCD3W3LSGuTK RK5otiQNQzRArjGSKgEtNZLKI4Xuyv+HObiY3LuLxOsncSeNqwjI6cYmFC1Pjq2bCWFC /q8rIJb/pBYDh7oGVMSjenXGGREoQlZa/Mk0AqszwZ11TjLqPBjIzHraOzTXaxlyxc50 hFXA== X-Gm-Message-State: AOAM532G8w4IlTZCAdh8g33zOqdBpBx+ZZt76satt8wauFZ21OR+gsaR m/6hIrRmxtQPBS/9j6Oz41u+TobE4OW6+HZz+tw7KHl1G267wif2nPhdyeqrAmmphkV2fGCo1WS 2a7rJIWu+Jz6kC90= X-Received: by 2002:adf:ca06:: with SMTP id o6mr4819417wrh.181.1597339810290; Thu, 13 Aug 2020 10:30:10 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxK+gD6chJcre2IlUAn0DzSSTrVfi3cxVrghoPQWMUDqcFh7gRULPhuJXMWI7kC99R75nKEWA== X-Received: by 2002:adf:ca06:: with SMTP id o6mr4819390wrh.181.1597339809981; Thu, 13 Aug 2020 10:30:09 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [RFC PATCH v2 2/7] util/vfio-helpers: Move IRQ 'type' from pci_init_irq() to open_pci() Date: Thu, 13 Aug 2020 19:29:52 +0200 Message-Id: <20200813172957.8289-3-philmd@redhat.com> X-Mailer: git-send-email 2.21.3 In-Reply-To: <20200813172957.8289-1-philmd@redhat.com> References: <20200813172957.8289-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0.003 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8"; text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=205.139.110.61; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/08/13 12:29:49 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -40 X-Spam_score: -4.1 X-Spam_bar: ---- X-Spam_report: (-4.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Fam Zheng , qemu-block@nongnu.org, Max Reitz , Alex Williamson , Stefan Hajnoczi , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Once opened, we will used the same IRQ type for all our event notifiers, so pass the argument when we open the PCI device, store the IRQ type in the driver state, and directly use the value saved in the state each time we call qemu_vfio_pci_init_irq. Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- include/qemu/vfio-helpers.h | 5 +++-- block/nvme.c | 6 +++--- util/vfio-helpers.c | 13 +++++++++---- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/include/qemu/vfio-helpers.h b/include/qemu/vfio-helpers.h index 1f057c2b9e..728f40922b 100644 --- a/include/qemu/vfio-helpers.h +++ b/include/qemu/vfio-helpers.h @@ -15,7 +15,8 @@ =20 typedef struct QEMUVFIOState QEMUVFIOState; =20 -QEMUVFIOState *qemu_vfio_open_pci(const char *device, Error **errp); +QEMUVFIOState *qemu_vfio_open_pci(const char *device, int irq_type, + Error **errp); void qemu_vfio_close(QEMUVFIOState *s); int qemu_vfio_dma_map(QEMUVFIOState *s, void *host, size_t size, bool temporary, uint64_t *iova_list); @@ -27,6 +28,6 @@ void *qemu_vfio_pci_map_bar(QEMUVFIOState *s, int index, void qemu_vfio_pci_unmap_bar(QEMUVFIOState *s, int index, void *bar, uint64_t offset, uint64_t size); int qemu_vfio_pci_init_irq(QEMUVFIOState *s, EventNotifier *e, - int irq_type, Error **errp); + Error **errp); =20 #endif diff --git a/block/nvme.c b/block/nvme.c index a61e86a83e..21b0770c02 100644 --- a/block/nvme.c +++ b/block/nvme.c @@ -711,7 +711,8 @@ static int nvme_init(BlockDriverState *bs, const char *= device, int namespace, return ret; } =20 - s->vfio =3D qemu_vfio_open_pci(device, errp); + s->vfio =3D qemu_vfio_open_pci(device, VFIO_PCI_MSIX_IRQ_INDEX, + errp); if (!s->vfio) { ret =3D -EINVAL; goto out; @@ -784,8 +785,7 @@ static int nvme_init(BlockDriverState *bs, const char *= device, int namespace, } } =20 - ret =3D qemu_vfio_pci_init_irq(s->vfio, &s->irq_notifier, - VFIO_PCI_MSIX_IRQ_INDEX, errp); + ret =3D qemu_vfio_pci_init_irq(s->vfio, &s->irq_notifier, errp); if (ret) { goto out; } diff --git a/util/vfio-helpers.c b/util/vfio-helpers.c index 9cb9b553a5..f1196e43dc 100644 --- a/util/vfio-helpers.c +++ b/util/vfio-helpers.c @@ -43,6 +43,8 @@ typedef struct { struct QEMUVFIOState { QemuMutex lock; =20 + int irq_type; /* vfio index */ + /* These fields are protected by BQL */ int container; int group; @@ -176,14 +178,14 @@ void qemu_vfio_pci_unmap_bar(QEMUVFIOState *s, int in= dex, void *bar, * Initialize device IRQ with @irq_type and and register an event notifier. */ int qemu_vfio_pci_init_irq(QEMUVFIOState *s, EventNotifier *e, - int irq_type, Error **errp) + Error **errp) { int r; struct vfio_irq_set *irq_set; size_t irq_set_size; struct vfio_irq_info irq_info =3D { .argsz =3D sizeof(irq_info) }; =20 - irq_info.index =3D irq_type; + irq_info.index =3D s->irq_type; if (ioctl(s->device, VFIO_DEVICE_GET_IRQ_INFO, &irq_info)) { error_setg_errno(errp, errno, "Failed to get device interrupt info= "); return -errno; @@ -237,6 +239,7 @@ static int qemu_vfio_pci_write_config(QEMUVFIOState *s,= void *buf, int size, int } =20 static int qemu_vfio_init_pci(QEMUVFIOState *s, const char *device, + int irq_type, Error **errp) { int ret; @@ -331,6 +334,7 @@ static int qemu_vfio_init_pci(QEMUVFIOState *s, const c= har *device, ret =3D -errno; goto fail; } + s->irq_type =3D irq_type; =20 if (device_info.num_regions < VFIO_PCI_CONFIG_REGION_INDEX) { error_setg(errp, "Invalid device regions"); @@ -423,12 +427,13 @@ static void qemu_vfio_open_common(QEMUVFIOState *s) /** * Open a PCI device, e.g. "0000:00:01.0". */ -QEMUVFIOState *qemu_vfio_open_pci(const char *device, Error **errp) +QEMUVFIOState *qemu_vfio_open_pci(const char *device, int irq_type, + Error **errp) { int r; QEMUVFIOState *s =3D g_new0(QEMUVFIOState, 1); =20 - r =3D qemu_vfio_init_pci(s, device, errp); + r =3D qemu_vfio_init_pci(s, device, irq_type, errp); if (r) { g_free(s); return NULL; --=20 2.21.3 From nobody Fri May 17 11:58:41 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1597339904; cv=none; d=zohomail.com; s=zohoarc; b=N9DaKnquzAqePJa9Jd9/f1jBgAjttSj4uDChC+ist2kgFYSblY/J41eSfaAmRSI+NTRpFVigIG+UgaYO4Vmv9gA3Dj83jA1vTRsG2KKZ2ZopwS65Nitksxq+oHNEpiwlt4I8XjnJnDIZeNP4CiLUiuQTuOPzQhTB0JglArk75IQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1597339904; 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=QUQtzXWUYaZwQCgRqhMZsB0lE4hy5wnmQGZtxNrd8GU=; b=Jhpanz3dGnGW3WIevuJPHS+cuDVFPytHr00I/p1n9WFQMrkC7L3Q++ZOqefapAwsO0ZWoT6/VUAdgZ1BgHgl0vV8o1wjA/UUnOJyYETn8W2pjEgOLGrQ5PQdJek4NMCvk1lh8nITC1jPohhj+jBtLoi79JLyXt6pdFidzpXQda8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1597339903948798.0641584832578; Thu, 13 Aug 2020 10:31:43 -0700 (PDT) Received: from localhost ([::1]:35222 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k6H4o-0006Kc-BZ for importer@patchew.org; Thu, 13 Aug 2020 13:31:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41582) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k6H3U-0004if-AP for qemu-devel@nongnu.org; Thu, 13 Aug 2020 13:30:20 -0400 Received: from us-smtp-delivery-1.mimecast.com ([207.211.31.120]:25500 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1k6H3S-0008HH-GX for qemu-devel@nongnu.org; Thu, 13 Aug 2020 13:30:19 -0400 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-257-q2LFV36KNHCHcKquax0A-g-1; Thu, 13 Aug 2020 13:30:16 -0400 Received: by mail-wm1-f72.google.com with SMTP id v8so2193182wma.6 for ; Thu, 13 Aug 2020 10:30:16 -0700 (PDT) Received: from localhost.localdomain (121.red-81-40-121.staticip.rima-tde.net. [81.40.121.121]) by smtp.gmail.com with ESMTPSA id c4sm10959456wrt.41.2020.08.13.10.30.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 13 Aug 2020 10:30:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1597339817; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=QUQtzXWUYaZwQCgRqhMZsB0lE4hy5wnmQGZtxNrd8GU=; b=JlAswOgJqN0i9IDrQwB6/LfX2TqE3WQHDZFlBMtoxGrtjTBbfUrgg8glOWXfBCqBT9uFuE Zb+xVQ2IOmd80VfuGBwl7CZZh6vRrJJNOhxQbKnuMQjf+PV+2DUJs3JJ07xhVbQOUdKcIa hbojO1lKH2NSeXnj3gbdXYeNJNhHnqQ= X-MC-Unique: q2LFV36KNHCHcKquax0A-g-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=QUQtzXWUYaZwQCgRqhMZsB0lE4hy5wnmQGZtxNrd8GU=; b=q0QLBwzxnn/IX3Y5AnEIqXH2kgwyZFZEEtG7JDMYR7oYfPFGzPZnFCSubLRo6npSrI VCCdZkUK7PHNPdhSAs5xt8XALGQ8/GlWPKl7x2Wut4Ia2dMgbhxXDSp4iSwPzOabkqWq AzlUsaBuUydI1nou8adFwUSzE1zZRG02/Y7OWxdLU1IOAxSY5ksyhgH2+8X5lHfLxgsx SBfjh/iYfQlhRIw5QPmWu5cmgOa5t7rPsBOXQH4CMbZR8K8PU2BihIaCRCwP+2s+/uUJ Q9Ab1TWza8naZ0+IOzOcw8JhbvjPYXWC5rxFgi4q2cLusJgBqDkRqHd0Ad2jzpX9DNBX Xqmw== X-Gm-Message-State: AOAM530SbfigJWJa1NaAnbjgd9gqApjZTZClhimHTjt4wa3FWfFvtclG ZW+gqNF6HrEjDjDLmIoJ3xqKCgfMiQBGwrScnHTPlrpuakfN+b+DfbOjSgvwTJ9sTXozBWoumI+ bcYJEPw+k61jCoKI= X-Received: by 2002:a1c:7d95:: with SMTP id y143mr5422477wmc.45.1597339815035; Thu, 13 Aug 2020 10:30:15 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyemPRGHTXhtiJtZgZpu1leEi25hip2AYfnT+wbFQ4Zg5fNr51mZR+d+STXio3EOmhMxrzkrg== X-Received: by 2002:a1c:7d95:: with SMTP id y143mr5422466wmc.45.1597339814864; Thu, 13 Aug 2020 10:30:14 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [RFC PATCH v2 3/7] util/vfio-helpers: Introduce 'irq_count' variable Date: Thu, 13 Aug 2020 19:29:53 +0200 Message-Id: <20200813172957.8289-4-philmd@redhat.com> X-Mailer: git-send-email 2.21.3 In-Reply-To: <20200813172957.8289-1-philmd@redhat.com> References: <20200813172957.8289-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0.003 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8"; text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=207.211.31.120; envelope-from=philmd@redhat.com; helo=us-smtp-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/08/13 03:45:42 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Fam Zheng , qemu-block@nongnu.org, Max Reitz , Alex Williamson , Stefan Hajnoczi , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Currently this helper is restricted to a single VFIO (MSIX) IRQ. As we will slowly make it support multiple IRQs, introduce the 'irq_count' variable which contains the total number of IRQs we initialized the device with. Set the variable in qemu_vfio_init_pci(). Hardcode the current single IRQ used. Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- util/vfio-helpers.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/util/vfio-helpers.c b/util/vfio-helpers.c index f1196e43dc..bad60076f3 100644 --- a/util/vfio-helpers.c +++ b/util/vfio-helpers.c @@ -44,6 +44,7 @@ struct QEMUVFIOState { QemuMutex lock; =20 int irq_type; /* vfio index */ + size_t irq_count; /* vfio subindex (vector) */ =20 /* These fields are protected by BQL */ int container; @@ -195,7 +196,7 @@ int qemu_vfio_pci_init_irq(QEMUVFIOState *s, EventNotif= ier *e, return -EINVAL; } =20 - irq_set_size =3D sizeof(*irq_set) + sizeof(int32_t); + irq_set_size =3D sizeof(*irq_set) + s->irq_count * sizeof(int32_t); irq_set =3D g_malloc0(irq_set_size); =20 /* Get to a known IRQ state */ @@ -204,7 +205,7 @@ int qemu_vfio_pci_init_irq(QEMUVFIOState *s, EventNotif= ier *e, .flags =3D VFIO_IRQ_SET_DATA_EVENTFD | VFIO_IRQ_SET_ACTION_TRIGGER, .index =3D irq_info.index, .start =3D 0, - .count =3D 1, + .count =3D s->irq_count, }; =20 *(int32_t *)&irq_set->data =3D event_notifier_get_fd(e); @@ -239,7 +240,7 @@ static int qemu_vfio_pci_write_config(QEMUVFIOState *s,= void *buf, int size, int } =20 static int qemu_vfio_init_pci(QEMUVFIOState *s, const char *device, - int irq_type, + int irq_type, unsigned irq_count, Error **errp) { int ret; @@ -335,6 +336,7 @@ static int qemu_vfio_init_pci(QEMUVFIOState *s, const c= har *device, goto fail; } s->irq_type =3D irq_type; + s->irq_count =3D irq_count; =20 if (device_info.num_regions < VFIO_PCI_CONFIG_REGION_INDEX) { error_setg(errp, "Invalid device regions"); @@ -433,7 +435,7 @@ QEMUVFIOState *qemu_vfio_open_pci(const char *device, i= nt irq_type, int r; QEMUVFIOState *s =3D g_new0(QEMUVFIOState, 1); =20 - r =3D qemu_vfio_init_pci(s, device, irq_type, errp); + r =3D qemu_vfio_init_pci(s, device, irq_type, 1, errp); if (r) { g_free(s); return NULL; --=20 2.21.3 From nobody Fri May 17 11:58:41 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1597340079; cv=none; d=zohomail.com; s=zohoarc; b=nasSCkHt30g2S+0tL/t5yIH3ur5ZjzKqMpHQQVDWjXKfFRw1obJBd8kiLZoTay4Qpgk23IV6NvwDg/yi26djBHC5bhFZrAAI4GT0G50pRIU19sbzl56cTJeSt3v+PMijzmL7wZvUOesu2A8mxxQutpP/DONsz7mEM2OGmmfdiKs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1597340079; 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=16/8u8u4aSNC+TBsbyq8DSkALSFB26Shm2nwb6CzfCw=; b=XhO6Z4i5wntpmpia+PEFwKCp9PJbTH+vt2OsaNqvk6l3vEjuR3uxKbHu07Eg5EslC8oX226BOgZmolSFiXroVtirHA4fO3b1sesgm82UjMY2RimDKqlxwwfaHX06eAnrw6N2BSzkv+O7/lJm1mhXYLmfkkHHVdKa3mL7nZ3rCzY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1597340079631720.1575486164552; Thu, 13 Aug 2020 10:34:39 -0700 (PDT) Received: from localhost ([::1]:47088 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k6H7e-0002jT-EZ for importer@patchew.org; Thu, 13 Aug 2020 13:34:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41626) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k6H3Z-0004wm-SS for qemu-devel@nongnu.org; Thu, 13 Aug 2020 13:30:25 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:20689) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1k6H3X-0008KW-U0 for qemu-devel@nongnu.org; Thu, 13 Aug 2020 13:30:25 -0400 Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-557-ViVMnpYKMze7NXrl_0xr7w-1; Thu, 13 Aug 2020 13:30:21 -0400 Received: by mail-wr1-f72.google.com with SMTP id b18so2353213wrn.6 for ; Thu, 13 Aug 2020 10:30:21 -0700 (PDT) Received: from localhost.localdomain (121.red-81-40-121.staticip.rima-tde.net. [81.40.121.121]) by smtp.gmail.com with ESMTPSA id l18sm11106929wrm.52.2020.08.13.10.30.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 13 Aug 2020 10:30:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1597339823; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=16/8u8u4aSNC+TBsbyq8DSkALSFB26Shm2nwb6CzfCw=; b=N+SZjVNFjLOduptYmZhiMKs0FiwWhiSn7ckZnJxmoOdLS7/Zznl0VCVsXNajNesG3TaKVO kVA3hybgNm5EbwgBShda1EsVNiza/Z8CkjzHI0UTYcHFD2tWoIeYImrQueCWdyBF9u+kp7 np+aRjOHViuWsxzzhzVf1bwBMdHpw+I= X-MC-Unique: ViVMnpYKMze7NXrl_0xr7w-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=16/8u8u4aSNC+TBsbyq8DSkALSFB26Shm2nwb6CzfCw=; b=VcrOpNLwwnERuueL5SH4Sa43OVrcn2+XFX9SWneVDccWGDkl/7GCjf4k49Q6NSMiC4 fAHIUZ9duJ/9dUnDNsHpyR/JJ39CoBenETJPx8+h5Nkf0u9xFSLrdpcqdE6ss5e0K71Z nE3/ZXDZsIIus70JdFahpKSWPqab10aF0bIxkh7G1TgmBguSxtXjYJgkN22/4lRgIIKC +1jS9iZVnAcmPjux9/egchd39siS/I98zvPyPYOvNHwJd6UX2qLa8mxYV+T3kpePNxbB dm3JjcljdV3FTPhalQaOQk77oFUG8gfd9S4HsOrkFPm4fR3UUTMJCFnHy3KEaQ775Ig2 +nvQ== X-Gm-Message-State: AOAM530vTFuWorY/FR7aKwNU9+63Viiv2vLDO78aDFhK31a6ocVWm0D2 K8uugLXwVdRc0FSy3aWup/cdW+ssrJ+MqPD4J4rc/JBDR38QfSbZA9HgiW0v3OQjX90e0sRuS/A 7iJShbejFy6Xwmec= X-Received: by 2002:a5d:5445:: with SMTP id w5mr5353717wrv.342.1597339820069; Thu, 13 Aug 2020 10:30:20 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyRrxCEfbhfAfBTKj0hhPG4BuEkNr7WLE1FFC/mH8l7PD2jgyfu9yjALhTZjkMplOeO5fqGEw== X-Received: by 2002:a5d:5445:: with SMTP id w5mr5353700wrv.342.1597339819890; Thu, 13 Aug 2020 10:30:19 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [RFC PATCH v2 4/7] util/vfio-helpers: Check the device allow up to 'irq_count' IRQs Date: Thu, 13 Aug 2020 19:29:54 +0200 Message-Id: <20200813172957.8289-5-philmd@redhat.com> X-Mailer: git-send-email 2.21.3 In-Reply-To: <20200813172957.8289-1-philmd@redhat.com> References: <20200813172957.8289-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0.002 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8"; text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.205.24.124; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/08/13 12:30:02 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Fam Zheng , qemu-block@nongnu.org, Max Reitz , Alex Williamson , Stefan Hajnoczi , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) As we want to use more than one single IRQ, add a check that the device accept our request to use multiple IRQs. Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- util/vfio-helpers.c | 6 ++++++ util/trace-events | 1 + 2 files changed, 7 insertions(+) diff --git a/util/vfio-helpers.c b/util/vfio-helpers.c index bad60076f3..b81d4c70c2 100644 --- a/util/vfio-helpers.c +++ b/util/vfio-helpers.c @@ -335,6 +335,12 @@ static int qemu_vfio_init_pci(QEMUVFIOState *s, const = char *device, ret =3D -errno; goto fail; } + trace_qemu_vfio_init_pci(device_info.num_irqs); + if (device_info.num_irqs < irq_count) { + error_setg(errp, "Invalid device IRQ count"); + ret =3D -EINVAL; + goto fail; + } s->irq_type =3D irq_type; s->irq_count =3D irq_count; =20 diff --git a/util/trace-events b/util/trace-events index 0ce42822eb..2e85555be3 100644 --- a/util/trace-events +++ b/util/trace-events @@ -83,3 +83,4 @@ qemu_vfio_new_mapping(void *s, void *host, size_t size, i= nt index, uint64_t iova qemu_vfio_do_mapping(void *s, void *host, size_t size, uint64_t iova) "s %= p host %p size %zu iova 0x%"PRIx64 qemu_vfio_dma_map(void *s, void *host, size_t size, bool temporary, uint64= _t *iova) "s %p host %p size %zu temporary %d iova %p" qemu_vfio_dma_unmap(void *s, void *host) "s %p host %p" +qemu_vfio_init_pci(uint32_t count) "device interrupt count: %"PRIu32 --=20 2.21.3 From nobody Fri May 17 11:58:41 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1597340037; cv=none; d=zohomail.com; s=zohoarc; b=G0XhAaTtEQodOIoJwJ+/s1FV23SyORk5XH+Xw8Z/gWqPiJQF68xxAUKMtHrVsZ60VSy3wmS236cyUXnCAn0ge5hIpyzCfmf0UV4pYsjGJgxRd1ZilhIdezhjOuDXM9a42V3E1DDaDeEdL8Q8TEe4AkxAKsJqE3SGRDAh7cN0XtE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1597340037; 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=PvA1qdFMQdsBLFkpZQMkY+2SEYYJPYlrU99iUSCWO6M=; b=JzaP/Xp3bXstYKah/1CoW2INV/qhR1SUBp7bryGzsJ2yS58BDxnp5N5/IEPCttQADRx2iRsXAAKdhz3qUKKieBgfKYoicvxvcLGzSTBCAjXKK44DKBW1oyYqg6sMaIFN6CjcPUah7HmjOQ3oHOrgS45VZKAd11n/Eya3Da/214E= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1597340037341365.451218821882; Thu, 13 Aug 2020 10:33:57 -0700 (PDT) Received: from localhost ([::1]:43800 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k6H6x-0001PK-Mx for importer@patchew.org; Thu, 13 Aug 2020 13:33:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41680) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k6H3f-00055h-O6 for qemu-devel@nongnu.org; Thu, 13 Aug 2020 13:30:31 -0400 Received: from us-smtp-delivery-1.mimecast.com ([205.139.110.120]:31032 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1k6H3d-0008L5-I4 for qemu-devel@nongnu.org; Thu, 13 Aug 2020 13:30:31 -0400 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-300-59tzZYgAPAW3uqQfjgPMeQ-1; Thu, 13 Aug 2020 13:30:27 -0400 Received: by mail-wm1-f69.google.com with SMTP id p23so2199922wmc.2 for ; Thu, 13 Aug 2020 10:30:26 -0700 (PDT) Received: from localhost.localdomain (121.red-81-40-121.staticip.rima-tde.net. [81.40.121.121]) by smtp.gmail.com with ESMTPSA id 32sm11257494wrn.86.2020.08.13.10.30.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 13 Aug 2020 10:30:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1597339828; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=PvA1qdFMQdsBLFkpZQMkY+2SEYYJPYlrU99iUSCWO6M=; b=MSEa45dHL6BfXbYD90iL5njhXKeUxwhsPhjoNN4oS3UsAgooG/Uv7UVJc6bYqc6xacZfXP Quq056oFx1bYd7ZkEzLbTXeuHi4Gt1ulGBzm03o/f0ENzjDq+5982tv1v9IrPcLTkuw67C kHjCh8b1ITIdWHg3g8Ge+5BHXdpUCs4= X-MC-Unique: 59tzZYgAPAW3uqQfjgPMeQ-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=PvA1qdFMQdsBLFkpZQMkY+2SEYYJPYlrU99iUSCWO6M=; b=dbCQLR36H0sT47fgSwDilGHXDL4YNA8jju7UA5gTqKT7EN7/kHpipLcgRnotv9cqZp +rs1kwPoUV40e8M2tyTOzXxgpc9mFPv6sSzUXSm7Q8aSKmgUwAztlJjOyqXa0u4CeDGm 0hAAsjmzczG8+4VaLps8g9L6FCcM1PrCXfiQtItW253MsYZotcZiURt5IL4C1dTqRym8 0l/OBOXqi4XmOCj9wCEXx3YOkJqJu56PbimMMPui6NCxmRKjPPYgk7HY4OGXdLBFwxT0 MaLiW2estdIm3sC2xqJL4V7E0601L5WboDqIcEV6IU3hI+Puszh/uaHiqAeinXG/jW6I wYUw== X-Gm-Message-State: AOAM5314DOKQaT/9LoFFeOIxvywuiSINBjShpjGUr+5Z0Z8I9NSTd66S E0eeo1Ua0tZCqza9IEVy9whiH6JDGJdpujkF0ROJNmLjTw37U6JvdglUeTv1H/pgaAIiVN5dbCR CM3clMHc0fsfPTKA= X-Received: by 2002:adf:a1c6:: with SMTP id v6mr4927148wrv.197.1597339824976; Thu, 13 Aug 2020 10:30:24 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzRt4sftQhAzNPZrH9fCL4bPsOG4gqqndCuZqtbBc9mgyFEzRRgm5v0A4ofWDBMN7vi0ca8sQ== X-Received: by 2002:adf:a1c6:: with SMTP id v6mr4927130wrv.197.1597339824828; Thu, 13 Aug 2020 10:30:24 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [RFC PATCH v2 5/7] util/vfio-helpers: Support multiple eventfd Date: Thu, 13 Aug 2020 19:29:55 +0200 Message-Id: <20200813172957.8289-6-philmd@redhat.com> X-Mailer: git-send-email 2.21.3 In-Reply-To: <20200813172957.8289-1-philmd@redhat.com> References: <20200813172957.8289-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0.003 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8"; text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=205.139.110.120; envelope-from=philmd@redhat.com; helo=us-smtp-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/08/13 03:44:21 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Fam Zheng , qemu-block@nongnu.org, Max Reitz , Alex Williamson , Stefan Hajnoczi , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) When using multiple IRQs, we'll assign an eventfd to each IRQ. Be ready by holding an array of eventfd file descriptors in the instance state, so when we assign new IRQs we will still use the previous eventfds for the already assigned IRQs. Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- util/vfio-helpers.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/util/vfio-helpers.c b/util/vfio-helpers.c index b81d4c70c2..5781e4f066 100644 --- a/util/vfio-helpers.c +++ b/util/vfio-helpers.c @@ -45,6 +45,7 @@ struct QEMUVFIOState { =20 int irq_type; /* vfio index */ size_t irq_count; /* vfio subindex (vector) */ + int32_t *eventfd; =20 /* These fields are protected by BQL */ int container; @@ -195,6 +196,7 @@ int qemu_vfio_pci_init_irq(QEMUVFIOState *s, EventNotif= ier *e, error_setg(errp, "Device interrupt doesn't support eventfd"); return -EINVAL; } + s->eventfd[0] =3D event_notifier_get_fd(e); =20 irq_set_size =3D sizeof(*irq_set) + s->irq_count * sizeof(int32_t); irq_set =3D g_malloc0(irq_set_size); @@ -207,8 +209,8 @@ int qemu_vfio_pci_init_irq(QEMUVFIOState *s, EventNotif= ier *e, .start =3D 0, .count =3D s->irq_count, }; + memcpy(&irq_set->data, &s->eventfd, s->irq_count * sizeof(int32_t)); =20 - *(int32_t *)&irq_set->data =3D event_notifier_get_fd(e); r =3D ioctl(s->device, VFIO_DEVICE_SET_IRQS, irq_set); g_free(irq_set); if (r) { @@ -343,6 +345,10 @@ static int qemu_vfio_init_pci(QEMUVFIOState *s, const = char *device, } s->irq_type =3D irq_type; s->irq_count =3D irq_count; + s->eventfd =3D g_new(int32_t, irq_count); + for (i =3D 0; i < irq_count; i++) { + s->eventfd[i] =3D -1; + } =20 if (device_info.num_regions < VFIO_PCI_CONFIG_REGION_INDEX) { error_setg(errp, "Invalid device regions"); @@ -379,6 +385,7 @@ static int qemu_vfio_init_pci(QEMUVFIOState *s, const c= har *device, } return 0; fail: + g_free(s->eventfd); close(s->group); fail_container: close(s->container); @@ -730,6 +737,7 @@ void qemu_vfio_close(QEMUVFIOState *s) } ram_block_notifier_remove(&s->ram_notifier); qemu_vfio_reset(s); + g_free(s->eventfd); close(s->device); close(s->group); close(s->container); --=20 2.21.3 From nobody Fri May 17 11:58:41 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1597340147; cv=none; d=zohomail.com; s=zohoarc; b=ns+oqtjb3lHShUJtjlBJX5y78F2ko+xcfO0E6gGktji7Pzi6D79ZWT8wrEEiH7/7G1eBldx9lWS4JksJNE1wzO+L7arLpE8LBs5vSwZmIUIlqV2DhlsjxqKyd4rxYRMIqUZkfa48XwAh9q4wMdZJQlBT9JQkTEe3bt8uh5wVAzA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1597340147; 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=ywqZee8nduQQdK6wqKUzzkHe/Zc1JEWxjyIJiHUdPyo=; b=JUz+XCLVEdGtyOJyTA9AKENifldFuFy0QTn8Nv2sgtux3hf1yyRAztxmYEWxectlKcwSWORIUBXKYEisZMrCNtK67WYtIRycjImVJmaNKnvHC7SCbWxHzowUCpEB1VBP20NiCcTVYqzAx1R1tzRckKoEDmdkZurksUWehBVToKI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 15973401475481016.3618599068594; Thu, 13 Aug 2020 10:35:47 -0700 (PDT) Received: from localhost ([::1]:49376 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k6H8k-0003fi-5J for importer@patchew.org; Thu, 13 Aug 2020 13:35:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41698) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k6H3j-0005E5-Ja for qemu-devel@nongnu.org; Thu, 13 Aug 2020 13:30:35 -0400 Received: from us-smtp-1.mimecast.com ([207.211.31.81]:50644 helo=us-smtp-delivery-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1k6H3h-0008LW-Kk for qemu-devel@nongnu.org; Thu, 13 Aug 2020 13:30:35 -0400 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-257-4e140bhJNrqPAnhKSe0unA-1; Thu, 13 Aug 2020 13:30:31 -0400 Received: by mail-wm1-f69.google.com with SMTP id k204so2199514wmb.3 for ; Thu, 13 Aug 2020 10:30:31 -0700 (PDT) Received: from localhost.localdomain (121.red-81-40-121.staticip.rima-tde.net. [81.40.121.121]) by smtp.gmail.com with ESMTPSA id t3sm10472742wrx.5.2020.08.13.10.30.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 13 Aug 2020 10:30:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1597339833; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ywqZee8nduQQdK6wqKUzzkHe/Zc1JEWxjyIJiHUdPyo=; b=PGLAS1oVQwDSoAaJ3ofm+Y0+ap8xVks/edV7j9DYrsFkXNxZHTIA6wA6WNnmK1fPO5G+Xn P04kFnnkfJXJKL+moPiLcyUd45WOxHAqHGBdXx0NB5nfc0a237BE0qPI0IJvQlHGs0Wf4/ hHmtCE6Go5AlQBHfQcFX4QpxvD+BUcE= X-MC-Unique: 4e140bhJNrqPAnhKSe0unA-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=ywqZee8nduQQdK6wqKUzzkHe/Zc1JEWxjyIJiHUdPyo=; b=DYSb3qP9OZF5IqOko/Ry0DmbUYDtF2lS+er2tgNAHJqfQ12D6LEyxerqwhYkEY9Y4e sv3s6sc4qRzVrILkqIp2kaFvCekKRsjcOqpuGO5oR1a0UZvM7CIWmzIhW3hKjBuUOWPq ePgiQYrcS2VJVQpT5h2qO1mmQ/INIUr2M45APITEdEcFoaTPZXijjLUKaKoYIW3Lh07U VTONF1zsM83jcVcLOie8WNPnPDdVXpuqow9irB6nJUsgqvEwQKKwoQxMrfiRzmmLgq85 /s5uoXLLNkWWZOrtdM/uPUw5Sxdss7fkxpm4apu2169S/1mEc3cvamVEDLyr8SPyJyWW OQbQ== X-Gm-Message-State: AOAM533v+80JnSHk0ug2Tnh1tCY2CxHYT77lVA6Y9l45Z92cL5vICDxa WntR7CAWpicyUW0z8+6pvX4ToQOuKdm39HCErNHPiiGp8OPTBdfaHA2Q3wVXlYDQxaRg997Wuhc 0tLxrE5AXrucNw0E= X-Received: by 2002:a05:6000:124c:: with SMTP id j12mr5024545wrx.83.1597339829977; Thu, 13 Aug 2020 10:30:29 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzWDrH1h28KJ5rYjBCk8PFMyT/pbZP/URUYJJzgZ8npzpzXSItWIy3h8sfW3cgFNcF47LQrfQ== X-Received: by 2002:a05:6000:124c:: with SMTP id j12mr5024522wrx.83.1597339829723; Thu, 13 Aug 2020 10:30:29 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [RFC PATCH v2 6/7] util/vfio-helpers: Allow to set EventNotifier to particular IRQ Date: Thu, 13 Aug 2020 19:29:56 +0200 Message-Id: <20200813172957.8289-7-philmd@redhat.com> X-Mailer: git-send-email 2.21.3 In-Reply-To: <20200813172957.8289-1-philmd@redhat.com> References: <20200813172957.8289-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0.002 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8"; text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=207.211.31.81; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/08/13 02:03:30 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -40 X-Spam_score: -4.1 X-Spam_bar: ---- X-Spam_report: (-4.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Fam Zheng , qemu-block@nongnu.org, Max Reitz , Alex Williamson , Stefan Hajnoczi , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Let qemu_vfio_pci_init_irq() take an 'index' argument, so we can set the EventNotifier to a specific IRQ. Add a safety check. Since our helper is limited to one single IRQ we are safe. Our only user is the NVMe block driver, update it (also safe because it only uses the first IRQ). Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- include/qemu/vfio-helpers.h | 2 +- block/nvme.c | 2 +- util/vfio-helpers.c | 11 +++++++++-- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/include/qemu/vfio-helpers.h b/include/qemu/vfio-helpers.h index 728f40922b..5c2d8ee5b3 100644 --- a/include/qemu/vfio-helpers.h +++ b/include/qemu/vfio-helpers.h @@ -28,6 +28,6 @@ void *qemu_vfio_pci_map_bar(QEMUVFIOState *s, int index, void qemu_vfio_pci_unmap_bar(QEMUVFIOState *s, int index, void *bar, uint64_t offset, uint64_t size); int qemu_vfio_pci_init_irq(QEMUVFIOState *s, EventNotifier *e, - Error **errp); + int irq_index, Error **errp); =20 #endif diff --git a/block/nvme.c b/block/nvme.c index 21b0770c02..a5ef571492 100644 --- a/block/nvme.c +++ b/block/nvme.c @@ -785,7 +785,7 @@ static int nvme_init(BlockDriverState *bs, const char *= device, int namespace, } } =20 - ret =3D qemu_vfio_pci_init_irq(s->vfio, &s->irq_notifier, errp); + ret =3D qemu_vfio_pci_init_irq(s->vfio, &s->irq_notifier, INDEX_ADMIN,= errp); if (ret) { goto out; } diff --git a/util/vfio-helpers.c b/util/vfio-helpers.c index 5781e4f066..7a934d1a1b 100644 --- a/util/vfio-helpers.c +++ b/util/vfio-helpers.c @@ -180,13 +180,20 @@ void qemu_vfio_pci_unmap_bar(QEMUVFIOState *s, int in= dex, void *bar, * Initialize device IRQ with @irq_type and and register an event notifier. */ int qemu_vfio_pci_init_irq(QEMUVFIOState *s, EventNotifier *e, - Error **errp) + int irq_index, Error **errp) { int r; struct vfio_irq_set *irq_set; size_t irq_set_size; struct vfio_irq_info irq_info =3D { .argsz =3D sizeof(irq_info) }; =20 + if (irq_index >=3D s->irq_count) { + error_setg(errp, + "Illegal interrupt %d (device initialized for %zu in to= tal)", + irq_index, s->irq_count); + return -EINVAL; + } + irq_info.index =3D s->irq_type; if (ioctl(s->device, VFIO_DEVICE_GET_IRQ_INFO, &irq_info)) { error_setg_errno(errp, errno, "Failed to get device interrupt info= "); @@ -196,7 +203,7 @@ int qemu_vfio_pci_init_irq(QEMUVFIOState *s, EventNotif= ier *e, error_setg(errp, "Device interrupt doesn't support eventfd"); return -EINVAL; } - s->eventfd[0] =3D event_notifier_get_fd(e); + s->eventfd[irq_index] =3D event_notifier_get_fd(e); =20 irq_set_size =3D sizeof(*irq_set) + s->irq_count * sizeof(int32_t); irq_set =3D g_malloc0(irq_set_size); --=20 2.21.3 From nobody Fri May 17 11:58:41 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1597340015; cv=none; d=zohomail.com; s=zohoarc; b=dEyI2GgG+SqOEDyMUC1zxr1zH1oopE1D9aRkQeK9gO8ji+D8uzTUj4ifvKFEFNfUog/OY7eNfP7BSVkzYqeMj5T+tVMInTwv8wnpynCJVVUDvBL5LCmUTpKvO6QFRx1VHzdCcmue1HNEGXnbTlitNckJczLSvzO76wqimDJkDKI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1597340015; 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=yKJ+zvoMOJhIvdM3y8QfidpmXCRYP6oT8Ci2x8cZgK4=; b=aKG6yMvEfHBxIi7xCb3EVhkYLhKL4iU3agoS4RCLkv+irBOh1gmUO5c0RlZfW7ogAtx+pAKO8JbPt4qXruN/9fAFoXNYupBxoEeB5PFbL6ZO+HXFaBiP37ZNnPeIWBsTUeCUlk+KeCOSHKKtczhhfuRFKJfjXtgZchRZ5eluSGM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1597340015982828.2103629742286; Thu, 13 Aug 2020 10:33:35 -0700 (PDT) Received: from localhost ([::1]:42286 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k6H6c-0000nj-PN for importer@patchew.org; Thu, 13 Aug 2020 13:33:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41736) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k6H3o-0005OL-C4 for qemu-devel@nongnu.org; Thu, 13 Aug 2020 13:30:40 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:22999) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1k6H3m-0008N0-Nr for qemu-devel@nongnu.org; Thu, 13 Aug 2020 13:30:40 -0400 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-139-LMdHuC0eO9WdTiT6NzQZ7w-1; Thu, 13 Aug 2020 13:30:36 -0400 Received: by mail-wm1-f69.google.com with SMTP id v8so2193589wma.6 for ; Thu, 13 Aug 2020 10:30:36 -0700 (PDT) Received: from localhost.localdomain (121.red-81-40-121.staticip.rima-tde.net. [81.40.121.121]) by smtp.gmail.com with ESMTPSA id x11sm10461934wrl.28.2020.08.13.10.30.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 13 Aug 2020 10:30:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1597339837; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=yKJ+zvoMOJhIvdM3y8QfidpmXCRYP6oT8Ci2x8cZgK4=; b=NI6XXjrFPmR6hMQbZaZg0F3Sf2YBqZfTzzQnbAOy3K1dU/FnT7lve1heW/CwjO77CsTxYt yuLrVnohJe714iSdmQB+MeHYyKLtfv53hBj88NowezvW+ptlJmvKD5hPJm+MzjNeFrHCON SoF87YzTFstAODCdWI3yqDdChSKECP0= X-MC-Unique: LMdHuC0eO9WdTiT6NzQZ7w-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=yKJ+zvoMOJhIvdM3y8QfidpmXCRYP6oT8Ci2x8cZgK4=; b=CVOq6oiB/5OdufmkNuD6eSwFvbq7TCbZp8/HDLMxCN47UFodo2KKYjoUeHhS2OTjt1 A5vy0kU0590+F2KCjaCfS/iOJ+2NVjBYBAJDBLl5oMPzCraN9203zv5Wh9MPnixs8pIM nlf+s8+g9aGi2zi+MQt+lYmuGdmTpS+SLuY3f4jIilHcBKc0j8205Gvovaf9n3Q7jOPC chckhqmp2vNixGvl3DUA0OT/3FXDRq/H1uqSF0Kp80AW7sozyUZNzAKbff6XG0MuLJ52 8DPvWH+AfWefeLLPpKsdSq+91t6VsJ+FEspoCtGvbtsWdUBUJcft8p8Q55In+4nlg8PO HZUg== X-Gm-Message-State: AOAM531PfC1NYAk7gSi6cUL+WJcmHB5BC3afMymjUgBC3fDi2w5G45++ qXxnK//miDrlgt8kmoNPhA9SpvGPhZwyKT5BAvTNtgl0J1VXlzjIMVCytxPejLK9XK/ppSyn6hN TE3YtQa/TKSNWkfk= X-Received: by 2002:adf:ed48:: with SMTP id u8mr5305159wro.64.1597339834883; Thu, 13 Aug 2020 10:30:34 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz/5BLc7cWA+ODsKBfLtjJjKKL0kinxWbV8UzbJGnAm9M/YX/jkXmnknvnJ0wSVIx6a7/L5Jw== X-Received: by 2002:adf:ed48:: with SMTP id u8mr5305131wro.64.1597339834669; Thu, 13 Aug 2020 10:30:34 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [RFC PATCH v2 7/7] util/vfio-helpers: Allow opening device requesting for multiple IRQs Date: Thu, 13 Aug 2020 19:29:57 +0200 Message-Id: <20200813172957.8289-8-philmd@redhat.com> X-Mailer: git-send-email 2.21.3 In-Reply-To: <20200813172957.8289-1-philmd@redhat.com> References: <20200813172957.8289-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0.002 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8"; text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.205.24.124; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/08/13 12:30:02 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Fam Zheng , qemu-block@nongnu.org, Max Reitz , Alex Williamson , Stefan Hajnoczi , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Now that our helper is ready for handling multiple IRQs, let qemu_vfio_open_pci() take an 'irq_count' argument. Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- include/qemu/vfio-helpers.h | 2 +- block/nvme.c | 5 ++++- util/vfio-helpers.c | 4 ++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/include/qemu/vfio-helpers.h b/include/qemu/vfio-helpers.h index 5c2d8ee5b3..4773b116df 100644 --- a/include/qemu/vfio-helpers.h +++ b/include/qemu/vfio-helpers.h @@ -16,7 +16,7 @@ typedef struct QEMUVFIOState QEMUVFIOState; =20 QEMUVFIOState *qemu_vfio_open_pci(const char *device, int irq_type, - Error **errp); + unsigned irq_count, Error **errp); void qemu_vfio_close(QEMUVFIOState *s); int qemu_vfio_dma_map(QEMUVFIOState *s, void *host, size_t size, bool temporary, uint64_t *iova_list); diff --git a/block/nvme.c b/block/nvme.c index a5ef571492..2d7aac3903 100644 --- a/block/nvme.c +++ b/block/nvme.c @@ -106,6 +106,9 @@ QEMU_BUILD_BUG_ON(offsetof(NVMeRegs, doorbells) !=3D 0x= 1000); #define INDEX_ADMIN 0 #define INDEX_IO(n) (1 + n) =20 +/* This driver shares a single MSIX IRQ for the admin and I/O queues */ +#define MSIX_IRQ_COUNT 1 + struct BDRVNVMeState { AioContext *aio_context; QEMUVFIOState *vfio; @@ -712,7 +715,7 @@ static int nvme_init(BlockDriverState *bs, const char *= device, int namespace, } =20 s->vfio =3D qemu_vfio_open_pci(device, VFIO_PCI_MSIX_IRQ_INDEX, - errp); + MSIX_IRQ_COUNT, errp); if (!s->vfio) { ret =3D -EINVAL; goto out; diff --git a/util/vfio-helpers.c b/util/vfio-helpers.c index 7a934d1a1b..36fafef0d3 100644 --- a/util/vfio-helpers.c +++ b/util/vfio-helpers.c @@ -450,12 +450,12 @@ static void qemu_vfio_open_common(QEMUVFIOState *s) * Open a PCI device, e.g. "0000:00:01.0". */ QEMUVFIOState *qemu_vfio_open_pci(const char *device, int irq_type, - Error **errp) + unsigned irq_count, Error **errp) { int r; QEMUVFIOState *s =3D g_new0(QEMUVFIOState, 1); =20 - r =3D qemu_vfio_init_pci(s, device, irq_type, 1, errp); + r =3D qemu_vfio_init_pci(s, device, irq_type, irq_count, errp); if (r) { g_free(s); return NULL; --=20 2.21.3