LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
* [PATCH] intel_idle: Add Comet Lake support
@ 2020-02-26 17:34 Harry Pan
  2020-02-26 21:47 ` Rafael J. Wysocki
  2020-03-03  9:09 ` [PATCH v3] " Harry Pan
  0 siblings, 2 replies; 11+ messages in thread
From: Harry Pan @ 2020-02-26 17:34 UTC (permalink / raw)
  To: LKML; +Cc: gs0622, Harry Pan, Jacob Pan, Len Brown, linux-pm

Add Comet Lake ID to enable intel_idle driver support.
This is required for PC10 and S0ix.

Signed-off-by: Harry Pan <harry.pan@intel.com>

---

 drivers/idle/intel_idle.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/idle/intel_idle.c b/drivers/idle/intel_idle.c
index 347b08b56042..3cf292b2b7f1 100644
--- a/drivers/idle/intel_idle.c
+++ b/drivers/idle/intel_idle.c
@@ -1086,6 +1086,8 @@ static const struct x86_cpu_id intel_idle_ids[] __initconst = {
 	INTEL_CPU_FAM6(KABYLAKE_L,		idle_cpu_skl),
 	INTEL_CPU_FAM6(KABYLAKE,		idle_cpu_skl),
 	INTEL_CPU_FAM6(SKYLAKE_X,		idle_cpu_skx),
+	INTEL_CPU_FAM6(COMETLAKE_L,		idle_cpu_skl),
+	INTEL_CPU_FAM6(COMETLAKE,		idle_cpu_skl),
 	INTEL_CPU_FAM6(XEON_PHI_KNL,		idle_cpu_knl),
 	INTEL_CPU_FAM6(XEON_PHI_KNM,		idle_cpu_knl),
 	INTEL_CPU_FAM6(ATOM_GOLDMONT,		idle_cpu_bxt),
-- 
2.24.1


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] intel_idle: Add Comet Lake support
  2020-02-26 17:34 [PATCH] intel_idle: Add Comet Lake support Harry Pan
@ 2020-02-26 21:47 ` Rafael J. Wysocki
  2020-02-27 10:56   ` Rafael J. Wysocki
  2020-03-03  9:09 ` [PATCH v3] " Harry Pan
  1 sibling, 1 reply; 11+ messages in thread
From: Rafael J. Wysocki @ 2020-02-26 21:47 UTC (permalink / raw)
  To: Harry Pan; +Cc: LKML, Harry Pan, Jacob Pan, Len Brown, Linux PM

On Wed, Feb 26, 2020 at 6:34 PM Harry Pan <harry.pan@intel.com> wrote:
>
> Add Comet Lake ID to enable intel_idle driver support.
> This is required for PC10 and S0ix.

That shouldn't be the case for Linux 5.6-rc as long as the ACPI tables
expose C10 in _CST, so have you checked that?

> Signed-off-by: Harry Pan <harry.pan@intel.com>
>
> ---
>
>  drivers/idle/intel_idle.c | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/drivers/idle/intel_idle.c b/drivers/idle/intel_idle.c
> index 347b08b56042..3cf292b2b7f1 100644
> --- a/drivers/idle/intel_idle.c
> +++ b/drivers/idle/intel_idle.c
> @@ -1086,6 +1086,8 @@ static const struct x86_cpu_id intel_idle_ids[] __initconst = {
>         INTEL_CPU_FAM6(KABYLAKE_L,              idle_cpu_skl),
>         INTEL_CPU_FAM6(KABYLAKE,                idle_cpu_skl),
>         INTEL_CPU_FAM6(SKYLAKE_X,               idle_cpu_skx),
> +       INTEL_CPU_FAM6(COMETLAKE_L,             idle_cpu_skl),
> +       INTEL_CPU_FAM6(COMETLAKE,               idle_cpu_skl),
>         INTEL_CPU_FAM6(XEON_PHI_KNL,            idle_cpu_knl),
>         INTEL_CPU_FAM6(XEON_PHI_KNM,            idle_cpu_knl),
>         INTEL_CPU_FAM6(ATOM_GOLDMONT,           idle_cpu_bxt),
> --
> 2.24.1
>

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] intel_idle: Add Comet Lake support
  2020-02-26 21:47 ` Rafael J. Wysocki
@ 2020-02-27 10:56   ` Rafael J. Wysocki
  0 siblings, 0 replies; 11+ messages in thread
From: Rafael J. Wysocki @ 2020-02-27 10:56 UTC (permalink / raw)
  To: Harry Pan; +Cc: LKML, Harry Pan, Jacob Pan, Len Brown, Linux PM

On Wed, Feb 26, 2020 at 10:47 PM Rafael J. Wysocki <rafael@kernel.org> wrote:
>
> On Wed, Feb 26, 2020 at 6:34 PM Harry Pan <harry.pan@intel.com> wrote:
> >
> > Add Comet Lake ID to enable intel_idle driver support.
> > This is required for PC10 and S0ix.
>
> That shouldn't be the case for Linux 5.6-rc as long as the ACPI tables
> expose C10 in _CST, so have you checked that?

Regardless of that (which only is about the changelog), I wouldn't
just use idle_cpu_skl directly for CML like in the patch below.

Instead, I'd define something like

static const struct idle_cpu idle_cpu_cml __initconst = {
    .state_table = skl_cstates,
    .disable_promotion_to_c1e = true,
    .use_acpi = true,
};

and point  to it from the CML entries in intel_idle_ids[].

That would allow the driver to avoid enabling the C-states that are
not exposed in the ACPI tables by default which generally is safer
than exposing all of them for all CML platforms unconditionally.

> > Signed-off-by: Harry Pan <harry.pan@intel.com>
> >
> > ---
> >
> >  drivers/idle/intel_idle.c | 2 ++
> >  1 file changed, 2 insertions(+)
> >
> > diff --git a/drivers/idle/intel_idle.c b/drivers/idle/intel_idle.c
> > index 347b08b56042..3cf292b2b7f1 100644
> > --- a/drivers/idle/intel_idle.c
> > +++ b/drivers/idle/intel_idle.c
> > @@ -1086,6 +1086,8 @@ static const struct x86_cpu_id intel_idle_ids[] __initconst = {
> >         INTEL_CPU_FAM6(KABYLAKE_L,              idle_cpu_skl),
> >         INTEL_CPU_FAM6(KABYLAKE,                idle_cpu_skl),
> >         INTEL_CPU_FAM6(SKYLAKE_X,               idle_cpu_skx),
> > +       INTEL_CPU_FAM6(COMETLAKE_L,             idle_cpu_skl),
> > +       INTEL_CPU_FAM6(COMETLAKE,               idle_cpu_skl),

+       INTEL_CPU_FAM6(COMETLAKE_L,             idle_cpu_cml),
+       INTEL_CPU_FAM6(COMETLAKE,               idle_cpu_cml),

> >         INTEL_CPU_FAM6(XEON_PHI_KNL,            idle_cpu_knl),
> >         INTEL_CPU_FAM6(XEON_PHI_KNM,            idle_cpu_knl),
> >         INTEL_CPU_FAM6(ATOM_GOLDMONT,           idle_cpu_bxt),
> > --
> > 2.24.1
> >

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH v3] intel_idle: Add Comet Lake support
  2020-02-26 17:34 [PATCH] intel_idle: Add Comet Lake support Harry Pan
  2020-02-26 21:47 ` Rafael J. Wysocki
@ 2020-03-03  9:09 ` Harry Pan
  2020-03-04  9:53   ` Rafael J. Wysocki
  2020-03-04 11:43   ` [PATCH v4] " Harry Pan
  1 sibling, 2 replies; 11+ messages in thread
From: Harry Pan @ 2020-03-03  9:09 UTC (permalink / raw)
  To: LKML; +Cc: gs0622, Harry Pan, Jacob Pan, Len Brown, linux-pm

Add a general C-state table in order to support Comet Lake.

Signed-off-by: Harry Pan <harry.pan@intel.com>

---

 drivers/idle/intel_idle.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/idle/intel_idle.c b/drivers/idle/intel_idle.c
index d55606608ac8..05bce595fafe 100644
--- a/drivers/idle/intel_idle.c
+++ b/drivers/idle/intel_idle.c
@@ -1067,6 +1067,11 @@ static const struct idle_cpu idle_cpu_dnv = {
 	.use_acpi = true,
 };
 
+static const struct idle_cpu idle_cpu_cml = {
+	.state_table = skl_cstates,
+	.disable_promotion_to_c1e = true,
+};
+
 static const struct x86_cpu_id intel_idle_ids[] __initconst = {
 	INTEL_CPU_FAM6(NEHALEM_EP,		idle_cpu_nhx),
 	INTEL_CPU_FAM6(NEHALEM,			idle_cpu_nehalem),
@@ -1105,6 +1110,8 @@ static const struct x86_cpu_id intel_idle_ids[] __initconst = {
 	INTEL_CPU_FAM6(ATOM_GOLDMONT_PLUS,	idle_cpu_bxt),
 	INTEL_CPU_FAM6(ATOM_GOLDMONT_D,		idle_cpu_dnv),
 	INTEL_CPU_FAM6(ATOM_TREMONT_D,		idle_cpu_dnv),
+	INTEL_CPU_FAM6(COMETLAKE_L,		idle_cpu_cml),
+	INTEL_CPU_FAM6(COMETLAKE,		idle_cpu_cml),
 	{}
 };
 
-- 
2.24.1


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v3] intel_idle: Add Comet Lake support
  2020-03-03  9:09 ` [PATCH v3] " Harry Pan
@ 2020-03-04  9:53   ` Rafael J. Wysocki
  2020-03-04 11:57     ` Pan, Harry
  2020-03-04 11:43   ` [PATCH v4] " Harry Pan
  1 sibling, 1 reply; 11+ messages in thread
From: Rafael J. Wysocki @ 2020-03-04  9:53 UTC (permalink / raw)
  To: Harry Pan; +Cc: LKML, Harry Pan, Jacob Pan, Len Brown, Linux PM

On Tue, Mar 3, 2020 at 10:10 AM Harry Pan <harry.pan@intel.com> wrote:
>
> Add a general C-state table in order to support Comet Lake.
>
> Signed-off-by: Harry Pan <harry.pan@intel.com>
>
> ---
>
>  drivers/idle/intel_idle.c | 7 +++++++
>  1 file changed, 7 insertions(+)
>
> diff --git a/drivers/idle/intel_idle.c b/drivers/idle/intel_idle.c
> index d55606608ac8..05bce595fafe 100644
> --- a/drivers/idle/intel_idle.c
> +++ b/drivers/idle/intel_idle.c
> @@ -1067,6 +1067,11 @@ static const struct idle_cpu idle_cpu_dnv = {
>         .use_acpi = true,
>  };
>
> +static const struct idle_cpu idle_cpu_cml = {
> +       .state_table = skl_cstates,
> +       .disable_promotion_to_c1e = true,

.use_acpi = true,

missing?  Otherwise you can just use idle_cpu_skl as is, can't you?

> +};
> +
>  static const struct x86_cpu_id intel_idle_ids[] __initconst = {
>         INTEL_CPU_FAM6(NEHALEM_EP,              idle_cpu_nhx),
>         INTEL_CPU_FAM6(NEHALEM,                 idle_cpu_nehalem),
> @@ -1105,6 +1110,8 @@ static const struct x86_cpu_id intel_idle_ids[] __initconst = {
>         INTEL_CPU_FAM6(ATOM_GOLDMONT_PLUS,      idle_cpu_bxt),
>         INTEL_CPU_FAM6(ATOM_GOLDMONT_D,         idle_cpu_dnv),
>         INTEL_CPU_FAM6(ATOM_TREMONT_D,          idle_cpu_dnv),
> +       INTEL_CPU_FAM6(COMETLAKE_L,             idle_cpu_cml),
> +       INTEL_CPU_FAM6(COMETLAKE,               idle_cpu_cml),
>         {}
>  };
>
> --
> 2.24.1
>

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH v4] intel_idle: Add Comet Lake support
  2020-03-03  9:09 ` [PATCH v3] " Harry Pan
  2020-03-04  9:53   ` Rafael J. Wysocki
@ 2020-03-04 11:43   ` Harry Pan
  2020-03-12  9:25     ` [PATCH v5] " Harry Pan
  1 sibling, 1 reply; 11+ messages in thread
From: Harry Pan @ 2020-03-04 11:43 UTC (permalink / raw)
  To: LKML; +Cc: gs0622, Harry Pan, Jacob Pan, Len Brown, linux-pm

Add a general C-state table in order to support Comet Lake.

Signed-off-by: Harry Pan <harry.pan@intel.com>

---

 drivers/idle/intel_idle.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/idle/intel_idle.c b/drivers/idle/intel_idle.c
index d55606608ac8..d838143f1422 100644
--- a/drivers/idle/intel_idle.c
+++ b/drivers/idle/intel_idle.c
@@ -1105,6 +1105,8 @@ static const struct x86_cpu_id intel_idle_ids[] __initconst = {
 	INTEL_CPU_FAM6(ATOM_GOLDMONT_PLUS,	idle_cpu_bxt),
 	INTEL_CPU_FAM6(ATOM_GOLDMONT_D,		idle_cpu_dnv),
 	INTEL_CPU_FAM6(ATOM_TREMONT_D,		idle_cpu_dnv),
+	INTEL_CPU_FAM6(COMETLAKE_L,		idle_cpu_skl),
+	INTEL_CPU_FAM6(COMETLAKE,		idle_cpu_skl),
 	{}
 };
 
-- 
2.24.1


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v3] intel_idle: Add Comet Lake support
  2020-03-04  9:53   ` Rafael J. Wysocki
@ 2020-03-04 11:57     ` Pan, Harry
  2020-03-04 21:14       ` Rafael J. Wysocki
  0 siblings, 1 reply; 11+ messages in thread
From: Pan, Harry @ 2020-03-04 11:57 UTC (permalink / raw)
  To: Rafael J. Wysocki; +Cc: LKML, Harry Pan, Jacob Pan, Len Brown, Linux PM

Hi Rafael,

Yes, I skipped it considering to align CML-U V0 and A0 stepping w/ the same table; I sent v4 for your review.

In the other hand, I am proposing using _CST as long term plan in CrOS dev teams.


Sincerely,
Harry

> On Mar 4, 2020, at 17:53, Rafael J. Wysocki <rafael@kernel.org> wrote:
> 
> On Tue, Mar 3, 2020 at 10:10 AM Harry Pan <harry.pan@intel.com> wrote:
>> 
>> Add a general C-state table in order to support Comet Lake.
>> 
>> Signed-off-by: Harry Pan <harry.pan@intel.com>
>> 
>> ---
>> 
>> drivers/idle/intel_idle.c | 7 +++++++
>> 1 file changed, 7 insertions(+)
>> 
>> diff --git a/drivers/idle/intel_idle.c b/drivers/idle/intel_idle.c
>> index d55606608ac8..05bce595fafe 100644
>> --- a/drivers/idle/intel_idle.c
>> +++ b/drivers/idle/intel_idle.c
>> @@ -1067,6 +1067,11 @@ static const struct idle_cpu idle_cpu_dnv = {
>>        .use_acpi = true,
>> };
>> 
>> +static const struct idle_cpu idle_cpu_cml = {
>> +       .state_table = skl_cstates,
>> +       .disable_promotion_to_c1e = true,
> 
> .use_acpi = true,
> 
> missing?  Otherwise you can just use idle_cpu_skl as is, can't you?
> 
>> +};
>> +
>> static const struct x86_cpu_id intel_idle_ids[] __initconst = {
>>        INTEL_CPU_FAM6(NEHALEM_EP,              idle_cpu_nhx),
>>        INTEL_CPU_FAM6(NEHALEM,                 idle_cpu_nehalem),
>> @@ -1105,6 +1110,8 @@ static const struct x86_cpu_id intel_idle_ids[] __initconst = {
>>        INTEL_CPU_FAM6(ATOM_GOLDMONT_PLUS,      idle_cpu_bxt),
>>        INTEL_CPU_FAM6(ATOM_GOLDMONT_D,         idle_cpu_dnv),
>>        INTEL_CPU_FAM6(ATOM_TREMONT_D,          idle_cpu_dnv),
>> +       INTEL_CPU_FAM6(COMETLAKE_L,             idle_cpu_cml),
>> +       INTEL_CPU_FAM6(COMETLAKE,               idle_cpu_cml),
>>        {}
>> };
>> 
>> --
>> 2.24.1
>> 

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v3] intel_idle: Add Comet Lake support
  2020-03-04 11:57     ` Pan, Harry
@ 2020-03-04 21:14       ` Rafael J. Wysocki
  2020-03-09  9:02         ` Pan, Harry
  0 siblings, 1 reply; 11+ messages in thread
From: Rafael J. Wysocki @ 2020-03-04 21:14 UTC (permalink / raw)
  To: Pan, Harry
  Cc: Rafael J. Wysocki, LKML, Harry Pan, Jacob Pan, Len Brown, Linux PM

On Wed, Mar 4, 2020 at 12:57 PM Pan, Harry <harry.pan@intel.com> wrote:
>
> Hi Rafael,
>
> Yes, I skipped it considering to align CML-U V0 and A0 stepping w/ the same table; I sent v4 for your review.

Skipping that flag is risky, because it may cause some C-states to be
enabled on systems where they have not been validated (e.g. systems
shipping with other OSes which only use _CST C-states).  There were
problems related to that in the past which is one of the reasons for
adding _CST support to intel_idle.  use_acpi should be set for all new
platforms going forward as a rule.

> In the other hand, I am proposing using _CST as long term plan in CrOS dev teams.

That I obviously agree with. :-)


> > On Mar 4, 2020, at 17:53, Rafael J. Wysocki <rafael@kernel.org> wrote:
> >
> > On Tue, Mar 3, 2020 at 10:10 AM Harry Pan <harry.pan@intel.com> wrote:
> >>
> >> Add a general C-state table in order to support Comet Lake.
> >>
> >> Signed-off-by: Harry Pan <harry.pan@intel.com>
> >>
> >> ---
> >>
> >> drivers/idle/intel_idle.c | 7 +++++++
> >> 1 file changed, 7 insertions(+)
> >>
> >> diff --git a/drivers/idle/intel_idle.c b/drivers/idle/intel_idle.c
> >> index d55606608ac8..05bce595fafe 100644
> >> --- a/drivers/idle/intel_idle.c
> >> +++ b/drivers/idle/intel_idle.c
> >> @@ -1067,6 +1067,11 @@ static const struct idle_cpu idle_cpu_dnv = {
> >>        .use_acpi = true,
> >> };
> >>
> >> +static const struct idle_cpu idle_cpu_cml = {
> >> +       .state_table = skl_cstates,
> >> +       .disable_promotion_to_c1e = true,
> >
> > .use_acpi = true,
> >
> > missing?  Otherwise you can just use idle_cpu_skl as is, can't you?
> >
> >> +};
> >> +
> >> static const struct x86_cpu_id intel_idle_ids[] __initconst = {
> >>        INTEL_CPU_FAM6(NEHALEM_EP,              idle_cpu_nhx),
> >>        INTEL_CPU_FAM6(NEHALEM,                 idle_cpu_nehalem),
> >> @@ -1105,6 +1110,8 @@ static const struct x86_cpu_id intel_idle_ids[] __initconst = {
> >>        INTEL_CPU_FAM6(ATOM_GOLDMONT_PLUS,      idle_cpu_bxt),
> >>        INTEL_CPU_FAM6(ATOM_GOLDMONT_D,         idle_cpu_dnv),
> >>        INTEL_CPU_FAM6(ATOM_TREMONT_D,          idle_cpu_dnv),
> >> +       INTEL_CPU_FAM6(COMETLAKE_L,             idle_cpu_cml),
> >> +       INTEL_CPU_FAM6(COMETLAKE,               idle_cpu_cml),
> >>        {}
> >> };
> >>
> >> --
> >> 2.24.1
> >>

^ permalink raw reply	[flat|nested] 11+ messages in thread

* RE: [PATCH v3] intel_idle: Add Comet Lake support
  2020-03-04 21:14       ` Rafael J. Wysocki
@ 2020-03-09  9:02         ` Pan, Harry
  2020-03-10  8:37           ` Rafael J. Wysocki
  0 siblings, 1 reply; 11+ messages in thread
From: Pan, Harry @ 2020-03-09  9:02 UTC (permalink / raw)
  To: Rafael J. Wysocki; +Cc: LKML, Harry Pan, Jacob Pan, Len Brown, Linux PM

Hi Rafael,

Thanks for the comments.
I have some questions, I am wondering if you can share upstream thought w.r.t the future development of intel_idle.

 - It looks to me since v5.6 intel_idle will prefer _CST of ACPI rather than the general table embedded in this driver.
 - Any pros and cons of using the tables of _CST in firmware and embedded one in the kernel?
 - Can the table in _CST archive more optimal idle states management? 

If there is already any reference, documents I missed, kindly enlighten me then I would like to read it first before refining the questions.

Thanks and take care,
Harry
________________________________________
從: Rafael J. Wysocki [rafael@kernel.org]
寄件日期: 2020年3月5日 上午 05:14
至: Pan, Harry
副本: Rafael J. Wysocki; LKML; Harry Pan; Jacob Pan; Len Brown; Linux PM
主旨: Re: [PATCH v3] intel_idle: Add Comet Lake support

On Wed, Mar 4, 2020 at 12:57 PM Pan, Harry <harry.pan@intel.com> wrote:
>
> Hi Rafael,
>
> Yes, I skipped it considering to align CML-U V0 and A0 stepping w/ the same table; I sent v4 for your review.

Skipping that flag is risky, because it may cause some C-states to be
enabled on systems where they have not been validated (e.g. systems
shipping with other OSes which only use _CST C-states).  There were
problems related to that in the past which is one of the reasons for
adding _CST support to intel_idle.  use_acpi should be set for all new
platforms going forward as a rule.

> In the other hand, I am proposing using _CST as long term plan in CrOS dev teams.

That I obviously agree with. :-)


> > On Mar 4, 2020, at 17:53, Rafael J. Wysocki <rafael@kernel.org> wrote:
> >
> > On Tue, Mar 3, 2020 at 10:10 AM Harry Pan <harry.pan@intel.com> wrote:
> >>
> >> Add a general C-state table in order to support Comet Lake.
> >>
> >> Signed-off-by: Harry Pan <harry.pan@intel.com>
> >>
> >> ---
> >>
> >> drivers/idle/intel_idle.c | 7 +++++++
> >> 1 file changed, 7 insertions(+)
> >>
> >> diff --git a/drivers/idle/intel_idle.c b/drivers/idle/intel_idle.c
> >> index d55606608ac8..05bce595fafe 100644
> >> --- a/drivers/idle/intel_idle.c
> >> +++ b/drivers/idle/intel_idle.c
> >> @@ -1067,6 +1067,11 @@ static const struct idle_cpu idle_cpu_dnv = {
> >>        .use_acpi = true,
> >> };
> >>
> >> +static const struct idle_cpu idle_cpu_cml = {
> >> +       .state_table = skl_cstates,
> >> +       .disable_promotion_to_c1e = true,
> >
> > .use_acpi = true,
> >
> > missing?  Otherwise you can just use idle_cpu_skl as is, can't you?
> >
> >> +};
> >> +
> >> static const struct x86_cpu_id intel_idle_ids[] __initconst = {
> >>        INTEL_CPU_FAM6(NEHALEM_EP,              idle_cpu_nhx),
> >>        INTEL_CPU_FAM6(NEHALEM,                 idle_cpu_nehalem),
> >> @@ -1105,6 +1110,8 @@ static const struct x86_cpu_id intel_idle_ids[] __initconst = {
> >>        INTEL_CPU_FAM6(ATOM_GOLDMONT_PLUS,      idle_cpu_bxt),
> >>        INTEL_CPU_FAM6(ATOM_GOLDMONT_D,         idle_cpu_dnv),
> >>        INTEL_CPU_FAM6(ATOM_TREMONT_D,          idle_cpu_dnv),
> >> +       INTEL_CPU_FAM6(COMETLAKE_L,             idle_cpu_cml),
> >> +       INTEL_CPU_FAM6(COMETLAKE,               idle_cpu_cml),
> >>        {}
> >> };
> >>
> >> --
> >> 2.24.1
> >>

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v3] intel_idle: Add Comet Lake support
  2020-03-09  9:02         ` Pan, Harry
@ 2020-03-10  8:37           ` Rafael J. Wysocki
  0 siblings, 0 replies; 11+ messages in thread
From: Rafael J. Wysocki @ 2020-03-10  8:37 UTC (permalink / raw)
  To: Pan, Harry
  Cc: Rafael J. Wysocki, LKML, Harry Pan, Jacob Pan, Len Brown, Linux PM

On Mon, Mar 9, 2020 at 10:07 AM Pan, Harry <harry.pan@intel.com> wrote:
>
> Hi Rafael,
>
> Thanks for the comments.
> I have some questions, I am wondering if you can share upstream thought w.r.t the future development of intel_idle.
>
>  - It looks to me since v5.6 intel_idle will prefer _CST of ACPI rather than the general table embedded in this driver.

Not exactly.

The rules are as follows:
 * If there is a built-in table for the given processor in the driver,
it will be used, but the C-states that are not exposed in _CST will be
disabled by default (the state parameters come from the built-in table
for all C-states).
 * Otherwise (i.e. the driver does not recognized the given
processor), C-state definitions will be based on the _CST data.

See https://www.kernel.org/doc/html/latest/admin-guide/pm/intel_idle.html
for details.

>  - Any pros and cons of using the tables of _CST in firmware and embedded one in the kernel?

Both can be used at the same time (see above).

The built-in table in the kernel must be suitable for all of the
platforms shipped with the given processor (SoC).

Obviously, the _CST table allows intel_idle to work if the processor
included in the platform is not recognized by it.

Generally, our planned strategy is to provide built-in C-state tables
for all new "mainstream" processors with the use_acpi flag set to
avoid enabling C-states that may have not been validated on a given
platform by default.

>  - Can the table in _CST archive more optimal idle states management?

Possibly, but not likely.

> If there is already any reference, documents I missed, kindly enlighten me then I would like to read it first before refining the questions.

See above. :-)

Thanks!


___________________________________
> 從: Rafael J. Wysocki [rafael@kernel.org]
> 寄件日期: 2020年3月5日 上午 05:14
> 至: Pan, Harry
> 副本: Rafael J. Wysocki; LKML; Harry Pan; Jacob Pan; Len Brown; Linux PM
> 主旨: Re: [PATCH v3] intel_idle: Add Comet Lake support
>
> On Wed, Mar 4, 2020 at 12:57 PM Pan, Harry <harry.pan@intel.com> wrote:
> >
> > Hi Rafael,
> >
> > Yes, I skipped it considering to align CML-U V0 and A0 stepping w/ the same table; I sent v4 for your review.
>
> Skipping that flag is risky, because it may cause some C-states to be
> enabled on systems where they have not been validated (e.g. systems
> shipping with other OSes which only use _CST C-states).  There were
> problems related to that in the past which is one of the reasons for
> adding _CST support to intel_idle.  use_acpi should be set for all new
> platforms going forward as a rule.
>
> > In the other hand, I am proposing using _CST as long term plan in CrOS dev teams.
>
> That I obviously agree with. :-)
>
>
> > > On Mar 4, 2020, at 17:53, Rafael J. Wysocki <rafael@kernel.org> wrote:
> > >
> > > On Tue, Mar 3, 2020 at 10:10 AM Harry Pan <harry.pan@intel.com> wrote:
> > >>
> > >> Add a general C-state table in order to support Comet Lake.
> > >>
> > >> Signed-off-by: Harry Pan <harry.pan@intel.com>
> > >>
> > >> ---
> > >>
> > >> drivers/idle/intel_idle.c | 7 +++++++
> > >> 1 file changed, 7 insertions(+)
> > >>
> > >> diff --git a/drivers/idle/intel_idle.c b/drivers/idle/intel_idle.c
> > >> index d55606608ac8..05bce595fafe 100644
> > >> --- a/drivers/idle/intel_idle.c
> > >> +++ b/drivers/idle/intel_idle.c
> > >> @@ -1067,6 +1067,11 @@ static const struct idle_cpu idle_cpu_dnv = {
> > >>        .use_acpi = true,
> > >> };
> > >>
> > >> +static const struct idle_cpu idle_cpu_cml = {
> > >> +       .state_table = skl_cstates,
> > >> +       .disable_promotion_to_c1e = true,
> > >
> > > .use_acpi = true,
> > >
> > > missing?  Otherwise you can just use idle_cpu_skl as is, can't you?
> > >
> > >> +};
> > >> +
> > >> static const struct x86_cpu_id intel_idle_ids[] __initconst = {
> > >>        INTEL_CPU_FAM6(NEHALEM_EP,              idle_cpu_nhx),
> > >>        INTEL_CPU_FAM6(NEHALEM,                 idle_cpu_nehalem),
> > >> @@ -1105,6 +1110,8 @@ static const struct x86_cpu_id intel_idle_ids[] __initconst = {
> > >>        INTEL_CPU_FAM6(ATOM_GOLDMONT_PLUS,      idle_cpu_bxt),
> > >>        INTEL_CPU_FAM6(ATOM_GOLDMONT_D,         idle_cpu_dnv),
> > >>        INTEL_CPU_FAM6(ATOM_TREMONT_D,          idle_cpu_dnv),
> > >> +       INTEL_CPU_FAM6(COMETLAKE_L,             idle_cpu_cml),
> > >> +       INTEL_CPU_FAM6(COMETLAKE,               idle_cpu_cml),
> > >>        {}
> > >> };
> > >>
> > >> --
> > >> 2.24.1
> > >>

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH v5] intel_idle: Add Comet Lake support
  2020-03-04 11:43   ` [PATCH v4] " Harry Pan
@ 2020-03-12  9:25     ` Harry Pan
  0 siblings, 0 replies; 11+ messages in thread
From: Harry Pan @ 2020-03-12  9:25 UTC (permalink / raw)
  To: LKML; +Cc: gs0622, Harry Pan, Jacob Pan, Len Brown, linux-pm

Add built-in idle states table for Comet Lake.

This patch also respects the exposed ACPI _CST objects in platform firmware
to disable those non-matching C-state by default, defer its enabling to the
userspace through sysfs.

Summary:
 - With built-in table and without _CST table, all C-states are enabled
 - With both built-in and _CST tables, matching C-states are enabled

Signed-off-by: Harry Pan <harry.pan@intel.com>

---

 drivers/idle/intel_idle.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/idle/intel_idle.c b/drivers/idle/intel_idle.c
index d55606608ac8..49b385c36eea 100644
--- a/drivers/idle/intel_idle.c
+++ b/drivers/idle/intel_idle.c
@@ -1067,6 +1067,12 @@ static const struct idle_cpu idle_cpu_dnv = {
 	.use_acpi = true,
 };
 
+static const struct idle_cpu idle_cpu_cml = {
+	.state_table = skl_cstates,
+	.disable_promotion_to_c1e = true,
+	.use_acpi = true,
+};
+
 static const struct x86_cpu_id intel_idle_ids[] __initconst = {
 	INTEL_CPU_FAM6(NEHALEM_EP,		idle_cpu_nhx),
 	INTEL_CPU_FAM6(NEHALEM,			idle_cpu_nehalem),
@@ -1105,6 +1111,8 @@ static const struct x86_cpu_id intel_idle_ids[] __initconst = {
 	INTEL_CPU_FAM6(ATOM_GOLDMONT_PLUS,	idle_cpu_bxt),
 	INTEL_CPU_FAM6(ATOM_GOLDMONT_D,		idle_cpu_dnv),
 	INTEL_CPU_FAM6(ATOM_TREMONT_D,		idle_cpu_dnv),
+	INTEL_CPU_FAM6(COMETLAKE_L,		idle_cpu_cml),
+	INTEL_CPU_FAM6(COMETLAKE,		idle_cpu_cml),
 	{}
 };
 
-- 
2.24.1


^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2020-03-12  9:25 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-02-26 17:34 [PATCH] intel_idle: Add Comet Lake support Harry Pan
2020-02-26 21:47 ` Rafael J. Wysocki
2020-02-27 10:56   ` Rafael J. Wysocki
2020-03-03  9:09 ` [PATCH v3] " Harry Pan
2020-03-04  9:53   ` Rafael J. Wysocki
2020-03-04 11:57     ` Pan, Harry
2020-03-04 21:14       ` Rafael J. Wysocki
2020-03-09  9:02         ` Pan, Harry
2020-03-10  8:37           ` Rafael J. Wysocki
2020-03-04 11:43   ` [PATCH v4] " Harry Pan
2020-03-12  9:25     ` [PATCH v5] " Harry Pan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).