diff --git a/drivers/devfreq/rockchip_dmc.c b/drivers/devfreq/rockchip_dmc.c index 4cf6a1999248..81a2f2c89897 100644 --- a/drivers/devfreq/rockchip_dmc.c +++ b/drivers/devfreq/rockchip_dmc.c @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include @@ -217,7 +218,16 @@ static int rockchip_dmcfreq_target(struct device *dev, unsigned long *freq, } } + /* + * We need to prevent cpu hotplug from happening while a dmc freq rate + * change is happening. + */ + get_online_cpus(); + err = clk_set_rate(dmcfreq->dmc_clk, target_rate); + + put_online_cpus(); + if (err) { dev_err(dev, "Cannot set frequency %lu (%d)\n", target_rate, err);