Message ID | 1582277527-19638-4-git-send-email-mkshah@codeaurora.org (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Invoke rpmh_flush for non OSI targets | expand |
As power domain support is dropped in v6 , please update commit text accordingly. Post the update of commit text, you can add my reviewed by. Reviewed-by: Srinivas Rao L <lsrao@codeaurora.org> Regards, Srinivas. On 2/21/2020 3:02 PM, Maulik Shah wrote: > Add changes to invoke rpmh flush when the data in cache is dirty. > > This is done only if OSI is not supported in PSCI. If OSI is supported > rpmh_flush will get invoked by power domain off call when the last cpu > in the domain is going to power collapse. > > Signed-off-by: Maulik Shah <mkshah@codeaurora.org> > --- > drivers/soc/qcom/rpmh.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/drivers/soc/qcom/rpmh.c b/drivers/soc/qcom/rpmh.c > index 83ba4e0..839af8d 100644 > --- a/drivers/soc/qcom/rpmh.c > +++ b/drivers/soc/qcom/rpmh.c > @@ -12,6 +12,7 @@ > #include <linux/module.h> > #include <linux/of.h> > #include <linux/platform_device.h> > +#include <linux/psci.h> > #include <linux/slab.h> > #include <linux/spinlock.h> > #include <linux/types.h> > @@ -163,6 +164,9 @@ static struct cache_req *cache_rpm_request(struct rpmh_ctrlr *ctrlr, > unlock: > spin_unlock_irqrestore(&ctrlr->cache_lock, flags); > > + if (ctrlr->dirty && !psci_has_osi_support()) > + return rpmh_flush(ctrlr) ? ERR_PTR(-EINVAL) : req; > + > return req; > } > > @@ -391,6 +395,8 @@ int rpmh_write_batch(const struct device *dev, enum rpmh_state state, > > if (state != RPMH_ACTIVE_ONLY_STATE) { > cache_batch(ctrlr, req); > + if (!psci_has_osi_support()) > + return rpmh_flush(ctrlr); > return 0; > } >
diff --git a/drivers/soc/qcom/rpmh.c b/drivers/soc/qcom/rpmh.c index 83ba4e0..839af8d 100644 --- a/drivers/soc/qcom/rpmh.c +++ b/drivers/soc/qcom/rpmh.c @@ -12,6 +12,7 @@ #include <linux/module.h> #include <linux/of.h> #include <linux/platform_device.h> +#include <linux/psci.h> #include <linux/slab.h> #include <linux/spinlock.h> #include <linux/types.h> @@ -163,6 +164,9 @@ static struct cache_req *cache_rpm_request(struct rpmh_ctrlr *ctrlr, unlock: spin_unlock_irqrestore(&ctrlr->cache_lock, flags); + if (ctrlr->dirty && !psci_has_osi_support()) + return rpmh_flush(ctrlr) ? ERR_PTR(-EINVAL) : req; + return req; } @@ -391,6 +395,8 @@ int rpmh_write_batch(const struct device *dev, enum rpmh_state state, if (state != RPMH_ACTIVE_ONLY_STATE) { cache_batch(ctrlr, req); + if (!psci_has_osi_support()) + return rpmh_flush(ctrlr); return 0; }
Add changes to invoke rpmh flush when the data in cache is dirty. This is done only if OSI is not supported in PSCI. If OSI is supported rpmh_flush will get invoked by power domain off call when the last cpu in the domain is going to power collapse. Signed-off-by: Maulik Shah <mkshah@codeaurora.org> --- drivers/soc/qcom/rpmh.c | 6 ++++++ 1 file changed, 6 insertions(+)