Re: [PATCH 1/2] staging: fsl-dpaa2/eth: Fix address translations
From: Laurentiu Tudor
Date: Mon May 29 2017 - 09:57:44 EST
On 05/25/2017 03:31 PM, Ruxandra Ioana Radulescu wrote:
>> -----Original Message-----
>> From: Laurentiu Tudor
>> Sent: Wednesday, May 24, 2017 3:34 PM
>> To: Ruxandra Ioana Radulescu <ruxandra.radulescu@xxxxxxx>;
>> gregkh@xxxxxxxxxxxxxxxxxxx
>> Cc: devel@xxxxxxxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx;
>> agraf@xxxxxxx; arnd@xxxxxxxx; linux-arm-kernel@xxxxxxxxxxxxxxxxxxx;
>> iommu@xxxxxxxxxxxxxxxxxxxxxxxxxx; Bogdan Purcareata
>> <bogdan.purcareata@xxxxxxx>; stuyoder@xxxxxxxxx; Nipun Gupta
>> <nipun.gupta@xxxxxxx>
>> Subject: Re: [PATCH 1/2] staging: fsl-dpaa2/eth: Fix address translations
>>
>> Hi Ioana,
>>
>> Debatable nit inline.
>>
>> On 05/24/2017 03:13 PM, Ioana Radulescu wrote:
>>> Use the correct mechanisms for translating a DMA-mapped IOVA
>>> address into a virtual one. Without this fix, once SMMU is
>>> enabled on Layerscape platforms, the Ethernet driver throws
>>> IOMMU translation faults.
>>>
>>> Signed-off-by: Nipun Gupta <nipun.gupta@xxxxxxx>
>>> Signed-off-by: Ioana Radulescu <ruxandra.radulescu@xxxxxxx>
>>> ---
>>> drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth.c | 25
>> +++++++++++++++++++------
>>> drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth.h | 1 +
>>> 2 files changed, 20 insertions(+), 6 deletions(-)
>>>
>>> diff --git a/drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth.c
>> b/drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth.c
>>> index 6f9eed66c64d..3fee0d6f17e0 100644
>>> --- a/drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth.c
>>> +++ b/drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth.c
>>> @@ -37,6 +37,7 @@
>>> #include <linux/interrupt.h>
>>> #include <linux/msi.h>
>>> #include <linux/kthread.h>
>>> +#include <linux/iommu.h>
>>>
>>> #include "../../fsl-mc/include/mc.h"
>>> #include "../../fsl-mc/include/mc-sys.h"
>>> @@ -54,6 +55,16 @@ MODULE_DESCRIPTION("Freescale DPAA2 Ethernet
>> Driver");
>>>
>>> const char dpaa2_eth_drv_version[] = "0.1";
>>>
>>> +static void *dpaa2_iova_to_virt(struct iommu_domain *domain,
>>
>> if you pass a "struct dpaa2_eth_priv *priv" instead of "iommu_domain"
>> you can move the priv->iommu_domain reference in the function and
>> slightly simplify the call sites.
>
> Fair point, but I'd prefer keeping this function independent of the
> Ethernet driver's private data structure. This way, if other (future)
> DPAA2 drivers will need a similar function, we can just move it
> to a common area instead of duplicating the code.
Understood. Fine by me then.
---
Best Regards, Laurentiu