From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <dev-bounces@dpdk.org>
Received: from dpdk.org (dpdk.org [92.243.14.124])
	by inbox.dpdk.org (Postfix) with ESMTP id 32C21A0471
	for <public@inbox.dpdk.org>; Mon, 15 Jul 2019 07:35:31 +0200 (CEST)
Received: from [92.243.14.124] (localhost [127.0.0.1])
	by dpdk.org (Postfix) with ESMTP id 44935325F;
	Mon, 15 Jul 2019 07:35:30 +0200 (CEST)
Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com
 [67.231.148.174]) by dpdk.org (Postfix) with ESMTP id B85E13256;
 Mon, 15 Jul 2019 07:35:27 +0200 (CEST)
Received: from pps.filterd (m0045849.ppops.net [127.0.0.1])
 by mx0a-0016f401.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id
 x6F5ZK4m014239; Sun, 14 Jul 2019 22:35:20 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com;
 h=from : to : cc :
 subject : date : message-id : references : in-reply-to : content-type :
 content-transfer-encoding : mime-version; s=pfpt0818;
 bh=MAZtxIvZ1wv+sFVNHCefAcDRFJa9sgeHwLIvo7NAtJE=;
 b=Pia1qytPnO6EGjKo4iurnx1U89myiOuHgpzXgMjHe0JXh+RntbE8y5dQAuFJXib0+RJW
 NRvoAwxn9S/m6v7P0ozcLbCKHoIAdwVx29Bzjfjs2D7fNID+kluZ499b9CCgm0m+BLn5
 kVu4JqjA5cfuPbwP9NO+W9DZLCfjBytm8a89Td6mo20DfxEQrNKZA/da5sQ5NAIW8w0k
 8PpsyuMphQlO/kQYHwojV4cuygw4GOZ8DgdT71nY4y/YFifqoXkcKAgFubgQ/SGPTDt4
 UldbMHJsTDigX+3VhYlikAA6vbL31Vnj58bCHIISF4nB/O2D1yeyq8hT/NA24sMqX4cP RA== 
Received: from sc-exch03.marvell.com ([199.233.58.183])
 by mx0a-0016f401.pphosted.com with ESMTP id 2tqcnpp71k-2
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT);
 Sun, 14 Jul 2019 22:35:20 -0700
Received: from SC-EXCH04.marvell.com (10.93.176.84) by SC-EXCH03.marvell.com
 (10.93.176.83) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Sun, 14 Jul
 2019 22:35:19 -0700
Received: from NAM01-BN3-obe.outbound.protection.outlook.com (104.47.33.52) by
 SC-EXCH04.marvell.com (10.93.176.84) with Microsoft SMTP Server
 (TLS) id
 15.0.1367.3 via Frontend Transport; Sun, 14 Jul 2019 22:35:19 -0700
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=OUrsGjvEXv5ATMaLLALBGkubZvEpdNO1jUe4m6HEOExS3tGrMUeIU5nobq9kkpFr/Wle7s1D+V4lXivwRoObUlgmYtwfpUNWpUotgtLzcirp5kPklh+IyX85zrgkJTTXVLKiwRS2RUTMWxMeKVWT7f/cgLOT2m+V6mc/HxwXEJGGpMM7wiDhBL9no+3rGGHwTouXP7opm0LiDFZVSDw/eL2MEOLJbA4HVLa+K3PyPquAUJHz6UPf08qrhmn6xFSgApT7reE8EZEqK+6oOeLQ6c2gehbuL7PvtDBGsYcG7qrRn8dBN32DzAP6BOi9yM3R+OK0NJCBm9Mo92kZPzXsAw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; 
 s=arcselector9901;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=MAZtxIvZ1wv+sFVNHCefAcDRFJa9sgeHwLIvo7NAtJE=;
 b=a6d4mYQgCGz8RhThAgQO+pad3+IwsBlJivgAj3DN0IzV0Qbcmptmd1MNVuD4oxx3AR5haUlBED0JPaiPiAfm6NWyWtvcmabF0nlZ6htEbC/rWnKyujha9DKlLaCN1+b0TXGIyH4kJjKQwjT/2WXyWeuOLLoTj4+j4Otv+UJOFZrJLeeYwfl6v98heKXAr0ghnEavkYMroKO1zP4/KzwJPGEPvjCuA0vIDxGj0HZPXFL9VuRnsybDoXeRE0jcM7sjaFsOyuG7qq2BE17HjWizinec59uOFmIahBjPLdBqFyuLWrsZZ2H8CmCc+6QlRBhX4PP/AGimfz8e7AVCD87nRQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1;spf=pass
 smtp.mailfrom=marvell.com;dmarc=pass action=none
 header.from=marvell.com;dkim=pass header.d=marvell.com;arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=marvell.onmicrosoft.com; s=selector2-marvell-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=MAZtxIvZ1wv+sFVNHCefAcDRFJa9sgeHwLIvo7NAtJE=;
 b=qbBVKcojzK4eZUBy8qpNjiNJTpf2EhzWqHAhZ4nOJo+uqyrda3t0v4MR3rHEXZWcLnncfqRnjTRE4TsyQJjsUkaHCfM44cMtLYULJTFhJSGWFIQ7iyU2hKDGbFC1o+vEnWwFjj0QCQpDkArUfhIgu2CESHlEVK3MHbx80pjPmbQ=
Received: from BYAPR18MB2424.namprd18.prod.outlook.com (20.179.91.149) by
 BYAPR18MB2453.namprd18.prod.outlook.com (20.179.92.22) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.2073.14; Mon, 15 Jul 2019 05:35:14 +0000
Received: from BYAPR18MB2424.namprd18.prod.outlook.com
 ([fe80::2d42:12b6:aa2e:2862]) by BYAPR18MB2424.namprd18.prod.outlook.com
 ([fe80::2d42:12b6:aa2e:2862%4]) with mapi id 15.20.2073.012; Mon, 15 Jul 2019
 05:35:14 +0000
From: Jerin Jacob Kollanukkaran <jerinj@marvell.com>
To: Thomas Monjalon <thomas@monjalon.net>, "Hyong Youb Kim (hyonkim)"
 <hyonkim@cisco.com>
CC: David Marchand <david.marchand@redhat.com>, "dev@dpdk.org" <dev@dpdk.org>, 
 "anatoly.burakov@intel.com" <anatoly.burakov@intel.com>,
 "alex.williamson@redhat.com" <alex.williamson@redhat.com>,
 "maxime.coquelin@redhat.com" <maxime.coquelin@redhat.com>,
 "stephen@networkplumber.org" <stephen@networkplumber.org>,
 "igor.russkikh@aquantia.com" <igor.russkikh@aquantia.com>,
 "pavel.belous@aquantia.com" <pavel.belous@aquantia.com>,
 "allain.legacy@windriver.com" <allain.legacy@windriver.com>,
 "matt.peters@windriver.com" <matt.peters@windriver.com>,
 "ravi1.kumar@amd.com" <ravi1.kumar@amd.com>,
 Rasesh Mody <rmody@marvell.com>, Shahed Shaikh <shshaikh@marvell.com>,
 "ajit.khaparde@broadcom.com" <ajit.khaparde@broadcom.com>,
 "somnath.kotur@broadcom.com" <somnath.kotur@broadcom.com>,
 "hemant.agrawal@nxp.com" <hemant.agrawal@nxp.com>,
 "shreyansh.jain@nxp.com" <shreyansh.jain@nxp.com>,
 "wenzhuo.lu@intel.com" <wenzhuo.lu@intel.com>, "mw@semihalf.com"
 <mw@semihalf.com>, "mk@semihalf.com" <mk@semihalf.com>,
 "gtzalik@amazon.com" <gtzalik@amazon.com>,
 "evgenys@amazon.com" <evgenys@amazon.com>, "John Daley
 (johndale)" <johndale@cisco.com>, "qi.z.zhang@intel.com"
 <qi.z.zhang@intel.com>, "xiao.w.wang@intel.com" <xiao.w.wang@intel.com>,
 "xuanziyang2@huawei.com" <xuanziyang2@huawei.com>,
 "cloud.wangxiaoyun@huawei.com" <cloud.wangxiaoyun@huawei.com>,
 "zhouguoyang@huawei.com" <zhouguoyang@huawei.com>, "beilei.xing@intel.com"
 <beilei.xing@intel.com>, "jingjing.wu@intel.com" <jingjing.wu@intel.com>,
 "qiming.yang@intel.com" <qiming.yang@intel.com>,
 "konstantin.ananyev@intel.com" <konstantin.ananyev@intel.com>,
 "alejandro.lucero@netronome.com" <alejandro.lucero@netronome.com>,
 "arybchenko@solarflare.com" <arybchenko@solarflare.com>,
 "tiwei.bie@intel.com" <tiwei.bie@intel.com>, "zhihong.wang@intel.com"
 <zhihong.wang@intel.com>, "yongwang@vmware.com" <yongwang@vmware.com>,
 "stable@dpdk.org" <stable@dpdk.org>, Nithin Kumar Dabilpuram
 <ndabilpuram@marvell.com>
Thread-Topic: [dpdk-dev] [PATCH] vfio: fix interrupts race condition
Thread-Index: AQHVNxvP0YZCfMFbb0SHaZ04OkExBqbEXHuAgAU6TYCAAGcUgIABMUrA
Date: Mon, 15 Jul 2019 05:35:14 +0000
Message-ID: <BYAPR18MB2424568FDD38F18548CC5B9CC8CF0@BYAPR18MB2424.namprd18.prod.outlook.com>
References: <1562071706-11009-1-git-send-email-david.marchand@redhat.com>
 <1796500.5oFe8j95cd@xps>
 <MWHPR11MB18392141DEEF5C77A761FAD0BFCC0@MWHPR11MB1839.namprd11.prod.outlook.com>
 <4647179.CTOrK8BQiK@xps>
In-Reply-To: <4647179.CTOrK8BQiK@xps>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [14.140.231.66]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 79dbddd2-f02f-4eba-9ddd-08d708e63650
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:BYAPR18MB2453; 
x-ms-traffictypediagnostic: BYAPR18MB2453:
x-microsoft-antispam-prvs: <BYAPR18MB24532F58BB34FE9623884C93C8CF0@BYAPR18MB2453.namprd18.prod.outlook.com>
x-ms-oob-tlc-oobclassifiers: OLM:10000;
x-forefront-prvs: 00997889E7
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(4636009)(136003)(396003)(366004)(39850400004)(346002)(376002)(189003)(199004)(478600001)(7696005)(68736007)(55016002)(66946007)(76116006)(66446008)(64756008)(66476007)(5660300002)(6436002)(66556008)(6506007)(6246003)(4326008)(7406005)(7416002)(107886003)(99286004)(8936002)(9686003)(316002)(2906002)(81156014)(81166006)(53936002)(229853002)(6116002)(3846002)(52536014)(25786009)(486006)(446003)(11346002)(7736002)(305945005)(476003)(102836004)(8676002)(45080400002)(186003)(256004)(86362001)(55236004)(33656002)(74316002)(76176011)(54906003)(66066001)(110136005)(14454004)(71200400001)(71190400001)(14444005)(26005);
 DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR18MB2453;
 H:BYAPR18MB2424.namprd18.prod.outlook.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:1; 
received-spf: None (protection.outlook.com: marvell.com does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: Ay6QuXbdDGHWbr7/cuPTRKY1wHwKx5lhNwxDMsNRTt4CQdTAAWcM4VIeQJLpGyYlqT3b6hIdQWng7LIZgmChiSIXk7dzUqOlgj4p/q+PjCzQhYLhHtxnCcQp+8GV90OBrBC9z1wUc94jBqGfx7ZS0t4RXYXKY02q5P0uc4a4xxM4iwZYkBWVLFYxPZ2mjbkFmC6lhMcNV2DCCoI9omiGzU024ChsPzS+5qEOUlIxIgqYYgq2zl6F3juUtI9wzPq34iYIc4D+4W1CCEVxL5c2Ws8iZPkgq82d/UJhLkDQAaviZuc7PzHmMqZSoRfBkZHh7ObUG1x7WPiHm8rPiuc27H9QsQg6mUS6OPq8F4lfFGA9MVMSR1V0R8eOL5I7uPnYA5zL5muvhlPzN+DiQd36k4QurKSMsuNWkCMpgA/6Y4s=
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-Network-Message-Id: 79dbddd2-f02f-4eba-9ddd-08d708e63650
X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Jul 2019 05:35:14.0229 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 70e1fb47-1155-421d-87fc-2e58f638b6e0
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: jerinj@marvell.com
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR18MB2453
X-OriginatorOrg: marvell.com
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:5.22.84,1.0.8
 definitions=2019-07-15_01:2019-07-12,2019-07-15 signatures=0
Subject: Re: [dpdk-dev] [PATCH] vfio: fix interrupts race condition
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
Errors-To: dev-bounces@dpdk.org
Sender: "dev" <dev-bounces@dpdk.org>

> > >
> > > This is a real bug which should be fixed in this release.
> > > As the patch is quite big and needs a strong validation, I prefer
> > > merging it quickly to give a lot of time before releasing 19.08-rc2.
> > > The maintainers of all concerned PMDs are Cc.
> > > Please make sure the interrupts are still working well with VFIO.
> > >
> > > Applied, thanks
> > >
> >
> > [Apologies in advance if email format gets messed up. Forced to use
> > outlook for the first time..]
> >
> > Hi,
> >
> > This commit breaks MSI-X + rxq interrupts. I think others are seeing
> > the same error?
> >
> > sudo ~/dpdk/examples/l3fwd-power/build/l3fwd-power \ -c 0x1e -n 4 -w
> > 0000:1a:00.0 --log-level=3Dpmd,debug -- -p 0x1 -P --config
> "(0,0,2),(0,1,3),(0,2,4)"
> > [...]
> > EAL: Error enabling MSI-X interrupts for fd 35
> >
> > A rough sequence of events goes like this. The above test is using 3
> > rxqs (3 interrupts).
> >
> > 1. During probe, pci_vfio_setup_interrupts() runs.
> > This now does ioctl(VFIO_DEVICE_SET_IRQS) for the 1st efd
> > (intr_handle->fd).
> >
> > ioctl does:
> > - pci_enable_msix(1 vector) because this is the first time enabling
> >   interrupts.
> > - request_irq(vector 0)
> >
> > 2. App configs
> > The app sets port_conf.intr_conf.rxq=3D1, configs 3 rxqs, etc.
> >
> > 3. rte_eth_dev_start()
> > PMD calls:
> > - rte_intr_efd_enable()
> >   This creates 3 efds (intr_handle->nb_efd =3D 3).
> > - rte_intr_enable() =3D> vfio_enable_msix()
> >   This does ioctl(VFIO_DEVICE_SET_IRQS) for the 3 efds.
> >
> > ioctl now needs to request_irq() for vectors 1, 2, 3 for the 3 new
> > efds. It does not do another pci_enable_msix() as it has been done
> > earlier. Before calling request_irq(), it sees that only 1 vector was
> > enabled in earlier pci_enable_msix(), so it fails with EINVAL.
> >
> > We would need pci_enable_msix(4 vectors) for this to work
> > (intr_handle->fd + 3 efds).
> >
> > Prior to this patch, VFIO_DEVICE_SET_IRQS is done only in
> > vfio_enable_msix(). So, ioctl ends up doing pci_enable_msix(4 vectors)
> > and request_irq() for each of the 4 efds, which completes
> > successfully.
> >
> > Not an expert in this area.. Perhaps, defer enabling 1st efd
> > (intr_handle->fd) until the first invocation of vfio_enable_msix(), so
> > it knows the app wants to use 4 vectors in total?
> >
> > Also, vfio_disable_msix() looks a bit wrong.
> >
> >         irq_set.flags =3D VFIO_IRQ_SET_DATA_NONE |
> VFIO_IRQ_SET_ACTION_TRIGGER;
> >         irq_set.index =3D VFIO_PCI_MSIX_IRQ_INDEX;
> >         irq_set.start =3D RTE_INTR_VEC_RXTX_OFFSET;
> >         irq_set.count =3D intr_handle->nb_efd;
> >
> > This tells vfio-pci to simulate interrupts by triggering efds? To
> > free_irq() specific efds, I think we need DATA_EVENTFD and set fd =3D
> > -1.
> >
> > flags =3D DATA_EVENTFD | ACTION_TRIGGER
> > data =3D [fd(-1), fd(-1), ...]
> >
> > I have not tested this part myself yet.


We do see the following failure[1] on octeontx2 PMD with this patch.
We will try to find a fix.

        irq_set =3D (struct vfio_irq_set *)irq_set_buf;
        irq_set->argsz =3D len;
        irq_set->start =3D 0;
        irq_set->count =3D intr_handle->max_intr;
        irq_set->flags =3D VFIO_IRQ_SET_DATA_EVENTFD |
                        VFIO_IRQ_SET_ACTION_TRIGGER;
        irq_set->index =3D VFIO_PCI_MSIX_IRQ_INDEX;

        fd_ptr =3D (int32_t *)&irq_set->data[0];
        for (i =3D 0; i < irq_set->count; i++)
                fd_ptr[i] =3D -1;

        rc =3D ioctl(intr_handle->vfio_dev_fd, VFIO_DEVICE_SET_IRQS, irq_se=
t);
        if (rc)
                otx2_err("Failed to set irqs vector rc=3D%d", rc);
	^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^[1]		=09
		=09
			=09


>=20
> Thanks for your detailed report Hyong.
> Would you be able to propose a fix?
>=20