Re: [PATCH 3.4] iommu/amd: Initialize device table after dma_ops

2013-02-28 Thread Luis Henriques
Hi Shuah,

On Thu, Feb 28, 2013 at 12:52:00PM -0700, Shuah Khan wrote:
> On Tue, 2013-02-26 at 16:49 -0700, Shuah Khan wrote:
> > When dma_ops are initialized the unity mappings are created. The
> > init_device_table_dma() function makes sure DMA from all devices is
> > blocked by default. This opens a short window in time where DMA to
> > unity mapped regions is blocked by the IOMMU. Make sure this does not
> > happen by initializing the device table after dma_ops.
> > 
> > Back-port upstream commit: f528d980c17b8714aedc918ba86e058af914d66b
> > 
> > Signed-off-by: Joerg Roedel 
> > Signed-off-by: Shuah Khan 
> > CC: sta...@vger.kernel.org 3.4
> 
> Please consider this for 3.5 as well.

Thank you, I will queue this for the 3.5 kernel.

Cheers,
--
Luis

> 
> -- Shuah
> > ---
> >  drivers/iommu/amd_iommu_init.c |9 +++--
> >  1 file changed, 7 insertions(+), 2 deletions(-)
> > 
> > diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c
> > index ef0ae93..b573f80 100644
> > --- a/drivers/iommu/amd_iommu_init.c
> > +++ b/drivers/iommu/amd_iommu_init.c
> > @@ -1572,8 +1572,6 @@ int __init amd_iommu_init_hardware(void)
> > if (amd_iommu_pd_alloc_bitmap == NULL)
> > goto free;
> >  
> > -   /* init the device table */
> > -   init_device_table();
> >  
> > /*
> >  * let all alias entries point to itself
> > @@ -1655,6 +1653,7 @@ out:
> >   */
> >  static int __init amd_iommu_init(void)
> >  {
> > +   struct amd_iommu *iommu;
> > int ret = 0;
> >  
> > ret = amd_iommu_init_hardware();
> > @@ -1673,6 +1672,12 @@ static int __init amd_iommu_init(void)
> > if (ret)
> > goto free;
> >  
> > +   /* init the device table */
> > +   init_device_table();
> > +
> > +   for_each_iommu(iommu)
> > +   iommu_flush_all_caches(iommu);
> > +
> > amd_iommu_init_api();
> >  
> > x86_platform.iommu_shutdown = disable_iommus;
> 
> 
> --
> To unsubscribe from this list: send the line "unsubscribe stable" in
> the body of a message to majord...@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
___
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu


Re: [PATCH 3.4] iommu/amd: Initialize device table after dma_ops

2013-02-28 Thread Shuah Khan
On Thu, 2013-02-28 at 12:52 -0700, Shuah Khan wrote:
> On Tue, 2013-02-26 at 16:49 -0700, Shuah Khan wrote:
> > When dma_ops are initialized the unity mappings are created. The
> > init_device_table_dma() function makes sure DMA from all devices is
> > blocked by default. This opens a short window in time where DMA to
> > unity mapped regions is blocked by the IOMMU. Make sure this does not
> > happen by initializing the device table after dma_ops.
> > 
> > Back-port upstream commit: f528d980c17b8714aedc918ba86e058af914d66b
> > 
> > Signed-off-by: Joerg Roedel 
> > Signed-off-by: Shuah Khan 
> > CC: sta...@vger.kernel.org 3.4
> 
> Please consider this for 3.5 as well.
> 
> -- Shuah

Please consider this for 3.5. Patch applies and fix works on 3.5.7. My
previous reply to Herton Ronaldo Krzesinski bounced. Including Luis
Henriques on this one.

-- Shuah

___
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu


Re: [PATCH 3.4] iommu/amd: Initialize device table after dma_ops

2013-02-28 Thread Shuah Khan
On Tue, 2013-02-26 at 16:49 -0700, Shuah Khan wrote:
> When dma_ops are initialized the unity mappings are created. The
> init_device_table_dma() function makes sure DMA from all devices is
> blocked by default. This opens a short window in time where DMA to
> unity mapped regions is blocked by the IOMMU. Make sure this does not
> happen by initializing the device table after dma_ops.
> 
> Back-port upstream commit: f528d980c17b8714aedc918ba86e058af914d66b
> 
> Signed-off-by: Joerg Roedel 
> Signed-off-by: Shuah Khan 
> CC: sta...@vger.kernel.org 3.4

Please consider this for 3.5 as well.

-- Shuah
> ---
>  drivers/iommu/amd_iommu_init.c |9 +++--
>  1 file changed, 7 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c
> index ef0ae93..b573f80 100644
> --- a/drivers/iommu/amd_iommu_init.c
> +++ b/drivers/iommu/amd_iommu_init.c
> @@ -1572,8 +1572,6 @@ int __init amd_iommu_init_hardware(void)
>   if (amd_iommu_pd_alloc_bitmap == NULL)
>   goto free;
>  
> - /* init the device table */
> - init_device_table();
>  
>   /*
>* let all alias entries point to itself
> @@ -1655,6 +1653,7 @@ out:
>   */
>  static int __init amd_iommu_init(void)
>  {
> + struct amd_iommu *iommu;
>   int ret = 0;
>  
>   ret = amd_iommu_init_hardware();
> @@ -1673,6 +1672,12 @@ static int __init amd_iommu_init(void)
>   if (ret)
>   goto free;
>  
> + /* init the device table */
> + init_device_table();
> +
> + for_each_iommu(iommu)
> + iommu_flush_all_caches(iommu);
> +
>   amd_iommu_init_api();
>  
>   x86_platform.iommu_shutdown = disable_iommus;


___
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu


[PATCH 3.4] iommu/amd: Initialize device table after dma_ops

2013-02-27 Thread Shuah Khan
When dma_ops are initialized the unity mappings are created. The
init_device_table_dma() function makes sure DMA from all devices is
blocked by default. This opens a short window in time where DMA to
unity mapped regions is blocked by the IOMMU. Make sure this does not
happen by initializing the device table after dma_ops.

Back-port upstream commit: f528d980c17b8714aedc918ba86e058af914d66b

Signed-off-by: Joerg Roedel 
Signed-off-by: Shuah Khan 
CC: sta...@vger.kernel.org 3.4
---
 drivers/iommu/amd_iommu_init.c |9 +++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c
index ef0ae93..b573f80 100644
--- a/drivers/iommu/amd_iommu_init.c
+++ b/drivers/iommu/amd_iommu_init.c
@@ -1572,8 +1572,6 @@ int __init amd_iommu_init_hardware(void)
if (amd_iommu_pd_alloc_bitmap == NULL)
goto free;
 
-   /* init the device table */
-   init_device_table();
 
/*
 * let all alias entries point to itself
@@ -1655,6 +1653,7 @@ out:
  */
 static int __init amd_iommu_init(void)
 {
+   struct amd_iommu *iommu;
int ret = 0;
 
ret = amd_iommu_init_hardware();
@@ -1673,6 +1672,12 @@ static int __init amd_iommu_init(void)
if (ret)
goto free;
 
+   /* init the device table */
+   init_device_table();
+
+   for_each_iommu(iommu)
+   iommu_flush_all_caches(iommu);
+
amd_iommu_init_api();
 
x86_platform.iommu_shutdown = disable_iommus;
-- 
1.7.9.5



___
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu