OSDN Git Service
(root)
/
uclinux-h8
/
linux.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
474dd1c
)
iommu/rockchip: Fix physical address decoding
author
Benjamin Gaignard
<benjamin.gaignard@collabora.com>
Mon, 12 Jul 2021 10:12:32 +0000
(12:12 +0200)
committer
Joerg Roedel
<jroedel@suse.de>
Wed, 14 Jul 2021 10:58:07 +0000
(12:58 +0200)
Restore bits 39 to 32 at correct position.
It reverses the operation done in rk_dma_addr_dte_v2().
Fixes:
c55356c534aa
("iommu: rockchip: Add support for iommu v2")
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Benjamin Gaignard <benjamin.gaignard@collabora.com>
Link:
https://lore.kernel.org/r/20210712101232.318589-1-benjamin.gaignard@collabora.com
Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/rockchip-iommu.c
patch
|
blob
|
history
diff --git
a/drivers/iommu/rockchip-iommu.c
b/drivers/iommu/rockchip-iommu.c
index
94b9d8e
..
9febfb7
100644
(file)
--- a/
drivers/iommu/rockchip-iommu.c
+++ b/
drivers/iommu/rockchip-iommu.c
@@
-544,12
+544,14
@@
static inline u32 rk_dma_addr_dte(dma_addr_t dt_dma)
}
#define DT_HI_MASK GENMASK_ULL(39, 32)
+#define DTE_BASE_HI_MASK GENMASK(11, 4)
#define DT_SHIFT 28
static inline phys_addr_t rk_dte_addr_phys_v2(u32 addr)
{
- return (phys_addr_t)(addr & RK_DTE_PT_ADDRESS_MASK) |
- ((addr & DT_HI_MASK) << DT_SHIFT);
+ u64 addr64 = addr;
+ return (phys_addr_t)(addr64 & RK_DTE_PT_ADDRESS_MASK) |
+ ((addr64 & DTE_BASE_HI_MASK) << DT_SHIFT);
}
static inline u32 rk_dma_addr_dte_v2(dma_addr_t dt_dma)