* [PATCH 0/2] Misc RAPL updates @ 2016-05-23 16:45 Jacob Pan 2016-05-23 16:45 ` [PATCH 1/2] powercap/rapl: add support for skx Jacob Pan 2016-05-23 16:45 ` [PATCH 2/2] powercap/rapl: reduce warning level Jacob Pan 0 siblings, 2 replies; 10+ messages in thread From: Jacob Pan @ 2016-05-23 16:45 UTC (permalink / raw) To: LKML, Rafael Wysocki, Linux PM Cc: Srinivas Pandruvada, Prarit Bhargava, Jacob Pan A couple of small updates to support Skylake server and make it less noisy on KVM. Jacob Pan (2): powercap/rapl: add support for skx powercap/rapl: reduce warning level drivers/powercap/intel_rapl.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) -- 1.9.1 ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 1/2] powercap/rapl: add support for skx 2016-05-23 16:45 [PATCH 0/2] Misc RAPL updates Jacob Pan @ 2016-05-23 16:45 ` Jacob Pan 2016-06-13 21:32 ` Rafael J. Wysocki 2016-05-23 16:45 ` [PATCH 2/2] powercap/rapl: reduce warning level Jacob Pan 1 sibling, 1 reply; 10+ messages in thread From: Jacob Pan @ 2016-05-23 16:45 UTC (permalink / raw) To: LKML, Rafael Wysocki, Linux PM Cc: Srinivas Pandruvada, Prarit Bhargava, Jacob Pan SKX RAPL interface is similar to HSX/BDX. Signed-off-by: Jacob Pan <jacob.jun.pan@linux.intel.com> --- drivers/powercap/intel_rapl.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/powercap/intel_rapl.c b/drivers/powercap/intel_rapl.c index 470bb62..a417e68 100644 --- a/drivers/powercap/intel_rapl.c +++ b/drivers/powercap/intel_rapl.c @@ -1096,6 +1096,7 @@ static const struct x86_cpu_id rapl_ids[] __initconst = { RAPL_CPU(0x4E, rapl_defaults_core),/* Skylake */ RAPL_CPU(0x4C, rapl_defaults_cht),/* Braswell/Cherryview */ RAPL_CPU(0x4A, rapl_defaults_tng),/* Tangier */ + RAPL_CPU(0x55, rapl_defaults_hsw_server),/* Skylake server */ RAPL_CPU(0x56, rapl_defaults_core),/* Future Xeon */ RAPL_CPU(0x5A, rapl_defaults_ann),/* Annidale */ RAPL_CPU(0X5C, rapl_defaults_core),/* Broxton */ -- 1.9.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 1/2] powercap/rapl: add support for skx 2016-05-23 16:45 ` [PATCH 1/2] powercap/rapl: add support for skx Jacob Pan @ 2016-06-13 21:32 ` Rafael J. Wysocki 2016-06-13 21:56 ` Rafael J. Wysocki 0 siblings, 1 reply; 10+ messages in thread From: Rafael J. Wysocki @ 2016-06-13 21:32 UTC (permalink / raw) To: Jacob Pan Cc: LKML, Rafael Wysocki, Linux PM, Srinivas Pandruvada, Prarit Bhargava On Monday, May 23, 2016 09:45:42 AM Jacob Pan wrote: > SKX RAPL interface is similar to HSX/BDX. > > Signed-off-by: Jacob Pan <jacob.jun.pan@linux.intel.com> > --- > drivers/powercap/intel_rapl.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/powercap/intel_rapl.c b/drivers/powercap/intel_rapl.c > index 470bb62..a417e68 100644 > --- a/drivers/powercap/intel_rapl.c > +++ b/drivers/powercap/intel_rapl.c > @@ -1096,6 +1096,7 @@ static const struct x86_cpu_id rapl_ids[] __initconst = { > RAPL_CPU(0x4E, rapl_defaults_core),/* Skylake */ > RAPL_CPU(0x4C, rapl_defaults_cht),/* Braswell/Cherryview */ > RAPL_CPU(0x4A, rapl_defaults_tng),/* Tangier */ > + RAPL_CPU(0x55, rapl_defaults_hsw_server),/* Skylake server */ > RAPL_CPU(0x56, rapl_defaults_core),/* Future Xeon */ > RAPL_CPU(0x5A, rapl_defaults_ann),/* Annidale */ > RAPL_CPU(0X5C, rapl_defaults_core),/* Broxton */ > Can you please rebase this on top of 4.7-rc3? Thanks, Rafael ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 1/2] powercap/rapl: add support for skx 2016-06-13 21:32 ` Rafael J. Wysocki @ 2016-06-13 21:56 ` Rafael J. Wysocki 2016-06-14 0:06 ` Jacob Pan 0 siblings, 1 reply; 10+ messages in thread From: Rafael J. Wysocki @ 2016-06-13 21:56 UTC (permalink / raw) To: Jacob Pan Cc: LKML, Rafael Wysocki, Linux PM, Srinivas Pandruvada, Prarit Bhargava On Monday, June 13, 2016 11:32:10 PM Rafael J. Wysocki wrote: > On Monday, May 23, 2016 09:45:42 AM Jacob Pan wrote: > > SKX RAPL interface is similar to HSX/BDX. > > > > Signed-off-by: Jacob Pan <jacob.jun.pan@linux.intel.com> > > --- > > drivers/powercap/intel_rapl.c | 1 + > > 1 file changed, 1 insertion(+) > > > > diff --git a/drivers/powercap/intel_rapl.c b/drivers/powercap/intel_rapl.c > > index 470bb62..a417e68 100644 > > --- a/drivers/powercap/intel_rapl.c > > +++ b/drivers/powercap/intel_rapl.c > > @@ -1096,6 +1096,7 @@ static const struct x86_cpu_id rapl_ids[] __initconst = { > > RAPL_CPU(0x4E, rapl_defaults_core),/* Skylake */ > > RAPL_CPU(0x4C, rapl_defaults_cht),/* Braswell/Cherryview */ > > RAPL_CPU(0x4A, rapl_defaults_tng),/* Tangier */ > > + RAPL_CPU(0x55, rapl_defaults_hsw_server),/* Skylake server */ > > RAPL_CPU(0x56, rapl_defaults_core),/* Future Xeon */ > > RAPL_CPU(0x5A, rapl_defaults_ann),/* Annidale */ > > RAPL_CPU(0X5C, rapl_defaults_core),/* Broxton */ > > > > Can you please rebase this on top of 4.7-rc3? Or rather on top of the x86/cpu branch from tip? BTW, I can take the Denverton support for RAPL too (unless already applied elsewhere), but it has to be based on x86/cpu as well. Thanks, Rafael ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 1/2] powercap/rapl: add support for skx 2016-06-13 21:56 ` Rafael J. Wysocki @ 2016-06-14 0:06 ` Jacob Pan 2016-06-14 0:21 ` Rafael J. Wysocki 0 siblings, 1 reply; 10+ messages in thread From: Jacob Pan @ 2016-06-14 0:06 UTC (permalink / raw) To: Rafael J. Wysocki Cc: LKML, Rafael Wysocki, Linux PM, Srinivas Pandruvada, Prarit Bhargava, jacob.jun.pan On Mon, 13 Jun 2016 23:56:18 +0200 "Rafael J. Wysocki" <rjw@rjwysocki.net> wrote: > On Monday, June 13, 2016 11:32:10 PM Rafael J. Wysocki wrote: > > On Monday, May 23, 2016 09:45:42 AM Jacob Pan wrote: > > > SKX RAPL interface is similar to HSX/BDX. > > > > > > Signed-off-by: Jacob Pan <jacob.jun.pan@linux.intel.com> > > > --- > > > drivers/powercap/intel_rapl.c | 1 + > > > 1 file changed, 1 insertion(+) > > > > > > diff --git a/drivers/powercap/intel_rapl.c > > > b/drivers/powercap/intel_rapl.c index 470bb62..a417e68 100644 > > > --- a/drivers/powercap/intel_rapl.c > > > +++ b/drivers/powercap/intel_rapl.c > > > @@ -1096,6 +1096,7 @@ static const struct x86_cpu_id rapl_ids[] > > > __initconst = { RAPL_CPU(0x4E, rapl_defaults_core),/* Skylake */ > > > RAPL_CPU(0x4C, rapl_defaults_cht),/* Braswell/Cherryview > > > */ RAPL_CPU(0x4A, rapl_defaults_tng),/* Tangier */ > > > + RAPL_CPU(0x55, rapl_defaults_hsw_server),/* Skylake > > > server */ RAPL_CPU(0x56, rapl_defaults_core),/* Future Xeon */ > > > RAPL_CPU(0x5A, rapl_defaults_ann),/* Annidale */ > > > RAPL_CPU(0X5C, rapl_defaults_core),/* Broxton */ > > > > > > > Can you please rebase this on top of 4.7-rc3? > > Or rather on top of the x86/cpu branch from tip? > done. just sent you v2. [PATCH v2] powercap/rapl: add support for denverton > BTW, I can take the Denverton support for RAPL too (unless already > applied elsewhere), but it has to be based on x86/cpu as well. > Not applied elsewhere, please take it. I was confused powercap/rapl with perf/rapl which should be in tip. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 1/2] powercap/rapl: add support for skx 2016-06-14 0:06 ` Jacob Pan @ 2016-06-14 0:21 ` Rafael J. Wysocki 2016-06-14 14:47 ` Jacob Pan 0 siblings, 1 reply; 10+ messages in thread From: Rafael J. Wysocki @ 2016-06-14 0:21 UTC (permalink / raw) To: Jacob Pan Cc: Rafael J. Wysocki, LKML, Rafael Wysocki, Linux PM, Srinivas Pandruvada, Prarit Bhargava On Tue, Jun 14, 2016 at 2:06 AM, Jacob Pan <jacob.jun.pan@linux.intel.com> wrote: > On Mon, 13 Jun 2016 23:56:18 +0200 > "Rafael J. Wysocki" <rjw@rjwysocki.net> wrote: > >> On Monday, June 13, 2016 11:32:10 PM Rafael J. Wysocki wrote: >> > On Monday, May 23, 2016 09:45:42 AM Jacob Pan wrote: >> > > SKX RAPL interface is similar to HSX/BDX. >> > > >> > > Signed-off-by: Jacob Pan <jacob.jun.pan@linux.intel.com> >> > > --- >> > > drivers/powercap/intel_rapl.c | 1 + >> > > 1 file changed, 1 insertion(+) >> > > >> > > diff --git a/drivers/powercap/intel_rapl.c >> > > b/drivers/powercap/intel_rapl.c index 470bb62..a417e68 100644 >> > > --- a/drivers/powercap/intel_rapl.c >> > > +++ b/drivers/powercap/intel_rapl.c >> > > @@ -1096,6 +1096,7 @@ static const struct x86_cpu_id rapl_ids[] >> > > __initconst = { RAPL_CPU(0x4E, rapl_defaults_core),/* Skylake */ >> > > RAPL_CPU(0x4C, rapl_defaults_cht),/* Braswell/Cherryview >> > > */ RAPL_CPU(0x4A, rapl_defaults_tng),/* Tangier */ >> > > + RAPL_CPU(0x55, rapl_defaults_hsw_server),/* Skylake >> > > server */ RAPL_CPU(0x56, rapl_defaults_core),/* Future Xeon */ >> > > RAPL_CPU(0x5A, rapl_defaults_ann),/* Annidale */ >> > > RAPL_CPU(0X5C, rapl_defaults_core),/* Broxton */ >> > > >> > >> > Can you please rebase this on top of 4.7-rc3? >> >> Or rather on top of the x86/cpu branch from tip? >> > done. just sent you v2. > [PATCH v2] powercap/rapl: add support for denverton Thanks for that one, but the $subject one was for SKX. Any chance to rebase and resend this one too? ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 1/2] powercap/rapl: add support for skx 2016-06-14 0:21 ` Rafael J. Wysocki @ 2016-06-14 14:47 ` Jacob Pan 2016-06-14 23:08 ` Rafael J. Wysocki 0 siblings, 1 reply; 10+ messages in thread From: Jacob Pan @ 2016-06-14 14:47 UTC (permalink / raw) To: Rafael J. Wysocki Cc: Rafael J. Wysocki, LKML, Rafael Wysocki, Linux PM, Srinivas Pandruvada, Prarit Bhargava, jacob.jun.pan On Tue, 14 Jun 2016 02:21:41 +0200 "Rafael J. Wysocki" <rafael@kernel.org> wrote: > On Tue, Jun 14, 2016 at 2:06 AM, Jacob Pan > <jacob.jun.pan@linux.intel.com> wrote: > > On Mon, 13 Jun 2016 23:56:18 +0200 > > "Rafael J. Wysocki" <rjw@rjwysocki.net> wrote: > > > >> On Monday, June 13, 2016 11:32:10 PM Rafael J. Wysocki wrote: > >> > On Monday, May 23, 2016 09:45:42 AM Jacob Pan wrote: > >> > > SKX RAPL interface is similar to HSX/BDX. > >> > > > >> > > Signed-off-by: Jacob Pan <jacob.jun.pan@linux.intel.com> > >> > > --- > >> > > drivers/powercap/intel_rapl.c | 1 + > >> > > 1 file changed, 1 insertion(+) > >> > > > >> > > diff --git a/drivers/powercap/intel_rapl.c > >> > > b/drivers/powercap/intel_rapl.c index 470bb62..a417e68 100644 > >> > > --- a/drivers/powercap/intel_rapl.c > >> > > +++ b/drivers/powercap/intel_rapl.c > >> > > @@ -1096,6 +1096,7 @@ static const struct x86_cpu_id rapl_ids[] > >> > > __initconst = { RAPL_CPU(0x4E, rapl_defaults_core),/* Skylake > >> > > */ RAPL_CPU(0x4C, rapl_defaults_cht),/* Braswell/Cherryview > >> > > */ RAPL_CPU(0x4A, rapl_defaults_tng),/* Tangier */ > >> > > + RAPL_CPU(0x55, rapl_defaults_hsw_server),/* Skylake > >> > > server */ RAPL_CPU(0x56, rapl_defaults_core),/* Future Xeon */ > >> > > RAPL_CPU(0x5A, rapl_defaults_ann),/* Annidale */ > >> > > RAPL_CPU(0X5C, rapl_defaults_core),/* Broxton */ > >> > > > >> > > >> > Can you please rebase this on top of 4.7-rc3? > >> > >> Or rather on top of the x86/cpu branch from tip? > >> > > done. just sent you v2. > > [PATCH v2] powercap/rapl: add support for denverton > > Thanks for that one, but the $subject one was for SKX. Any chance to > rebase and resend this one too? SKX has already been added by commit below in tip/x86/cpu: commit d40671e30cb46e834651e0ce3d4590c915171414 Author: Dave Hansen <dave.hansen@linux.intel.com> Date: Thu Jun 2 17:19:55 2016 -0700 x86, powercap, rapl: Add Skylake Server model number SKX uses similar RAPL interface as Broadwell server according to Jacob Pan. Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com> Cc: Andy Lutomirski <luto@amacapital.net> Cc: Borislav Petkov <bp@alien8.de> Cc: Brian Gerst <brgerst@gmail.com> Cc: Dave Hansen <dave@sr71.net> Cc: Denys Vlasenko <dvlasenk@redhat.com> Cc: H. Peter Anvin <hpa@zytor.com> Cc: Jacob Pan <jacob.jun.pan@linux.intel.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Rafael J. Wysocki <rjw@rjwysocki.net> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: jacob.jun.pan@intel.com Cc: linux-pm@vger.kernel.org Link: http://lkml.kernel.org/r/20160603001955.38E1E684@viggo.jf.intel.com Signed-off-by: Ingo Molnar <mingo@kernel.org> diff --git a/drivers/powercap/intel_rapl.c b/drivers/powercap/intel_rapl.c index f4f8532..2e8f2be 100644 --- a/drivers/powercap/intel_rapl.c +++ b/drivers/powercap/intel_rapl.c @@ -1114,6 +1114,7 @@ static const struct x86_cpu_id rapl_ids[] __initconst = { RAPL_CPU(INTEL_FAM6_SKYLAKE_DESKTOP, rapl_defaults_core), RAPL_CPU(INTEL_FAM6_SKYLAKE_MOBILE, rapl_defaults_core), + RAPL_CPU(INTEL_FAM6_SKYLAKE_X, rapl_defaults_hsw_server), RAPL_CPU(INTEL_FAM6_KABYLAKE_MOBILE, rapl_defaults_core), RAPL_CPU(INTEL_FAM6_KABYLAKE_DESKTOP, rapl_defaults_core), ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 1/2] powercap/rapl: add support for skx 2016-06-14 14:47 ` Jacob Pan @ 2016-06-14 23:08 ` Rafael J. Wysocki 0 siblings, 0 replies; 10+ messages in thread From: Rafael J. Wysocki @ 2016-06-14 23:08 UTC (permalink / raw) To: Jacob Pan Cc: Rafael J. Wysocki, LKML, Rafael Wysocki, Linux PM, Srinivas Pandruvada, Prarit Bhargava On Tuesday, June 14, 2016 07:47:45 AM Jacob Pan wrote: > On Tue, 14 Jun 2016 02:21:41 +0200 > "Rafael J. Wysocki" <rafael@kernel.org> wrote: > > > On Tue, Jun 14, 2016 at 2:06 AM, Jacob Pan > > <jacob.jun.pan@linux.intel.com> wrote: > > > On Mon, 13 Jun 2016 23:56:18 +0200 > > > "Rafael J. Wysocki" <rjw@rjwysocki.net> wrote: > > > > > >> On Monday, June 13, 2016 11:32:10 PM Rafael J. Wysocki wrote: > > >> > On Monday, May 23, 2016 09:45:42 AM Jacob Pan wrote: > > >> > > SKX RAPL interface is similar to HSX/BDX. > > >> > > > > >> > > Signed-off-by: Jacob Pan <jacob.jun.pan@linux.intel.com> > > >> > > --- > > >> > > drivers/powercap/intel_rapl.c | 1 + > > >> > > 1 file changed, 1 insertion(+) > > >> > > > > >> > > diff --git a/drivers/powercap/intel_rapl.c > > >> > > b/drivers/powercap/intel_rapl.c index 470bb62..a417e68 100644 > > >> > > --- a/drivers/powercap/intel_rapl.c > > >> > > +++ b/drivers/powercap/intel_rapl.c > > >> > > @@ -1096,6 +1096,7 @@ static const struct x86_cpu_id rapl_ids[] > > >> > > __initconst = { RAPL_CPU(0x4E, rapl_defaults_core),/* Skylake > > >> > > */ RAPL_CPU(0x4C, rapl_defaults_cht),/* Braswell/Cherryview > > >> > > */ RAPL_CPU(0x4A, rapl_defaults_tng),/* Tangier */ > > >> > > + RAPL_CPU(0x55, rapl_defaults_hsw_server),/* Skylake > > >> > > server */ RAPL_CPU(0x56, rapl_defaults_core),/* Future Xeon */ > > >> > > RAPL_CPU(0x5A, rapl_defaults_ann),/* Annidale */ > > >> > > RAPL_CPU(0X5C, rapl_defaults_core),/* Broxton */ > > >> > > > > >> > > > >> > Can you please rebase this on top of 4.7-rc3? > > >> > > >> Or rather on top of the x86/cpu branch from tip? > > >> > > > done. just sent you v2. > > > [PATCH v2] powercap/rapl: add support for denverton > > > > Thanks for that one, but the $subject one was for SKX. Any chance to > > rebase and resend this one too? > > SKX has already been added by commit below in tip/x86/cpu: > > commit d40671e30cb46e834651e0ce3d4590c915171414 > Author: Dave Hansen <dave.hansen@linux.intel.com> > Date: Thu Jun 2 17:19:55 2016 -0700 > > x86, powercap, rapl: Add Skylake Server model number OK, thanks! ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 2/2] powercap/rapl: reduce warning level 2016-05-23 16:45 [PATCH 0/2] Misc RAPL updates Jacob Pan 2016-05-23 16:45 ` [PATCH 1/2] powercap/rapl: add support for skx Jacob Pan @ 2016-05-23 16:45 ` Jacob Pan 2016-06-16 14:01 ` Rafael J. Wysocki 1 sibling, 1 reply; 10+ messages in thread From: Jacob Pan @ 2016-05-23 16:45 UTC (permalink / raw) To: LKML, Rafael Wysocki, Linux PM Cc: Srinivas Pandruvada, Prarit Bhargava, Jacob Pan Since RAPL interface is not architectual, its enumeration depends on poking MSRs instead of using CPUID method. In KVM guest, RAPL driver probe will fail and emit the following message for every CPU: no valid rapl domains found in package This patch limit the warning to debug only. Still return ENODEV so that RAPL does not run on KVM guest. Signed-off-by: Jacob Pan <jacob.jun.pan@linux.intel.com> --- drivers/powercap/intel_rapl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/powercap/intel_rapl.c b/drivers/powercap/intel_rapl.c index a417e68..b0a2dc4 100644 --- a/drivers/powercap/intel_rapl.c +++ b/drivers/powercap/intel_rapl.c @@ -1324,7 +1324,7 @@ static int rapl_detect_domains(struct rapl_package *rp, int cpu) } rp->nr_domains = bitmap_weight(&rp->domain_map, RAPL_DOMAIN_MAX); if (!rp->nr_domains) { - pr_err("no valid rapl domains found in package %d\n", rp->id); + pr_debug("no valid rapl domains found in package %d\n", rp->id); ret = -ENODEV; goto done; } -- 1.9.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] powercap/rapl: reduce warning level 2016-05-23 16:45 ` [PATCH 2/2] powercap/rapl: reduce warning level Jacob Pan @ 2016-06-16 14:01 ` Rafael J. Wysocki 0 siblings, 0 replies; 10+ messages in thread From: Rafael J. Wysocki @ 2016-06-16 14:01 UTC (permalink / raw) To: Jacob Pan Cc: LKML, Rafael Wysocki, Linux PM, Srinivas Pandruvada, Prarit Bhargava On Monday, May 23, 2016 09:45:43 AM Jacob Pan wrote: > Since RAPL interface is not architectual, its enumeration depends on poking > MSRs instead of using CPUID method. > > In KVM guest, RAPL driver probe will fail and emit the following message > for every CPU: no valid rapl domains found in package > > This patch limit the warning to debug only. Still return ENODEV so that RAPL > does not run on KVM guest. > > Signed-off-by: Jacob Pan <jacob.jun.pan@linux.intel.com> Applied, thanks! ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2016-06-16 13:57 UTC | newest] Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2016-05-23 16:45 [PATCH 0/2] Misc RAPL updates Jacob Pan 2016-05-23 16:45 ` [PATCH 1/2] powercap/rapl: add support for skx Jacob Pan 2016-06-13 21:32 ` Rafael J. Wysocki 2016-06-13 21:56 ` Rafael J. Wysocki 2016-06-14 0:06 ` Jacob Pan 2016-06-14 0:21 ` Rafael J. Wysocki 2016-06-14 14:47 ` Jacob Pan 2016-06-14 23:08 ` Rafael J. Wysocki 2016-05-23 16:45 ` [PATCH 2/2] powercap/rapl: reduce warning level Jacob Pan 2016-06-16 14:01 ` Rafael J. Wysocki
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).