From: Michael Ellerman <mpe@ellerman.id.au>
To: acme@kernel.org, linuxppc-dev@lists.ozlabs.org,
sukadev@linux.vnet.ibm.com
Cc: linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
anju@linux.vnet.ibm.com, maddy@linux.vnet.ibm.com,
ravi.bangoria@linux.ibm.com, peterz@infradead.org,
yao.jin@linux.intel.com, ak@linux.intel.com, jolsa@kernel.org,
kan.liang@linux.intel.com, jmario@redhat.com,
alexander.shishkin@linux.intel.com, mingo@kernel.org,
paulus@ozlabs.org, namhyung@kernel.org, mpetlan@redhat.com,
gregkh@linuxfoundation.org, benh@kernel.crashing.org,
mamatha4@linux.vnet.ibm.com, mark.rutland@arm.com,
tglx@linutronix.de, kjain@linux.ibm.com
Subject: Re: [PATCH v7 2/5] powerpc/hv-24x7: Add rtas call in hv-24x7 driver to get processor details
Date: Wed, 29 Apr 2020 21:31:54 +1000 [thread overview]
Message-ID: <87ftcmfryt.fsf@mpe.ellerman.id.au> (raw)
In-Reply-To: <20200327063642.26175-3-kjain@linux.ibm.com>
Hi Kajol,
Some comments inline ...
Kajol Jain <kjain@linux.ibm.com> writes:
> For hv_24x7 socket/chip level events, specific chip-id to which
> the data requested should be added as part of pmu events.
> But number of chips/socket in the system details are not exposed.
>
> Patch implements read_sys_info_pseries() to get system
> parameter values like number of sockets and chips per socket.
> Rtas_call with token "PROCESSOR_MODULE_INFO"
> is used to get these values.
>
> Sub-sequent patch exports these values via sysfs.
>
> Patch also make these parameters default to 1.
>
> Signed-off-by: Kajol Jain <kjain@linux.ibm.com>
> ---
> arch/powerpc/perf/hv-24x7.c | 72 ++++++++++++++++++++++++
> arch/powerpc/platforms/pseries/pseries.h | 3 +
> 2 files changed, 75 insertions(+)
>
> diff --git a/arch/powerpc/perf/hv-24x7.c b/arch/powerpc/perf/hv-24x7.c
> index 48e8f4b17b91..9ae00f29bd21 100644
> --- a/arch/powerpc/perf/hv-24x7.c
> +++ b/arch/powerpc/perf/hv-24x7.c
> @@ -20,6 +20,11 @@
> #include <asm/io.h>
> #include <linux/byteorder/generic.h>
>
> +#ifdef CONFIG_PPC_RTAS
This driver can only be build on pseries, and pseries always selects
RTAS. So the ifdef is unncessary.
> +#include <asm/rtas.h>
> +#include <../../platforms/pseries/pseries.h>
> +#endif
That's not really what the platform header is intended for.
You should put the extern in arch/powerpc/include/asm somewhere.
Maybe rtas.h
> @@ -57,6 +62,69 @@ static bool is_physical_domain(unsigned domain)
> }
> }
>
> +#ifdef CONFIG_PPC_RTAS
Not needed.
> +#define PROCESSOR_MODULE_INFO 43
Please document where these come from, presumably LoPAPR somewhere?
> +#define PROCESSOR_MAX_LENGTH (8 * 1024)
> +
> +static int strbe16toh(const char *buf, int offset)
> +{
> + return (buf[offset] << 8) + buf[offset + 1];
> +}
I'm confused by this. "str" implies string, a string is an array of
bytes and has no endian. But then be16 implies it's an array of __be16,
in which case buf should be a __be16 *.
> +
> +static u32 physsockets; /* Physical sockets */
> +static u32 physchips; /* Physical chips */
No tabs there please.
> +
> +/*
> + * Function read_sys_info_pseries() make a rtas_call which require
> + * data buffer of size 8K. As standard 'rtas_data_buf' is of size
> + * 4K, we are adding new local buffer 'rtas_local_data_buf'.
> + */
> +char rtas_local_data_buf[PROCESSOR_MAX_LENGTH] __cacheline_aligned;
static?
> +/*
> + * read_sys_info_pseries()
> + * Retrieve the number of sockets and chips per socket details
> + * through the get-system-parameter rtas call.
> + */
> +void read_sys_info_pseries(void)
> +{
> + int call_status, len, ntypes;
> +
> + /*
> + * Making system parameter: chips and sockets default to 1.
> + */
> + physsockets = 1;
> + physchips = 1;
> + memset(rtas_local_data_buf, 0, PROCESSOR_MAX_LENGTH);
> + spin_lock(&rtas_data_buf_lock);
You're not using the rtas_data_buf, so why are you taking the
rtas_data_buf_lock?
> + call_status = rtas_call(rtas_token("ibm,get-system-parameter"), 3, 1,
> + NULL,
> + PROCESSOR_MODULE_INFO,
> + __pa(rtas_local_data_buf),
> + PROCESSOR_MAX_LENGTH);
> +
> + spin_unlock(&rtas_data_buf_lock);
> +
> + if (call_status != 0) {
> + pr_info("%s %s Error calling get-system-parameter (0x%x)\n",
> + __FILE__, __func__, call_status);
pr_err(), don't use __FILE__, this file already uses pr_fmt(). Not sure
__func__ is really necessary either.
return;
Then you can deindent the next block.
> + } else {
> + rtas_local_data_buf[PROCESSOR_MAX_LENGTH - 1] = '\0';
> + len = strbe16toh(rtas_local_data_buf, 0);
Why isn't the buffer a __be16 array, and then you just use be16_to_cpu() ?
> + if (len < 6)
> + return;
> +
> + ntypes = strbe16toh(rtas_local_data_buf, 2);
> +
> + if (!ntypes)
> + return;
What is ntypes?
> + physsockets = strbe16toh(rtas_local_data_buf, 4);
> + physchips = strbe16toh(rtas_local_data_buf, 6);
> + }
> +}
> +#endif /* CONFIG_PPC_RTAS */
> +
> /* Domains for which more than one result element are returned for each event. */
> static bool domain_needs_aggregation(unsigned int domain)
> {
> @@ -1605,6 +1673,10 @@ static int hv_24x7_init(void)
> if (r)
> return r;
>
> +#ifdef CONFIG_PPC_RTAS
> + read_sys_info_pseries();
> +#endif
> +
> return 0;
> }
>
> diff --git a/arch/powerpc/platforms/pseries/pseries.h b/arch/powerpc/platforms/pseries/pseries.h
> index 13fa370a87e4..1727559ce304 100644
> --- a/arch/powerpc/platforms/pseries/pseries.h
> +++ b/arch/powerpc/platforms/pseries/pseries.h
> @@ -19,6 +19,9 @@ extern void request_event_sources_irqs(struct device_node *np,
> struct pt_regs;
>
> extern int pSeries_system_reset_exception(struct pt_regs *regs);
> +#ifdef CONFIG_PPC_RTAS
> +extern void read_sys_info_pseries(void);
> +#endif
> extern int pSeries_machine_check_exception(struct pt_regs *regs);
> extern long pseries_machine_check_realmode(struct pt_regs *regs);
cheers
WARNING: multiple messages have this Message-ID (diff)
From: Michael Ellerman <mpe@ellerman.id.au>
To: Kajol Jain <kjain@linux.ibm.com>,
acme@kernel.org, linuxppc-dev@lists.ozlabs.org,
sukadev@linux.vnet.ibm.com
Cc: mark.rutland@arm.com, maddy@linux.vnet.ibm.com,
peterz@infradead.org, yao.jin@linux.intel.com, mingo@kernel.org,
kan.liang@linux.intel.com, ak@linux.intel.com,
alexander.shishkin@linux.intel.com, anju@linux.vnet.ibm.com,
mamatha4@linux.vnet.ibm.com, ravi.bangoria@linux.ibm.com,
kjain@linux.ibm.com, jmario@redhat.com, namhyung@kernel.org,
tglx@linutronix.de, mpetlan@redhat.com,
gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org,
linux-perf-users@vger.kernel.org, jolsa@kernel.org
Subject: Re: [PATCH v7 2/5] powerpc/hv-24x7: Add rtas call in hv-24x7 driver to get processor details
Date: Wed, 29 Apr 2020 21:31:54 +1000 [thread overview]
Message-ID: <87ftcmfryt.fsf@mpe.ellerman.id.au> (raw)
In-Reply-To: <20200327063642.26175-3-kjain@linux.ibm.com>
Hi Kajol,
Some comments inline ...
Kajol Jain <kjain@linux.ibm.com> writes:
> For hv_24x7 socket/chip level events, specific chip-id to which
> the data requested should be added as part of pmu events.
> But number of chips/socket in the system details are not exposed.
>
> Patch implements read_sys_info_pseries() to get system
> parameter values like number of sockets and chips per socket.
> Rtas_call with token "PROCESSOR_MODULE_INFO"
> is used to get these values.
>
> Sub-sequent patch exports these values via sysfs.
>
> Patch also make these parameters default to 1.
>
> Signed-off-by: Kajol Jain <kjain@linux.ibm.com>
> ---
> arch/powerpc/perf/hv-24x7.c | 72 ++++++++++++++++++++++++
> arch/powerpc/platforms/pseries/pseries.h | 3 +
> 2 files changed, 75 insertions(+)
>
> diff --git a/arch/powerpc/perf/hv-24x7.c b/arch/powerpc/perf/hv-24x7.c
> index 48e8f4b17b91..9ae00f29bd21 100644
> --- a/arch/powerpc/perf/hv-24x7.c
> +++ b/arch/powerpc/perf/hv-24x7.c
> @@ -20,6 +20,11 @@
> #include <asm/io.h>
> #include <linux/byteorder/generic.h>
>
> +#ifdef CONFIG_PPC_RTAS
This driver can only be build on pseries, and pseries always selects
RTAS. So the ifdef is unncessary.
> +#include <asm/rtas.h>
> +#include <../../platforms/pseries/pseries.h>
> +#endif
That's not really what the platform header is intended for.
You should put the extern in arch/powerpc/include/asm somewhere.
Maybe rtas.h
> @@ -57,6 +62,69 @@ static bool is_physical_domain(unsigned domain)
> }
> }
>
> +#ifdef CONFIG_PPC_RTAS
Not needed.
> +#define PROCESSOR_MODULE_INFO 43
Please document where these come from, presumably LoPAPR somewhere?
> +#define PROCESSOR_MAX_LENGTH (8 * 1024)
> +
> +static int strbe16toh(const char *buf, int offset)
> +{
> + return (buf[offset] << 8) + buf[offset + 1];
> +}
I'm confused by this. "str" implies string, a string is an array of
bytes and has no endian. But then be16 implies it's an array of __be16,
in which case buf should be a __be16 *.
> +
> +static u32 physsockets; /* Physical sockets */
> +static u32 physchips; /* Physical chips */
No tabs there please.
> +
> +/*
> + * Function read_sys_info_pseries() make a rtas_call which require
> + * data buffer of size 8K. As standard 'rtas_data_buf' is of size
> + * 4K, we are adding new local buffer 'rtas_local_data_buf'.
> + */
> +char rtas_local_data_buf[PROCESSOR_MAX_LENGTH] __cacheline_aligned;
static?
> +/*
> + * read_sys_info_pseries()
> + * Retrieve the number of sockets and chips per socket details
> + * through the get-system-parameter rtas call.
> + */
> +void read_sys_info_pseries(void)
> +{
> + int call_status, len, ntypes;
> +
> + /*
> + * Making system parameter: chips and sockets default to 1.
> + */
> + physsockets = 1;
> + physchips = 1;
> + memset(rtas_local_data_buf, 0, PROCESSOR_MAX_LENGTH);
> + spin_lock(&rtas_data_buf_lock);
You're not using the rtas_data_buf, so why are you taking the
rtas_data_buf_lock?
> + call_status = rtas_call(rtas_token("ibm,get-system-parameter"), 3, 1,
> + NULL,
> + PROCESSOR_MODULE_INFO,
> + __pa(rtas_local_data_buf),
> + PROCESSOR_MAX_LENGTH);
> +
> + spin_unlock(&rtas_data_buf_lock);
> +
> + if (call_status != 0) {
> + pr_info("%s %s Error calling get-system-parameter (0x%x)\n",
> + __FILE__, __func__, call_status);
pr_err(), don't use __FILE__, this file already uses pr_fmt(). Not sure
__func__ is really necessary either.
return;
Then you can deindent the next block.
> + } else {
> + rtas_local_data_buf[PROCESSOR_MAX_LENGTH - 1] = '\0';
> + len = strbe16toh(rtas_local_data_buf, 0);
Why isn't the buffer a __be16 array, and then you just use be16_to_cpu() ?
> + if (len < 6)
> + return;
> +
> + ntypes = strbe16toh(rtas_local_data_buf, 2);
> +
> + if (!ntypes)
> + return;
What is ntypes?
> + physsockets = strbe16toh(rtas_local_data_buf, 4);
> + physchips = strbe16toh(rtas_local_data_buf, 6);
> + }
> +}
> +#endif /* CONFIG_PPC_RTAS */
> +
> /* Domains for which more than one result element are returned for each event. */
> static bool domain_needs_aggregation(unsigned int domain)
> {
> @@ -1605,6 +1673,10 @@ static int hv_24x7_init(void)
> if (r)
> return r;
>
> +#ifdef CONFIG_PPC_RTAS
> + read_sys_info_pseries();
> +#endif
> +
> return 0;
> }
>
> diff --git a/arch/powerpc/platforms/pseries/pseries.h b/arch/powerpc/platforms/pseries/pseries.h
> index 13fa370a87e4..1727559ce304 100644
> --- a/arch/powerpc/platforms/pseries/pseries.h
> +++ b/arch/powerpc/platforms/pseries/pseries.h
> @@ -19,6 +19,9 @@ extern void request_event_sources_irqs(struct device_node *np,
> struct pt_regs;
>
> extern int pSeries_system_reset_exception(struct pt_regs *regs);
> +#ifdef CONFIG_PPC_RTAS
> +extern void read_sys_info_pseries(void);
> +#endif
> extern int pSeries_machine_check_exception(struct pt_regs *regs);
> extern long pseries_machine_check_realmode(struct pt_regs *regs);
cheers
WARNING: multiple messages have this Message-ID (diff)
From: Michael Ellerman <mpe@ellerman.id.au>
To: Kajol Jain <kjain@linux.ibm.com>,
acme@kernel.org, linuxppc-dev@lists.ozlabs.org,
sukadev@linux.vnet.ibm.com
Cc: linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
anju@linux.vnet.ibm.com, maddy@linux.vnet.ibm.com,
ravi.bangoria@linux.ibm.com, peterz@infradead.org,
yao.jin@linux.intel.com, ak@linux.intel.com, jolsa@kernel.org,
kan.liang@linux.intel.com, jmario@redhat.com,
alexander.shishkin@linux.intel.com, mingo@kernel.org,
paulus@ozlabs.org, namhyung@kernel.org, mpetlan@redhat.com,
gregkh@linuxfoundation.org, benh@kernel.crashing.org,
mamatha4@linux.vnet.ibm.com, mark.rutland@arm.com,
tglx@linutronix.de, kjain@linux.ibm.com
Subject: Re: [PATCH v7 2/5] powerpc/hv-24x7: Add rtas call in hv-24x7 driver to get processor details
Date: Wed, 29 Apr 2020 21:31:54 +1000 [thread overview]
Message-ID: <87ftcmfryt.fsf@mpe.ellerman.id.au> (raw)
In-Reply-To: <20200327063642.26175-3-kjain@linux.ibm.com>
Hi Kajol,
Some comments inline ...
Kajol Jain <kjain@linux.ibm.com> writes:
> For hv_24x7 socket/chip level events, specific chip-id to which
> the data requested should be added as part of pmu events.
> But number of chips/socket in the system details are not exposed.
>
> Patch implements read_sys_info_pseries() to get system
> parameter values like number of sockets and chips per socket.
> Rtas_call with token "PROCESSOR_MODULE_INFO"
> is used to get these values.
>
> Sub-sequent patch exports these values via sysfs.
>
> Patch also make these parameters default to 1.
>
> Signed-off-by: Kajol Jain <kjain@linux.ibm.com>
> ---
> arch/powerpc/perf/hv-24x7.c | 72 ++++++++++++++++++++++++
> arch/powerpc/platforms/pseries/pseries.h | 3 +
> 2 files changed, 75 insertions(+)
>
> diff --git a/arch/powerpc/perf/hv-24x7.c b/arch/powerpc/perf/hv-24x7.c
> index 48e8f4b17b91..9ae00f29bd21 100644
> --- a/arch/powerpc/perf/hv-24x7.c
> +++ b/arch/powerpc/perf/hv-24x7.c
> @@ -20,6 +20,11 @@
> #include <asm/io.h>
> #include <linux/byteorder/generic.h>
>
> +#ifdef CONFIG_PPC_RTAS
This driver can only be build on pseries, and pseries always selects
RTAS. So the ifdef is unncessary.
> +#include <asm/rtas.h>
> +#include <../../platforms/pseries/pseries.h>
> +#endif
That's not really what the platform header is intended for.
You should put the extern in arch/powerpc/include/asm somewhere.
Maybe rtas.h
> @@ -57,6 +62,69 @@ static bool is_physical_domain(unsigned domain)
> }
> }
>
> +#ifdef CONFIG_PPC_RTAS
Not needed.
> +#define PROCESSOR_MODULE_INFO 43
Please document where these come from, presumably LoPAPR somewhere?
> +#define PROCESSOR_MAX_LENGTH (8 * 1024)
> +
> +static int strbe16toh(const char *buf, int offset)
> +{
> + return (buf[offset] << 8) + buf[offset + 1];
> +}
I'm confused by this. "str" implies string, a string is an array of
bytes and has no endian. But then be16 implies it's an array of __be16,
in which case buf should be a __be16 *.
> +
> +static u32 physsockets; /* Physical sockets */
> +static u32 physchips; /* Physical chips */
No tabs there please.
> +
> +/*
> + * Function read_sys_info_pseries() make a rtas_call which require
> + * data buffer of size 8K. As standard 'rtas_data_buf' is of size
> + * 4K, we are adding new local buffer 'rtas_local_data_buf'.
> + */
> +char rtas_local_data_buf[PROCESSOR_MAX_LENGTH] __cacheline_aligned;
static?
> +/*
> + * read_sys_info_pseries()
> + * Retrieve the number of sockets and chips per socket details
> + * through the get-system-parameter rtas call.
> + */
> +void read_sys_info_pseries(void)
> +{
> + int call_status, len, ntypes;
> +
> + /*
> + * Making system parameter: chips and sockets default to 1.
> + */
> + physsockets = 1;
> + physchips = 1;
> + memset(rtas_local_data_buf, 0, PROCESSOR_MAX_LENGTH);
> + spin_lock(&rtas_data_buf_lock);
You're not using the rtas_data_buf, so why are you taking the
rtas_data_buf_lock?
> + call_status = rtas_call(rtas_token("ibm,get-system-parameter"), 3, 1,
> + NULL,
> + PROCESSOR_MODULE_INFO,
> + __pa(rtas_local_data_buf),
> + PROCESSOR_MAX_LENGTH);
> +
> + spin_unlock(&rtas_data_buf_lock);
> +
> + if (call_status != 0) {
> + pr_info("%s %s Error calling get-system-parameter (0x%x)\n",
> + __FILE__, __func__, call_status);
pr_err(), don't use __FILE__, this file already uses pr_fmt(). Not sure
__func__ is really necessary either.
return;
Then you can deindent the next block.
> + } else {
> + rtas_local_data_buf[PROCESSOR_MAX_LENGTH - 1] = '\0';
> + len = strbe16toh(rtas_local_data_buf, 0);
Why isn't the buffer a __be16 array, and then you just use be16_to_cpu() ?
> + if (len < 6)
> + return;
> +
> + ntypes = strbe16toh(rtas_local_data_buf, 2);
> +
> + if (!ntypes)
> + return;
What is ntypes?
> + physsockets = strbe16toh(rtas_local_data_buf, 4);
> + physchips = strbe16toh(rtas_local_data_buf, 6);
> + }
> +}
> +#endif /* CONFIG_PPC_RTAS */
> +
> /* Domains for which more than one result element are returned for each event. */
> static bool domain_needs_aggregation(unsigned int domain)
> {
> @@ -1605,6 +1673,10 @@ static int hv_24x7_init(void)
> if (r)
> return r;
>
> +#ifdef CONFIG_PPC_RTAS
> + read_sys_info_pseries();
> +#endif
> +
> return 0;
> }
>
> diff --git a/arch/powerpc/platforms/pseries/pseries.h b/arch/powerpc/platforms/pseries/pseries.h
> index 13fa370a87e4..1727559ce304 100644
> --- a/arch/powerpc/platforms/pseries/pseries.h
> +++ b/arch/powerpc/platforms/pseries/pseries.h
> @@ -19,6 +19,9 @@ extern void request_event_sources_irqs(struct device_node *np,
> struct pt_regs;
>
> extern int pSeries_system_reset_exception(struct pt_regs *regs);
> +#ifdef CONFIG_PPC_RTAS
> +extern void read_sys_info_pseries(void);
> +#endif
> extern int pSeries_machine_check_exception(struct pt_regs *regs);
> extern long pseries_machine_check_realmode(struct pt_regs *regs);
cheers
next prev parent reply other threads:[~2020-04-29 11:31 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-27 6:36 [PATCH v7 0/5] powerpc/hv-24x7: Expose chip/sockets info to add json file metric support for the hv_24x7 socket/chip level events Kajol Jain
2020-03-27 6:36 ` Kajol Jain
2020-03-27 6:36 ` [PATCH v7 1/5] powerpc/perf/hv-24x7: Fix inconsistent output values incase multiple hv-24x7 events run Kajol Jain
2020-03-27 6:36 ` Kajol Jain
2020-04-29 8:56 ` Madhavan Srinivasan
2020-04-29 8:56 ` Madhavan Srinivasan
2020-03-27 6:36 ` [PATCH v7 2/5] powerpc/hv-24x7: Add rtas call in hv-24x7 driver to get processor details Kajol Jain
2020-03-27 6:36 ` Kajol Jain
2020-04-29 8:02 ` Madhavan Srinivasan
2020-04-29 8:02 ` Madhavan Srinivasan
2020-04-29 11:31 ` Michael Ellerman [this message]
2020-04-29 11:31 ` Michael Ellerman
2020-04-29 11:31 ` Michael Ellerman
2020-05-06 9:53 ` kajoljain
2020-05-06 9:53 ` kajoljain
2020-03-27 6:36 ` [PATCH v7 3/5] powerpc/hv-24x7: Add sysfs files inside hv-24x7 device to show " Kajol Jain
2020-03-27 6:36 ` Kajol Jain
2020-04-29 9:08 ` Madhavan Srinivasan
2020-04-29 9:08 ` Madhavan Srinivasan
2020-04-29 11:32 ` Michael Ellerman
2020-04-29 11:32 ` Michael Ellerman
2020-04-29 11:32 ` Michael Ellerman
2020-04-29 11:33 ` Michael Ellerman
2020-04-29 11:33 ` Michael Ellerman
2020-04-29 11:33 ` Michael Ellerman
2020-03-27 6:36 ` [PATCH v7 4/5] Documentation/ABI: Add ABI documentation for chips and sockets Kajol Jain
2020-03-27 6:36 ` Kajol Jain
2020-03-27 6:36 ` [PATCH v7 5/5] powerpc/hv-24x7: Update post_mobility_fixup() to handle migration Kajol Jain
2020-03-27 6:36 ` Kajol Jain
2020-04-29 9:10 ` Madhavan Srinivasan
2020-04-29 9:10 ` Madhavan Srinivasan
2020-04-29 11:37 ` Michael Ellerman
2020-04-29 11:37 ` Michael Ellerman
2020-04-29 11:37 ` Michael Ellerman
2020-05-05 6:57 ` kajoljain
2020-05-05 6:57 ` kajoljain
2020-05-05 7:05 ` Michael Ellerman
2020-05-05 7:05 ` Michael Ellerman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87ftcmfryt.fsf@mpe.ellerman.id.au \
--to=mpe@ellerman.id.au \
--cc=acme@kernel.org \
--cc=ak@linux.intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=anju@linux.vnet.ibm.com \
--cc=benh@kernel.crashing.org \
--cc=gregkh@linuxfoundation.org \
--cc=jmario@redhat.com \
--cc=jolsa@kernel.org \
--cc=kan.liang@linux.intel.com \
--cc=kjain@linux.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=maddy@linux.vnet.ibm.com \
--cc=mamatha4@linux.vnet.ibm.com \
--cc=mark.rutland@arm.com \
--cc=mingo@kernel.org \
--cc=mpetlan@redhat.com \
--cc=namhyung@kernel.org \
--cc=paulus@ozlabs.org \
--cc=peterz@infradead.org \
--cc=ravi.bangoria@linux.ibm.com \
--cc=sukadev@linux.vnet.ibm.com \
--cc=tglx@linutronix.de \
--cc=yao.jin@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.