lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CABOV4+XaTMd=A5_5eTtGG=S3DvgBCTxrqV4aXnp55pTsdbO4NA@mail.gmail.com>
Date:   Mon, 20 Apr 2020 17:36:01 +0800
From:   Chunyan Zhang <zhang.lyra@...il.com>
To:     "Rafael J . Wysocki" <rjw@...ysocki.net>,
        Daniel Lezcano <daniel.lezcano@...aro.org>,
        Rob Herring <robh+dt@...nel.org>,
        Mark Rutland <mark.rutland@....com>
Cc:     linux-pm@...r.kernel.org, devicetree@...r.kernel.org,
        LKML <linux-kernel@...r.kernel.org>,
        Chunyan Zhang <chunyan.zhang@...soc.com>
Subject: Re: [RFC PATCH v1 1/2] cpuidle: allow idle state to be found as
 deepest state for s2idle only

Hello,

Any comments or suggests on this? That would be very appreciated.

Thanks,
Chunyan


On Mon, Apr 13, 2020 at 5:09 PM <zhang.lyra@...il.com> wrote:
>
> From: Chunyan Zhang <chunyan.zhang@...soc.com>
>
> Add a new flag CPUIDLE_FLAG_S2IDLE to allow c-state to be found as
> deepest state for s2idle only, so that users can add a new c-state
> for using s2idle and don't worry disturbing other use cases such as
> play_idle() which probably don't want to enter into so much deep
> idle state since devices are not suspended for that kind of cases.
>
> Signed-off-by: Chunyan Zhang <chunyan.zhang@...soc.com>
> ---
>  drivers/cpuidle/cpuidle.c        | 3 ++-
>  drivers/cpuidle/dt_idle_states.c | 3 +++
>  include/linux/cpuidle.h          | 1 +
>  3 files changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c
> index de81298051b3..bb61f0c271d2 100644
> --- a/drivers/cpuidle/cpuidle.c
> +++ b/drivers/cpuidle/cpuidle.c
> @@ -89,7 +89,8 @@ static int find_deepest_state(struct cpuidle_driver *drv,
>                     s->exit_latency_ns <= latency_req ||
>                     s->exit_latency_ns > max_latency_ns ||
>                     (s->flags & forbidden_flags) ||
> -                   (s2idle && !s->enter_s2idle))
> +                   (s2idle && !s->enter_s2idle) ||
> +                   (!s2idle && (s->flags & CPUIDLE_FLAG_S2ILDE)))
>                         continue;
>
>                 latency_req = s->exit_latency_ns;
> diff --git a/drivers/cpuidle/dt_idle_states.c b/drivers/cpuidle/dt_idle_states.c
> index 252f2a9686a6..530db2726c05 100644
> --- a/drivers/cpuidle/dt_idle_states.c
> +++ b/drivers/cpuidle/dt_idle_states.c
> @@ -80,6 +80,9 @@ static int init_state_node(struct cpuidle_state *idle_state,
>         idle_state->flags = 0;
>         if (of_property_read_bool(state_node, "local-timer-stop"))
>                 idle_state->flags |= CPUIDLE_FLAG_TIMER_STOP;
> +
> +       if (of_property_read_bool(state_node, "for-s2idle-only"))
> +               idle_state->flags |= CPUIDLE_FLAG_S2ILDE;
>         /*
>          * TODO:
>          *      replace with kstrdup and pointer assignment when name
> diff --git a/include/linux/cpuidle.h b/include/linux/cpuidle.h
> index ec2ef63771f0..08da701f74cd 100644
> --- a/include/linux/cpuidle.h
> +++ b/include/linux/cpuidle.h
> @@ -78,6 +78,7 @@ struct cpuidle_state {
>  #define CPUIDLE_FLAG_TIMER_STOP BIT(2) /* timer is stopped on this state */
>  #define CPUIDLE_FLAG_UNUSABLE  BIT(3) /* avoid using this state */
>  #define CPUIDLE_FLAG_OFF       BIT(4) /* disable this state by default */
> +#define CPUIDLE_FLAG_S2ILDE    BIT(5) /* state is used for s2idle only */
>
>  struct cpuidle_device_kobj;
>  struct cpuidle_state_kobj;
> --
> 2.20.1
>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ