Re: [RFC net-next 0/8] Introducing subdev bus and devlink extension

From: Jakub Kicinski
Date: Tue Jun 01 2021 - 17:34:56 EST


On Tue, 1 Jun 2021 15:33:09 +0800 Yunsheng Lin wrote:
> On 2021/6/1 13:37, Jakub Kicinski wrote:
> > On Mon, 31 May 2021 18:36:12 +0800 moyufeng wrote:
> >> Hi, Jiri & Jakub
> >>
> >> Generally, a devlink instance is created for each PF/VF. This
> >> facilitates the query and configuration of the settings of each
> >> function. But if some common objects, like the health status of
> >> the entire ASIC, the data read by those instances will be duplicate.
> >>
> >> So I wonder do I just need to apply a public devlink instance for the
> >> entire ASIC to avoid reading the same data? If so, then I can't set
> >> parameters for each function individually. Or is there a better suggestion
> >> to implement it?
> >
> > I don't think there is a great way to solve this today. In my mind
> > devlink instances should be per ASIC, but I never had to solve this
> > problem for a multi-function ASIC.
>
> Is there a reason why it didn't have to be solved yet?
> Is it because the devices currently supporting devlink do not have
> this kind of problem, like single-function ASIC or multi-function
> ASIC without sharing common resource?

I'm not 100% sure, my guess is multi-function devices supporting
devlink are simple enough for the problem not to matter all that much.

> Was there a discussion how to solved it in the past?

Not really, we floated an idea of creating aliases for devlink
instances so a single devlink instance could answer to multiple
bus identifiers. But nothing concrete.

> > Can you assume all functions are in the same control domain? Can they
> > trust each other?
>
> "same control domain" means if it is controlled by a single host, not
> by multi hosts, right?
>
> If the PF is not passed through to a vm using VFIO and other PF is still
> in the host, then I think we can say it is controlled by a single host.
>
> And each PF is trusted with each other right now, at least at the driver
> level, but not between VF.

Right, the challenge AFAIU is how to match up multiple functions into
a single devlink instance, when driver has to probe them one by one.
If there is no requirement that different functions are securely
isolated it becomes a lot simpler (e.g. just compare device serial
numbers).