Subject: [PATCH v2] iommu/io-pgtable-arm: Don't use dma_to_phys()

From: [email-masked] (Robin Murphy)
Date: Tue, 22 Sep 2015 17:23:16 +0100

On 22/09/15 14:25, Yong Wu wrote:
[...]
> About here:
>> @@ -629,6 +626,11 @@ arm_lpae_alloc_pgtable(struct io_pgtable_cfg
> *cfg)
>>        if (cfg->oas > ARM_LPAE_MAX_ADDR_BITS)
>>                return NULL;
>>   
>> +     if (cfg->iommu_dev->dma_pfn_offset) {
> 
> Do we need change to :
> 	if (!selftest_running && cfg->iommu_dev->dma_pfn_offset) {
> 
> cfg->iommu_dev will be null while self test.

Urgh, you're absolutely right. Must have been one of those days when I
had loads of noisy debug in there and turned the self-tests off :(

Will; since the branch hasn't gone anywhere yet, are you OK to take the below?

Robin.

----->8-----
From: Robin Murphy <[email-masked]>
Date: Tue, 22 Sep 2015 14:52:27 +0100
Subject: [PATCH] fixup! iommu/io-pgtable-arm: Don't use dma_to_phys()

Signed-off-by: Robin Murphy <[email-masked]>
---
 drivers/iommu/io-pgtable-arm.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/iommu/io-pgtable-arm.c b/drivers/iommu/io-pgtable-arm.c
index 1f08ce7..2ba2323 100644
--- a/drivers/iommu/io-pgtable-arm.c
+++ b/drivers/iommu/io-pgtable-arm.c
@@ -628,7 +628,7 @@ arm_lpae_alloc_pgtable(struct io_pgtable_cfg *cfg)
        if (cfg->oas > ARM_LPAE_MAX_ADDR_BITS)
                return NULL;
 
-       if (cfg->iommu_dev->dma_pfn_offset) {
+       if (!selftest_running && cfg->iommu_dev->dma_pfn_offset) {
                dev_err(cfg->iommu_dev, "Cannot accommodate DMA offset for IOMMU page tables\n");
                return NULL;
        }