On Wed, 14 Mar 2012 11:24:40 +0800 ShuoX Liu <shuox.liu@xxxxxxxxx> wrote: > From: ShuoX Liu <shuox.liu@xxxxxxxxx> > > Some C states of new CPU might be not good. One reason is BIOS might configure > them incorrectly. To help developers root cause it quickly, the patch adds a > new sysfs entry, so developers could disable specific C state manually. > > In addition, C state might have much impact on performance tuning, as it takes > much time to enter/exit C states, which might delay interrupt processing. With > the new debug option, developers could check if a deep C state could impact > performance and how much impact it could cause. > > ... > > +#define define_store_state_function(_name) \ > +static ssize_t store_state_##_name(struct cpuidle_state *state, \ > + const char *buf, size_t size) \ > +{ \ > + long value; \ > + if (!capable(CAP_SYS_ADMIN)) \ > + return -EPERM; \ > + kstrtol(buf, 0, &value); \ > + if (value) \ > + state->disable = 1; \ > + else \ > + state->disable = 0; \ > + return size; \ > +} drivers/cpuidle/sysfs.c: In function 'store_state_disable': drivers/cpuidle/sysfs.c:274: warning: ignoring return value of 'kstrtol', declared with attribute warn_unused_result The check is there for a reason - the kernel shouldn't silently accept random garbage inputs. --- a/drivers/cpuidle/sysfs.c~cpuidle-add-a-sysfs-entry-to-disable-specific-c-state-for-debug-purpose-fix +++ a/drivers/cpuidle/sysfs.c @@ -238,9 +238,12 @@ static ssize_t store_state_##_name(struc const char *buf, size_t size) \ { \ long value; \ + int err; \ if (!capable(CAP_SYS_ADMIN)) \ return -EPERM; \ - kstrtol(buf, 0, &value); \ + err = kstrtol(buf, 0, &value); \ + if (err) \ + return err; \ if (value) \ state->disable = 1; \ else \ _ _______________________________________________ linux-pm mailing list linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/linux-pm