On Sun, 2023-06-11 at 11:36 +0200, Jiri Pirko wrote: > Fri, Jun 09, 2023 at 02:18:46PM CEST, arkadiusz.kubalewski@xxxxxxxxx wrote: > > From: Vadim Fedorenko <vadim.fedorenko@xxxxxxxxx> > > [...] > > > +int dpll_device_register(struct dpll_device *dpll, enum dpll_type type, > > + const struct dpll_device_ops *ops, void *priv) > > +{ > > + struct dpll_device_registration *reg; > > + bool first_registration = false; > > + > > + if (WARN_ON(!ops)) > > + return -EINVAL; > > + if (WARN_ON(type < DPLL_TYPE_PPS || type > DPLL_TYPE_MAX)) > > + return -EINVAL; > > + > > + mutex_lock(&dpll_lock); > > + reg = dpll_device_registration_find(dpll, ops, priv); > > + if (reg) { > > + mutex_unlock(&dpll_lock); > > + return -EEXIST; > > + } > > + > > + reg = kzalloc(sizeof(*reg), GFP_KERNEL); > > + if (!reg) { > > + mutex_unlock(&dpll_lock); > > + return -EEXIST; > > + } > > + reg->ops = ops; > > + reg->priv = priv; > > + dpll->type = type; > > + first_registration = list_empty(&dpll->registration_list); > > + list_add_tail(®->list, &dpll->registration_list); > > + if (!first_registration) { > > + mutex_unlock(&dpll_lock); > > + return 0; > > + } > > + > > + xa_set_mark(&dpll_device_xa, dpll->id, DPLL_REGISTERED); > > + mutex_unlock(&dpll_lock); > > + dpll_device_create_ntf(dpll); > > This function is introduced in the next patch. Breaks bissection. Make > sure you can compile the code after every patch applied. WRT, I think the easiest way to solve the above is adding the function call in the next patch. Cheers, Paolo