Quoting Saravana Kannan (2021-05-20 13:20:45) > On Wed, May 19, 2021 at 5:25 PM Stephen Boyd <swboyd@xxxxxxxxxxxx> wrote: > > > > - master->parent = parent; > > - master->ops = ops; > > - master->match = match; > > + id = ida_alloc(&aggregate_ida, GFP_KERNEL); > > + if (id < 0) { > > + kfree(adev); > > + return id; > > + } > > + > > + adev->id = id; > > + adev->parent = parent; > > + adev->dev.parent = parent; > > Don't set adev->dev.parent. You are creating a functional 1-1 > dependency where none exists. The real dependencies are the 1-many > dependencies between the aggregate and the components. Use device > links to capture that and enforce proper suspend/resume and runtime PM > ordering. > Ah ok. Yeah it seems like that was the thing causing me runtime PM problems. I've removed the parent patch from this series now and I'll look at working in the device links now.