From: Suravee Suthikulpanit <Suravee.Suthikulpanit-5C7GfCeVMHo@public.gmane.org>
To: Borislav Petkov <bp-Gina5bIWoIWzQB+pC5nmwQ@public.gmane.org>
Cc: iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org,
peterz-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
acme-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org,
andihartmann-KuiJ5kEpwI6ELgA04lAiVw@public.gmane.org,
mingo-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org
Subject: Re: [PATCH V4 2/6] perf/amd/iommu: Modify functions to query max banks and counters
Date: Mon, 22 Feb 2016 11:55:30 +0700 [thread overview]
Message-ID: <56CA94C2.9090501@amd.com> (raw)
In-Reply-To: <20160218111116.GE3694-fF5Pk5pvG8Y@public.gmane.org>
Hi,
On 02/18/2016 06:11 PM, Borislav Petkov wrote:
> On Thu, Feb 11, 2016 at 04:15:23PM +0700, Suravee Suthikulpanit wrote:
>> Currently, amd_iommu_pc_get_max_[banks|counters]() require devid,
>> which should not be the case.
>
> Why?
>
> Commit message could use an explanation.
>
>> Also, these don't properly support
>> multi-IOMMU system.
>>
>> Current and future AMD systems with IOMMU that support perf counter
>
> "with an IOMMU that supports performance counters"
>
>> would likely contain homogeneous IOMMUs where multiple IOMMUs are
>
> What are homogeneous IOMMUs?
I intended to mean the same IOMMU version/capability for all IOMMUs in
the system.
>
>> availalbe. So, this patch modifies these function to iterate all IOMMU
>
> Please integrate a spellchecker in your patch creation workflow:
>
> s/availalbe/available/
>
Thanks. I have now rephrased and spell check the new commit message for
the V5.
>>
>> Reviewed-by: Joerg Roedel <jroedel-l3A5Bk7waGM@public.gmane.org>
>> Signed-off-by: Suravee Suthikulpanit <Suravee.Suthikulpanit-5C7GfCeVMHo@public.gmane.org>
>> ---
>> arch/x86/events/amd/iommu.c | 17 +++++++----------
>> arch/x86/include/asm/perf/amd/iommu.h | 7 ++-----
>> drivers/iommu/amd_iommu_init.c | 20 ++++++++++++--------
>> 3 files changed, 21 insertions(+), 23 deletions(-)
>>
>> diff --git a/arch/x86/events/amd/iommu.c b/arch/x86/events/amd/iommu.c
>> index 2f96072..debf22d 100644
>> --- a/arch/x86/events/amd/iommu.c
>> +++ b/arch/x86/events/amd/iommu.c
>> @@ -232,14 +232,6 @@ static int perf_iommu_event_init(struct perf_event *event)
>> return -EINVAL;
>> }
>>
>> - /* integrate with iommu base devid (0000), assume one iommu */
>> - perf_iommu->max_banks =
>> - amd_iommu_pc_get_max_banks(IOMMU_BASE_DEVID);
>> - perf_iommu->max_counters =
>> - amd_iommu_pc_get_max_counters(IOMMU_BASE_DEVID);
>> - if ((perf_iommu->max_banks == 0) || (perf_iommu->max_counters == 0))
>> - return -EINVAL;
>> -
>> /* update the hw_perf_event struct with the iommu config data */
>> hwc->config = config;
>> hwc->extra_reg.config = config1;
>> @@ -450,6 +442,11 @@ static __init int _init_perf_amd_iommu(
>
> Btw, that _init_perf_amd_iommu is unnecessarily split from
> amd_iommu_pc_init(). You should merge those two. But that's another
> patch. In that same cleanup patch you could do
>
> s/perf_iommu/pi/g
>
> or so because that perf_iommu local var is unnecesarily long and impairs
> readability.
>
Sure, I'll clean up both of these.
>> if (_init_events_attrs(perf_iommu) != 0)
>> pr_err("perf: amd_iommu: Only support raw events.\n");
>>
>> + perf_iommu->max_banks = amd_iommu_pc_get_max_banks();
>> + perf_iommu->max_counters = amd_iommu_pc_get_max_counters();
>> + if ((perf_iommu->max_banks == 0) || (perf_iommu->max_counters == 0))
>
> Simplify:
>
> if (!perf_iommu->max_banks ||
> !perf_iommu->max_counters)
Ok
[....]
>> diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c
>> index d30f4b2..a62b5ce 100644
>> --- a/drivers/iommu/amd_iommu_init.c
>> +++ b/drivers/iommu/amd_iommu_init.c
>> @@ -2251,15 +2251,17 @@ EXPORT_SYMBOL(amd_iommu_v2_supported);
>> *
>> ****************************************************************************/
>>
>> -u8 amd_iommu_pc_get_max_banks(u16 devid)
>> +u8 amd_iommu_pc_get_max_banks(void)
>> {
>> struct amd_iommu *iommu;
>> u8 ret = 0;
>>
>> - /* locate the iommu governing the devid */
>> - iommu = amd_iommu_rlookup_table[devid];
>> - if (iommu)
>> + for_each_iommu(iommu) {
>> + if (!iommu->max_banks ||
>> + (ret && (iommu->max_banks != ret)))
>
> What is that supposed to do?
>
> Check that the max_banks of a previous IOMMU are == to the max_banks of
> the current IOMMU?
>
> Why? Could definitely use a comment.
Current AMD IOMMU perf implementation assumes that all IOMMUs must have
the same value of max_counters. Therefore, this logic iterates through
all IOMMUs to check this. I'll add the comment here.
Thanks,
Suravee
WARNING: multiple messages have this Message-ID (diff)
From: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com>
To: Borislav Petkov <bp@alien8.de>
Cc: <joro@8bytes.org>, <peterz@infradead.org>, <mingo@redhat.com>,
<acme@kernel.org>, <andihartmann@freenet.de>,
<linux-kernel@vger.kernel.org>,
<iommu@lists.linux-foundation.org>
Subject: Re: [PATCH V4 2/6] perf/amd/iommu: Modify functions to query max banks and counters
Date: Mon, 22 Feb 2016 11:55:30 +0700 [thread overview]
Message-ID: <56CA94C2.9090501@amd.com> (raw)
In-Reply-To: <20160218111116.GE3694@pd.tnic>
Hi,
On 02/18/2016 06:11 PM, Borislav Petkov wrote:
> On Thu, Feb 11, 2016 at 04:15:23PM +0700, Suravee Suthikulpanit wrote:
>> Currently, amd_iommu_pc_get_max_[banks|counters]() require devid,
>> which should not be the case.
>
> Why?
>
> Commit message could use an explanation.
>
>> Also, these don't properly support
>> multi-IOMMU system.
>>
>> Current and future AMD systems with IOMMU that support perf counter
>
> "with an IOMMU that supports performance counters"
>
>> would likely contain homogeneous IOMMUs where multiple IOMMUs are
>
> What are homogeneous IOMMUs?
I intended to mean the same IOMMU version/capability for all IOMMUs in
the system.
>
>> availalbe. So, this patch modifies these function to iterate all IOMMU
>
> Please integrate a spellchecker in your patch creation workflow:
>
> s/availalbe/available/
>
Thanks. I have now rephrased and spell check the new commit message for
the V5.
>>
>> Reviewed-by: Joerg Roedel <jroedel@suse.de>
>> Signed-off-by: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com>
>> ---
>> arch/x86/events/amd/iommu.c | 17 +++++++----------
>> arch/x86/include/asm/perf/amd/iommu.h | 7 ++-----
>> drivers/iommu/amd_iommu_init.c | 20 ++++++++++++--------
>> 3 files changed, 21 insertions(+), 23 deletions(-)
>>
>> diff --git a/arch/x86/events/amd/iommu.c b/arch/x86/events/amd/iommu.c
>> index 2f96072..debf22d 100644
>> --- a/arch/x86/events/amd/iommu.c
>> +++ b/arch/x86/events/amd/iommu.c
>> @@ -232,14 +232,6 @@ static int perf_iommu_event_init(struct perf_event *event)
>> return -EINVAL;
>> }
>>
>> - /* integrate with iommu base devid (0000), assume one iommu */
>> - perf_iommu->max_banks =
>> - amd_iommu_pc_get_max_banks(IOMMU_BASE_DEVID);
>> - perf_iommu->max_counters =
>> - amd_iommu_pc_get_max_counters(IOMMU_BASE_DEVID);
>> - if ((perf_iommu->max_banks == 0) || (perf_iommu->max_counters == 0))
>> - return -EINVAL;
>> -
>> /* update the hw_perf_event struct with the iommu config data */
>> hwc->config = config;
>> hwc->extra_reg.config = config1;
>> @@ -450,6 +442,11 @@ static __init int _init_perf_amd_iommu(
>
> Btw, that _init_perf_amd_iommu is unnecessarily split from
> amd_iommu_pc_init(). You should merge those two. But that's another
> patch. In that same cleanup patch you could do
>
> s/perf_iommu/pi/g
>
> or so because that perf_iommu local var is unnecesarily long and impairs
> readability.
>
Sure, I'll clean up both of these.
>> if (_init_events_attrs(perf_iommu) != 0)
>> pr_err("perf: amd_iommu: Only support raw events.\n");
>>
>> + perf_iommu->max_banks = amd_iommu_pc_get_max_banks();
>> + perf_iommu->max_counters = amd_iommu_pc_get_max_counters();
>> + if ((perf_iommu->max_banks == 0) || (perf_iommu->max_counters == 0))
>
> Simplify:
>
> if (!perf_iommu->max_banks ||
> !perf_iommu->max_counters)
Ok
[....]
>> diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c
>> index d30f4b2..a62b5ce 100644
>> --- a/drivers/iommu/amd_iommu_init.c
>> +++ b/drivers/iommu/amd_iommu_init.c
>> @@ -2251,15 +2251,17 @@ EXPORT_SYMBOL(amd_iommu_v2_supported);
>> *
>> ****************************************************************************/
>>
>> -u8 amd_iommu_pc_get_max_banks(u16 devid)
>> +u8 amd_iommu_pc_get_max_banks(void)
>> {
>> struct amd_iommu *iommu;
>> u8 ret = 0;
>>
>> - /* locate the iommu governing the devid */
>> - iommu = amd_iommu_rlookup_table[devid];
>> - if (iommu)
>> + for_each_iommu(iommu) {
>> + if (!iommu->max_banks ||
>> + (ret && (iommu->max_banks != ret)))
>
> What is that supposed to do?
>
> Check that the max_banks of a previous IOMMU are == to the max_banks of
> the current IOMMU?
>
> Why? Could definitely use a comment.
Current AMD IOMMU perf implementation assumes that all IOMMUs must have
the same value of max_counters. Therefore, this logic iterates through
all IOMMUs to check this. I'll add the comment here.
Thanks,
Suravee
next prev parent reply other threads:[~2016-02-22 4:55 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-11 9:15 [PATCH V4 0/6] perf/amd/iommu: Enable multi-IOMMU support Suravee Suthikulpanit
2016-02-11 9:15 ` Suravee Suthikulpanit
2016-02-11 9:15 ` [PATCH V4 3/6] iommu/amd: Introduce amd_iommu_get_num_iommus() Suravee Suthikulpanit
2016-02-11 9:15 ` Suravee Suthikulpanit
[not found] ` <1455182127-17551-1-git-send-email-Suravee.Suthikulpanit-5C7GfCeVMHo@public.gmane.org>
2016-02-11 9:15 ` [PATCH V4 1/6] perf/amd/iommu: Consolidate and move perf_event_amd_iommu header Suravee Suthikulpanit
2016-02-11 9:15 ` Suravee Suthikulpanit
2016-02-11 9:15 ` [PATCH V4 2/6] perf/amd/iommu: Modify functions to query max banks and counters Suravee Suthikulpanit
2016-02-11 9:15 ` Suravee Suthikulpanit
2016-02-18 11:11 ` Borislav Petkov
[not found] ` <20160218111116.GE3694-fF5Pk5pvG8Y@public.gmane.org>
2016-02-22 4:55 ` Suravee Suthikulpanit [this message]
2016-02-22 4:55 ` Suravee Suthikulpanit
2016-02-11 9:15 ` [PATCH V4 4/6] perf/amd/iommu: Introduce get_iommu_bnk_cnt_evt_idx Suravee Suthikulpanit
2016-02-11 9:15 ` Suravee Suthikulpanit
[not found] ` <1455182127-17551-5-git-send-email-Suravee.Suthikulpanit-5C7GfCeVMHo@public.gmane.org>
2016-02-18 11:45 ` Borislav Petkov
2016-02-18 11:45 ` Borislav Petkov
2016-02-11 9:15 ` [PATCH V4 5/6] perf/amd/iommu: Enable support for multiple IOMMUs Suravee Suthikulpanit
2016-02-11 9:15 ` Suravee Suthikulpanit
2016-02-18 13:18 ` Peter Zijlstra
[not found] ` <20160218131853.GU6357-ndre7Fmf5hadTX5a5knrm8zTDFooKrT+cvkQGrU6aU0@public.gmane.org>
2016-02-22 8:00 ` Suravee Suthikulpanit
2016-02-22 8:00 ` Suravee Suthikulpanit
2016-02-22 14:07 ` Peter Zijlstra
[not found] ` <20160222140741.GH6357-ndre7Fmf5hadTX5a5knrm8zTDFooKrT+cvkQGrU6aU0@public.gmane.org>
2016-02-23 5:12 ` Suravee Suthikulpanit
2016-02-23 5:12 ` Suravee Suthikulpanit
[not found] ` <56CBEA4A.8070001-5C7GfCeVMHo@public.gmane.org>
2016-02-23 5:24 ` Alex Williamson
2016-02-23 5:24 ` Alex Williamson
[not found] ` <20160222222457.2824f7e0-1yVPhWWZRC1BDLzU/O5InQ@public.gmane.org>
2016-02-23 9:56 ` Suravee Suthikulpanit
2016-02-23 9:56 ` Suravee Suthikulpanit
[not found] ` <1455182127-17551-6-git-send-email-Suravee.Suthikulpanit-5C7GfCeVMHo@public.gmane.org>
2016-02-18 13:21 ` Borislav Petkov
2016-02-18 13:21 ` Borislav Petkov
2016-02-11 9:15 ` [PATCH V4 6/6] perf/amd/iommu: Clean up print messages pr_debug Suravee Suthikulpanit
2016-02-11 9:15 ` Suravee Suthikulpanit
[not found] ` <1455182127-17551-7-git-send-email-Suravee.Suthikulpanit-5C7GfCeVMHo@public.gmane.org>
2016-02-18 13:22 ` Borislav Petkov
2016-02-18 13:22 ` Borislav Petkov
2016-02-18 2:30 ` [PATCH V4 0/6] perf/amd/iommu: Enable multi-IOMMU support Suravee Suthikulpanit
2016-02-18 2:30 ` Suravee Suthikulpanit
2016-02-23 11:04 ` Joerg Roedel
2016-02-23 11:04 ` Joerg Roedel
[not found] ` <20160223110406.GA22747-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2016-02-23 11:27 ` Suravee Suthikulpanit
2016-02-23 11:27 ` Suravee Suthikulpanit
[not found] ` <56CC422E.7050905-5C7GfCeVMHo@public.gmane.org>
2016-02-23 11:39 ` Suravee Suthikulpanit
2016-02-23 11:39 ` Suravee Suthikulpanit
[not found] ` <56CC44D8.4080604-5C7GfCeVMHo@public.gmane.org>
2016-02-23 12:12 ` [PATCH] iommu/amd: Fix boot warning when device 00:00.0 is not iommu Joerg Roedel
2016-02-23 12:12 ` Joerg Roedel
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=56CA94C2.9090501@amd.com \
--to=suravee.suthikulpanit-5c7gfcevmho@public.gmane.org \
--cc=acme-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=andihartmann-KuiJ5kEpwI6ELgA04lAiVw@public.gmane.org \
--cc=bp-Gina5bIWoIWzQB+pC5nmwQ@public.gmane.org \
--cc=iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=mingo-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=peterz-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org \
/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.