* [PATCH v9 02/16] iommu/exynos: add missing cache flush for removed page table entries
@ 2013-08-08 9:37 Cho KyongHo
2013-08-08 13:44 ` Tomasz Figa
0 siblings, 1 reply; 3+ messages in thread
From: Cho KyongHo @ 2013-08-08 9:37 UTC (permalink / raw)
To: 'Linux ARM Kernel', 'Linux IOMMU',
'Linux Kernel', 'Linux Samsung SOC',
devicetree-u79uwXL29TY76Z2rM5mHXA
Cc: 'Kukjin Kim', 'Prathyush',
'Grant Grundler', 'Subash Patel',
'Sachin Kamat', 'Antonios Motakis',
kvmarm-FPEHb7Xf0XXUo1n7N8X6UoWGPAHP3yOg, 'Rahul Sharma'
This commit adds cache flush for removed small and large page entries
in exynos_iommu_unmap(). Missing cache flush of removed page table
entries can cause missing page fault interrupt when a master IP
accesses an unmapped area.
Tested-by: Grant Grundler <grundler-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
Signed-off-by: Cho KyongHo <pullip.cho-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
---
drivers/iommu/exynos-iommu.c | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/drivers/iommu/exynos-iommu.c b/drivers/iommu/exynos-iommu.c
index 233f382..d545a25 100644
--- a/drivers/iommu/exynos-iommu.c
+++ b/drivers/iommu/exynos-iommu.c
@@ -1002,6 +1002,7 @@ static size_t exynos_iommu_unmap(struct iommu_domain *domain,
if (lv2ent_small(ent)) {
*ent = 0;
size = SPAGE_SIZE;
+ pgtable_flush(ent, ent + 1);
priv->lv2entcnt[lv1ent_offset(iova)] += 1;
goto done;
}
@@ -1010,6 +1011,7 @@ static size_t exynos_iommu_unmap(struct iommu_domain *domain,
BUG_ON(size < LPAGE_SIZE);
memset(ent, 0, sizeof(*ent) * SPAGES_PER_LPAGE);
+ pgtable_flush(ent, ent + SPAGES_PER_LPAGE);
size = LPAGE_SIZE;
priv->lv2entcnt[lv1ent_offset(iova)] += SPAGES_PER_LPAGE;
--
1.7.2.5
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [PATCH v9 02/16] iommu/exynos: add missing cache flush for removed page table entries
2013-08-08 9:37 [PATCH v9 02/16] iommu/exynos: add missing cache flush for removed page table entries Cho KyongHo
@ 2013-08-08 13:44 ` Tomasz Figa
2013-08-09 4:02 ` Cho KyongHo
0 siblings, 1 reply; 3+ messages in thread
From: Tomasz Figa @ 2013-08-08 13:44 UTC (permalink / raw)
To: Cho KyongHo
Cc: 'Linux ARM Kernel', 'Linux IOMMU',
'Linux Kernel', 'Linux Samsung SOC', devicetree,
'Joerg Roedel', 'Kukjin Kim', 'Prathyush',
'Rahul Sharma', 'Subash Patel',
'Grant Grundler', 'Antonios Motakis', kvmarm,
'Sachin Kamat'
On Thursday 08 of August 2013 18:37:34 Cho KyongHo wrote:
> This commit adds cache flush for removed small and large page entries
> in exynos_iommu_unmap(). Missing cache flush of removed page table
> entries can cause missing page fault interrupt when a master IP
> accesses an unmapped area.
>
> Tested-by: Grant Grundler <grundler@chromium.org>
> Signed-off-by: Cho KyongHo <pullip.cho@samsung.com>
> ---
> drivers/iommu/exynos-iommu.c | 2 ++
> 1 files changed, 2 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/iommu/exynos-iommu.c b/drivers/iommu/exynos-iommu.c
> index 233f382..d545a25 100644
> --- a/drivers/iommu/exynos-iommu.c
> +++ b/drivers/iommu/exynos-iommu.c
> @@ -1002,6 +1002,7 @@ static size_t exynos_iommu_unmap(struct
> iommu_domain *domain, if (lv2ent_small(ent)) {
> *ent = 0;
> size = SPAGE_SIZE;
> + pgtable_flush(ent, ent + 1);
> priv->lv2entcnt[lv1ent_offset(iova)] += 1;
> goto done;
> }
> @@ -1010,6 +1011,7 @@ static size_t exynos_iommu_unmap(struct
> iommu_domain *domain, BUG_ON(size < LPAGE_SIZE);
>
> memset(ent, 0, sizeof(*ent) * SPAGES_PER_LPAGE);
> + pgtable_flush(ent, ent + SPAGES_PER_LPAGE);
>
> size = LPAGE_SIZE;
> priv->lv2entcnt[lv1ent_offset(iova)] += SPAGES_PER_LPAGE;
Looks reasonable.
Reviewed-by: Tomasz Figa <t.figa@samsung.com>
Best regards,
Tomasz
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [PATCH v9 02/16] iommu/exynos: add missing cache flush for removed page table entries
2013-08-08 13:44 ` Tomasz Figa
@ 2013-08-09 4:02 ` Cho KyongHo
0 siblings, 0 replies; 3+ messages in thread
From: Cho KyongHo @ 2013-08-09 4:02 UTC (permalink / raw)
To: Tomasz Figa
Cc: devicetree-u79uwXL29TY76Z2rM5mHXA, 'Linux Samsung SOC',
'Prathyush', 'Grant Grundler',
'Subash Patel', 'Linux Kernel',
'Sachin Kamat', 'Linux IOMMU',
'Kukjin Kim', 'Antonios Motakis',
kvmarm-FPEHb7Xf0XXUo1n7N8X6UoWGPAHP3yOg,
'Linux ARM Kernel', 'Rahul Sharma'
On Thu, 08 Aug 2013 15:44:09 +0200, Tomasz Figa wrote:
> On Thursday 08 of August 2013 18:37:34 Cho KyongHo wrote:
> > This commit adds cache flush for removed small and large page entries
> > in exynos_iommu_unmap(). Missing cache flush of removed page table
> > entries can cause missing page fault interrupt when a master IP
> > accesses an unmapped area.
> >
> > Tested-by: Grant Grundler <grundler-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
> > Signed-off-by: Cho KyongHo <pullip.cho-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
> > ---
> > drivers/iommu/exynos-iommu.c | 2 ++
> > 1 files changed, 2 insertions(+), 0 deletions(-)
> >
> > diff --git a/drivers/iommu/exynos-iommu.c b/drivers/iommu/exynos-iommu.c
> > index 233f382..d545a25 100644
> > --- a/drivers/iommu/exynos-iommu.c
> > +++ b/drivers/iommu/exynos-iommu.c
> > @@ -1002,6 +1002,7 @@ static size_t exynos_iommu_unmap(struct
> > iommu_domain *domain, if (lv2ent_small(ent)) {
> > *ent = 0;
> > size = SPAGE_SIZE;
> > + pgtable_flush(ent, ent + 1);
> > priv->lv2entcnt[lv1ent_offset(iova)] += 1;
> > goto done;
> > }
> > @@ -1010,6 +1011,7 @@ static size_t exynos_iommu_unmap(struct
> > iommu_domain *domain, BUG_ON(size < LPAGE_SIZE);
> >
> > memset(ent, 0, sizeof(*ent) * SPAGES_PER_LPAGE);
> > + pgtable_flush(ent, ent + SPAGES_PER_LPAGE);
> >
> > size = LPAGE_SIZE;
> > priv->lv2entcnt[lv1ent_offset(iova)] += SPAGES_PER_LPAGE;
>
> Looks reasonable.
>
> Reviewed-by: Tomasz Figa <t.figa-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
>
Thanks.
KyongHo.
> Best regards,
> Tomasz
>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2013-08-09 4:02 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-08-08 9:37 [PATCH v9 02/16] iommu/exynos: add missing cache flush for removed page table entries Cho KyongHo
2013-08-08 13:44 ` Tomasz Figa
2013-08-09 4:02 ` Cho KyongHo
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox