RE: [PATCH 2/9] iommu/ipmmu-vmsa: Hook up R8A774E1 DT matching code
From: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Date: 2020-07-14 11:42:21
Also in:
dmaengine, linux-gpio, linux-iommu, linux-renesas-soc, lkml, netdev
Hi Geert-san,
From: Geert Uytterhoeven, Sent: Tuesday, July 14, 2020 5:42 PM Hi Prabhakar, On Tue, Jul 14, 2020 at 10:30 AM Lad, Prabhakar [off-list ref] wrote:quoted
On Tue, Jul 14, 2020 at 9:09 AM Geert Uytterhoeven [off-list ref] wrote:quoted
On Mon, Jul 13, 2020 at 11:35 PM Lad Prabhakar [off-list ref] wrote:quoted
From: Marian-Cristian Rotariu <redacted> Add support for RZ/G2H (R8A774E1) SoC IPMMUs. Signed-off-by: Marian-Cristian Rotariu <redacted> Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>Thanks for your patch!quoted
--- a/drivers/iommu/ipmmu-vmsa.c +++ b/drivers/iommu/ipmmu-vmsa.c@@ -751,6 +751,7 @@ static const struct soc_device_attribute soc_rcar_gen3[] = { static const struct soc_device_attribute soc_rcar_gen3_whitelist[] = { { .soc_id = "r8a774b1", }, { .soc_id = "r8a774c0", }, + { .soc_id = "r8a774e1", },Adding an entry to soc_rcar_gen3_whitelist[] doesn't do anything, unless you also add the same entry to soc_rcar_gen3[].I think the comment "For R-Car Gen3 use a white list to opt-in slave devices." is misleading. Booting through the kernel I do see iommu groups (attached is the logs).Indeed. Without an entry in soc_rcar_gen3[], the IPMMU is enabled unconditionally, and soc_rcar_gen3_whitelist[] is ignored. That's why you want an entry in both, unless you have an R-Car Gen3 SoC where the IPMMU works correctly with all slave devices present. Perhaps soc_rcar_gen3[] should be renamed to soc_rcar_gen3_greylist[] (or soc_rcar_gen3_maybelist[]) to make this clear?
I think so (we should rename it).
quoted
Also the recent patch to add "r8a77961" just adds to soc_rcar_gen3_whitelist.Oops, commit 17fe16181639801b ("iommu/renesas: Add support for r8a77961") did it wrong, too.
Thank you for the point it out. We should add r8a77961 to the soc_rcar_gen3[]. However, I don't know why I could not realize this issue... So, I investigated this a little and then, IIUC, glob_match() which soc_device_match() uses seems to return true, if *pat = "r8a7796" and *str = "r8a77961". Best regards, Yoshihiro Shimoda