* [PATCH] iommu/rockchip: fix permission bits in page table entries v2
@ 2022-11-02 6:35 Michael Riesch
2022-11-03 14:52 ` Heiko Stübner
2022-11-03 14:59 ` Joerg Roedel
0 siblings, 2 replies; 3+ messages in thread
From: Michael Riesch @ 2022-11-02 6:35 UTC (permalink / raw)
To: iommu, linux-arm-kernel, linux-rockchip, linux-kernel
Cc: Joerg Roedel, Will Deacon, Robin Murphy, Heiko Stuebner,
Benjamin Gaignard, Simon Xue, Michael Riesch
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: c55356c534aa ("iommu: rockchip: Add support for iommu v2")
Signed-off-by: Michael Riesch <michael.riesch@wolfvision.net>
---
drivers/iommu/rockchip-iommu.c | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)
diff --git a/drivers/iommu/rockchip-iommu.c b/drivers/iommu/rockchip-iommu.c
index a3fc59b814ab..a68eadd64f38 100644
--- a/drivers/iommu/rockchip-iommu.c
+++ b/drivers/iommu/rockchip-iommu.c
@@ -280,19 +280,17 @@ static u32 rk_mk_pte(phys_addr_t page, int prot)
* 11:9 - Page address bit 34:32
* 8:4 - Page address bit 39:35
* 3 - Security
- * 2 - Readable
- * 1 - Writable
+ * 2 - Writable
+ * 1 - Readable
* 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)
{
u32 flags = 0;
- flags |= (prot & IOMMU_READ) ? RK_PTE_PAGE_READABLE_V2 : 0;
- flags |= (prot & IOMMU_WRITE) ? RK_PTE_PAGE_WRITABLE_V2 : 0;
+ flags |= (prot & IOMMU_READ) ? RK_PTE_PAGE_READABLE : 0;
+ flags |= (prot & IOMMU_WRITE) ? RK_PTE_PAGE_WRITABLE : 0;
return rk_mk_dte_v2(page) | flags;
}
--
2.30.2
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [PATCH] iommu/rockchip: fix permission bits in page table entries v2
2022-11-02 6:35 [PATCH] iommu/rockchip: fix permission bits in page table entries v2 Michael Riesch
@ 2022-11-03 14:52 ` Heiko Stübner
2022-11-03 14:59 ` Joerg Roedel
1 sibling, 0 replies; 3+ messages in thread
From: Heiko Stübner @ 2022-11-03 14:52 UTC (permalink / raw)
To: iommu, linux-arm-kernel, linux-rockchip, linux-kernel,
Michael Riesch
Cc: Joerg Roedel, Will Deacon, Robin Murphy, Benjamin Gaignard,
Simon Xue, Michael Riesch
Am Mittwoch, 2. November 2022, 07:35:53 CET schrieb Michael Riesch:
> 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: c55356c534aa ("iommu: rockchip: Add support for iommu v2")
> Signed-off-by: Michael Riesch <michael.riesch@wolfvision.net>
Reviewed-by: Heiko Stuebner <heiko@sntech.de>
> ---
> drivers/iommu/rockchip-iommu.c | 10 ++++------
> 1 file changed, 4 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/iommu/rockchip-iommu.c b/drivers/iommu/rockchip-iommu.c
> index a3fc59b814ab..a68eadd64f38 100644
> --- a/drivers/iommu/rockchip-iommu.c
> +++ b/drivers/iommu/rockchip-iommu.c
> @@ -280,19 +280,17 @@ static u32 rk_mk_pte(phys_addr_t page, int prot)
> * 11:9 - Page address bit 34:32
> * 8:4 - Page address bit 39:35
> * 3 - Security
> - * 2 - Readable
> - * 1 - Writable
> + * 2 - Writable
> + * 1 - Readable
> * 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)
> {
> u32 flags = 0;
>
> - flags |= (prot & IOMMU_READ) ? RK_PTE_PAGE_READABLE_V2 : 0;
> - flags |= (prot & IOMMU_WRITE) ? RK_PTE_PAGE_WRITABLE_V2 : 0;
> + flags |= (prot & IOMMU_READ) ? RK_PTE_PAGE_READABLE : 0;
> + flags |= (prot & IOMMU_WRITE) ? RK_PTE_PAGE_WRITABLE : 0;
>
> return rk_mk_dte_v2(page) | flags;
> }
>
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [PATCH] iommu/rockchip: fix permission bits in page table entries v2
2022-11-02 6:35 [PATCH] iommu/rockchip: fix permission bits in page table entries v2 Michael Riesch
2022-11-03 14:52 ` Heiko Stübner
@ 2022-11-03 14:59 ` Joerg Roedel
1 sibling, 0 replies; 3+ messages in thread
From: Joerg Roedel @ 2022-11-03 14:59 UTC (permalink / raw)
To: Michael Riesch
Cc: iommu, linux-arm-kernel, linux-rockchip, linux-kernel,
Will Deacon, Robin Murphy, Heiko Stuebner, Benjamin Gaignard,
Simon Xue
On Wed, Nov 02, 2022 at 07:35:53AM +0100, Michael Riesch wrote:
> drivers/iommu/rockchip-iommu.c | 10 ++++------
> 1 file changed, 4 insertions(+), 6 deletions(-)
Applied, thanks.
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2022-11-03 15:00 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-11-02 6:35 [PATCH] iommu/rockchip: fix permission bits in page table entries v2 Michael Riesch
2022-11-03 14:52 ` Heiko Stübner
2022-11-03 14:59 ` Joerg Roedel
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).