From patchwork Tue Aug 18 16:45:05 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 11721983 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 4F8DD722 for ; Tue, 18 Aug 2020 16:46:26 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 26C9E206B5 for ; Tue, 18 Aug 2020 16:46:26 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="eVJjrhZc" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 26C9E206B5 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Received: from localhost ([::1]:43732 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k84kj-00013O-Bw for patchwork-qemu-devel@patchwork.kernel.org; Tue, 18 Aug 2020 12:46:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47418) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k84jl-0007em-Hv for qemu-devel@nongnu.org; Tue, 18 Aug 2020 12:45:25 -0400 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:31778) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1k84jj-0007E7-OR for qemu-devel@nongnu.org; Tue, 18 Aug 2020 12:45:25 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1597769122; 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=e19aBsxvolU8tmqe5AUsSaq8/P+UaGQZEhfVX5QNhjQ=; b=eVJjrhZcCab6GDf/H6YExNFcsrJcL876OHnt3PpsIaBgTKB/PSgpBORAQ1rHaHz0nOm55D KANJneQdagb3KNjuka/YUeKucqext9pcOWLskNO963N65U1meYa6oYN8D0IwurljsL8h9b suLTJW5js9iOH4WtUNpRXYpIHBmquP8= 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-144-2Rtw1MeKOkO3CH2nxMUm5g-1; Tue, 18 Aug 2020 12:45:18 -0400 X-MC-Unique: 2Rtw1MeKOkO3CH2nxMUm5g-1 Received: by mail-wm1-f69.google.com with SMTP id v8so6315224wma.6 for ; Tue, 18 Aug 2020 09:45:18 -0700 (PDT) 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=e19aBsxvolU8tmqe5AUsSaq8/P+UaGQZEhfVX5QNhjQ=; b=L3mxATyPgnaLNNvTgY5mM5Kln7zQv+asrm/5MBwgq7pLenN+2q98PWnpXXlQHR/VHI SbPpS+I5pzlqB5OUeoBLyc/naTWoVD8x46W+hR4Fb7vPaGru7yCDR2Vbu9ooCkkVXTvC jpidfEXuYqDdCfCWVCF4crA5JU9SMRX1tJBocNfSfLfkZLtsd2YU4HKuQ+GUeH89nZ31 kGv+MTiykwBufzV+PBY6fjpAl9pHX+i4+3EtYBuXQlHLIPcnQsBlNNQSD5Ba7d2smN2l b28IQ6rN1uf2ad2xJCkevEVA9OI4Ds2figWW6wTYjIFBC/bDDxUQaqynxyKarQMbVRq+ J3nw== X-Gm-Message-State: AOAM5313FjdZ07wXJmMYYRV43AYI2M7veDPlls7SzIm2j68shMgp7mzB pJj6eZL+kyBCvIWvjcjehOqXKpm0FRtgpV/30YdoeiYTALdi41I8Kqcur0V5Cs3zuFPd/6zHYLg drq2p26wnryYaY7A= X-Received: by 2002:adf:edc3:: with SMTP id v3mr124649wro.193.1597769116820; Tue, 18 Aug 2020 09:45:16 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwaYLwM6Dx0C091uvD6Br8Rmlz1Hx12Kd/HBSfZFAB43UyxWpNq5Syf+ZnHgwaZQnl3ao8dwg== X-Received: by 2002:adf:edc3:: with SMTP id v3mr124622wro.193.1597769116552; Tue, 18 Aug 2020 09:45: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 y142sm731885wmd.3.2020.08.18.09.45.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2020 09:45:16 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [RFC PATCH v3 1/5] block/nvme: Use an array of EventNotifier Date: Tue, 18 Aug 2020 18:45:05 +0200 Message-Id: <20200818164509.736367-2-philmd@redhat.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200818164509.736367-1-philmd@redhat.com> References: <20200818164509.736367-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 Received-SPF: pass client-ip=63.128.21.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/18 12:45:22 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: Fam Zheng , Kevin Wolf , qemu-block@nongnu.org, Max Reitz , Alex Williamson , Stefan Hajnoczi , =?utf-8?q?Philippe_Mathieu-Daud?= =?utf-8?q?=C3=A9?= Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" In preparation of using multiple IRQ (thus multiple eventfds) make BDRVNVMeState::irq_notifier an array (for now of a single element, the admin queue notifier). Signed-off-by: Philippe Mathieu-Daudé --- block/nvme.c | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/block/nvme.c b/block/nvme.c index a61e86a83eb..cdd16d451e7 100644 --- a/block/nvme.c +++ b/block/nvme.c @@ -106,6 +106,9 @@ QEMU_BUILD_BUG_ON(offsetof(NVMeRegs, doorbells) != 0x1000); #define INDEX_ADMIN 0 #define INDEX_IO(n) (1 + n) +/* 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; @@ -120,7 +123,7 @@ struct BDRVNVMeState { /* How many uint32_t elements does each doorbell entry take. */ size_t doorbell_scale; bool write_cache_supported; - EventNotifier irq_notifier; + EventNotifier irq_notifier[MSIX_IRQ_COUNT]; uint64_t nsze; /* Namespace size reported by identify command */ int nsid; /* The namespace id to read/write data. */ @@ -631,7 +634,8 @@ static bool nvme_poll_queues(BDRVNVMeState *s) static void nvme_handle_event(EventNotifier *n) { - BDRVNVMeState *s = container_of(n, BDRVNVMeState, irq_notifier); + BDRVNVMeState *s = container_of(n, BDRVNVMeState, + irq_notifier[INDEX_ADMIN]); trace_nvme_handle_event(s); event_notifier_test_and_clear(n); @@ -683,7 +687,8 @@ out_error: static bool nvme_poll_cb(void *opaque) { EventNotifier *e = opaque; - BDRVNVMeState *s = container_of(e, BDRVNVMeState, irq_notifier); + BDRVNVMeState *s = container_of(e, BDRVNVMeState, + irq_notifier[INDEX_ADMIN]); trace_nvme_poll_cb(s); return nvme_poll_queues(s); @@ -705,7 +710,7 @@ static int nvme_init(BlockDriverState *bs, const char *device, int namespace, s->device = g_strdup(device); s->nsid = namespace; s->aio_context = bdrv_get_aio_context(bs); - ret = event_notifier_init(&s->irq_notifier, 0); + ret = event_notifier_init(&s->irq_notifier[INDEX_ADMIN], 0); if (ret) { error_setg(errp, "Failed to init event notifier"); return ret; @@ -784,12 +789,13 @@ static int nvme_init(BlockDriverState *bs, const char *device, int namespace, } } - ret = qemu_vfio_pci_init_irq(s->vfio, &s->irq_notifier, + ret = qemu_vfio_pci_init_irq(s->vfio, s->irq_notifier, VFIO_PCI_MSIX_IRQ_INDEX, errp); if (ret) { goto out; } - aio_set_event_notifier(bdrv_get_aio_context(bs), &s->irq_notifier, + aio_set_event_notifier(bdrv_get_aio_context(bs), + &s->irq_notifier[INDEX_ADMIN], false, nvme_handle_event, nvme_poll_cb); nvme_identify(bs, namespace, &local_err); @@ -872,9 +878,10 @@ static void nvme_close(BlockDriverState *bs) nvme_free_queue_pair(s->queues[i]); } g_free(s->queues); - aio_set_event_notifier(bdrv_get_aio_context(bs), &s->irq_notifier, + aio_set_event_notifier(bdrv_get_aio_context(bs), + &s->irq_notifier[INDEX_ADMIN], false, NULL, NULL); - event_notifier_cleanup(&s->irq_notifier); + event_notifier_cleanup(&s->irq_notifier[INDEX_ADMIN]); qemu_vfio_pci_unmap_bar(s->vfio, 0, (void *)s->regs, 0, NVME_BAR_SIZE); qemu_vfio_close(s->vfio); @@ -1381,7 +1388,8 @@ static void nvme_detach_aio_context(BlockDriverState *bs) q->completion_bh = NULL; } - aio_set_event_notifier(bdrv_get_aio_context(bs), &s->irq_notifier, + aio_set_event_notifier(bdrv_get_aio_context(bs), + &s->irq_notifier[INDEX_ADMIN], false, NULL, NULL); } @@ -1391,7 +1399,7 @@ static void nvme_attach_aio_context(BlockDriverState *bs, BDRVNVMeState *s = bs->opaque; s->aio_context = new_context; - aio_set_event_notifier(new_context, &s->irq_notifier, + aio_set_event_notifier(new_context, &s->irq_notifier[INDEX_ADMIN], false, nvme_handle_event, nvme_poll_cb); for (int i = 0; i < s->nr_queues; i++) { From patchwork Tue Aug 18 16:45:06 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 11721985 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id C4CF8722 for ; Tue, 18 Aug 2020 16:46:28 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 9C84F206B5 for ; Tue, 18 Aug 2020 16:46:28 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="EMN8hIUG" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9C84F206B5 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Received: from localhost ([::1]:43922 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k84kl-00017z-RX for patchwork-qemu-devel@patchwork.kernel.org; Tue, 18 Aug 2020 12:46:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47444) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k84jo-0007mK-NA for qemu-devel@nongnu.org; Tue, 18 Aug 2020 12:45:28 -0400 Received: from us-smtp-delivery-1.mimecast.com ([207.211.31.120]:38321 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 1k84jm-0007GS-Rl for qemu-devel@nongnu.org; Tue, 18 Aug 2020 12:45:28 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1597769126; 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=TuA3dSLI/gGfSrEgYmyI+qJh4j0OmglQV0RfJbX8r0k=; b=EMN8hIUGfH3E2B7RxSLP7CVFiaDgHAXNTHooSlLtQexl0HXu5UwEOEnZAiYxDdxi+vfwfc 60HeOBQPU/c9dHjhVO4nuneLXc94hBbwyI+c68a8OYak4WwaXEXbYXhEh7mTc3E+cpxovJ ngo4j+UjiiZRT+tyPAvqIoHkDHshZSc= Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-175-mz5BBBhpPamWC0zKR6U4lQ-1; Tue, 18 Aug 2020 12:45:24 -0400 X-MC-Unique: mz5BBBhpPamWC0zKR6U4lQ-1 Received: by mail-wm1-f71.google.com with SMTP id z10so7608611wmi.8 for ; Tue, 18 Aug 2020 09:45:23 -0700 (PDT) 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=TuA3dSLI/gGfSrEgYmyI+qJh4j0OmglQV0RfJbX8r0k=; b=UnS2M6XQCxHF9moslmMPzTDt8f0oNTu0O69K/NCzUKTkkvIPV/okNlNk6dzSwKMrQh /CSoXuUtxoCc0iQx6rZS25NKfQgJ4BzehOvY/97k/eum86f/69K117NztD5dP7QydLYt r8J30sbP4pCDoc+Wx0Csjx0g9XwtdAxyJzRs7kndZF1WrbV6T0JHanuGhPwI4Fslqmkx qn7cBp7xCD2iNQWeQyH17J8+GOjfWw0+uCly7/NoMhzHryUC3iwnUhrlpGpBUlbVlWN1 tKa/IPgLCfNyzzuT/cDdB8eYCtG0SOn0LALOakU0lJOek3h+UgE15mw1TU2MmtWv5Lu5 c+GA== X-Gm-Message-State: AOAM533HNj28WITtWeR2YTvmWW4BDgP3d4Gw62ZjFGrw14vr39Kx3P/D 3a5exxU0XNjknDkipqNsaZGV2KrXIi10G0hQkgBK/bvQUlCpoGlXnek5EDFHwAp+2pp0V9Irj+M HVcjslsdQUES3Z44= X-Received: by 2002:adf:a4d7:: with SMTP id h23mr140511wrb.276.1597769121970; Tue, 18 Aug 2020 09:45:21 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxUsn0wsNfdu2PLp3XvmehHVv0VO67fiSj3ttqMjB3NgtTJU/SuKb3AXwe7ebO5TM2LBVi8pg== X-Received: by 2002:adf:a4d7:: with SMTP id h23mr140482wrb.276.1597769121695; Tue, 18 Aug 2020 09:45: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 t189sm649939wmf.47.2020.08.18.09.45.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2020 09:45:21 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [RFC PATCH v3 2/5] util/vfio-helpers: Report error on unsupported host architectures Date: Tue, 18 Aug 2020 18:45:06 +0200 Message-Id: <20200818164509.736367-3-philmd@redhat.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200818164509.736367-1-philmd@redhat.com> References: <20200818164509.736367-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 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/18 06:40:33 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: Fam Zheng , Kevin Wolf , Drew Jones , qemu-block@nongnu.org, Laurent Vivier , Max Reitz , Eric Auger , Alex Williamson , Stefan Hajnoczi , =?utf-8?q?Philippe_Mathieu-Daud?= =?utf-8?q?=C3=A9?= , David Gibson Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" The vfio-helpers implementation expects a TYPEv1 IOMMU, see qemu_vfio_init_pci: 263 if (!ioctl(s->container, VFIO_CHECK_EXTENSION, VFIO_TYPE1_IOMMU)) { 264 error_setg_errno(errp, errno, "VFIO IOMMU check failed"); Thus POWER SPAPR IOMMU is obviously not supported. The implementation only cares about host page size alignment (usually 4KB on X86), not the IOMMU one, which is be problematic on Aarch64, when 64MB page size is used. So Aarch64 is not supported neither. Report an error when the host architecture is different than X86: $ qemu-system-aarch64 \ -drive file=nvme://0001:01:00.0/1,if=none,id=drive0 \ -device virtio-blk-pci,drive=drive0 qemu-system-aarch64: -drive file=nvme://0001:01:00.0/1,if=none,id=drive0: QEMU VFIO utility is not supported on this architecture Signed-off-by: Philippe Mathieu-Daudé --- Cc: Eric Auger Cc: Drew Jones Cc: Laurent Vivier Cc: David Gibson --- util/vfio-helpers.c | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/util/vfio-helpers.c b/util/vfio-helpers.c index e399e330e26..60017936e3e 100644 --- a/util/vfio-helpers.c +++ b/util/vfio-helpers.c @@ -420,14 +420,38 @@ static void qemu_vfio_open_common(QEMUVFIOState *s) qemu_ram_foreach_block(qemu_vfio_init_ramblock, s); } +/** + * Return if the host architecture is supported. + * + * aarch64: IOMMU page alignment not respected + * ppc64: SPAPR IOMMU window not configured + * x86-64: Only architecture validated + * other: Untested + */ +static bool qemu_vfio_arch_supported(void) +{ + bool supported = false; + +#if defined(HOST_X86_64) + supported = true; +#endif + + return supported; +} /** * Open a PCI device, e.g. "0000:00:01.0". */ QEMUVFIOState *qemu_vfio_open_pci(const char *device, Error **errp) { int r; - QEMUVFIOState *s = g_new0(QEMUVFIOState, 1); + QEMUVFIOState *s; + if (!qemu_vfio_arch_supported()) { + error_setg(errp, + "QEMU VFIO utility is not supported on this architecture"); + return NULL; + } + s = g_new0(QEMUVFIOState, 1); r = qemu_vfio_init_pci(s, device, errp); if (r) { g_free(s); From patchwork Tue Aug 18 16:45:07 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 11721987 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 2889D722 for ; Tue, 18 Aug 2020 16:47:54 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id F183B206B5 for ; Tue, 18 Aug 2020 16:47:53 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="dzGjjBu8" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org F183B206B5 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Received: from localhost ([::1]:49844 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k84m9-0003aS-35 for patchwork-qemu-devel@patchwork.kernel.org; Tue, 18 Aug 2020 12:47:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47484) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k84jt-0007xo-KI for qemu-devel@nongnu.org; Tue, 18 Aug 2020 12:45:33 -0400 Received: from us-smtp-delivery-1.mimecast.com ([207.211.31.120]:30618 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 1k84jr-0007Ht-5E for qemu-devel@nongnu.org; Tue, 18 Aug 2020 12:45:33 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1597769130; 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=rleIQWhTOngPCq5cfqGRgdMvowv+Bx0+2loFTr63p8Y=; b=dzGjjBu8n2yBcJIkq4Dv9mEIHFVZoK+CNBaBKeaopduJ+sDWoIj82dutmclseT37yqRn51 oRwEnrc1dBUupuyzSyEWT11MD8v6yPqSIsab2AiTA2le+Xeb3bFaBq05Lpmg8r5+s+48tx d9u5ZjjPUiyu4y9H1ZpJS6ePrLLhOJc= 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-333-bQYUgRTdM3e7bbK0sK8Zww-1; Tue, 18 Aug 2020 12:45:28 -0400 X-MC-Unique: bQYUgRTdM3e7bbK0sK8Zww-1 Received: by mail-wm1-f70.google.com with SMTP id g72so6319714wme.4 for ; Tue, 18 Aug 2020 09:45:28 -0700 (PDT) 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=rleIQWhTOngPCq5cfqGRgdMvowv+Bx0+2loFTr63p8Y=; b=qX85fcwoXwNt88UJ33O9AooxZcAq01mq2PgdNtIlyc4bFcay+To3xxI4k1xv6skQGB GK+WHj2FIoJC+EAFdLVSbeEqh5OEPBo4LP6WakorGYAOQdv8Nn+X8QpLjAxoGjZq/YVZ ClXq5irthWiFCq/yjbR4/vpmFzEiTlhrDdMA+E2deiZBTAMp1X0TPrKGSOngQNqpBlQp Hf7b6cTnW22CxyKfEIT+o2ZONG6BISdECaHYRP/RABe2xadv0TVM5/UEW8ZhRTTIyW9q WcSEHpMAMjVTTWrkZYaOjvxc0AGSW6flCh1544H/ZulGWRAep6pQVyJs0Bg4IFy+ZsH/ Jseg== X-Gm-Message-State: AOAM532+jg56X9XCnaoWGpO+BoBrTlX1I+bWF/7ajt36JQUivL3Lop4e oKS31TRXeb/M29Q1QaRNmyXbXAuB23o1RX0IDZcA6301BZlj+GbN4bG2aauD0nxk3zNrafExOTK l0KqXvFetkRFnqdE= X-Received: by 2002:a1c:e912:: with SMTP id q18mr749317wmc.130.1597769126756; Tue, 18 Aug 2020 09:45:26 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxRnfGYJ2aDSXgCns+VmKpojXevW5OfKSnShuvGr8ucz3dvFmtf3YO2+rwmlQGuTUUllulhMg== X-Received: by 2002:a1c:e912:: with SMTP id q18mr749303wmc.130.1597769126590; Tue, 18 Aug 2020 09:45: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 g8sm630741wme.13.2020.08.18.09.45.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2020 09:45:26 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [RFC PATCH v3 3/5] util/vfio-helpers: Store eventfd using int32_t type Date: Tue, 18 Aug 2020 18:45:07 +0200 Message-Id: <20200818164509.736367-4-philmd@redhat.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200818164509.736367-1-philmd@redhat.com> References: <20200818164509.736367-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 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/18 06:40:33 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: Fam Zheng , Kevin Wolf , qemu-block@nongnu.org, Max Reitz , Alex Williamson , Stefan Hajnoczi , =?utf-8?q?Philippe_Mathieu-Daud?= =?utf-8?q?=C3=A9?= Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" 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é --- 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 60017936e3e..696f2d51712 100644 --- a/util/vfio-helpers.c +++ b/util/vfio-helpers.c @@ -193,7 +193,7 @@ int qemu_vfio_pci_init_irq(QEMUVFIOState *s, EventNotifier *e, return -EINVAL; } - irq_set_size = sizeof(*irq_set) + sizeof(int); + irq_set_size = sizeof(*irq_set) + sizeof(int32_t); irq_set = g_malloc0(irq_set_size); /* Get to a known IRQ state */ @@ -205,7 +205,7 @@ int qemu_vfio_pci_init_irq(QEMUVFIOState *s, EventNotifier *e, .count = 1, }; - *(int *)&irq_set->data = event_notifier_get_fd(e); + *(int32_t *)&irq_set->data = event_notifier_get_fd(e); r = ioctl(s->device, VFIO_DEVICE_SET_IRQS, irq_set); g_free(irq_set); if (r) { From patchwork Tue Aug 18 16:45:08 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 11721991 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 6010B722 for ; Tue, 18 Aug 2020 16:48:02 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 37A35206B5 for ; Tue, 18 Aug 2020 16:48:02 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="QEsT/frj" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 37A35206B5 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Received: from localhost ([::1]:50510 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k84mH-0003rC-Ce for patchwork-qemu-devel@patchwork.kernel.org; Tue, 18 Aug 2020 12:48:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47534) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k84jy-000894-ON for qemu-devel@nongnu.org; Tue, 18 Aug 2020 12:45:38 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:21693) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1k84jw-0007JM-24 for qemu-devel@nongnu.org; Tue, 18 Aug 2020 12:45:38 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1597769135; 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=EDUa2xT6CyPSFbp3gmOWIajlvuy8ALEmH1Y6JKlFOn4=; b=QEsT/frjdleDo2z6jkkHj21mbKEYv5WEzCU+f4uOBUlmio2STzp+pRpoG6Tx4P/I/73gQ4 sA9IWO/vDd0OJEMsSqVfI5c2v2D3CSjuMTZgiIZmQl66DGwepqMxLlmFmV5M/angPNBvdq m8GAnUY6yWJzq8Tbp42rWYe1814Xi0g= Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-77-SCjOOudMOeyQRHqDMjdbLg-1; Tue, 18 Aug 2020 12:45:33 -0400 X-MC-Unique: SCjOOudMOeyQRHqDMjdbLg-1 Received: by mail-wr1-f69.google.com with SMTP id m7so8434874wrb.20 for ; Tue, 18 Aug 2020 09:45:33 -0700 (PDT) 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=EDUa2xT6CyPSFbp3gmOWIajlvuy8ALEmH1Y6JKlFOn4=; b=JyZSFJmjxG8pdnlhogU6JesVL1tgtddt5V+H53gsBJyBTEL2KEfOl+DX9kIdTmyLlO Dcs78hieyRv1xY2ux9meKuRuRp0LTL3zJ4j2f1FK0tPG95zr0ewfiw0jv97QxUkT+Qdk p0PzgolUafL23+STyf2V0+jPVyU41zwZpyFApDFiD0zBwF9pqFyZ7CttE2oQ09pZaALg p3EmLrbvzqtbxvQZB3ULmUxDiK12J2/jsAZCNlAYAd6ox4J9lpAJ8VoMji037JhBNlm2 L2wYfCwJdv8O6bcRY/i475Ciswh2SD6Ms9eDqRU9mMPu8g00NNLu+7uCfKEqzErTUki9 gY9Q== X-Gm-Message-State: AOAM532JGKCdfN7iBla2xZxrFmD/GF1g+17e3INGElgS9P1nS31fKQZn cP3wIYNtcszaXhfL6UCc1iyw1vALtO+XT5INhZ+FG7+gKqMDj3KIaRY3m2f9crIIDC2en9mkyzz HRbFJbOac/VA8ec0= X-Received: by 2002:adf:b1dc:: with SMTP id r28mr121647wra.242.1597769131862; Tue, 18 Aug 2020 09:45:31 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxIn2qrl3iX+cB4Q+434IZczlOFkLoHvdMX1wc2QkYdFhuiYrhLgNMZ+iLsAiufRanv24hVJQ== X-Received: by 2002:adf:b1dc:: with SMTP id r28mr121624wra.242.1597769131675; Tue, 18 Aug 2020 09:45: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 g14sm598098wmk.37.2020.08.18.09.45.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2020 09:45:30 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [RFC PATCH v3 4/5] util/vfio-helpers: Introduce qemu_vfio_pci_init_msix_irqs() Date: Tue, 18 Aug 2020 18:45:08 +0200 Message-Id: <20200818164509.736367-5-philmd@redhat.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200818164509.736367-1-philmd@redhat.com> References: <20200818164509.736367-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 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/18 03:22:11 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_H5=-1, 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: Fam Zheng , Kevin Wolf , qemu-block@nongnu.org, Max Reitz , Alex Williamson , Stefan Hajnoczi , =?utf-8?q?Philippe_Mathieu-Daud?= =?utf-8?q?=C3=A9?= Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" qemu_vfio_pci_init_irq() allows us to initialize any type of IRQ, but only one. Introduce qemu_vfio_pci_init_msix_irqs() which is specific to MSIX IRQ type, and allow us to use multiple IRQs (thus passing multiple eventfd notifiers). Signed-off-by: Philippe Mathieu-Daudé --- include/qemu/vfio-helpers.h | 2 ++ util/vfio-helpers.c | 53 +++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) diff --git a/include/qemu/vfio-helpers.h b/include/qemu/vfio-helpers.h index 1f057c2b9e4..63108ebc8da 100644 --- a/include/qemu/vfio-helpers.h +++ b/include/qemu/vfio-helpers.h @@ -28,5 +28,7 @@ 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); +int qemu_vfio_pci_init_msix_irqs(QEMUVFIOState *s, EventNotifier *e, + unsigned irq_count, Error **errp); #endif diff --git a/util/vfio-helpers.c b/util/vfio-helpers.c index 696f2d51712..fb3a79a5bcb 100644 --- a/util/vfio-helpers.c +++ b/util/vfio-helpers.c @@ -215,6 +215,59 @@ int qemu_vfio_pci_init_irq(QEMUVFIOState *s, EventNotifier *e, return 0; } +/** + * Initialize device MSIX IRQs and register event notifiers. + * @irq_count: number of MSIX IRQs to initialize + * @e: Array of @irq_count notifiers (each corresponding to a MSIX IRQ) + */ +int qemu_vfio_pci_init_msix_irqs(QEMUVFIOState *s, EventNotifier *e, + unsigned irq_count, Error **errp) +{ + int r; + struct vfio_irq_set *irq_set; + size_t irq_set_size; + struct vfio_irq_info irq_info = { .argsz = sizeof(irq_info) }; + + irq_info.index = VFIO_PCI_MSIX_IRQ_INDEX; + if (ioctl(s->device, VFIO_DEVICE_GET_IRQ_INFO, &irq_info)) { + error_setg_errno(errp, errno, "Failed to get device interrupt info"); + return -errno; + } + if (irq_info.count <= irq_count) { + error_setg(errp, + "Not enough device interrupts available (only %" PRIu32 ")", + irq_info.count); + return -EINVAL; + } + if (!(irq_info.flags & VFIO_IRQ_INFO_EVENTFD)) { + error_setg(errp, "Device interrupt doesn't support eventfd"); + return -EINVAL; + } + + irq_set_size = sizeof(*irq_set) + irq_count * sizeof(int32_t); + irq_set = g_malloc0(irq_set_size); + + /* Get to a known IRQ state */ + *irq_set = (struct vfio_irq_set) { + .argsz = irq_set_size, + .flags = VFIO_IRQ_SET_DATA_EVENTFD | VFIO_IRQ_SET_ACTION_TRIGGER, + .index = irq_info.index, + .start = 0, + .count = irq_count, + }; + + for (unsigned i = 0; i < irq_count; i++) { + ((int32_t *)&irq_set->data)[i] = event_notifier_get_fd(&e[i]); + } + r = ioctl(s->device, VFIO_DEVICE_SET_IRQS, irq_set); + g_free(irq_set); + if (r) { + error_setg_errno(errp, errno, "Failed to setup device interrupts"); + return -errno; + } + return 0; +} + static int qemu_vfio_pci_read_config(QEMUVFIOState *s, void *buf, int size, int ofs) { From patchwork Tue Aug 18 16:45:09 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 11721989 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 0A447722 for ; Tue, 18 Aug 2020 16:47:59 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id D659C206B5 for ; Tue, 18 Aug 2020 16:47:58 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="ewJiuwSu" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D659C206B5 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Received: from localhost ([::1]:50246 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k84mE-0003kW-26 for patchwork-qemu-devel@patchwork.kernel.org; Tue, 18 Aug 2020 12:47:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47568) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k84k3-0008IA-21 for qemu-devel@nongnu.org; Tue, 18 Aug 2020 12:45:43 -0400 Received: from us-smtp-2.mimecast.com ([207.211.31.81]:53695 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 1k84k0-0007K2-K3 for qemu-devel@nongnu.org; Tue, 18 Aug 2020 12:45:42 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1597769139; 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=vKLIPhy5GVdSY6QQuAlmIzHHGk29c38mSEWX/QsQYeo=; b=ewJiuwSu0UcOuzo44xuRwMqEFkVIMKbE1v4BFsmAU0eLtGHGYHtuQXTm3J//tzzZK7AYgs sJYjApnVaydceNUHNDtcJbJDPL0QN6GF7nIGRTQCnUU/yw02jrOR3ubCiMwaxN5BWHStMc bwCovnE/a27KBPgQ5fP83Bp5LinDhO0= Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-453-XsrezvuMM7uEK3LT1TFWYA-1; Tue, 18 Aug 2020 12:45:37 -0400 X-MC-Unique: XsrezvuMM7uEK3LT1TFWYA-1 Received: by mail-wr1-f70.google.com with SMTP id o10so8445044wrs.21 for ; Tue, 18 Aug 2020 09:45:37 -0700 (PDT) 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=vKLIPhy5GVdSY6QQuAlmIzHHGk29c38mSEWX/QsQYeo=; b=lqEhsVhcJKcVhEWeMaWKCoe9dsPoJ63+SWiGuE4fCBj4ge820qwNcZz4Rzo8PiYwWw guSGPR8H3CWg50Kc4Hy7erhtovbij8K4P+NCzRe8b3pXuIFfv2BwYwtCMFRS0r689UJe /ysxlTe9wCAdfM9s/zjclvXjqblfF+IGdgDvHwEATuzu7rZcXtlPMAi+1/TcmRynXih7 lRgbZS5lzz7dwg8iLNMcuv2YBA2YIkhHdpITfQyRwnajSrhWnHQEyygnqIM35eYGChV5 ptQfDqgUmH3u+L/NB7NDh9WbxdW7HGdcfmDols1aN1r4KPqp/Odw+qcWjkMJzVibVG7F 9ZEA== X-Gm-Message-State: AOAM531AOX+xotGHUZFQNgMPdQBfnktFOndBJKw8IcFdV4PT8hE5cb0z pID2H5yw5S4bziRrjJrzOovb+8X9hhKkD5QAqjoJFKjfd+GOvaiPQcMDnu52/ASglDAoQVuUKRB lIIgKyZWUMJcGBpE= X-Received: by 2002:a05:600c:220b:: with SMTP id z11mr764381wml.48.1597769136679; Tue, 18 Aug 2020 09:45:36 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxiL5/UQH87wOP2mmlV027f3wQE8zh2zZkVvJskAzWJ3zI0jKiVpGe4Ip2julDo1gKLVxeZpQ== X-Received: by 2002:a05:600c:220b:: with SMTP id z11mr764365wml.48.1597769136531; Tue, 18 Aug 2020 09:45: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 b142sm642744wmd.19.2020.08.18.09.45.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2020 09:45:36 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [RFC PATCH v3 5/5] block/nvme: Use qemu_vfio_pci_init_msix_irqs() to initialize our IRQ Date: Tue, 18 Aug 2020 18:45:09 +0200 Message-Id: <20200818164509.736367-6-philmd@redhat.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200818164509.736367-1-philmd@redhat.com> References: <20200818164509.736367-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 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/18 08:01:06 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: Fam Zheng , Kevin Wolf , qemu-block@nongnu.org, Max Reitz , Alex Williamson , Stefan Hajnoczi , =?utf-8?q?Philippe_Mathieu-Daud?= =?utf-8?q?=C3=A9?= Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" Instead of initializing one MSIX IRQ with the generic qemu_vfio_pci_init_irq() function, use the MSIX specific one which will allow us to use multiple IRQs. For now we provide an array of a single IRQ. Signed-off-by: Philippe Mathieu-Daudé --- block/nvme.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/block/nvme.c b/block/nvme.c index cdd16d451e7..cb86ba2518d 100644 --- a/block/nvme.c +++ b/block/nvme.c @@ -789,8 +789,8 @@ static int nvme_init(BlockDriverState *bs, const char *device, int namespace, } } - ret = qemu_vfio_pci_init_irq(s->vfio, s->irq_notifier, - VFIO_PCI_MSIX_IRQ_INDEX, errp); + ret = qemu_vfio_pci_init_msix_irqs(s->vfio, s->irq_notifier, + MSIX_IRQ_COUNT, errp); if (ret) { goto out; }