On Wed, Mar 4, 2020 at 10:32 PM Bjorn Andersson <bjorn.andersson@xxxxxxxxxx> wrote: > On Wed 04 Mar 21:42 PST 2020, John Stultz wrote: > > > Allow the rpmpd driver to be loaded as a module. > > ... > > diff --git a/drivers/soc/qcom/rpmpd.c b/drivers/soc/qcom/rpmpd.c > > index 2b1834c5609a..9c0834913f3f 100644 > > --- a/drivers/soc/qcom/rpmpd.c > > +++ b/drivers/soc/qcom/rpmpd.c > > @@ -5,6 +5,7 @@ > > #include <linux/init.h> > > #include <linux/kernel.h> > > #include <linux/mutex.h> > > +#include <linux/module.h> > > #include <linux/pm_domain.h> > > #include <linux/of.h> > > #include <linux/of_device.h> > > @@ -226,6 +227,7 @@ static const struct of_device_id rpmpd_match_table[] = { > > { .compatible = "qcom,qcs404-rpmpd", .data = &qcs404_desc }, > > { } > > }; > > +MODULE_DEVICE_TABLE(of, rpmpd_match_table); > > > > static int rpmpd_send_enable(struct rpmpd *pd, bool enable) > > { > > @@ -421,4 +423,5 @@ static int __init rpmpd_init(void) > > { > > return platform_driver_register(&rpmpd_driver); > > } > > -core_initcall(rpmpd_init); > > +module_init(rpmpd_init); > > Can't you keep this as core_initcall(), for the times when its builtin? Sure! > Additionally I believe you should add a call to unregister the driver, > and drop the suppress_bind_attrs. So, I sort of took the simple swing here as adding it as a module w/o a unregister makes it a "permanent" module. It loads but cannot be unloaded. I know this isn't ideal, but it's also a big improvement over it being limited to it being required as a built-in. I'll take a look at it though to see if its workable to be removable. > > +MODULE_LICENSE("GPL"); > > "GPL v2" per the SPDX? Ah. Thanks, fixed! thanks again for the review -john