From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 5782EA04DC; Mon, 19 Oct 2020 22:38:56 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 5F5D3E24A; Mon, 19 Oct 2020 22:38:53 +0200 (CEST) Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2112.outbound.protection.outlook.com [40.107.92.112]) by dpdk.org (Postfix) with ESMTP id CEC1BBE41; Mon, 19 Oct 2020 22:38:49 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AwY9F2w6Vboe5hcYTJ7div1lGE0LCJLmUk/n9lfvBsCA6yo8sevyT7tr8CTElkuobXjx60xuDe3oFDHjwD8cq+J6kkyp75LNCV9xAbCHJakafIqbcfPzzp1//dRRoOXkKdS5s5VzhNoVLYgFpoJKG38yEMSFr38N+SHJiXIt4W/+7/icJYUn0v32OzwjqlHkSm0J+9uBYbgtlqtgNBOLNgGlW5NErlRHcXlMPJb+HhxsoncgfvQMbZVqjxFXkUvl5US9vXXNcc+c10Rb3sKL0PTLk9eHJztXG4nDVpUZs8bY22Y/GT3HAlBo/H2pALTxN/9zS52AaF04r7I/w2oUxQ== 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=DJo+Y8jMk/snoBWEEv5ez8WNirYqWLFKPVVtSjQ43bc=; b=ImZaVgdvomdA8ajpmAVkD1m9/rm12NxO3eZNnS1f7AQ5s6br+fR6Eoe51ZmkoZK7pPSiwlbDGIRJ5vFP0ceTGa18Bu96vb6Um/uj/qrXVDSpuT7T3SlFripMboW6bTcgFxdNoJwQQ8T+2DXkEMbFfcuPzCnjrZD6IGvFlJMltUyr07UW7oVU8j15WwbehEya8aVKrquLA7VEAD1m0JJs+MNT1WXxfxwxUqJCz85PUznnco8EpALgggVbevSnbn8Kw/k1jV/69iDKAeh8f42MRIaDtZwtLe5UlCs5cd3n1troNAbF+PMAsSlVM1F/RcX5PVd7RGoULqFPITiVEK6D7w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microsoft.com; dmarc=pass action=none header.from=microsoft.com; dkim=pass header.d=microsoft.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=DJo+Y8jMk/snoBWEEv5ez8WNirYqWLFKPVVtSjQ43bc=; b=eR/dHcpYRhUE90aBHP62ri6PLqwvQys9LhwJHy2gbUKKR9CYvwRxpySyiH6NWWLfAr0ljBY/c62pT4J6cKr8cscvidn15ElxZgrFiKvC1qRDKoO3mHCchgUm8svuyZljGRZRMUWh0kasjkRcE9L+PwmkTOPsF+pnJ6zYAwkLkq8= Received: from BN8PR21MB1155.namprd21.prod.outlook.com (2603:10b6:408:73::10) by BN6PR21MB0273.namprd21.prod.outlook.com (2603:10b6:404:9b::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3499.4; Mon, 19 Oct 2020 20:38:47 +0000 Received: from BN8PR21MB1155.namprd21.prod.outlook.com ([fe80::ccf4:7bc9:ac7a:1a19]) by BN8PR21MB1155.namprd21.prod.outlook.com ([fe80::ccf4:7bc9:ac7a:1a19%3]) with mapi id 15.20.3499.003; Mon, 19 Oct 2020 20:38:47 +0000 From: Long Li To: Matan Azrad , Long Li , Matan Azrad CC: "dev@dpdk.org" , "stable@dpdk.org" Thread-Topic: [PATCH] net/vdev_netvsc: Prevent alarm lost on failed device probe Thread-Index: AQHWoyoSSzzOBT3KK0CKZ8fVsWTK46mc+vKAgAJshoA= Date: Mon, 19 Oct 2020 20:38:47 +0000 Message-ID: References: <1602790385-13032-1-git-send-email-longli@linuxonhyperv.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_ActionId=99fd5064-0836-40ac-9406-14ab91a2ce9f; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_ContentBits=0; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Enabled=true; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Method=Standard; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Name=Internal; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SetDate=2020-10-19T20:32:01Z; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SiteId=72f988bf-86f1-41af-91ab-2d7cd011db47; authentication-results: nvidia.com; dkim=none (message not signed) header.d=none;nvidia.com; dmarc=none action=none header.from=microsoft.com; x-originating-ip: [67.168.111.68] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 6d67e583-6c74-4d21-910f-08d8746efac1 x-ms-traffictypediagnostic: BN6PR21MB0273: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:747; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: tKlwSGcrUdRRT99FboLRC/yf0s9t58Tr+ROZGqAbBTddv6aecYVoS7kigGVQuWmervu5yHe8ajRCy4Xs4GVWeUVc0pagDdO/v48ZRNCLpk+Ut4I0xttMjvgMEUNaLQQMni1c5FuOGULVjdhMZH+R8RpkSe10PzL6DA6qlKvlp60BvDxnjhg896l9PT/eEV7q5jpNROnetVnTroe7xwf/d2bBT3OOADDr3NIxHVRVTGqwixdGayWVCPHSUJqOhZZh8+jSVjt0zvTXANVS0sA3kYi37slgrM8K1Z8LtQYUWwc96Mh0G+EZab4QN+3NpzOUxUFy30HbDhEAgErVSGizZw== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BN8PR21MB1155.namprd21.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(376002)(346002)(39860400002)(136003)(396003)(6506007)(82960400001)(316002)(2906002)(9686003)(478600001)(4326008)(82950400001)(8936002)(7696005)(8676002)(33656002)(5660300002)(55016002)(10290500003)(86362001)(52536014)(76116006)(66556008)(66446008)(64756008)(66946007)(66476007)(83380400001)(186003)(26005)(54906003)(8990500004)(71200400001)(110136005); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: JXudeCxL8yn5eHyQ2ql8SaYqaqfooAlLuhv/Zg4tg1jyDeZ4vdnRjch/K+2G4PNs1yY/EE6Jwka56YZ3m2nqk6RLVWmInLgD8sA88xCf1HoLam5mmIyjEcpp+5BcktdIxTLgngzy7wafpfX5FQ9QGJ7ii0S+tZAv9pk15dT8TPi1D4iCmnXC6KQKv40samdYz/fKHlKmRONuym4dWPqCO6HwD/JzZEGU7pzfQ8sv2H+yQM0wasxPsIYMpMg6/hg1WNN8Kq+A0vDmy3ZLILYDxg3Sj8CvKoJAriT13nAnZfWf6Pjg4a+bd+smk1DA++Ipbay692acVxqVANFRw1dmgF2SOCHuCZfv7r+9JCRu+/4yEiyuFJ26D6kz8lo425CPRj66tTNI1g8F1nT5FLoKJOvaENzysghHO1gxT87a3/XvUA4qHGL6/c39nsnUoDFfZU2wIB15o1yr+XZ2cFeJPtecsWXaK87UV8Jxw4XSg5tPpBKPpAGY+GVgHDudqAHgJgdTm9/+ere4uEt9hVoMVOyAJWzKQemvN68/yMfN8ZL7F91ZMn0Kao7Wvp10PDNaHWyKiFEpm2iEcXpp4gtnDhnccEqufqT6A1nGNpVEBHCOqATbeJcl1NIijSTkuJcCw0awE2fKGWpyCjtJ4W7D4Q== x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN8PR21MB1155.namprd21.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6d67e583-6c74-4d21-910f-08d8746efac1 X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Oct 2020 20:38:47.3850 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: mdtGqt4i2bPUAEWkqfhlhwjR7v1+jCqSsIhGLzyEaWNM+eUVKEKBIsI4dC6I8cTm0Zb0IFQjDrzcYDS7wzqErw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR21MB0273 Subject: Re: [dpdk-dev] [PATCH] net/vdev_netvsc: Prevent alarm lost on failed device probe X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" > Subject: RE: [PATCH] net/vdev_netvsc: Prevent alarm lost on failed device > probe >=20 >=20 >=20 > From: Long Li > > If a device probe fails, the alarm is canceled and will no longer work > > for previously probed devices. > > > > Fix this by introducing a flag to track if alarm has been set. Because > > it's possible that an alarm is triggered while probing is in progress > > that may modify vdev_netvsc_ctx_list, introduce a lock to protect it. > > > > Cc: stable@dpdk.org > > Signed-off-by: Long Li > > --- > > drivers/net/vdev_netvsc/vdev_netvsc.c | 41 > > +++++++++++++++++++++++++---------- > > 1 file changed, 30 insertions(+), 11 deletions(-) > > > > diff --git a/drivers/net/vdev_netvsc/vdev_netvsc.c > > b/drivers/net/vdev_netvsc/vdev_netvsc.c > > index be8f19c..bd7e308 100644 > > --- a/drivers/net/vdev_netvsc/vdev_netvsc.c > > +++ b/drivers/net/vdev_netvsc/vdev_netvsc.c > > @@ -76,6 +76,11 @@ struct vdev_netvsc_ctx { > > /** Context list is common to all driver instances. */ static > > LIST_HEAD(, > > vdev_netvsc_ctx) vdev_netvsc_ctx_list =3D > > LIST_HEAD_INITIALIZER(vdev_netvsc_ctx_list); > > +/* Lock to protect concurrent accesses to vdev_netvsc_ctx_list */ > > +static rte_rwlock_t vdev_netvsc_ctx_list_lock; > > + > > +/* Flag to track if alarm has been set */ static int > > +vdev_netvsc_alarm_set; > > > > /** Number of entries in context list. */ static unsigned int > > vdev_netvsc_ctx_count; @@ -454,19 +459,26 @@ static LIST_HEAD(, > > vdev_netvsc_ctx) vdev_netvsc_ctx_list =3D > > struct vdev_netvsc_ctx *ctx; > > int ret; > > > > + rte_rwlock_write_lock(&vdev_netvsc_ctx_list_lock); > > LIST_FOREACH(ctx, &vdev_netvsc_ctx_list, entry) { > > ret =3D vdev_netvsc_foreach_iface(vdev_netvsc_device_pr= obe, 0, > > ctx); > > if (ret < 0) > > break; > > } > > - if (!vdev_netvsc_ctx_count) > > + rte_rwlock_write_unlock(&vdev_netvsc_ctx_list_lock); > > + > > + if (!vdev_netvsc_ctx_count) { > > + vdev_netvsc_alarm_set =3D 0; > > return; > > + } > > + > > ret =3D rte_eal_alarm_set(VDEV_NETVSC_PROBE_MS * 1000, > > vdev_netvsc_alarm, NULL); > > if (ret < 0) { > > DRV_LOG(ERR, "unable to reschedule alarm callback: %s", > > rte_strerror(-ret)); > > + vdev_netvsc_alarm_set =3D 0; > > } > > } > > > > @@ -698,34 +710,41 @@ static LIST_HEAD(, vdev_netvsc_ctx) > > vdev_netvsc_ctx_list =3D > > " device."); > > goto error; > > } > > - rte_eal_alarm_cancel(vdev_netvsc_alarm, NULL); > > + > > + rte_rwlock_write_lock(&vdev_netvsc_ctx_list_lock); > > /* Gather interfaces. */ > > ret =3D vdev_netvsc_foreach_iface(vdev_netvsc_netvsc_probe, 1, > name, > > kvargs, specified, &matched); > > if (ret < 0) > > - goto error; > > + goto error_unlock; > > if (specified && matched < specified) { > > if (!force) { > > DRV_LOG(ERR, "Cannot find the specified netvsc = device"); > > - goto error; > > + goto error_unlock; > > } > > /* Try to force probing on non-netvsc specified device.= */ > > if (vdev_netvsc_foreach_iface(vdev_netvsc_netvsc_probe,= 0, > name, > > kvargs, specified, &match= ed) < 0) > > - goto error; > > + goto error_unlock; > > if (matched < specified) { > > DRV_LOG(ERR, "Cannot find the specified device"= ); > > - goto error; > > + goto error_unlock; > > } > > DRV_LOG(WARNING, "non-netvsc device was probed as netvs= c"); > > } > > - ret =3D rte_eal_alarm_set(VDEV_NETVSC_PROBE_MS * 1000, > > + if (!vdev_netvsc_alarm_set) { > > + ret =3D rte_eal_alarm_set(VDEV_NETVSC_PROBE_MS * 1000, > > vdev_netvsc_alarm, NULL); > > - if (ret < 0) { > > - DRV_LOG(ERR, "unable to schedule alarm callback: %s", > > - rte_strerror(-ret)); > > - goto error; > > + if (ret < 0) > > + DRV_LOG(ERR, "unable to schedule alarm callback= : %s", > > + rte_strerror(-ret)); > > + else > > + vdev_netvsc_alarm_set =3D 1; > > } > > + > > +error_unlock: > > + rte_rwlock_write_unlock(&vdev_netvsc_ctx_list_lock); > > + > > error: > > if (kvargs) > > rte_kvargs_free(kvargs); > > -- >=20 > Hi >=20 > Nice direction. >=20 > As I understand from your patch it looks like you want to add support for= the > vdev_netvsc driver itself to be hot-plug aware - so it can be probed\remo= ved > in run-time (even after EAL initialization). > So I think the title and commit log should be converted to this: > net/vdev_netvsc: support driver instance hot-plug ... Hi Matan, Actually I was not trying to add support for hot-plug (although it made hal= f way there). The problem I'm trying to solve is on a system with multiple vdev_netvsc in= terfaces. For example, if the system has eth1, eth2 .. eth10. What if the p= robing on eth1 to eth9 succeed, but on eth10 fails? Current behavior is tha= t we can still have DPDK run on eth1 to eth9, but without any alarms. Becau= se the alarm is canceled while trying to probing eth10. Then once eth1 to e= th9 lost VF, they won't get VF back because we don't have any alarms. Long >=20 > More things: > Look on convention of the file - blank line only after variables declarat= ions > inside the blocks. >=20 > Need to adjust also vdev_netvsc_vdev_remove to the feature. >=20 > Matan