Message ID | 20180627125056.12851-2-vivek.gautam@codeaurora.org (mailing list archive) |
---|---|
State | Not Applicable, archived |
Delegated to: | Andy Gross |
Headers | show |
Adding Ulf and Marek. On 6/27/2018 6:20 PM, Vivek Gautam wrote: > Add a flag to autoremove the device links on supplier driver > unbind. This obviates the need to explicitly delete the link > in the remove path. > We remove these links only when the supplier's link to its > consumers has gone to DL_STATE_SUPPLIER_UNBIND state. > > Signed-off-by: Vivek Gautam <vivek.gautam@codeaurora.org> > Suggested-by: Lukas Wunner <lukas@wunner.de> > Cc: Jonathan Corbet <corbet@lwn.net> > Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > Cc: Robin Murphy <robin.murphy@arm.com> > Cc: linux-doc@vger.kernel.org > Cc: linux-arm-kernel@lists.infradead.org > Cc: linux-pm@vger.kernel.org > Cc: linux-arm-msm@vger.kernel.org > --- Hi Rafael, et al. Gentle ping. Do you have comments on this series. I would really like to conclude these device link additions sooner, and get things moving on the long awaited arm-smmu clock/runtime support series. Thanks again for reviewing these patches. Best regards Vivek > Documentation/driver-api/device_link.rst | 4 ++++ > drivers/base/core.c | 10 ++++++++++ > include/linux/device.h | 2 ++ > 3 files changed, 16 insertions(+) > > diff --git a/Documentation/driver-api/device_link.rst b/Documentation/driver-api/device_link.rst > index a005b904a264..d6763272e747 100644 > --- a/Documentation/driver-api/device_link.rst > +++ b/Documentation/driver-api/device_link.rst > @@ -86,6 +86,10 @@ automatically purged when the consumer fails to probe or later unbinds. > This obviates the need to explicitly delete the link in the ``->remove`` > callback or in the error path of the ``->probe`` callback. > > +Similarly, when the device link is added from supplier's ``->probe`` callback, > +``DL_FLAG_AUTOREMOVE_SUPPLIER`` causes the device link to be automatically > +purged when the supplier fails to probe or later unbinds. > + > Limitations > =========== > > diff --git a/drivers/base/core.c b/drivers/base/core.c > index 14c1e3151e08..e721218bf352 100644 > --- a/drivers/base/core.c > +++ b/drivers/base/core.c > @@ -518,6 +518,16 @@ void device_links_driver_cleanup(struct device *dev) > > WARN_ON(link->flags & DL_FLAG_AUTOREMOVE_CONSUMER); > WARN_ON(link->status != DL_STATE_SUPPLIER_UNBIND); > + > + /* > + * autoremove the links between this @dev and its consumer > + * devices that are not active, i.e. where the link state > + * has moved to DL_STATE_SUPPLIER_UNBIND. > + */ > + if (link->status == DL_STATE_SUPPLIER_UNBIND && > + link->flags & DL_FLAG_AUTOREMOVE_SUPPLIER) > + kref_put(&link->kref, __device_link_del); > + > WRITE_ONCE(link->status, DL_STATE_DORMANT); > } > > diff --git a/include/linux/device.h b/include/linux/device.h > index 3929805cdd59..e80920452b49 100644 > --- a/include/linux/device.h > +++ b/include/linux/device.h > @@ -787,11 +787,13 @@ enum device_link_state { > * AUTOREMOVE_CONSUMER: Remove the link automatically on consumer driver unbind. > * PM_RUNTIME: If set, the runtime PM framework will use this link. > * RPM_ACTIVE: Run pm_runtime_get_sync() on the supplier during link creation. > + * AUTOREMOVE_SUPPLIER: Remove the link automatically on supplier driver unbind. > */ > #define DL_FLAG_STATELESS BIT(0) > #define DL_FLAG_AUTOREMOVE_CONSUMER BIT(1) > #define DL_FLAG_PM_RUNTIME BIT(2) > #define DL_FLAG_RPM_ACTIVE BIT(3) > +#define DL_FLAG_AUTOREMOVE_SUPPLIER BIT(4) > > /** > * struct device_link - Device link representation. -- To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Wednesday, July 4, 2018 9:16:20 AM CEST Vivek Gautam wrote: > Adding Ulf and Marek. > > On 6/27/2018 6:20 PM, Vivek Gautam wrote: > > Add a flag to autoremove the device links on supplier driver > > unbind. This obviates the need to explicitly delete the link > > in the remove path. > > We remove these links only when the supplier's link to its > > consumers has gone to DL_STATE_SUPPLIER_UNBIND state. > > > > Signed-off-by: Vivek Gautam <vivek.gautam@codeaurora.org> > > Suggested-by: Lukas Wunner <lukas@wunner.de> > > Cc: Jonathan Corbet <corbet@lwn.net> > > Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > > Cc: Robin Murphy <robin.murphy@arm.com> > > Cc: linux-doc@vger.kernel.org > > Cc: linux-arm-kernel@lists.infradead.org > > Cc: linux-pm@vger.kernel.org > > Cc: linux-arm-msm@vger.kernel.org > > --- > > Hi Rafael, et al. > > Gentle ping. > Do you have comments on this series. I would really like to conclude these > device link additions sooner, and get things moving on the long awaited > arm-smmu clock/runtime support series. > > Thanks again for reviewing these patches. They are fine by me. I can queue them up for 4.19 if no one has objections (Greg in particular). Thanks, Rafael -- To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 7/4/2018 4:14 PM, Rafael J. Wysocki wrote: > On Wednesday, July 4, 2018 9:16:20 AM CEST Vivek Gautam wrote: >> Adding Ulf and Marek. >> >> On 6/27/2018 6:20 PM, Vivek Gautam wrote: >>> Add a flag to autoremove the device links on supplier driver >>> unbind. This obviates the need to explicitly delete the link >>> in the remove path. >>> We remove these links only when the supplier's link to its >>> consumers has gone to DL_STATE_SUPPLIER_UNBIND state. >>> >>> Signed-off-by: Vivek Gautam <vivek.gautam@codeaurora.org> >>> Suggested-by: Lukas Wunner <lukas@wunner.de> >>> Cc: Jonathan Corbet <corbet@lwn.net> >>> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> >>> Cc: Robin Murphy <robin.murphy@arm.com> >>> Cc: linux-doc@vger.kernel.org >>> Cc: linux-arm-kernel@lists.infradead.org >>> Cc: linux-pm@vger.kernel.org >>> Cc: linux-arm-msm@vger.kernel.org >>> --- >> Hi Rafael, et al. >> >> Gentle ping. >> Do you have comments on this series. I would really like to conclude these >> device link additions sooner, and get things moving on the long awaited >> arm-smmu clock/runtime support series. >> >> Thanks again for reviewing these patches. > Hi Rafael, > They are fine by me. Cool. > > I can queue them up for 4.19 if no one has objections (Greg in > particular). Thanks for this. Robin, If this approach is fine with you too, then I can go ahead and respin the smmu patch series - updating the device link flag. Best regards Vivek > Thanks, > Rafael > > -- > To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Wed, Jul 04, 2018 at 12:44:20PM +0200, Rafael J. Wysocki wrote: > On Wednesday, July 4, 2018 9:16:20 AM CEST Vivek Gautam wrote: > > Adding Ulf and Marek. > > > > On 6/27/2018 6:20 PM, Vivek Gautam wrote: > > > Add a flag to autoremove the device links on supplier driver > > > unbind. This obviates the need to explicitly delete the link > > > in the remove path. > > > We remove these links only when the supplier's link to its > > > consumers has gone to DL_STATE_SUPPLIER_UNBIND state. > > > > > > Signed-off-by: Vivek Gautam <vivek.gautam@codeaurora.org> > > > Suggested-by: Lukas Wunner <lukas@wunner.de> > > > Cc: Jonathan Corbet <corbet@lwn.net> > > > Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > > > Cc: Robin Murphy <robin.murphy@arm.com> > > > Cc: linux-doc@vger.kernel.org > > > Cc: linux-arm-kernel@lists.infradead.org > > > Cc: linux-pm@vger.kernel.org > > > Cc: linux-arm-msm@vger.kernel.org > > > --- > > > > Hi Rafael, et al. > > > > Gentle ping. > > Do you have comments on this series. I would really like to conclude these > > device link additions sooner, and get things moving on the long awaited > > arm-smmu clock/runtime support series. > > > > Thanks again for reviewing these patches. > > They are fine by me. > > I can queue them up for 4.19 if no one has objections (Greg in > particular). No objection from me! -- To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 27 June 2018 at 14:50, Vivek Gautam <vivek.gautam@codeaurora.org> wrote: > Add a flag to autoremove the device links on supplier driver > unbind. This obviates the need to explicitly delete the link > in the remove path. > We remove these links only when the supplier's link to its > consumers has gone to DL_STATE_SUPPLIER_UNBIND state. > > Signed-off-by: Vivek Gautam <vivek.gautam@codeaurora.org> > Suggested-by: Lukas Wunner <lukas@wunner.de> > Cc: Jonathan Corbet <corbet@lwn.net> > Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > Cc: Robin Murphy <robin.murphy@arm.com> > Cc: linux-doc@vger.kernel.org > Cc: linux-arm-kernel@lists.infradead.org > Cc: linux-pm@vger.kernel.org > Cc: linux-arm-msm@vger.kernel.org Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org> Kind regards Uffe > --- > Documentation/driver-api/device_link.rst | 4 ++++ > drivers/base/core.c | 10 ++++++++++ > include/linux/device.h | 2 ++ > 3 files changed, 16 insertions(+) > > diff --git a/Documentation/driver-api/device_link.rst b/Documentation/driver-api/device_link.rst > index a005b904a264..d6763272e747 100644 > --- a/Documentation/driver-api/device_link.rst > +++ b/Documentation/driver-api/device_link.rst > @@ -86,6 +86,10 @@ automatically purged when the consumer fails to probe or later unbinds. > This obviates the need to explicitly delete the link in the ``->remove`` > callback or in the error path of the ``->probe`` callback. > > +Similarly, when the device link is added from supplier's ``->probe`` callback, > +``DL_FLAG_AUTOREMOVE_SUPPLIER`` causes the device link to be automatically > +purged when the supplier fails to probe or later unbinds. > + > Limitations > =========== > > diff --git a/drivers/base/core.c b/drivers/base/core.c > index 14c1e3151e08..e721218bf352 100644 > --- a/drivers/base/core.c > +++ b/drivers/base/core.c > @@ -518,6 +518,16 @@ void device_links_driver_cleanup(struct device *dev) > > WARN_ON(link->flags & DL_FLAG_AUTOREMOVE_CONSUMER); > WARN_ON(link->status != DL_STATE_SUPPLIER_UNBIND); > + > + /* > + * autoremove the links between this @dev and its consumer > + * devices that are not active, i.e. where the link state > + * has moved to DL_STATE_SUPPLIER_UNBIND. > + */ > + if (link->status == DL_STATE_SUPPLIER_UNBIND && > + link->flags & DL_FLAG_AUTOREMOVE_SUPPLIER) > + kref_put(&link->kref, __device_link_del); > + > WRITE_ONCE(link->status, DL_STATE_DORMANT); > } > > diff --git a/include/linux/device.h b/include/linux/device.h > index 3929805cdd59..e80920452b49 100644 > --- a/include/linux/device.h > +++ b/include/linux/device.h > @@ -787,11 +787,13 @@ enum device_link_state { > * AUTOREMOVE_CONSUMER: Remove the link automatically on consumer driver unbind. > * PM_RUNTIME: If set, the runtime PM framework will use this link. > * RPM_ACTIVE: Run pm_runtime_get_sync() on the supplier during link creation. > + * AUTOREMOVE_SUPPLIER: Remove the link automatically on supplier driver unbind. > */ > #define DL_FLAG_STATELESS BIT(0) > #define DL_FLAG_AUTOREMOVE_CONSUMER BIT(1) > #define DL_FLAG_PM_RUNTIME BIT(2) > #define DL_FLAG_RPM_ACTIVE BIT(3) > +#define DL_FLAG_AUTOREMOVE_SUPPLIER BIT(4) > > /** > * struct device_link - Device link representation. > -- > QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member > of Code Aurora Forum, hosted by The Linux Foundation > -- To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 7/4/2018 4:14 PM, Rafael J. Wysocki wrote: > On Wednesday, July 4, 2018 9:16:20 AM CEST Vivek Gautam wrote: >> Adding Ulf and Marek. >> >> On 6/27/2018 6:20 PM, Vivek Gautam wrote: >>> Add a flag to autoremove the device links on supplier driver >>> unbind. This obviates the need to explicitly delete the link >>> in the remove path. >>> We remove these links only when the supplier's link to its >>> consumers has gone to DL_STATE_SUPPLIER_UNBIND state. >>> >>> Signed-off-by: Vivek Gautam <vivek.gautam@codeaurora.org> >>> Suggested-by: Lukas Wunner <lukas@wunner.de> >>> Cc: Jonathan Corbet <corbet@lwn.net> >>> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> >>> Cc: Robin Murphy <robin.murphy@arm.com> >>> Cc: linux-doc@vger.kernel.org >>> Cc: linux-arm-kernel@lists.infradead.org >>> Cc: linux-pm@vger.kernel.org >>> Cc: linux-arm-msm@vger.kernel.org >>> --- >> Hi Rafael, et al. >> >> Gentle ping. >> Do you have comments on this series. I would really like to conclude these >> device link additions sooner, and get things moving on the long awaited >> arm-smmu clock/runtime support series. >> >> Thanks again for reviewing these patches. > They are fine by me. > > I can queue them up for 4.19 if no one has objections (Greg in > particular). Hi Rafael, I will resubmit these 2 patches as part of the arm-smmu series, as one of the patch in the series depends on addition of DL_FLAG_AUTOREMOVE_SUPPLIER. So these 2 patches and arm-smmu series should go together. Can you please consider givnig your Ack? Best regards Vivek > > Thanks, > Rafael > > -- > To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Wed, Jul 4, 2018 at 8:09 PM, Vivek Gautam <vivek.gautam@codeaurora.org> wrote: > > > On 7/4/2018 4:14 PM, Rafael J. Wysocki wrote: >> >> On Wednesday, July 4, 2018 9:16:20 AM CEST Vivek Gautam wrote: >>> >>> Adding Ulf and Marek. >>> >>> On 6/27/2018 6:20 PM, Vivek Gautam wrote: >>>> >>>> Add a flag to autoremove the device links on supplier driver >>>> unbind. This obviates the need to explicitly delete the link >>>> in the remove path. >>>> We remove these links only when the supplier's link to its >>>> consumers has gone to DL_STATE_SUPPLIER_UNBIND state. >>>> >>>> Signed-off-by: Vivek Gautam <vivek.gautam@codeaurora.org> >>>> Suggested-by: Lukas Wunner <lukas@wunner.de> >>>> Cc: Jonathan Corbet <corbet@lwn.net> >>>> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> >>>> Cc: Robin Murphy <robin.murphy@arm.com> >>>> Cc: linux-doc@vger.kernel.org >>>> Cc: linux-arm-kernel@lists.infradead.org >>>> Cc: linux-pm@vger.kernel.org >>>> Cc: linux-arm-msm@vger.kernel.org >>>> --- >>> >>> Hi Rafael, et al. >>> >>> Gentle ping. >>> Do you have comments on this series. I would really like to conclude >>> these >>> device link additions sooner, and get things moving on the long awaited >>> arm-smmu clock/runtime support series. >>> >>> Thanks again for reviewing these patches. >> >> They are fine by me. >> >> I can queue them up for 4.19 if no one has objections (Greg in >> particular). > > > Hi Rafael, > > I will resubmit these 2 patches as part of the arm-smmu series, as one > of the patch in the series depends on addition of > DL_FLAG_AUTOREMOVE_SUPPLIER. > So these 2 patches and arm-smmu series should go together. > Can you please consider givnig your Ack? I would prefer to apply them myself to be honest and put them on an public git branch for you to pull from. Thanks, Rafael -- To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 7/5/2018 4:49 AM, Rafael J. Wysocki wrote: > On Wed, Jul 4, 2018 at 8:09 PM, Vivek Gautam > <vivek.gautam@codeaurora.org> wrote: >> >> On 7/4/2018 4:14 PM, Rafael J. Wysocki wrote: >>> On Wednesday, July 4, 2018 9:16:20 AM CEST Vivek Gautam wrote: >>>> Adding Ulf and Marek. >>>> >>>> On 6/27/2018 6:20 PM, Vivek Gautam wrote: >>>>> Add a flag to autoremove the device links on supplier driver >>>>> unbind. This obviates the need to explicitly delete the link >>>>> in the remove path. >>>>> We remove these links only when the supplier's link to its >>>>> consumers has gone to DL_STATE_SUPPLIER_UNBIND state. >>>>> >>>>> Signed-off-by: Vivek Gautam <vivek.gautam@codeaurora.org> >>>>> Suggested-by: Lukas Wunner <lukas@wunner.de> >>>>> Cc: Jonathan Corbet <corbet@lwn.net> >>>>> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> >>>>> Cc: Robin Murphy <robin.murphy@arm.com> >>>>> Cc: linux-doc@vger.kernel.org >>>>> Cc: linux-arm-kernel@lists.infradead.org >>>>> Cc: linux-pm@vger.kernel.org >>>>> Cc: linux-arm-msm@vger.kernel.org >>>>> --- >>>> Hi Rafael, et al. >>>> >>>> Gentle ping. >>>> Do you have comments on this series. I would really like to conclude >>>> these >>>> device link additions sooner, and get things moving on the long awaited >>>> arm-smmu clock/runtime support series. >>>> >>>> Thanks again for reviewing these patches. >>> They are fine by me. >>> >>> I can queue them up for 4.19 if no one has objections (Greg in >>> particular). >> >> Hi Rafael, >> >> I will resubmit these 2 patches as part of the arm-smmu series, as one >> of the patch in the series depends on addition of >> DL_FLAG_AUTOREMOVE_SUPPLIER. >> So these 2 patches and arm-smmu series should go together. >> Can you please consider givnig your Ack? > I would prefer to apply them myself to be honest and put them on an > public git branch for you to pull from. Sure. Fine with me. I will base the smmu patches on your branch. Thanks Vivek > > Thanks, > Rafael -- To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Thursday, July 5, 2018 6:28:16 AM CEST Vivek Gautam wrote: > > On 7/5/2018 4:49 AM, Rafael J. Wysocki wrote: > > On Wed, Jul 4, 2018 at 8:09 PM, Vivek Gautam > > <vivek.gautam@codeaurora.org> wrote: > >> > >> On 7/4/2018 4:14 PM, Rafael J. Wysocki wrote: > >>> On Wednesday, July 4, 2018 9:16:20 AM CEST Vivek Gautam wrote: > >>>> Adding Ulf and Marek. > >>>> > >>>> On 6/27/2018 6:20 PM, Vivek Gautam wrote: > >>>>> Add a flag to autoremove the device links on supplier driver > >>>>> unbind. This obviates the need to explicitly delete the link > >>>>> in the remove path. > >>>>> We remove these links only when the supplier's link to its > >>>>> consumers has gone to DL_STATE_SUPPLIER_UNBIND state. > >>>>> > >>>>> Signed-off-by: Vivek Gautam <vivek.gautam@codeaurora.org> > >>>>> Suggested-by: Lukas Wunner <lukas@wunner.de> > >>>>> Cc: Jonathan Corbet <corbet@lwn.net> > >>>>> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > >>>>> Cc: Robin Murphy <robin.murphy@arm.com> > >>>>> Cc: linux-doc@vger.kernel.org > >>>>> Cc: linux-arm-kernel@lists.infradead.org > >>>>> Cc: linux-pm@vger.kernel.org > >>>>> Cc: linux-arm-msm@vger.kernel.org > >>>>> --- > >>>> Hi Rafael, et al. > >>>> > >>>> Gentle ping. > >>>> Do you have comments on this series. I would really like to conclude > >>>> these > >>>> device link additions sooner, and get things moving on the long awaited > >>>> arm-smmu clock/runtime support series. > >>>> > >>>> Thanks again for reviewing these patches. > >>> They are fine by me. > >>> > >>> I can queue them up for 4.19 if no one has objections (Greg in > >>> particular). > >> > >> Hi Rafael, > >> > >> I will resubmit these 2 patches as part of the arm-smmu series, as one > >> of the patch in the series depends on addition of > >> DL_FLAG_AUTOREMOVE_SUPPLIER. > >> So these 2 patches and arm-smmu series should go together. > >> Can you please consider givnig your Ack? > > I would prefer to apply them myself to be honest and put them on an > > public git branch for you to pull from. > > Sure. Fine with me. I will base the smmu patches on your branch. The patches have been applied and are available for pulling in the pm-core branch of the linux-pm.git tree: git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git pm-core Thanks, Rafael -- To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/Documentation/driver-api/device_link.rst b/Documentation/driver-api/device_link.rst index a005b904a264..d6763272e747 100644 --- a/Documentation/driver-api/device_link.rst +++ b/Documentation/driver-api/device_link.rst @@ -86,6 +86,10 @@ automatically purged when the consumer fails to probe or later unbinds. This obviates the need to explicitly delete the link in the ``->remove`` callback or in the error path of the ``->probe`` callback. +Similarly, when the device link is added from supplier's ``->probe`` callback, +``DL_FLAG_AUTOREMOVE_SUPPLIER`` causes the device link to be automatically +purged when the supplier fails to probe or later unbinds. + Limitations =========== diff --git a/drivers/base/core.c b/drivers/base/core.c index 14c1e3151e08..e721218bf352 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c @@ -518,6 +518,16 @@ void device_links_driver_cleanup(struct device *dev) WARN_ON(link->flags & DL_FLAG_AUTOREMOVE_CONSUMER); WARN_ON(link->status != DL_STATE_SUPPLIER_UNBIND); + + /* + * autoremove the links between this @dev and its consumer + * devices that are not active, i.e. where the link state + * has moved to DL_STATE_SUPPLIER_UNBIND. + */ + if (link->status == DL_STATE_SUPPLIER_UNBIND && + link->flags & DL_FLAG_AUTOREMOVE_SUPPLIER) + kref_put(&link->kref, __device_link_del); + WRITE_ONCE(link->status, DL_STATE_DORMANT); } diff --git a/include/linux/device.h b/include/linux/device.h index 3929805cdd59..e80920452b49 100644 --- a/include/linux/device.h +++ b/include/linux/device.h @@ -787,11 +787,13 @@ enum device_link_state { * AUTOREMOVE_CONSUMER: Remove the link automatically on consumer driver unbind. * PM_RUNTIME: If set, the runtime PM framework will use this link. * RPM_ACTIVE: Run pm_runtime_get_sync() on the supplier during link creation. + * AUTOREMOVE_SUPPLIER: Remove the link automatically on supplier driver unbind. */ #define DL_FLAG_STATELESS BIT(0) #define DL_FLAG_AUTOREMOVE_CONSUMER BIT(1) #define DL_FLAG_PM_RUNTIME BIT(2) #define DL_FLAG_RPM_ACTIVE BIT(3) +#define DL_FLAG_AUTOREMOVE_SUPPLIER BIT(4) /** * struct device_link - Device link representation.
Add a flag to autoremove the device links on supplier driver unbind. This obviates the need to explicitly delete the link in the remove path. We remove these links only when the supplier's link to its consumers has gone to DL_STATE_SUPPLIER_UNBIND state. Signed-off-by: Vivek Gautam <vivek.gautam@codeaurora.org> Suggested-by: Lukas Wunner <lukas@wunner.de> Cc: Jonathan Corbet <corbet@lwn.net> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Robin Murphy <robin.murphy@arm.com> Cc: linux-doc@vger.kernel.org Cc: linux-arm-kernel@lists.infradead.org Cc: linux-pm@vger.kernel.org Cc: linux-arm-msm@vger.kernel.org --- Documentation/driver-api/device_link.rst | 4 ++++ drivers/base/core.c | 10 ++++++++++ include/linux/device.h | 2 ++ 3 files changed, 16 insertions(+)