[tip:perf/core] perf/x86/intel/rapl: Add support for Knights Landing (KNL)
Commit-ID: 3a2a7797326a4bc59b7ff0cc92c8b274abf21892 Gitweb: http://git.kernel.org/tip/3a2a7797326a4bc59b7ff0cc92c8b274abf21892 Author: Dasaratharaman Chandramouli AuthorDate: Tue, 26 May 2015 11:47:39 -0700 Committer: Ingo Molnar CommitDate: Tue, 4 Aug 2015 10:16:52 +0200 perf/x86/intel/rapl: Add support for Knights Landing (KNL) Knights Landing DRAM RAPL supports PKG and DRAM RAPL domains. DRAM RAPL has a different fixed energy unit (2^-16J) similar to that of HSW. Signed-off-by: Dasaratharaman Chandramouli Signed-off-by: Peter Zijlstra (Intel) Acked-by: Stephane Eranian Acked-by: Jacob Pan Cc: Arnaldo Carvalho de Melo Cc: H. Peter Anvin Cc: Jacob Pan Jun Cc: Linus Torvalds Cc: Nikhil Rao Cc: Paul Mackerras Cc: Peter Zijlstra Cc: Thomas Gleixner Link: http://lkml.kernel.org/r/aa63b4a3af3160152fea1a10c807f4200527280c.1432665809.git.dasaratharaman.chandramo...@intel.com Signed-off-by: Ingo Molnar --- arch/x86/kernel/cpu/perf_event_intel_rapl.c | 20 1 file changed, 20 insertions(+) diff --git a/arch/x86/kernel/cpu/perf_event_intel_rapl.c b/arch/x86/kernel/cpu/perf_event_intel_rapl.c index 5cbd4e6..81431c0 100644 --- a/arch/x86/kernel/cpu/perf_event_intel_rapl.c +++ b/arch/x86/kernel/cpu/perf_event_intel_rapl.c @@ -86,6 +86,10 @@ static const char *rapl_domain_names[NR_RAPL_DOMAINS] __initconst = { 1<config * any other bit is reserved @@ -486,6 +490,18 @@ static struct attribute *rapl_events_hsw_attr[] = { NULL, }; +static struct attribute *rapl_events_knl_attr[] = { + EVENT_PTR(rapl_pkg), + EVENT_PTR(rapl_ram), + + EVENT_PTR(rapl_pkg_unit), + EVENT_PTR(rapl_ram_unit), + + EVENT_PTR(rapl_pkg_scale), + EVENT_PTR(rapl_ram_scale), + NULL, +}; + static struct attribute_group rapl_pmu_events_group = { .name = "events", .attrs = NULL, /* patched at runtime */ @@ -730,6 +746,10 @@ static int __init rapl_pmu_init(void) rapl_cntr_mask = RAPL_IDX_SRV; rapl_pmu_events_group.attrs = rapl_events_srv_attr; break; + case 87: /* Knights Landing */ + rapl_add_quirk(rapl_hsw_server_quirk); + rapl_cntr_mask = RAPL_IDX_KNL; + rapl_pmu_events_group.attrs = rapl_events_knl_attr; default: /* unsupported */ -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[tip:perf/core] perf/x86/intel/rapl: Add support for Knights Landing (KNL)
Commit-ID: 3a2a7797326a4bc59b7ff0cc92c8b274abf21892 Gitweb: http://git.kernel.org/tip/3a2a7797326a4bc59b7ff0cc92c8b274abf21892 Author: Dasaratharaman Chandramouli dasaratharaman.chandramo...@intel.com AuthorDate: Tue, 26 May 2015 11:47:39 -0700 Committer: Ingo Molnar mi...@kernel.org CommitDate: Tue, 4 Aug 2015 10:16:52 +0200 perf/x86/intel/rapl: Add support for Knights Landing (KNL) Knights Landing DRAM RAPL supports PKG and DRAM RAPL domains. DRAM RAPL has a different fixed energy unit (2^-16J) similar to that of HSW. Signed-off-by: Dasaratharaman Chandramouli dasaratharaman.chandramo...@intel.com Signed-off-by: Peter Zijlstra (Intel) pet...@infradead.org Acked-by: Stephane Eranian eran...@google.com Acked-by: Jacob Pan jacob.jun@linux.intel.com Cc: Arnaldo Carvalho de Melo a...@kernel.org Cc: H. Peter Anvin h...@zytor.com Cc: Jacob Pan Jun jacob.jun@linux.intel.com Cc: Linus Torvalds torva...@linux-foundation.org Cc: Nikhil Rao nikhil@intel.com Cc: Paul Mackerras pau...@samba.org Cc: Peter Zijlstra pet...@infradead.org Cc: Thomas Gleixner t...@linutronix.de Link: http://lkml.kernel.org/r/aa63b4a3af3160152fea1a10c807f4200527280c.1432665809.git.dasaratharaman.chandramo...@intel.com Signed-off-by: Ingo Molnar mi...@kernel.org --- arch/x86/kernel/cpu/perf_event_intel_rapl.c | 20 1 file changed, 20 insertions(+) diff --git a/arch/x86/kernel/cpu/perf_event_intel_rapl.c b/arch/x86/kernel/cpu/perf_event_intel_rapl.c index 5cbd4e6..81431c0 100644 --- a/arch/x86/kernel/cpu/perf_event_intel_rapl.c +++ b/arch/x86/kernel/cpu/perf_event_intel_rapl.c @@ -86,6 +86,10 @@ static const char *rapl_domain_names[NR_RAPL_DOMAINS] __initconst = { 1RAPL_IDX_RAM_NRG_STAT|\ 1RAPL_IDX_PP1_NRG_STAT) +/* Knights Landing has PKG, RAM */ +#define RAPL_IDX_KNL (1RAPL_IDX_PKG_NRG_STAT|\ +1RAPL_IDX_RAM_NRG_STAT) + /* * event code: LSB 8 bits, passed in attr-config * any other bit is reserved @@ -486,6 +490,18 @@ static struct attribute *rapl_events_hsw_attr[] = { NULL, }; +static struct attribute *rapl_events_knl_attr[] = { + EVENT_PTR(rapl_pkg), + EVENT_PTR(rapl_ram), + + EVENT_PTR(rapl_pkg_unit), + EVENT_PTR(rapl_ram_unit), + + EVENT_PTR(rapl_pkg_scale), + EVENT_PTR(rapl_ram_scale), + NULL, +}; + static struct attribute_group rapl_pmu_events_group = { .name = events, .attrs = NULL, /* patched at runtime */ @@ -730,6 +746,10 @@ static int __init rapl_pmu_init(void) rapl_cntr_mask = RAPL_IDX_SRV; rapl_pmu_events_group.attrs = rapl_events_srv_attr; break; + case 87: /* Knights Landing */ + rapl_add_quirk(rapl_hsw_server_quirk); + rapl_cntr_mask = RAPL_IDX_KNL; + rapl_pmu_events_group.attrs = rapl_events_knl_attr; default: /* unsupported */ -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] perf/x86/intel/rapl: Add support for Knights Landing (KNL)
On Mon, 2015-06-29 at 09:37 -0700, Dasaratharaman Chandramouli wrote: > On Mon, 2015-06-22 at 13:56 -0700, Dasaratharaman Chandramouli wrote: > > On Mon, 2015-06-22 at 11:52 -0700, Stephane Eranian wrote: > > > On Fri, May 29, 2015 at 4:55 AM, Peter Zijlstra > > > wrote: > > > > > > > > On Tue, May 26, 2015 at 11:47:39AM -0700, Dasaratharaman Chandramouli > > > > wrote: > > > > > Knights Landing DRAM RAPL supports PKG and DRAM RAPL domains. > > > > > DRAM RAPL has a different fixed energy unit (2^-16J) similar to > > > > > that of HSW. > > > > > > > > > > > > > Please also Cc the author of the code you're patching. > > > > > > > > Cc: Stephane Eranian > > > > > Signed-off-by: Dasaratharaman Chandramouli > > > > > > > > > > --- > > > > > arch/x86/kernel/cpu/perf_event_intel_rapl.c | 20 > > > > > 1 file changed, 20 insertions(+) > > > > > > > > > > diff --git a/arch/x86/kernel/cpu/perf_event_intel_rapl.c > > > > > b/arch/x86/kernel/cpu/perf_event_intel_rapl.c > > > > > index 999289b9..96633fb 100644 > > > > > --- a/arch/x86/kernel/cpu/perf_event_intel_rapl.c > > > > > +++ b/arch/x86/kernel/cpu/perf_event_intel_rapl.c > > > > > @@ -86,6 +86,10 @@ static const char > > > > > *rapl_domain_names[NR_RAPL_DOMAINS] __initconst = { > > > > >1< > > > >1< > > > > > > > > > +/* Knights Landing has PKG, RAM */ > > > > > +#define RAPL_IDX_KNL (1< > > > > + 1< > > > > + > > > > > /* > > > > > * event code: LSB 8 bits, passed in attr->config > > > > > * any other bit is reserved > > > > > @@ -487,6 +491,18 @@ static struct attribute *rapl_events_hsw_attr[] > > > > > = { > > > > > NULL, > > > > > }; > > > > > > > > > > +static struct attribute *rapl_events_knl_attr[] = { > > > > > + EVENT_PTR(rapl_pkg), > > > > > + EVENT_PTR(rapl_ram), > > > > > + > > > > > + EVENT_PTR(rapl_pkg_unit), > > > > > + EVENT_PTR(rapl_ram_unit), > > > > > + > > > > > + EVENT_PTR(rapl_pkg_scale), > > > > > + EVENT_PTR(rapl_ram_scale), > > > > > + NULL, > > > > > +}; > > > > > + > > > > > static struct attribute_group rapl_pmu_events_group = { > > > > > .name = "events", > > > > > .attrs = NULL, /* patched at runtime */ > > > > > @@ -730,6 +746,10 @@ static int __init rapl_pmu_init(void) > > > > > rapl_cntr_mask = RAPL_IDX_SRV; > > > > > rapl_pmu_events_group.attrs = rapl_events_srv_attr; > > > > > break; > > > > > + case 87: /* Knights Landing */ > > > > > + rapl_add_quirk(rapl_hsw_server_quirk); > > > > > > > > > Does KNL also have different raw units for RAM requiring the use of the > > > quirk? > > > > That is right. KNL's DRAM has a different fixed energy unit (2^-16J) > > similar to that of HSW > > Stepane, if there are no more comments/questions, could i get an ack? Ping. > > > > > > > > > > > > > > + rapl_cntr_mask = RAPL_IDX_KNL; > > > > > + rapl_pmu_events_group.attrs = rapl_events_knl_attr; > > > > > > > > break; > > > > > > > > ? > > > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] perf/x86/intel/rapl: Add support for Knights Landing (KNL)
On Mon, 2015-06-29 at 09:37 -0700, Dasaratharaman Chandramouli wrote: On Mon, 2015-06-22 at 13:56 -0700, Dasaratharaman Chandramouli wrote: On Mon, 2015-06-22 at 11:52 -0700, Stephane Eranian wrote: On Fri, May 29, 2015 at 4:55 AM, Peter Zijlstra pet...@infradead.org wrote: On Tue, May 26, 2015 at 11:47:39AM -0700, Dasaratharaman Chandramouli wrote: Knights Landing DRAM RAPL supports PKG and DRAM RAPL domains. DRAM RAPL has a different fixed energy unit (2^-16J) similar to that of HSW. Please also Cc the author of the code you're patching. Cc: Stephane Eranian eran...@google.com Signed-off-by: Dasaratharaman Chandramouli dasaratharaman.chandramo...@intel.com --- arch/x86/kernel/cpu/perf_event_intel_rapl.c | 20 1 file changed, 20 insertions(+) diff --git a/arch/x86/kernel/cpu/perf_event_intel_rapl.c b/arch/x86/kernel/cpu/perf_event_intel_rapl.c index 999289b9..96633fb 100644 --- a/arch/x86/kernel/cpu/perf_event_intel_rapl.c +++ b/arch/x86/kernel/cpu/perf_event_intel_rapl.c @@ -86,6 +86,10 @@ static const char *rapl_domain_names[NR_RAPL_DOMAINS] __initconst = { 1RAPL_IDX_RAM_NRG_STAT|\ 1RAPL_IDX_PP1_NRG_STAT) +/* Knights Landing has PKG, RAM */ +#define RAPL_IDX_KNL (1RAPL_IDX_PKG_NRG_STAT|\ + 1RAPL_IDX_RAM_NRG_STAT) + /* * event code: LSB 8 bits, passed in attr-config * any other bit is reserved @@ -487,6 +491,18 @@ static struct attribute *rapl_events_hsw_attr[] = { NULL, }; +static struct attribute *rapl_events_knl_attr[] = { + EVENT_PTR(rapl_pkg), + EVENT_PTR(rapl_ram), + + EVENT_PTR(rapl_pkg_unit), + EVENT_PTR(rapl_ram_unit), + + EVENT_PTR(rapl_pkg_scale), + EVENT_PTR(rapl_ram_scale), + NULL, +}; + static struct attribute_group rapl_pmu_events_group = { .name = events, .attrs = NULL, /* patched at runtime */ @@ -730,6 +746,10 @@ static int __init rapl_pmu_init(void) rapl_cntr_mask = RAPL_IDX_SRV; rapl_pmu_events_group.attrs = rapl_events_srv_attr; break; + case 87: /* Knights Landing */ + rapl_add_quirk(rapl_hsw_server_quirk); Does KNL also have different raw units for RAM requiring the use of the quirk? That is right. KNL's DRAM has a different fixed energy unit (2^-16J) similar to that of HSW Stepane, if there are no more comments/questions, could i get an ack? Ping. + rapl_cntr_mask = RAPL_IDX_KNL; + rapl_pmu_events_group.attrs = rapl_events_knl_attr; break; ? -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] perf/x86/intel/rapl: Add support for Knights Landing (KNL)
On Mon, 2015-06-22 at 13:56 -0700, Dasaratharaman Chandramouli wrote: > On Mon, 2015-06-22 at 11:52 -0700, Stephane Eranian wrote: > > On Fri, May 29, 2015 at 4:55 AM, Peter Zijlstra > > wrote: > > > > > > On Tue, May 26, 2015 at 11:47:39AM -0700, Dasaratharaman Chandramouli > > > wrote: > > > > Knights Landing DRAM RAPL supports PKG and DRAM RAPL domains. > > > > DRAM RAPL has a different fixed energy unit (2^-16J) similar to > > > > that of HSW. > > > > > > > > > > Please also Cc the author of the code you're patching. > > > > > > Cc: Stephane Eranian > > > > Signed-off-by: Dasaratharaman Chandramouli > > > > > > > > --- > > > > arch/x86/kernel/cpu/perf_event_intel_rapl.c | 20 > > > > 1 file changed, 20 insertions(+) > > > > > > > > diff --git a/arch/x86/kernel/cpu/perf_event_intel_rapl.c > > > > b/arch/x86/kernel/cpu/perf_event_intel_rapl.c > > > > index 999289b9..96633fb 100644 > > > > --- a/arch/x86/kernel/cpu/perf_event_intel_rapl.c > > > > +++ b/arch/x86/kernel/cpu/perf_event_intel_rapl.c > > > > @@ -86,6 +86,10 @@ static const char > > > > *rapl_domain_names[NR_RAPL_DOMAINS] __initconst = { > > > >1< > > >1< > > > > > > > +/* Knights Landing has PKG, RAM */ > > > > +#define RAPL_IDX_KNL (1< > > > + 1< > > > + > > > > /* > > > > * event code: LSB 8 bits, passed in attr->config > > > > * any other bit is reserved > > > > @@ -487,6 +491,18 @@ static struct attribute *rapl_events_hsw_attr[] = { > > > > NULL, > > > > }; > > > > > > > > +static struct attribute *rapl_events_knl_attr[] = { > > > > + EVENT_PTR(rapl_pkg), > > > > + EVENT_PTR(rapl_ram), > > > > + > > > > + EVENT_PTR(rapl_pkg_unit), > > > > + EVENT_PTR(rapl_ram_unit), > > > > + > > > > + EVENT_PTR(rapl_pkg_scale), > > > > + EVENT_PTR(rapl_ram_scale), > > > > + NULL, > > > > +}; > > > > + > > > > static struct attribute_group rapl_pmu_events_group = { > > > > .name = "events", > > > > .attrs = NULL, /* patched at runtime */ > > > > @@ -730,6 +746,10 @@ static int __init rapl_pmu_init(void) > > > > rapl_cntr_mask = RAPL_IDX_SRV; > > > > rapl_pmu_events_group.attrs = rapl_events_srv_attr; > > > > break; > > > > + case 87: /* Knights Landing */ > > > > + rapl_add_quirk(rapl_hsw_server_quirk); > > > > > > Does KNL also have different raw units for RAM requiring the use of the > > quirk? > > That is right. KNL's DRAM has a different fixed energy unit (2^-16J) > similar to that of HSW Stepane, if there are no more comments/questions, could i get an ack? > > > > > > > > > > + rapl_cntr_mask = RAPL_IDX_KNL; > > > > + rapl_pmu_events_group.attrs = rapl_events_knl_attr; > > > > > > break; > > > > > > ? > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] perf/x86/intel/rapl: Add support for Knights Landing (KNL)
On Mon, 2015-06-22 at 13:56 -0700, Dasaratharaman Chandramouli wrote: On Mon, 2015-06-22 at 11:52 -0700, Stephane Eranian wrote: On Fri, May 29, 2015 at 4:55 AM, Peter Zijlstra pet...@infradead.org wrote: On Tue, May 26, 2015 at 11:47:39AM -0700, Dasaratharaman Chandramouli wrote: Knights Landing DRAM RAPL supports PKG and DRAM RAPL domains. DRAM RAPL has a different fixed energy unit (2^-16J) similar to that of HSW. Please also Cc the author of the code you're patching. Cc: Stephane Eranian eran...@google.com Signed-off-by: Dasaratharaman Chandramouli dasaratharaman.chandramo...@intel.com --- arch/x86/kernel/cpu/perf_event_intel_rapl.c | 20 1 file changed, 20 insertions(+) diff --git a/arch/x86/kernel/cpu/perf_event_intel_rapl.c b/arch/x86/kernel/cpu/perf_event_intel_rapl.c index 999289b9..96633fb 100644 --- a/arch/x86/kernel/cpu/perf_event_intel_rapl.c +++ b/arch/x86/kernel/cpu/perf_event_intel_rapl.c @@ -86,6 +86,10 @@ static const char *rapl_domain_names[NR_RAPL_DOMAINS] __initconst = { 1RAPL_IDX_RAM_NRG_STAT|\ 1RAPL_IDX_PP1_NRG_STAT) +/* Knights Landing has PKG, RAM */ +#define RAPL_IDX_KNL (1RAPL_IDX_PKG_NRG_STAT|\ + 1RAPL_IDX_RAM_NRG_STAT) + /* * event code: LSB 8 bits, passed in attr-config * any other bit is reserved @@ -487,6 +491,18 @@ static struct attribute *rapl_events_hsw_attr[] = { NULL, }; +static struct attribute *rapl_events_knl_attr[] = { + EVENT_PTR(rapl_pkg), + EVENT_PTR(rapl_ram), + + EVENT_PTR(rapl_pkg_unit), + EVENT_PTR(rapl_ram_unit), + + EVENT_PTR(rapl_pkg_scale), + EVENT_PTR(rapl_ram_scale), + NULL, +}; + static struct attribute_group rapl_pmu_events_group = { .name = events, .attrs = NULL, /* patched at runtime */ @@ -730,6 +746,10 @@ static int __init rapl_pmu_init(void) rapl_cntr_mask = RAPL_IDX_SRV; rapl_pmu_events_group.attrs = rapl_events_srv_attr; break; + case 87: /* Knights Landing */ + rapl_add_quirk(rapl_hsw_server_quirk); Does KNL also have different raw units for RAM requiring the use of the quirk? That is right. KNL's DRAM has a different fixed energy unit (2^-16J) similar to that of HSW Stepane, if there are no more comments/questions, could i get an ack? + rapl_cntr_mask = RAPL_IDX_KNL; + rapl_pmu_events_group.attrs = rapl_events_knl_attr; break; ? -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] intel powerclamp: support Knights Landing
On Tue, 2015-06-23 at 01:39 +0200, Rafael J. Wysocki wrote: > On Monday, June 22, 2015 04:51:13 PM Chandramouli, Dasaratharaman wrote: > > Can we make this patch available for 4.2 > > It is included in the power management and ACPI pull request for 4.1-rc1 > I've just sent. I just checked the branch pm+acpi-4.2-rc1 and i don't see the Knights Landing patch for the powerclamp driver in that. Kindly verify that it was added. https://lkml.org/lkml/2015/4/17/795 > > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] intel powerclamp: support Knights Landing
On Tue, 2015-06-23 at 01:39 +0200, Rafael J. Wysocki wrote: On Monday, June 22, 2015 04:51:13 PM Chandramouli, Dasaratharaman wrote: Can we make this patch available for 4.2 It is included in the power management and ACPI pull request for 4.1-rc1 I've just sent. I just checked the branch pm+acpi-4.2-rc1 and i don't see the Knights Landing patch for the powerclamp driver in that. Kindly verify that it was added. https://lkml.org/lkml/2015/4/17/795 -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] perf/x86/intel/rapl: Add support for Knights Landing (KNL)
On Mon, 2015-06-22 at 11:52 -0700, Stephane Eranian wrote: > On Fri, May 29, 2015 at 4:55 AM, Peter Zijlstra wrote: > > > > On Tue, May 26, 2015 at 11:47:39AM -0700, Dasaratharaman Chandramouli wrote: > > > Knights Landing DRAM RAPL supports PKG and DRAM RAPL domains. > > > DRAM RAPL has a different fixed energy unit (2^-16J) similar to > > > that of HSW. > > > > > > > Please also Cc the author of the code you're patching. > > > > Cc: Stephane Eranian > > > Signed-off-by: Dasaratharaman Chandramouli > > > > > > --- > > > arch/x86/kernel/cpu/perf_event_intel_rapl.c | 20 > > > 1 file changed, 20 insertions(+) > > > > > > diff --git a/arch/x86/kernel/cpu/perf_event_intel_rapl.c > > > b/arch/x86/kernel/cpu/perf_event_intel_rapl.c > > > index 999289b9..96633fb 100644 > > > --- a/arch/x86/kernel/cpu/perf_event_intel_rapl.c > > > +++ b/arch/x86/kernel/cpu/perf_event_intel_rapl.c > > > @@ -86,6 +86,10 @@ static const char *rapl_domain_names[NR_RAPL_DOMAINS] > > > __initconst = { > > >1< > >1< > > > > > +/* Knights Landing has PKG, RAM */ > > > +#define RAPL_IDX_KNL (1< > > + 1< > > + > > > /* > > > * event code: LSB 8 bits, passed in attr->config > > > * any other bit is reserved > > > @@ -487,6 +491,18 @@ static struct attribute *rapl_events_hsw_attr[] = { > > > NULL, > > > }; > > > > > > +static struct attribute *rapl_events_knl_attr[] = { > > > + EVENT_PTR(rapl_pkg), > > > + EVENT_PTR(rapl_ram), > > > + > > > + EVENT_PTR(rapl_pkg_unit), > > > + EVENT_PTR(rapl_ram_unit), > > > + > > > + EVENT_PTR(rapl_pkg_scale), > > > + EVENT_PTR(rapl_ram_scale), > > > + NULL, > > > +}; > > > + > > > static struct attribute_group rapl_pmu_events_group = { > > > .name = "events", > > > .attrs = NULL, /* patched at runtime */ > > > @@ -730,6 +746,10 @@ static int __init rapl_pmu_init(void) > > > rapl_cntr_mask = RAPL_IDX_SRV; > > > rapl_pmu_events_group.attrs = rapl_events_srv_attr; > > > break; > > > + case 87: /* Knights Landing */ > > > + rapl_add_quirk(rapl_hsw_server_quirk); > > > Does KNL also have different raw units for RAM requiring the use of the quirk? That is right. KNL's DRAM has a different fixed energy unit (2^-16J) similar to that of HSW > > > > > > + rapl_cntr_mask = RAPL_IDX_KNL; > > > + rapl_pmu_events_group.attrs = rapl_events_knl_attr; > > > > break; > > > > ? -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] perf/x86/intel/rapl: Add support for Knights Landing (KNL)
Ping. On Fri, 2015-05-29 at 10:06 -0700, Jacob Pan wrote: > On Tue, 26 May 2015 11:47:39 -0700 > Dasaratharaman Chandramouli > wrote: > > > Knights Landing DRAM RAPL supports PKG and DRAM RAPL domains. > > DRAM RAPL has a different fixed energy unit (2^-16J) similar to > > that of HSW. > > > Acked-by: Jacob Pan > > Signed-off-by: Dasaratharaman Chandramouli > > --- > > arch/x86/kernel/cpu/perf_event_intel_rapl.c | 20 > > 1 file changed, 20 insertions(+) > > > > diff --git a/arch/x86/kernel/cpu/perf_event_intel_rapl.c > > b/arch/x86/kernel/cpu/perf_event_intel_rapl.c index 999289b9..96633fb > > 100644 --- a/arch/x86/kernel/cpu/perf_event_intel_rapl.c > > +++ b/arch/x86/kernel/cpu/perf_event_intel_rapl.c > > @@ -86,6 +86,10 @@ static const char > > *rapl_domain_names[NR_RAPL_DOMAINS] __initconst = > > { 1< > > > +/* Knights Landing has PKG, RAM */ > > +#define RAPL_IDX_KNL (1< > +1< > + > > /* > > * event code: LSB 8 bits, passed in attr->config > > * any other bit is reserved > > @@ -487,6 +491,18 @@ static struct attribute *rapl_events_hsw_attr[] > > = { NULL, > > }; > > > > +static struct attribute *rapl_events_knl_attr[] = { > > + EVENT_PTR(rapl_pkg), > > + EVENT_PTR(rapl_ram), > > + > > + EVENT_PTR(rapl_pkg_unit), > > + EVENT_PTR(rapl_ram_unit), > > + > > + EVENT_PTR(rapl_pkg_scale), > > + EVENT_PTR(rapl_ram_scale), > > + NULL, > > +}; > > + > > static struct attribute_group rapl_pmu_events_group = { > > .name = "events", > > .attrs = NULL, /* patched at runtime */ > > @@ -730,6 +746,10 @@ static int __init rapl_pmu_init(void) > > rapl_cntr_mask = RAPL_IDX_SRV; > > rapl_pmu_events_group.attrs = rapl_events_srv_attr; > > break; > > + case 87: /* Knights Landing */ > > + rapl_add_quirk(rapl_hsw_server_quirk); > > + rapl_cntr_mask = RAPL_IDX_KNL; > > + rapl_pmu_events_group.attrs = rapl_events_knl_attr; > > > > default: > > /* unsupported */ > > [Jacob Pan] -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] perf/x86/intel/rapl: Add support for Knights Landing (KNL)
Ping. On Fri, 2015-05-29 at 10:06 -0700, Jacob Pan wrote: On Tue, 26 May 2015 11:47:39 -0700 Dasaratharaman Chandramouli dasaratharaman.chandramo...@intel.com wrote: Knights Landing DRAM RAPL supports PKG and DRAM RAPL domains. DRAM RAPL has a different fixed energy unit (2^-16J) similar to that of HSW. Acked-by: Jacob Pan jacob.jun@linux.intel.com Signed-off-by: Dasaratharaman Chandramouli dasaratharaman.chandramo...@intel.com --- arch/x86/kernel/cpu/perf_event_intel_rapl.c | 20 1 file changed, 20 insertions(+) diff --git a/arch/x86/kernel/cpu/perf_event_intel_rapl.c b/arch/x86/kernel/cpu/perf_event_intel_rapl.c index 999289b9..96633fb 100644 --- a/arch/x86/kernel/cpu/perf_event_intel_rapl.c +++ b/arch/x86/kernel/cpu/perf_event_intel_rapl.c @@ -86,6 +86,10 @@ static const char *rapl_domain_names[NR_RAPL_DOMAINS] __initconst = { 1RAPL_IDX_RAM_NRG_STAT|\ 1RAPL_IDX_PP1_NRG_STAT) +/* Knights Landing has PKG, RAM */ +#define RAPL_IDX_KNL (1RAPL_IDX_PKG_NRG_STAT|\ +1RAPL_IDX_RAM_NRG_STAT) + /* * event code: LSB 8 bits, passed in attr-config * any other bit is reserved @@ -487,6 +491,18 @@ static struct attribute *rapl_events_hsw_attr[] = { NULL, }; +static struct attribute *rapl_events_knl_attr[] = { + EVENT_PTR(rapl_pkg), + EVENT_PTR(rapl_ram), + + EVENT_PTR(rapl_pkg_unit), + EVENT_PTR(rapl_ram_unit), + + EVENT_PTR(rapl_pkg_scale), + EVENT_PTR(rapl_ram_scale), + NULL, +}; + static struct attribute_group rapl_pmu_events_group = { .name = events, .attrs = NULL, /* patched at runtime */ @@ -730,6 +746,10 @@ static int __init rapl_pmu_init(void) rapl_cntr_mask = RAPL_IDX_SRV; rapl_pmu_events_group.attrs = rapl_events_srv_attr; break; + case 87: /* Knights Landing */ + rapl_add_quirk(rapl_hsw_server_quirk); + rapl_cntr_mask = RAPL_IDX_KNL; + rapl_pmu_events_group.attrs = rapl_events_knl_attr; default: /* unsupported */ [Jacob Pan] -- To unsubscribe from this list: send the line unsubscribe linux-kernel in Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] perf/x86/intel/rapl: Add support for Knights Landing (KNL)
On Mon, 2015-06-22 at 11:52 -0700, Stephane Eranian wrote: On Fri, May 29, 2015 at 4:55 AM, Peter Zijlstra pet...@infradead.org wrote: On Tue, May 26, 2015 at 11:47:39AM -0700, Dasaratharaman Chandramouli wrote: Knights Landing DRAM RAPL supports PKG and DRAM RAPL domains. DRAM RAPL has a different fixed energy unit (2^-16J) similar to that of HSW. Please also Cc the author of the code you're patching. Cc: Stephane Eranian eran...@google.com Signed-off-by: Dasaratharaman Chandramouli dasaratharaman.chandramo...@intel.com --- arch/x86/kernel/cpu/perf_event_intel_rapl.c | 20 1 file changed, 20 insertions(+) diff --git a/arch/x86/kernel/cpu/perf_event_intel_rapl.c b/arch/x86/kernel/cpu/perf_event_intel_rapl.c index 999289b9..96633fb 100644 --- a/arch/x86/kernel/cpu/perf_event_intel_rapl.c +++ b/arch/x86/kernel/cpu/perf_event_intel_rapl.c @@ -86,6 +86,10 @@ static const char *rapl_domain_names[NR_RAPL_DOMAINS] __initconst = { 1RAPL_IDX_RAM_NRG_STAT|\ 1RAPL_IDX_PP1_NRG_STAT) +/* Knights Landing has PKG, RAM */ +#define RAPL_IDX_KNL (1RAPL_IDX_PKG_NRG_STAT|\ + 1RAPL_IDX_RAM_NRG_STAT) + /* * event code: LSB 8 bits, passed in attr-config * any other bit is reserved @@ -487,6 +491,18 @@ static struct attribute *rapl_events_hsw_attr[] = { NULL, }; +static struct attribute *rapl_events_knl_attr[] = { + EVENT_PTR(rapl_pkg), + EVENT_PTR(rapl_ram), + + EVENT_PTR(rapl_pkg_unit), + EVENT_PTR(rapl_ram_unit), + + EVENT_PTR(rapl_pkg_scale), + EVENT_PTR(rapl_ram_scale), + NULL, +}; + static struct attribute_group rapl_pmu_events_group = { .name = events, .attrs = NULL, /* patched at runtime */ @@ -730,6 +746,10 @@ static int __init rapl_pmu_init(void) rapl_cntr_mask = RAPL_IDX_SRV; rapl_pmu_events_group.attrs = rapl_events_srv_attr; break; + case 87: /* Knights Landing */ + rapl_add_quirk(rapl_hsw_server_quirk); Does KNL also have different raw units for RAM requiring the use of the quirk? That is right. KNL's DRAM has a different fixed energy unit (2^-16J) similar to that of HSW + rapl_cntr_mask = RAPL_IDX_KNL; + rapl_pmu_events_group.attrs = rapl_events_knl_attr; break; ? -- To unsubscribe from this list: send the line unsubscribe linux-kernel in Please read the FAQ at http://www.tux.org/lkml/
[PATCH] perf/x86/intel/rapl: Add support for Knights Landing (KNL)
Knights Landing DRAM RAPL supports PKG and DRAM RAPL domains. DRAM RAPL has a different fixed energy unit (2^-16J) similar to that of HSW. Signed-off-by: Dasaratharaman Chandramouli --- arch/x86/kernel/cpu/perf_event_intel_rapl.c | 20 1 file changed, 20 insertions(+) diff --git a/arch/x86/kernel/cpu/perf_event_intel_rapl.c b/arch/x86/kernel/cpu/perf_event_intel_rapl.c index 999289b9..96633fb 100644 --- a/arch/x86/kernel/cpu/perf_event_intel_rapl.c +++ b/arch/x86/kernel/cpu/perf_event_intel_rapl.c @@ -86,6 +86,10 @@ static const char *rapl_domain_names[NR_RAPL_DOMAINS] __initconst = { 1<config * any other bit is reserved @@ -487,6 +491,18 @@ static struct attribute *rapl_events_hsw_attr[] = { NULL, }; +static struct attribute *rapl_events_knl_attr[] = { + EVENT_PTR(rapl_pkg), + EVENT_PTR(rapl_ram), + + EVENT_PTR(rapl_pkg_unit), + EVENT_PTR(rapl_ram_unit), + + EVENT_PTR(rapl_pkg_scale), + EVENT_PTR(rapl_ram_scale), + NULL, +}; + static struct attribute_group rapl_pmu_events_group = { .name = "events", .attrs = NULL, /* patched at runtime */ @@ -730,6 +746,10 @@ static int __init rapl_pmu_init(void) rapl_cntr_mask = RAPL_IDX_SRV; rapl_pmu_events_group.attrs = rapl_events_srv_attr; break; + case 87: /* Knights Landing */ + rapl_add_quirk(rapl_hsw_server_quirk); + rapl_cntr_mask = RAPL_IDX_KNL; + rapl_pmu_events_group.attrs = rapl_events_knl_attr; default: /* unsupported */ -- 1.8.1.5 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH] perf/x86/intel/rapl: Add support for Knights Landing (KNL)
Knights Landing DRAM RAPL supports PKG and DRAM RAPL domains. DRAM RAPL has a different fixed energy unit (2^-16J) similar to that of HSW. Signed-off-by: Dasaratharaman Chandramouli dasaratharaman.chandramo...@intel.com --- arch/x86/kernel/cpu/perf_event_intel_rapl.c | 20 1 file changed, 20 insertions(+) diff --git a/arch/x86/kernel/cpu/perf_event_intel_rapl.c b/arch/x86/kernel/cpu/perf_event_intel_rapl.c index 999289b9..96633fb 100644 --- a/arch/x86/kernel/cpu/perf_event_intel_rapl.c +++ b/arch/x86/kernel/cpu/perf_event_intel_rapl.c @@ -86,6 +86,10 @@ static const char *rapl_domain_names[NR_RAPL_DOMAINS] __initconst = { 1RAPL_IDX_RAM_NRG_STAT|\ 1RAPL_IDX_PP1_NRG_STAT) +/* Knights Landing has PKG, RAM */ +#define RAPL_IDX_KNL (1RAPL_IDX_PKG_NRG_STAT|\ +1RAPL_IDX_RAM_NRG_STAT) + /* * event code: LSB 8 bits, passed in attr-config * any other bit is reserved @@ -487,6 +491,18 @@ static struct attribute *rapl_events_hsw_attr[] = { NULL, }; +static struct attribute *rapl_events_knl_attr[] = { + EVENT_PTR(rapl_pkg), + EVENT_PTR(rapl_ram), + + EVENT_PTR(rapl_pkg_unit), + EVENT_PTR(rapl_ram_unit), + + EVENT_PTR(rapl_pkg_scale), + EVENT_PTR(rapl_ram_scale), + NULL, +}; + static struct attribute_group rapl_pmu_events_group = { .name = events, .attrs = NULL, /* patched at runtime */ @@ -730,6 +746,10 @@ static int __init rapl_pmu_init(void) rapl_cntr_mask = RAPL_IDX_SRV; rapl_pmu_events_group.attrs = rapl_events_srv_attr; break; + case 87: /* Knights Landing */ + rapl_add_quirk(rapl_hsw_server_quirk); + rapl_cntr_mask = RAPL_IDX_KNL; + rapl_pmu_events_group.attrs = rapl_events_knl_attr; default: /* unsupported */ -- 1.8.1.5 -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH] powercap / RAPL: Support Knights Landing
This patch enables intel_rapl driver to run on the next-generation Intel(R) Xeon Phi Microarchitecture code named "Knights Landing" Signed-off-by: Dasaratharaman Chandramouli --- 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 fd24323..5796332 100644 --- a/drivers/powercap/intel_rapl.c +++ b/drivers/powercap/intel_rapl.c @@ -1069,6 +1069,7 @@ static const struct x86_cpu_id rapl_ids[] __initconst = { RAPL_CPU(0x4A, rapl_defaults_atom),/* Tangier */ RAPL_CPU(0x56, rapl_defaults_core),/* Future Xeon */ RAPL_CPU(0x5A, rapl_defaults_atom),/* Annidale */ + RAPL_CPU(0x57, rapl_defaults_hsw_server),/* Knights Landing */ {} }; MODULE_DEVICE_TABLE(x86cpu, rapl_ids); -- 1.8.1.5 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH] powercap / RAPL: Support Knights Landing
This patch enables intel_rapl driver to run on the next-generation Intel(R) Xeon Phi Microarchitecture code named Knights Landing Signed-off-by: Dasaratharaman Chandramouli dasaratharaman.chandramo...@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 fd24323..5796332 100644 --- a/drivers/powercap/intel_rapl.c +++ b/drivers/powercap/intel_rapl.c @@ -1069,6 +1069,7 @@ static const struct x86_cpu_id rapl_ids[] __initconst = { RAPL_CPU(0x4A, rapl_defaults_atom),/* Tangier */ RAPL_CPU(0x56, rapl_defaults_core),/* Future Xeon */ RAPL_CPU(0x5A, rapl_defaults_atom),/* Annidale */ + RAPL_CPU(0x57, rapl_defaults_hsw_server),/* Knights Landing */ {} }; MODULE_DEVICE_TABLE(x86cpu, rapl_ids); -- 1.8.1.5 -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] intel powerclamp: support Knights Landing
Adding Jacob Pan On Fri, 2015-04-17 at 15:31 -0700, Dasaratharaman Chandramouli wrote: > This patch enables intel_powerclamp driver to run on the > next-generation Intel(R) Xeon Phi Microarchitecture > code named "Knights Landing" > > Signed-off-by: Dasaratharaman Chandramouli > > --- > drivers/thermal/intel_powerclamp.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/thermal/intel_powerclamp.c > b/drivers/thermal/intel_powerclamp.c > index 12623bc..e34ccd5 100644 > --- a/drivers/thermal/intel_powerclamp.c > +++ b/drivers/thermal/intel_powerclamp.c > @@ -690,6 +690,7 @@ static const struct x86_cpu_id intel_powerclamp_ids[] = { > { X86_VENDOR_INTEL, 6, 0x4c}, > { X86_VENDOR_INTEL, 6, 0x4d}, > { X86_VENDOR_INTEL, 6, 0x56}, > + { X86_VENDOR_INTEL, 6, 0x57}, > {} > }; > MODULE_DEVICE_TABLE(x86cpu, intel_powerclamp_ids); -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] intel powerclamp: support Knights Landing
Adding Jacob Pan On Fri, 2015-04-17 at 15:31 -0700, Dasaratharaman Chandramouli wrote: This patch enables intel_powerclamp driver to run on the next-generation Intel(R) Xeon Phi Microarchitecture code named Knights Landing Signed-off-by: Dasaratharaman Chandramouli dasaratharaman.chandramo...@intel.com --- drivers/thermal/intel_powerclamp.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/thermal/intel_powerclamp.c b/drivers/thermal/intel_powerclamp.c index 12623bc..e34ccd5 100644 --- a/drivers/thermal/intel_powerclamp.c +++ b/drivers/thermal/intel_powerclamp.c @@ -690,6 +690,7 @@ static const struct x86_cpu_id intel_powerclamp_ids[] = { { X86_VENDOR_INTEL, 6, 0x4c}, { X86_VENDOR_INTEL, 6, 0x4d}, { X86_VENDOR_INTEL, 6, 0x56}, + { X86_VENDOR_INTEL, 6, 0x57}, {} }; MODULE_DEVICE_TABLE(x86cpu, intel_powerclamp_ids); -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH] intel powerclamp: support Knights Landing
This patch enables intel_powerclamp driver to run on the next-generation Intel(R) Xeon Phi Microarchitecture code named "Knights Landing" Signed-off-by: Dasaratharaman Chandramouli --- drivers/thermal/intel_powerclamp.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/thermal/intel_powerclamp.c b/drivers/thermal/intel_powerclamp.c index 12623bc..e34ccd5 100644 --- a/drivers/thermal/intel_powerclamp.c +++ b/drivers/thermal/intel_powerclamp.c @@ -690,6 +690,7 @@ static const struct x86_cpu_id intel_powerclamp_ids[] = { { X86_VENDOR_INTEL, 6, 0x4c}, { X86_VENDOR_INTEL, 6, 0x4d}, { X86_VENDOR_INTEL, 6, 0x56}, + { X86_VENDOR_INTEL, 6, 0x57}, {} }; MODULE_DEVICE_TABLE(x86cpu, intel_powerclamp_ids); -- 1.8.1.5 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH] intel powerclamp: support Knights Landing
This patch enables intel_powerclamp driver to run on the next-generation Intel(R) Xeon Phi Microarchitecture code named Knights Landing Signed-off-by: Dasaratharaman Chandramouli dasaratharaman.chandramo...@intel.com --- drivers/thermal/intel_powerclamp.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/thermal/intel_powerclamp.c b/drivers/thermal/intel_powerclamp.c index 12623bc..e34ccd5 100644 --- a/drivers/thermal/intel_powerclamp.c +++ b/drivers/thermal/intel_powerclamp.c @@ -690,6 +690,7 @@ static const struct x86_cpu_id intel_powerclamp_ids[] = { { X86_VENDOR_INTEL, 6, 0x4c}, { X86_VENDOR_INTEL, 6, 0x4d}, { X86_VENDOR_INTEL, 6, 0x56}, + { X86_VENDOR_INTEL, 6, 0x57}, {} }; MODULE_DEVICE_TABLE(x86cpu, intel_powerclamp_ids); -- 1.8.1.5 -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH char-misc-next 1/1] misc: mic: bug fix for interrupt acknowledgement in MSI/INTx case.
The interrupt handler (mic_interrupt), called in the MSI/INTx mode, writes to the interrupt sources register to acknowledge the interrupt and then calls the corresponding callback handlers to handle the same. These callback handlers acknowledge the interrupts again leading to missed interrupts. This patch fixes the issue by removing the interrupt acknowlegment code from the callback handlers. Reviewed-by: Sudeep Dutt Reviewed-by: Nikhil Rao Reviewed-by: Siva Krishna Kumar Reddy Yerramreddy Signed-off-by: Dasaratharaman Chandramouli --- drivers/misc/mic/host/mic_device.h | 3 +++ drivers/misc/mic/host/mic_main.c | 2 +- drivers/misc/mic/host/mic_virtio.c | 2 +- drivers/misc/mic/host/mic_x100.c | 36 4 files changed, 25 insertions(+), 18 deletions(-) diff --git a/drivers/misc/mic/host/mic_device.h b/drivers/misc/mic/host/mic_device.h index 3574cc3..b2da289 100644 --- a/drivers/misc/mic/host/mic_device.h +++ b/drivers/misc/mic/host/mic_device.h @@ -134,6 +134,8 @@ struct mic_device { * @send_intr: Send an interrupt for a particular doorbell on the card. * @ack_interrupt: Hardware specific operations to ack the h/w on * receipt of an interrupt. + * @intr_workarounds: Hardware specific workarounds needed after + * handling an interrupt. * @reset: Reset the remote processor. * @reset_fw_ready: Reset firmware ready field. * @is_fw_ready: Check if firmware is ready for OS download. @@ -149,6 +151,7 @@ struct mic_hw_ops { void (*write_spad)(struct mic_device *mdev, unsigned int idx, u32 val); void (*send_intr)(struct mic_device *mdev, int doorbell); u32 (*ack_interrupt)(struct mic_device *mdev); + void (*intr_workarounds)(struct mic_device *mdev); void (*reset)(struct mic_device *mdev); void (*reset_fw_ready)(struct mic_device *mdev); bool (*is_fw_ready)(struct mic_device *mdev); diff --git a/drivers/misc/mic/host/mic_main.c b/drivers/misc/mic/host/mic_main.c index ad838c7..c04a021 100644 --- a/drivers/misc/mic/host/mic_main.c +++ b/drivers/misc/mic/host/mic_main.c @@ -115,7 +115,7 @@ static irqreturn_t mic_shutdown_db(int irq, void *data) struct mic_device *mdev = data; struct mic_bootparam *bootparam = mdev->dp; - mdev->ops->ack_interrupt(mdev); + mdev->ops->intr_workarounds(mdev); switch (bootparam->shutdown_status) { case MIC_HALTED: diff --git a/drivers/misc/mic/host/mic_virtio.c b/drivers/misc/mic/host/mic_virtio.c index e04bb4f..752ff87 100644 --- a/drivers/misc/mic/host/mic_virtio.c +++ b/drivers/misc/mic/host/mic_virtio.c @@ -369,7 +369,7 @@ static irqreturn_t mic_virtio_intr_handler(int irq, void *data) struct mic_vdev *mvdev = data; struct mic_device *mdev = mvdev->mdev; - mdev->ops->ack_interrupt(mdev); + mdev->ops->intr_workarounds(mdev); schedule_work(>virtio_bh_work); return IRQ_HANDLED; } diff --git a/drivers/misc/mic/host/mic_x100.c b/drivers/misc/mic/host/mic_x100.c index 0dfa8a8..5562fdd 100644 --- a/drivers/misc/mic/host/mic_x100.c +++ b/drivers/misc/mic/host/mic_x100.c @@ -174,35 +174,38 @@ static void mic_x100_send_intr(struct mic_device *mdev, int doorbell) } /** - * mic_ack_interrupt - Device specific interrupt handling. - * @mdev: pointer to mic_device instance + * mic_x100_ack_interrupt - Read the interrupt sources register and + * clear it. This function will be called in the MSI/INTx case. + * @mdev: Pointer to mic_device instance. * - * Returns: bitmask of doorbell events triggered. + * Returns: bitmask of interrupt sources triggered. */ static u32 mic_x100_ack_interrupt(struct mic_device *mdev) { - u32 reg = 0; - struct mic_mw *mw = >mmio; u32 sicr0 = MIC_X100_SBOX_BASE_ADDRESS + MIC_X100_SBOX_SICR0; + u32 reg = mic_mmio_read(>mmio, sicr0); + mic_mmio_write(>mmio, reg, sicr0); + return reg; +} + +/** + * mic_x100_intr_workarounds - These hardware specific workarounds are + * to be invoked everytime an interrupt is handled. + * @mdev: Pointer to mic_device instance. + * + * Returns: none + */ +static void mic_x100_intr_workarounds(struct mic_device *mdev) +{ + struct mic_mw *mw = >mmio; /* Clear pending bit array. */ if (MIC_A0_STEP == mdev->stepping) mic_mmio_write(mw, 1, MIC_X100_SBOX_BASE_ADDRESS + MIC_X100_SBOX_MSIXPBACR); - if (mdev->irq_info.num_vectors <= 1) { - reg = mic_mmio_read(mw, sicr0); - - if (unlikely(!reg)) - goto done; - - mic_mmio_write(mw, reg, sicr0); - } - if (mdev->stepping >= MIC_B0_STEP) mdev->intr_ops->enable_interrupts(mdev); -done: - return reg; } /** @@ -553,6 +556,7 @@ struct mic_hw_ops mic_x100_ops = { .write_spad = mic_x100_write_
[PATCH char-misc-next 0/1] misc: mic: bug fix for interrupt acknowledgement in MSI/INTx case
The patch contains a bug fix for the MIC driver when handling MSI/INTx based interrupts. It would be great if this patch goes into 3.13-final. If that is not possible, having it in the next release is also acceptable since this patch only affects systems with MSI and INTx based interrupts and hence not critical. Dasaratharaman Chandramouli (1): misc: mic: bug fix for interrupt acknowledgement in MSI/INTx case. drivers/misc/mic/host/mic_device.h | 3 +++ drivers/misc/mic/host/mic_main.c | 2 +- drivers/misc/mic/host/mic_virtio.c | 2 +- drivers/misc/mic/host/mic_x100.c | 36 4 files changed, 25 insertions(+), 18 deletions(-) -- 1.8.1.5 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH char-misc-next 0/1] misc: mic: bug fix for interrupt acknowledgement in MSI/INTx case
The patch contains a bug fix for the MIC driver when handling MSI/INTx based interrupts. It would be great if this patch goes into 3.13-final. If that is not possible, having it in the next release is also acceptable since this patch only affects systems with MSI and INTx based interrupts and hence not critical. Dasaratharaman Chandramouli (1): misc: mic: bug fix for interrupt acknowledgement in MSI/INTx case. drivers/misc/mic/host/mic_device.h | 3 +++ drivers/misc/mic/host/mic_main.c | 2 +- drivers/misc/mic/host/mic_virtio.c | 2 +- drivers/misc/mic/host/mic_x100.c | 36 4 files changed, 25 insertions(+), 18 deletions(-) -- 1.8.1.5 -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH char-misc-next 1/1] misc: mic: bug fix for interrupt acknowledgement in MSI/INTx case.
The interrupt handler (mic_interrupt), called in the MSI/INTx mode, writes to the interrupt sources register to acknowledge the interrupt and then calls the corresponding callback handlers to handle the same. These callback handlers acknowledge the interrupts again leading to missed interrupts. This patch fixes the issue by removing the interrupt acknowlegment code from the callback handlers. Reviewed-by: Sudeep Dutt sudeep.d...@intel.com Reviewed-by: Nikhil Rao nikhil@intel.com Reviewed-by: Siva Krishna Kumar Reddy Yerramreddy siva.krishna.kumar.reddy.yerramre...@intel.com Signed-off-by: Dasaratharaman Chandramouli dasaratharaman.chandramo...@intel.com --- drivers/misc/mic/host/mic_device.h | 3 +++ drivers/misc/mic/host/mic_main.c | 2 +- drivers/misc/mic/host/mic_virtio.c | 2 +- drivers/misc/mic/host/mic_x100.c | 36 4 files changed, 25 insertions(+), 18 deletions(-) diff --git a/drivers/misc/mic/host/mic_device.h b/drivers/misc/mic/host/mic_device.h index 3574cc3..b2da289 100644 --- a/drivers/misc/mic/host/mic_device.h +++ b/drivers/misc/mic/host/mic_device.h @@ -134,6 +134,8 @@ struct mic_device { * @send_intr: Send an interrupt for a particular doorbell on the card. * @ack_interrupt: Hardware specific operations to ack the h/w on * receipt of an interrupt. + * @intr_workarounds: Hardware specific workarounds needed after + * handling an interrupt. * @reset: Reset the remote processor. * @reset_fw_ready: Reset firmware ready field. * @is_fw_ready: Check if firmware is ready for OS download. @@ -149,6 +151,7 @@ struct mic_hw_ops { void (*write_spad)(struct mic_device *mdev, unsigned int idx, u32 val); void (*send_intr)(struct mic_device *mdev, int doorbell); u32 (*ack_interrupt)(struct mic_device *mdev); + void (*intr_workarounds)(struct mic_device *mdev); void (*reset)(struct mic_device *mdev); void (*reset_fw_ready)(struct mic_device *mdev); bool (*is_fw_ready)(struct mic_device *mdev); diff --git a/drivers/misc/mic/host/mic_main.c b/drivers/misc/mic/host/mic_main.c index ad838c7..c04a021 100644 --- a/drivers/misc/mic/host/mic_main.c +++ b/drivers/misc/mic/host/mic_main.c @@ -115,7 +115,7 @@ static irqreturn_t mic_shutdown_db(int irq, void *data) struct mic_device *mdev = data; struct mic_bootparam *bootparam = mdev-dp; - mdev-ops-ack_interrupt(mdev); + mdev-ops-intr_workarounds(mdev); switch (bootparam-shutdown_status) { case MIC_HALTED: diff --git a/drivers/misc/mic/host/mic_virtio.c b/drivers/misc/mic/host/mic_virtio.c index e04bb4f..752ff87 100644 --- a/drivers/misc/mic/host/mic_virtio.c +++ b/drivers/misc/mic/host/mic_virtio.c @@ -369,7 +369,7 @@ static irqreturn_t mic_virtio_intr_handler(int irq, void *data) struct mic_vdev *mvdev = data; struct mic_device *mdev = mvdev-mdev; - mdev-ops-ack_interrupt(mdev); + mdev-ops-intr_workarounds(mdev); schedule_work(mvdev-virtio_bh_work); return IRQ_HANDLED; } diff --git a/drivers/misc/mic/host/mic_x100.c b/drivers/misc/mic/host/mic_x100.c index 0dfa8a8..5562fdd 100644 --- a/drivers/misc/mic/host/mic_x100.c +++ b/drivers/misc/mic/host/mic_x100.c @@ -174,35 +174,38 @@ static void mic_x100_send_intr(struct mic_device *mdev, int doorbell) } /** - * mic_ack_interrupt - Device specific interrupt handling. - * @mdev: pointer to mic_device instance + * mic_x100_ack_interrupt - Read the interrupt sources register and + * clear it. This function will be called in the MSI/INTx case. + * @mdev: Pointer to mic_device instance. * - * Returns: bitmask of doorbell events triggered. + * Returns: bitmask of interrupt sources triggered. */ static u32 mic_x100_ack_interrupt(struct mic_device *mdev) { - u32 reg = 0; - struct mic_mw *mw = mdev-mmio; u32 sicr0 = MIC_X100_SBOX_BASE_ADDRESS + MIC_X100_SBOX_SICR0; + u32 reg = mic_mmio_read(mdev-mmio, sicr0); + mic_mmio_write(mdev-mmio, reg, sicr0); + return reg; +} + +/** + * mic_x100_intr_workarounds - These hardware specific workarounds are + * to be invoked everytime an interrupt is handled. + * @mdev: Pointer to mic_device instance. + * + * Returns: none + */ +static void mic_x100_intr_workarounds(struct mic_device *mdev) +{ + struct mic_mw *mw = mdev-mmio; /* Clear pending bit array. */ if (MIC_A0_STEP == mdev-stepping) mic_mmio_write(mw, 1, MIC_X100_SBOX_BASE_ADDRESS + MIC_X100_SBOX_MSIXPBACR); - if (mdev-irq_info.num_vectors = 1) { - reg = mic_mmio_read(mw, sicr0); - - if (unlikely(!reg)) - goto done; - - mic_mmio_write(mw, reg, sicr0); - } - if (mdev-stepping = MIC_B0_STEP) mdev-intr_ops-enable_interrupts(mdev); -done: - return reg; } /** @@ -553,6 +556,7 @@ struct mic_hw_ops
[PATCH char-misc-next] misc: mic: Enable OSPM suspend and resume support.
This patch enables support for OSPM suspend and resume in the MIC driver. During a host suspend event, the driver performs an orderly shutdown of the cards if they are online. Upon resume, any cards that were previously online before suspend are rebooted. The driver performs an orderly shutdown of the card primarily to ensure that applications in the card are terminated and mounted devices are safely un-mounted before the card is powered down in the event of an OSPM suspend. The driver makes use of the MIC daemon to accomplish OSPM suspend and resume. The driver registers a PM notifier per MIC device. The devices get notified synchronously during PM_SUSPEND_PREPARE and PM_POST_SUSPEND phases. During the PM_SUSPEND_PREPARE phase, the driver performs one of the following three tasks. 1) If the card is 'offline', the driver sets the card to a 'suspended' state and returns. 2) If the card is 'online', the driver initiates card shutdown by setting the card state to suspending. This notifies the MIC daemon which invokes shutdown and sets card state to 'suspended'. The driver returns after the shutdown is complete. 3) If the card is already being shutdown, possibly by a host user space application, the driver sets the card state to 'suspended' and returns after the shutdown is complete. During the PM_POST_SUSPEND phase, the driver simply notifies the daemon and returns. The daemon boots those cards that were previously online during the suspend phase. Signed-off-by: Ashutosh Dixit Signed-off-by: Nikhil Rao Signed-off-by: Harshavardhan R Kharche Signed-off-by: Sudeep Dutt Signed-off-by: Dasaratharaman Chandramouli --- Documentation/ABI/testing/sysfs-class-mic.txt | 60 +++-- Documentation/mic/mic_overview.txt| 4 +- Documentation/mic/mpssd/mpssd.c | 27 +- Documentation/mic/mpssd/mpssd.h | 1 + drivers/misc/mic/host/mic_boot.c | 120 +- drivers/misc/mic/host/mic_device.h| 8 ++ drivers/misc/mic/host/mic_main.c | 63 +- drivers/misc/mic/host/mic_sysfs.c | 7 ++ include/uapi/linux/mic_common.h | 2 + 9 files changed, 257 insertions(+), 35 deletions(-) diff --git a/Documentation/ABI/testing/sysfs-class-mic.txt b/Documentation/ABI/testing/sysfs-class-mic.txt index 82cdad3..13f48af 100644 --- a/Documentation/ABI/testing/sysfs-class-mic.txt +++ b/Documentation/ABI/testing/sysfs-class-mic.txt @@ -1,6 +1,6 @@ What: /sys/class/mic/ -Date: August 2013 -KernelVersion: 3.11 +Date: October 2013 +KernelVersion: 3.13 Contact: Sudeep Dutt Description: The mic class directory belongs to Intel MIC devices and @@ -9,8 +9,8 @@ Description: Integrated Core (MIC) architecture that runs a Linux OS. What: /sys/class/mic/mic(x) -Date: August 2013 -KernelVersion: 3.11 +Date: October 2013 +KernelVersion: 3.13 Contact: Sudeep Dutt Description: The directories /sys/class/mic/mic0, /sys/class/mic/mic1 etc., @@ -18,33 +18,41 @@ Description: information specific to that MIC device. What: /sys/class/mic/mic(x)/family -Date: August 2013 -KernelVersion: 3.11 +Date: October 2013 +KernelVersion: 3.13 Contact: Sudeep Dutt Description: Provides information about the Coprocessor family for an Intel MIC device. For example - "x100" What: /sys/class/mic/mic(x)/stepping -Date: August 2013 -KernelVersion: 3.11 +Date: October 2013 +KernelVersion: 3.13 Contact: Sudeep Dutt Description: Provides information about the silicon stepping for an Intel MIC device. For example - "A0" or "B0" What: /sys/class/mic/mic(x)/state -Date: August 2013 -KernelVersion: 3.11 +Date: October 2013 +KernelVersion: 3.13 Contact: Sudeep Dutt Description: When read, this entry provides the current state of an Intel MIC device in the context of the card OS. Possible values that will be read are: - "offline" - The MIC device is ready to boot the card OS. + "offline" - The MIC device is ready to boot the card OS. On + reading this entry after an OSPM resume, a "boot" has to be + written to this entry if the card was previously shutdown + during OSPM suspend. "online" - The MIC device has initiated booting a card OS. "shutting_down" - The card OS is shutting down. "reset_failed" - The MIC device has failed to reset. + "suspending" - The MIC device is currently being prepared for + su
[PATCH char-misc-next] misc: mic: Enable OSPM suspend and resume support.
This patch enables support for OSPM suspend and resume in the MIC driver. During a host suspend event, the driver performs an orderly shutdown of the cards if they are online. Upon resume, any cards that were previously online before suspend are rebooted. The driver performs an orderly shutdown of the card primarily to ensure that applications in the card are terminated and mounted devices are safely un-mounted before the card is powered down in the event of an OSPM suspend. The driver makes use of the MIC daemon to accomplish OSPM suspend and resume. The driver registers a PM notifier per MIC device. The devices get notified synchronously during PM_SUSPEND_PREPARE and PM_POST_SUSPEND phases. During the PM_SUSPEND_PREPARE phase, the driver performs one of the following three tasks. 1) If the card is 'offline', the driver sets the card to a 'suspended' state and returns. 2) If the card is 'online', the driver initiates card shutdown by setting the card state to suspending. This notifies the MIC daemon which invokes shutdown and sets card state to 'suspended'. The driver returns after the shutdown is complete. 3) If the card is already being shutdown, possibly by a host user space application, the driver sets the card state to 'suspended' and returns after the shutdown is complete. During the PM_POST_SUSPEND phase, the driver simply notifies the daemon and returns. The daemon boots those cards that were previously online during the suspend phase. Signed-off-by: Ashutosh Dixit ashutosh.di...@intel.com Signed-off-by: Nikhil Rao nikhil@intel.com Signed-off-by: Harshavardhan R Kharche harshavardhan.r.khar...@intel.com Signed-off-by: Sudeep Dutt sudeep.d...@intel.com Signed-off-by: Dasaratharaman Chandramouli dasaratharaman.chandramo...@intel.com --- Documentation/ABI/testing/sysfs-class-mic.txt | 60 +++-- Documentation/mic/mic_overview.txt| 4 +- Documentation/mic/mpssd/mpssd.c | 27 +- Documentation/mic/mpssd/mpssd.h | 1 + drivers/misc/mic/host/mic_boot.c | 120 +- drivers/misc/mic/host/mic_device.h| 8 ++ drivers/misc/mic/host/mic_main.c | 63 +- drivers/misc/mic/host/mic_sysfs.c | 7 ++ include/uapi/linux/mic_common.h | 2 + 9 files changed, 257 insertions(+), 35 deletions(-) diff --git a/Documentation/ABI/testing/sysfs-class-mic.txt b/Documentation/ABI/testing/sysfs-class-mic.txt index 82cdad3..13f48af 100644 --- a/Documentation/ABI/testing/sysfs-class-mic.txt +++ b/Documentation/ABI/testing/sysfs-class-mic.txt @@ -1,6 +1,6 @@ What: /sys/class/mic/ -Date: August 2013 -KernelVersion: 3.11 +Date: October 2013 +KernelVersion: 3.13 Contact: Sudeep Dutt sudeep.d...@intel.com Description: The mic class directory belongs to Intel MIC devices and @@ -9,8 +9,8 @@ Description: Integrated Core (MIC) architecture that runs a Linux OS. What: /sys/class/mic/mic(x) -Date: August 2013 -KernelVersion: 3.11 +Date: October 2013 +KernelVersion: 3.13 Contact: Sudeep Dutt sudeep.d...@intel.com Description: The directories /sys/class/mic/mic0, /sys/class/mic/mic1 etc., @@ -18,33 +18,41 @@ Description: information specific to that MIC device. What: /sys/class/mic/mic(x)/family -Date: August 2013 -KernelVersion: 3.11 +Date: October 2013 +KernelVersion: 3.13 Contact: Sudeep Dutt sudeep.d...@intel.com Description: Provides information about the Coprocessor family for an Intel MIC device. For example - x100 What: /sys/class/mic/mic(x)/stepping -Date: August 2013 -KernelVersion: 3.11 +Date: October 2013 +KernelVersion: 3.13 Contact: Sudeep Dutt sudeep.d...@intel.com Description: Provides information about the silicon stepping for an Intel MIC device. For example - A0 or B0 What: /sys/class/mic/mic(x)/state -Date: August 2013 -KernelVersion: 3.11 +Date: October 2013 +KernelVersion: 3.13 Contact: Sudeep Dutt sudeep.d...@intel.com Description: When read, this entry provides the current state of an Intel MIC device in the context of the card OS. Possible values that will be read are: - offline - The MIC device is ready to boot the card OS. + offline - The MIC device is ready to boot the card OS. On + reading this entry after an OSPM resume, a boot has to be + written to this entry if the card was previously shutdown + during OSPM suspend. online - The MIC device has initiated booting a card OS. shutting_down - The card OS is shutting down. reset_failed - The MIC device has