[Nouveau] [PATCH V2 1/4] clk: allow non-blocking for nouveau_clock_astate()

Vince Hsu vinceh at nvidia.com
Tue Jan 6 21:10:52 PST 2015


Hello Ben and Martin,

Any comments for this series?

Thanks,
Vince

On 12/22/2014 05:11 PM, Vince Hsu wrote:
> There might be some callers of nouveau_clock_astate(), and they are from
> inetrrupt context. So we must ensure that this function can be atomic in
> that condition. This patch adds one parameter which is subsequently passed
> to nouveau_pstate_calc(). Therefore we can choose whether we want to wait
> for the pstate work's completion or not.
>
> Signed-off-by: Vince Hsu <vinceh at nvidia.com>
> ---
>
> v2: none. (v1 is the RFC actually)
>
>   nvkm/include/subdev/clock.h | 2 +-
>   nvkm/subdev/clock/base.c    | 4 ++--
>   2 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/nvkm/include/subdev/clock.h b/nvkm/include/subdev/clock.h
> index 36ed035d4d42..6c36f0e4385b 100644
> --- a/nvkm/include/subdev/clock.h
> +++ b/nvkm/include/subdev/clock.h
> @@ -159,7 +159,7 @@ int nva3_clock_pll_calc(struct nouveau_clock *, struct nvbios_pll *,
>   			int clk, struct nouveau_pll_vals *);
>   
>   int nouveau_clock_ustate(struct nouveau_clock *, int req, int pwr);
> -int nouveau_clock_astate(struct nouveau_clock *, int req, int rel);
> +int nouveau_clock_astate(struct nouveau_clock *, int req, int rel, bool wait);
>   int nouveau_clock_dstate(struct nouveau_clock *, int req, int rel);
>   int nouveau_clock_tstate(struct nouveau_clock *, int req, int rel);
>   
> diff --git a/nvkm/subdev/clock/base.c b/nvkm/subdev/clock/base.c
> index e51b72d47129..b1bbe764fa35 100644
> --- a/nvkm/subdev/clock/base.c
> +++ b/nvkm/subdev/clock/base.c
> @@ -430,13 +430,13 @@ nouveau_clock_ustate(struct nouveau_clock *clk, int req, int pwr)
>   }
>   
>   int
> -nouveau_clock_astate(struct nouveau_clock *clk, int req, int rel)
> +nouveau_clock_astate(struct nouveau_clock *clk, int req, int rel, bool wait)
>   {
>   	if (!rel) clk->astate  = req;
>   	if ( rel) clk->astate += rel;
>   	clk->astate = min(clk->astate, clk->state_nr - 1);
>   	clk->astate = max(clk->astate, 0);
> -	return nouveau_pstate_calc(clk, true);
> +	return nouveau_pstate_calc(clk, wait);
>   }
>   
>   int


-----------------------------------------------------------------------------------
This email message is for the sole use of the intended recipient(s) and may contain
confidential information.  Any unauthorized review, use, disclosure or distribution
is prohibited.  If you are not the intended recipient, please contact the sender by
reply email and destroy all copies of the original message.
-----------------------------------------------------------------------------------


More information about the Nouveau mailing list