Subject: Re: to schedule() or not to schedule() ?

From: "Chris Friesen" <[email-masked]>
Date: Tue, 05 Aug 2008 12:37:50 -0600

Kevin Diggs wrote:
> Hi,
> 
> 
>     I have the following near the top of my cpufreq driver target routine:
> 
> while(test_and_set_bit(cf750gxmCfgChangeBit,&cf750gxvStateBits)) {
>         /*
>          * Someone mucking with our cfg? (I hope it is ok to call
>          * schedule() here! - truth is I have no idea what I am doing
>          * ... my reasoning is I want to yeild the cpu so whoever is
>          * mucking around can finish)
>          */
>         schedule();
> }
> 
> This is to prevent bad things from happening if someone is trying to 
> change a parameter for the driver via sysfs while the target routine is 
> running. Fortunately, because I had a bug where this bit was not getting 
> cleared on one of the paths through the target routine ... I now know it 
> is not safe to call schedule (it got stuck in there - knocked out my adb 
> keyboard! - (I think target is called from a timer that the governor 
> sets up ... interrupt context?)).

Is the issue that someone may be in the middle of a multi-stage 
procedure, and you've woken up partway through?

If so, what about simply rescheduling the timer for some short time in 
the future and aborting the current call?

Chris