Commit 7eb99841 authored by Michael Riesch's avatar Michael Riesch Committed by Joerg Roedel

iommu/rockchip: fix permission bits in page table entries v2

As pointed out in the corresponding downstream fix [0], the permission bits
of the page table entries are compatible between v1 and v2 of the IOMMU.
This is in contrast to the current mainline code that incorrectly assumes
that the read and write permission bits are switched. Fix the permission
bits by reusing the v1 bit defines.

[0] https://github.com/rockchip-linux/kernel/commit/e3bc123a2260145e34b57454da3db0edd117eb8e

Fixes: c55356c5 ("iommu: rockchip: Add support for iommu v2")
Signed-off-by: default avatarMichael Riesch <michael.riesch@wolfvision.net>
Reviewed-by: default avatarHeiko Stuebner <heiko@sntech.de>
Link: https://lore.kernel.org/r/20221102063553.2464161-1-michael.riesch@wolfvision.netSigned-off-by: default avatarJoerg Roedel <jroedel@suse.de>
parent 30a0b95b
...@@ -280,19 +280,17 @@ static u32 rk_mk_pte(phys_addr_t page, int prot) ...@@ -280,19 +280,17 @@ static u32 rk_mk_pte(phys_addr_t page, int prot)
* 11:9 - Page address bit 34:32 * 11:9 - Page address bit 34:32
* 8:4 - Page address bit 39:35 * 8:4 - Page address bit 39:35
* 3 - Security * 3 - Security
* 2 - Readable * 2 - Writable
* 1 - Writable * 1 - Readable
* 0 - 1 if Page @ Page address is valid * 0 - 1 if Page @ Page address is valid
*/ */
#define RK_PTE_PAGE_READABLE_V2 BIT(2)
#define RK_PTE_PAGE_WRITABLE_V2 BIT(1)
static u32 rk_mk_pte_v2(phys_addr_t page, int prot) static u32 rk_mk_pte_v2(phys_addr_t page, int prot)
{ {
u32 flags = 0; u32 flags = 0;
flags |= (prot & IOMMU_READ) ? RK_PTE_PAGE_READABLE_V2 : 0; flags |= (prot & IOMMU_READ) ? RK_PTE_PAGE_READABLE : 0;
flags |= (prot & IOMMU_WRITE) ? RK_PTE_PAGE_WRITABLE_V2 : 0; flags |= (prot & IOMMU_WRITE) ? RK_PTE_PAGE_WRITABLE : 0;
return rk_mk_dte_v2(page) | flags; return rk_mk_dte_v2(page) | flags;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment