diff options
author | Joerg Roedel <jroedel@suse.de> | 2017-03-22 18:59:56 -0400 |
---|---|---|
committer | Joerg Roedel <jroedel@suse.de> | 2017-03-22 18:59:56 -0400 |
commit | 11cd3386a1987a0515d7ce11ee87b242e5015dfe (patch) | |
tree | a8f3db18956402e64722af7ccd31851f4f0dac10 /drivers | |
parent | 9d3a4de4cb8db8e71730e36736272ef041836f68 (diff) | |
parent | a03849e7210277fa212779b7cd9c30e1ab6194b2 (diff) |
Merge branch 'for-joerg/arm-smmu/fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/will/linux into iommu/fixes
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/iommu/io-pgtable-arm-v7s.c | 6 | ||||
-rw-r--r-- | drivers/iommu/io-pgtable-arm.c | 6 |
2 files changed, 10 insertions, 2 deletions
diff --git a/drivers/iommu/io-pgtable-arm-v7s.c b/drivers/iommu/io-pgtable-arm-v7s.c index 1c049e2e12bf..8d6ca28c3e1f 100644 --- a/drivers/iommu/io-pgtable-arm-v7s.c +++ b/drivers/iommu/io-pgtable-arm-v7s.c | |||
@@ -422,8 +422,12 @@ static int __arm_v7s_map(struct arm_v7s_io_pgtable *data, unsigned long iova, | |||
422 | pte |= ARM_V7S_ATTR_NS_TABLE; | 422 | pte |= ARM_V7S_ATTR_NS_TABLE; |
423 | 423 | ||
424 | __arm_v7s_set_pte(ptep, pte, 1, cfg); | 424 | __arm_v7s_set_pte(ptep, pte, 1, cfg); |
425 | } else { | 425 | } else if (ARM_V7S_PTE_IS_TABLE(pte, lvl)) { |
426 | cptep = iopte_deref(pte, lvl); | 426 | cptep = iopte_deref(pte, lvl); |
427 | } else { | ||
428 | /* We require an unmap first */ | ||
429 | WARN_ON(!selftest_running); | ||
430 | return -EEXIST; | ||
427 | } | 431 | } |
428 | 432 | ||
429 | /* Rinse, repeat */ | 433 | /* Rinse, repeat */ |
diff --git a/drivers/iommu/io-pgtable-arm.c b/drivers/iommu/io-pgtable-arm.c index feacc54bec68..f9bc6ebb8140 100644 --- a/drivers/iommu/io-pgtable-arm.c +++ b/drivers/iommu/io-pgtable-arm.c | |||
@@ -335,8 +335,12 @@ static int __arm_lpae_map(struct arm_lpae_io_pgtable *data, unsigned long iova, | |||
335 | if (cfg->quirks & IO_PGTABLE_QUIRK_ARM_NS) | 335 | if (cfg->quirks & IO_PGTABLE_QUIRK_ARM_NS) |
336 | pte |= ARM_LPAE_PTE_NSTABLE; | 336 | pte |= ARM_LPAE_PTE_NSTABLE; |
337 | __arm_lpae_set_pte(ptep, pte, cfg); | 337 | __arm_lpae_set_pte(ptep, pte, cfg); |
338 | } else { | 338 | } else if (!iopte_leaf(pte, lvl)) { |
339 | cptep = iopte_deref(pte, data); | 339 | cptep = iopte_deref(pte, data); |
340 | } else { | ||
341 | /* We require an unmap first */ | ||
342 | WARN_ON(!selftest_running); | ||
343 | return -EEXIST; | ||
340 | } | 344 | } |
341 | 345 | ||
342 | /* Rinse, repeat */ | 346 | /* Rinse, repeat */ |