From: Joerg Roedel <joro@8bytes.org>
To: arindam.nath@amd.com, Tom Lendacky <thomas.lendacky@amd.com>
Cc: iommu@lists.linux-foundation.org, amd-gfx@lists.freedesktop.org,
Alexander.Deucher@amd.com, John.Bridgman@amd.com,
drake@endlessm.com, Suravee.Suthikulpanit@amd.com,
linux@endlessm.com, Craig Stein <stein12c@gmail.com>,
michel@daenzer.net, Felix.Kuehling@amd.com,
stable@vger.kernel.org
Subject: Re: [PATCH] iommu/amd: flush IOTLB for specific domains only (v3)
Date: Mon, 29 May 2017 16:38:31 +0200 [thread overview]
Message-ID: <20170529143831.GA30388@8bytes.org> (raw)
In-Reply-To: <1495439281-24005-1-git-send-email-arindam.nath@amd.com>
Hi Arindam,
I met Tom Lendacky last week in Nuremberg last week and he told me he is
working on the same area of the code that this patch is for. His reason
for touching this code was to solve some locking problems. Maybe you two
can work together on a joint approach to improve this?
On Mon, May 22, 2017 at 01:18:01PM +0530, arindam.nath@amd.com wrote:
> diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
> index 63cacf5..1edeebec 100644
> --- a/drivers/iommu/amd_iommu.c
> +++ b/drivers/iommu/amd_iommu.c
> @@ -2227,15 +2227,26 @@ static struct iommu_group *amd_iommu_device_group(struct device *dev)
>
> static void __queue_flush(struct flush_queue *queue)
> {
> - struct protection_domain *domain;
> - unsigned long flags;
> int idx;
>
> - /* First flush TLB of all known domains */
> - spin_lock_irqsave(&amd_iommu_pd_lock, flags);
> - list_for_each_entry(domain, &amd_iommu_pd_list, list)
> - domain_flush_tlb(domain);
> - spin_unlock_irqrestore(&amd_iommu_pd_lock, flags);
> + /* First flush TLB of all domains which were added to flush queue */
> + for (idx = 0; idx < queue->next; ++idx) {
> + struct flush_queue_entry *entry;
> +
> + entry = queue->entries + idx;
> +
> + /*
> + * There might be cases where multiple IOVA entries for the
> + * same domain are queued in the flush queue. To avoid
> + * flushing the same domain again, we check whether the
> + * flag is set or not. This improves the efficiency of
> + * flush operation.
> + */
> + if (!entry->dma_dom->domain.already_flushed) {
> + entry->dma_dom->domain.already_flushed = true;
> + domain_flush_tlb(&entry->dma_dom->domain);
> + }
> + }
There is also a race condition here I have to look into. It is not
introduced by your patch, but needs fixing anyway. I'll look into this
too.
Regards,
Joerg
next prev parent reply other threads:[~2017-05-29 14:38 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-13 19:49 amd-iommu: can't boot with amdgpu, AMD-Vi: Completion-Wait loop timed out Daniel Drake
[not found] ` <CAD8Lp457TE1CnJ-DHnB6NB2LWxgA5K5K57Q6L7XcSHeYNpvARQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-03-13 20:01 ` Deucher, Alexander
[not found] ` <CY4PR12MB16533C83151D6FCFC11ED457F7250-rpdhrqHFk06apTa93KjAaQdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2017-03-14 6:16 ` Nath, Arindam
2017-03-17 12:15 ` Daniel Drake
[not found] ` <CAD8Lp47zjJvqxY3TMMAhjz3OnLR52CtsQh_PQFPmsEW-xHfDwg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-03-17 15:53 ` Alex Deucher
[not found] ` <CADnq5_Oyfm-BzU9YV_QLjm6HxtMwnJcFkfYtjmCWpuah35TFvA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-03-21 15:57 ` joro-zLv9SwRftAIdnm+yROfE0A
[not found] ` <20170321155725.GD29659-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2017-03-21 16:01 ` Deucher, Alexander
[not found] ` <BN6PR12MB16526DD4A3B60DB4E20B9907F73D0-/b2+HYfkarQqUD6E6FAiowdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2017-03-21 16:10 ` 'joro-zLv9SwRftAIdnm+yROfE0A@public.gmane.org'
[not found] ` <20170321161056.GE29659-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2017-03-21 16:14 ` Nath, Arindam
2017-03-21 16:17 ` Deucher, Alexander
[not found] ` <BN6PR12MB16528AF8E5577E9ACB483212F73D0-/b2+HYfkarQqUD6E6FAiowdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2017-03-21 16:25 ` 'joro-zLv9SwRftAIdnm+yROfE0A@public.gmane.org'
[not found] ` <20170321162532.GG29659-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2017-03-21 16:30 ` Deucher, Alexander
[not found] ` <BN6PR12MB165268CA4C460215950409D5F73D0-/b2+HYfkarQqUD6E6FAiowdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2017-03-22 11:22 ` 'joro-zLv9SwRftAIdnm+yROfE0A@public.gmane.org'
[not found] ` <20170322112242.GK29659-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2017-03-22 17:18 ` Tom St Denis
[not found] ` <afecf448-c9fe-c481-0d0e-6dec0f459eeb-5C7GfCeVMHo@public.gmane.org>
2017-03-22 17:26 ` Tom St Denis
2017-03-27 6:17 ` [PATCH] iommu/amd: flush IOTLB for specific domains only arindam.nath-5C7GfCeVMHo
[not found] ` <1490595427-11979-1-git-send-email-arindam.nath-5C7GfCeVMHo@public.gmane.org>
2017-03-27 12:25 ` Daniel Drake
[not found] ` <CAD8Lp46RjsUJEvCR5qVY6p8za5H9iDGTAyJMDd1zO7gbgBvqfA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-03-27 12:27 ` Nath, Arindam
2017-03-30 6:23 ` Nath, Arindam
[not found] ` <MWHPR12MB15186B0A864F247BFBEF8EAD9C340-Gy0DoCVfaSXKu+HfpMNLNQdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2017-03-30 13:45 ` Daniel Drake
[not found] ` <CAD8Lp47VQ0X0ydsGMrpTu-y4LAXfg9N7+Mzb0hDWDsKc2P-kQg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-03-30 14:48 ` Nath, Arindam
2017-04-05 15:01 ` Nath, Arindam
[not found] ` <MWHPR12MB15183AFF01D7D74109CC62FF9C0A0-Gy0DoCVfaSXKu+HfpMNLNQdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2017-05-08 18:22 ` Daniel Drake
2017-04-07 10:20 ` Joerg Roedel
[not found] ` <20170407102039.GW7266-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2017-05-19 1:31 ` Michel Dänzer
2017-05-19 10:02 ` [PATCH] iommu/amd: flush IOTLB for specific domains only (v2) arindam.nath-5C7GfCeVMHo
[not found] ` <1495188151-14358-1-git-send-email-arindam.nath-5C7GfCeVMHo@public.gmane.org>
2017-05-19 13:35 ` Jan Vesely
[not found] ` <1495200930.4360.6.camel-kgbqMDwikbSVc3sceRu5cw@public.gmane.org>
2017-05-21 7:25 ` Nath, Arindam
2017-05-22 1:08 ` Michel Dänzer
[not found] ` <c03c7d65-52a7-b656-2278-0cfb24e8d07a-otUistvHUpPR7s880joybQ@public.gmane.org>
2017-05-22 1:12 ` Michel Dänzer
2017-05-22 7:48 ` [PATCH] iommu/amd: flush IOTLB for specific domains only (v3) arindam.nath-5C7GfCeVMHo
2017-05-22 7:48 ` arindam.nath
[not found] ` <1495439281-24005-1-git-send-email-arindam.nath-5C7GfCeVMHo@public.gmane.org>
2017-05-23 18:24 ` Deucher, Alexander
2017-05-23 18:24 ` Deucher, Alexander
2017-05-29 14:38 ` Joerg Roedel [this message]
2017-05-30 7:38 ` Nath, Arindam
[not found] ` <MWHPR12MB1518926453E8BAF205F3492D9CF00-Gy0DoCVfaSXKu+HfpMNLNQdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2017-09-12 6:49 ` Daniel Drake
2017-09-12 6:49 ` Daniel Drake
2017-09-12 9:02 ` Nath, Arindam
2017-03-27 12:23 ` amd-iommu: can't boot with amdgpu, AMD-Vi: Completion-Wait loop timed out Daniel Drake
2017-03-21 17:22 ` Tom St Denis
-- strict thread matches above, loose matches on Subject: below --
2017-05-22 7:46 [PATCH] iommu/amd: flush IOTLB for specific domains only (v3) arindam.nath
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=20170529143831.GA30388@8bytes.org \
--to=joro@8bytes.org \
--cc=Alexander.Deucher@amd.com \
--cc=Felix.Kuehling@amd.com \
--cc=John.Bridgman@amd.com \
--cc=Suravee.Suthikulpanit@amd.com \
--cc=amd-gfx@lists.freedesktop.org \
--cc=arindam.nath@amd.com \
--cc=drake@endlessm.com \
--cc=iommu@lists.linux-foundation.org \
--cc=linux@endlessm.com \
--cc=michel@daenzer.net \
--cc=stable@vger.kernel.org \
--cc=stein12c@gmail.com \
--cc=thomas.lendacky@amd.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.