From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr0-f193.google.com (mail-wr0-f193.google.com [209.85.128.193]) by dpdk.org (Postfix) with ESMTP id CA34E5A3E for ; Wed, 12 Jul 2017 10:20:49 +0200 (CEST) Received: by mail-wr0-f193.google.com with SMTP id z45so4038537wrb.2 for ; Wed, 12 Jul 2017 01:20:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=e9G52Y5IV8u8rrNZqSoFyaO2uVis1e9+KxgxVfQyVa0=; b=oQtSw5z+XsHtMNNBeSGawOk4poqC/j1AHny0QXZ5M56lCtjleJT8C2ZZX3Q/zAUu/V KHRVLIq0SqBoPpxlxB2LFqfTuxpXTkOj/Xny7IE9zBdKeFEgS9M7VgwL5QYOzPd0zHrC 4YwVM4vj5rtg4vn7n0Uzc1dByUqBC/EnPswrrd9PCJb9jpqJ/UQkvLMxfgySukyK+3uQ ndRTJHXDvmqwz/AwJ6MWH6RGQG/78kccJxItPvbyz8+1yp7SAqUQ/Rz1EA2m+uM06g7m vHKZG6EWvqZbi/kPNV0YS0LkrYucHueedyD3iRCkOQGLi/72EEgKPMrOxcBHVjgAFDd6 LMVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=e9G52Y5IV8u8rrNZqSoFyaO2uVis1e9+KxgxVfQyVa0=; b=Iyay6RmlQUGH5pBI5o7nANsLxtl7tnPO+KGQmt/kdaj2Z/ADPSTVwonkyOZMwqAMCu BkTNXEQuIk29oQ4xa0xlsPFhXg51ASpuKr+YlRaAKkzh2LAvBLEW21iNCj1POEyLOfLJ WnN54NsN7wiQmKJ8CrY5X/IbxVc73rKBEeEx4eAmxfIJ0BnRYeOlNcJTvKp+hacdWq94 IlYMlXZH+kGxt7FN/hH33wpxg/JvNWLmLghsPnZeARluyHl1qAreV6/ihJDZhJGxPK4Q 3T/VY0glgyzSFVCjyqfx78c5guEYI+Bq8Y17Z96h9od+deZLLbaFEP7G2SJiln4nCj86 ihzw== X-Gm-Message-State: AIVw1134M1Uvf2xUG0Vnx2xDDLzDv7LFA3Zb9BRwm8r4sxsOfDyhjBJT FXhXWXRhldt5P7J4h60HstQB0uPRPw== X-Received: by 10.28.94.13 with SMTP id s13mr1616059wmb.33.1499847649331; Wed, 12 Jul 2017 01:20:49 -0700 (PDT) MIME-Version: 1.0 Sender: jblunck@gmail.com Received: by 10.28.45.210 with HTTP; Wed, 12 Jul 2017 01:20:48 -0700 (PDT) In-Reply-To: <9885513c0b9107505bc8c61a40a1236533e9b7b4.1499814957.git.gaetan.rivet@6wind.com> References: <9885513c0b9107505bc8c61a40a1236533e9b7b4.1499814957.git.gaetan.rivet@6wind.com> From: Jan Blunck Date: Wed, 12 Jul 2017 04:20:48 -0400 X-Google-Sender-Auth: fK3QbRbtiEpS85LE5t1TpxBsQ38 Message-ID: To: Gaetan Rivet Cc: dev Content-Type: text/plain; charset="UTF-8" Subject: Re: [dpdk-dev] [PATCH v3 3/8] devargs: introduce insert function 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: , X-List-Received-Date: Wed, 12 Jul 2017 08:20:50 -0000 On Tue, Jul 11, 2017 at 7:25 PM, Gaetan Rivet wrote: > Some buses will operate either in whitelist or blacklist mode. > This mode is currently passed down by the rte_eal_devargs_add function > with the devtype argument. > > When inserting devices using the hotplug API, the implicit assumption is > that this device is being whitelisted, meaning that it is explicitly > requested by the application to be used. This can conflict with the > initial bus configuration. Actually I don't think that this is correct. If I blacklist a device via devargs I don't want this to be probed in case my udev helper is calling hotplug add. Maybe it is better to just update the args field in case the devargs instance is already found. > > While the rte_eal_devargs_add API is being deprecated soon, it cannot > be modified at the moment to accomodate this situation. > As such, this new experimental API offers a bare interface for inserting > rte_devargs without directly manipulating the global rte_devargs list. > > This new function expects a fully-formed rte_devargs, previously parsed > and allocated. > > It does not check whether the new rte_devargs is compatible with current > bus configuration, but will replace any eventual existing one for the same > device, allowing the hotplug operation to proceed. i.e. a previously > blacklisted device can be redefined as being whitelisted. > > Signed-off-by: Gaetan Rivet > --- > lib/librte_eal/bsdapp/eal/rte_eal_version.map | 1 + > lib/librte_eal/common/eal_common_devargs.c | 12 ++++++++++++ > lib/librte_eal/common/include/rte_devargs.h | 13 +++++++++++++ > lib/librte_eal/linuxapp/eal/rte_eal_version.map | 1 + > 4 files changed, 27 insertions(+) > > diff --git a/lib/librte_eal/bsdapp/eal/rte_eal_version.map b/lib/librte_eal/bsdapp/eal/rte_eal_version.map > index 40cd523..8b24309 100644 > --- a/lib/librte_eal/bsdapp/eal/rte_eal_version.map > +++ b/lib/librte_eal/bsdapp/eal/rte_eal_version.map > @@ -206,6 +206,7 @@ DPDK_17.08 { > EXPERIMENTAL { > global: > > + rte_eal_devargs_insert; > rte_eal_devargs_parse; > rte_eal_devargs_remove; > rte_eal_hotplug_add; > diff --git a/lib/librte_eal/common/eal_common_devargs.c b/lib/librte_eal/common/eal_common_devargs.c > index bcdee13..ff6c2a8 100644 > --- a/lib/librte_eal/common/eal_common_devargs.c > +++ b/lib/librte_eal/common/eal_common_devargs.c > @@ -138,6 +138,18 @@ rte_eal_devargs_parse(const char *dev, struct rte_devargs *da) > return 0; > } > > +int > +rte_eal_devargs_insert(struct rte_devargs *da) > +{ > + int ret; > + > + ret = rte_eal_devargs_remove(da->bus->name, da->name); > + if (ret < 0) > + return ret; > + TAILQ_INSERT_TAIL(&devargs_list, da, next); > + return 0; > +} > + > /* store a whitelist parameter for later parsing */ > int > rte_eal_devargs_add(enum rte_devtype devtype, const char *devargs_str) > diff --git a/lib/librte_eal/common/include/rte_devargs.h b/lib/librte_eal/common/include/rte_devargs.h > index 36453b6..7b63fa3 100644 > --- a/lib/librte_eal/common/include/rte_devargs.h > +++ b/lib/librte_eal/common/include/rte_devargs.h > @@ -139,6 +139,19 @@ rte_eal_devargs_parse(const char *dev, > struct rte_devargs *da); > > /** > + * Insert an rte_devargs in the global list. > + * > + * @param da > + * The devargs structure to insert. > + * > + * @return > + * - 0 on success > + * - Negative on error. > + */ > +int > +rte_eal_devargs_insert(struct rte_devargs *da); > + > +/** > * Add a device to the user device list > * > * For PCI devices, the format of arguments string is "PCI_ADDR" or > diff --git a/lib/librte_eal/linuxapp/eal/rte_eal_version.map b/lib/librte_eal/linuxapp/eal/rte_eal_version.map > index a8ee349..81f6af3 100644 > --- a/lib/librte_eal/linuxapp/eal/rte_eal_version.map > +++ b/lib/librte_eal/linuxapp/eal/rte_eal_version.map > @@ -211,6 +211,7 @@ DPDK_17.08 { > EXPERIMENTAL { > global: > > + rte_eal_devargs_insert; > rte_eal_devargs_parse; > rte_eal_devargs_remove; > rte_eal_hotplug_add; > -- > 2.1.4 >