From: Jiri Pirko <jiri@resnulli.us>
To: Vadim Fedorenko <vfedorenko@novek.ru>
Cc: Jakub Kicinski <kuba@kernel.org>,
Arkadiusz Kubalewski <arkadiusz.kubalewski@intel.com>,
netdev@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
linux-clk@vger.kernel.org, Vadim Fedorenko <vadfed@fb.com>
Subject: Re: [RFC PATCH v3 1/6] dpll: Add DPLL framework base functions
Date: Wed, 12 Oct 2022 12:44:27 +0200 [thread overview]
Message-ID: <Y0aai5vJ9qswTihI@nanopsycho> (raw)
In-Reply-To: <576aaccb-991e-ea77-e27a-b9f640c49292@novek.ru>
Tue, Oct 11, 2022 at 11:23:38PM CEST, vfedorenko@novek.ru wrote:
>On 11.10.2022 09:32, Jiri Pirko wrote:
>> Mon, Oct 10, 2022 at 09:54:26PM CEST, vfedorenko@novek.ru wrote:
>> > On 10.10.2022 10:18, Jiri Pirko wrote:
>> > > Mon, Oct 10, 2022 at 03:17:59AM CEST, vfedorenko@novek.ru wrote:
>> > > > From: Vadim Fedorenko <vadfed@fb.com>
>> > > >
>> > > > DPLL framework is used to represent and configure DPLL devices
>> > > > in systems. Each device that has DPLL and can configure sources
>> > > > and outputs can use this framework.
>> > > >
>> > > > Signed-off-by: Vadim Fedorenko <vadfed@fb.com>
>> > > > Co-developed-by: Jakub Kicinski <kuba@kernel.org>
>> > > > Co-developed-by: Arkadiusz Kubalewski <arkadiusz.kubalewski@intel.com>
>> > > > ---
>
[...]
>> > > > +static int dpll_pre_doit(const struct genl_ops *ops, struct sk_buff *skb,
>> > > > + struct genl_info *info)
>> > > > +{
>> > > > + struct dpll_device *dpll_id = NULL, *dpll_name = NULL;
>> > > > +
>> > > > + if (!info->attrs[DPLLA_DEVICE_ID] &&
>> > > > + !info->attrs[DPLLA_DEVICE_NAME])
>> > > > + return -EINVAL;
>> > > > +
>> > > > + if (info->attrs[DPLLA_DEVICE_ID]) {
>> > > > + u32 id = nla_get_u32(info->attrs[DPLLA_DEVICE_ID]);
>> > > > +
>> > > > + dpll_id = dpll_device_get_by_id(id);
>> > > > + if (!dpll_id)
>> > > > + return -ENODEV;
>> > > > + info->user_ptr[0] = dpll_id;
>> > >
>> > > struct dpll_device *dpll should be stored here.
>> > >
>> > >
>> > > > + }
>> > > > + if (info->attrs[DPLLA_DEVICE_NAME]) {
>> > >
>> > > You define new API, have one clear handle for devices. Either name or
>> > > ID. Having both is messy.
>> > >
>> > That was added after the discussion with Jakub and Arkadiusz where we agreed
>> > that the device could be referenced either by index or by name. The example
>> > is that userspace app can easily find specific DPLL device if it knows the
>> > name provided by a driver of that specific device. Without searching through
>> > sysfs to find index value. Later commands could be executed using index once
>> > it's known through CMD_GET_DEVICE/ATTR_DEVICE_NAME.
>>
>> What exacly is the name? What is the semantics? How the name is
>> generated in case of multiple instances of the same driver. What happens
>> if two drivers use the same name? Is the name predictable (in sense of
>> "stable over reboots")?
>>
>
>The way we were thinking about name is that driver can provide it's own name
>based on the hardware values, like MAC address or any other unique
>identifier, or the subsystem will use 'dpll%d' template to create the device.
>In the first case names can be predictable and stable over reboots at the
>same time.
Well, I don't think it is in general good idea to allow the drivers such
flexibility in strings directly passed to userspace. From past
experience, it usually end up with mess which is very hard to control.
Therefore, I believe that the driver should pass info in struct of well
defined fields. Like for example THIS_MODULE, and dpll.c can get the
name by module_name()
[...]
next prev parent reply other threads:[~2022-10-12 10:44 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-10-10 1:17 [RFC PATCH v3 0/5] Create common DPLL/clock configuration API Vadim Fedorenko
2022-10-10 1:17 ` [RFC PATCH v3 1/6] dpll: Add DPLL framework base functions Vadim Fedorenko
2022-10-10 9:18 ` Jiri Pirko
2022-10-10 19:54 ` Vadim Fedorenko
2022-10-11 8:32 ` Jiri Pirko
2022-10-11 8:47 ` Jiri Pirko
2022-10-11 21:31 ` Vadim Fedorenko
2022-10-12 6:44 ` Jiri Pirko
2022-10-12 20:12 ` Vadim Fedorenko
2022-10-13 6:55 ` Jiri Pirko
2022-10-13 15:17 ` Jakub Kicinski
2022-10-14 9:52 ` Jiri Pirko
2022-10-11 21:23 ` Vadim Fedorenko
2022-10-12 10:44 ` Jiri Pirko [this message]
2022-10-12 10:47 ` Jiri Pirko
2022-10-12 20:15 ` Vadim Fedorenko
2022-10-13 6:56 ` Jiri Pirko
2022-10-12 16:51 ` Jiri Pirko
2022-10-12 20:17 ` Vadim Fedorenko
2022-10-10 1:18 ` [RFC PATCH v3 2/6] dpll: add netlink events Vadim Fedorenko
2022-10-10 1:18 ` [RFC PATCH v3 3/6] dpll: add support for source selection modes Vadim Fedorenko
2022-10-10 14:13 ` Jiri Pirko
2022-10-10 20:03 ` Vadim Fedorenko
2022-10-10 1:18 ` [RFC PATCH v3 4/6] dpll: get source/output name Vadim Fedorenko
2022-10-10 9:45 ` Jiri Pirko
2022-10-10 19:55 ` Vadim Fedorenko
2022-10-11 7:28 ` Jiri Pirko
2022-10-10 1:18 ` [RFC PATCH v3 5/6] dpll: documentation on DPLL subsystem interface Vadim Fedorenko
2022-10-10 1:18 ` [RFC PATCH v3 6/6] ptp_ocp: implement DPLL ops Vadim Fedorenko
2022-10-10 15:42 ` Jiri Pirko
2022-10-10 20:14 ` Vadim Fedorenko
2022-10-11 7:30 ` Jiri Pirko
2022-10-12 15:14 ` Jiri Pirko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Y0aai5vJ9qswTihI@nanopsycho \
--to=jiri@resnulli.us \
--cc=arkadiusz.kubalewski@intel.com \
--cc=kuba@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-clk@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=vadfed@fb.com \
--cc=vfedorenko@novek.ru \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).