Message ID | 20220702213724.3949-1-semen.protsenko@linaro.org |
---|---|
Headers | show |
Series | iommu/exynos: Add basic support for SysMMU v7 | expand |
On Sun, 2022-07-03 at 00:48 +0300, Sam Protsenko wrote: [...] > Hi Marek, > > As I understand, you have some board with SysMMU v7, which is not VM > capable (judging from the patches you shared earlier). Could you > please somehow verify if this series works fine for you? For example, > this testing driver [1] can be helpful. > > Thanks! > > [1] > https://github.com/joe-skb7/linux/commit/bbadd46fa525fe1fef2ccbdfff81f7d29caf0506 Hi Sam, Not Marek here, but I wanted to try this on my jackpotlte (Exynos 7885). The driver reports it's DPU sysmmu as version 7.2, and manually reading the capabilities registers it looks like it has the 2nd capability register but not the VM capability. After applying your patches, adding your test driver (with SYSMMU_BASE corrected to 7885 value), and adding the sysmmu to dt, I tried to cat the test file that it creates in debugfs and I got an SError kernel panic. I tried tracing where the SError happens and it looks like it's this line: /* Preload for emulation */ iowrite32(rw | vpn, obj->reg_base + MMU_EMU_PRELOAD); Trying to read the EMU registers using devmem results in a "Bus error". Could these emulation registers be missing from my SysMMU? Do you have any info on what version should have it? Or maybe some capability bit? I'll try testing it with DECON/DPP later and see if it works that way. Best regards, David
On Sun, 3 Jul 2022 at 13:47, David Virag <virag.david003@gmail.com> wrote: > > On Sun, 2022-07-03 at 00:48 +0300, Sam Protsenko wrote: > [...] > > Hi Marek, > > > > As I understand, you have some board with SysMMU v7, which is not VM > > capable (judging from the patches you shared earlier). Could you > > please somehow verify if this series works fine for you? For example, > > this testing driver [1] can be helpful. > > > > Thanks! > > > > [1] > > https://github.com/joe-skb7/linux/commit/bbadd46fa525fe1fef2ccbdfff81f7d29caf0506 > > Hi Sam, > > Not Marek here, but I wanted to try this on my jackpotlte (Exynos > 7885). The driver reports it's DPU sysmmu as version 7.2, and manually > reading the capabilities registers it looks like it has the 2nd > capability register but not the VM capability. > > After applying your patches, adding your test driver (with SYSMMU_BASE > corrected to 7885 value), and adding the sysmmu to dt, I tried to cat > the test file that it creates in debugfs and I got an SError kernel > panic. > > I tried tracing where the SError happens and it looks like it's this > line: > /* Preload for emulation */ > iowrite32(rw | vpn, obj->reg_base + MMU_EMU_PRELOAD); > > Trying to read the EMU registers using devmem results in a "Bus error". > > Could these emulation registers be missing from my SysMMU? Do you have > any info on what version should have it? Or maybe some capability bit? > I'll try testing it with DECON/DPP later and see if it works that way. > Hi Janghyuck, Do you have by chance any info on SysMMU v7.2, which is present e.g. on Exynos7885? David is trying to use emulation registers there with no luck, so it would be nice if you can provide some details on questions above. Thanks! > Best regards, > David
On Sun, 3 Jul 2022 at 13:47, David Virag <virag.david003@gmail.com> wrote: > > On Sun, 2022-07-03 at 00:48 +0300, Sam Protsenko wrote: > [...] > > Hi Marek, > > > > As I understand, you have some board with SysMMU v7, which is not VM > > capable (judging from the patches you shared earlier). Could you > > please somehow verify if this series works fine for you? For example, > > this testing driver [1] can be helpful. > > > > Thanks! > > > > [1] > > https://github.com/joe-skb7/linux/commit/bbadd46fa525fe1fef2ccbdfff81f7d29caf0506 > > Hi Sam, > > Not Marek here, but I wanted to try this on my jackpotlte (Exynos > 7885). The driver reports it's DPU sysmmu as version 7.2, and manually > reading the capabilities registers it looks like it has the 2nd > capability register but not the VM capability. > > After applying your patches, adding your test driver (with SYSMMU_BASE > corrected to 7885 value), and adding the sysmmu to dt, I tried to cat > the test file that it creates in debugfs and I got an SError kernel > panic. > > I tried tracing where the SError happens and it looks like it's this > line: > /* Preload for emulation */ > iowrite32(rw | vpn, obj->reg_base + MMU_EMU_PRELOAD); > > Trying to read the EMU registers using devmem results in a "Bus error". > > Could these emulation registers be missing from my SysMMU? Do you have > any info on what version should have it? Or maybe some capability bit? > I'll try testing it with DECON/DPP later and see if it works that way. > I don't have any manuals for v7.2, so I can only assume. Yes, it looks to me very much like those EMU registers are missing in your SysMMU IP-core: I remember seeing some similar SError messages while trying to access some incorrect MMIO addresses. Good news is that once this patch series is fixed and accepted, you can *probably* base your work on top of it (as I only validated it with EMU registers for now). I mean you can add some real IP-core users of that IOMMU, like graphics (DPU), audio, camera, etc. Not sure though if it would be enough to just add some DTS nodes, or your SoC support has to be added to some drivers first. > Best regards, > David
On Sun, 3 Jul 2022 at 13:47, David Virag <virag.david003@gmail.com> wrote: > > On Sun, 2022-07-03 at 00:48 +0300, Sam Protsenko wrote: > [...] > > Hi Marek, > > > > As I understand, you have some board with SysMMU v7, which is not VM > > capable (judging from the patches you shared earlier). Could you > > please somehow verify if this series works fine for you? For example, > > this testing driver [1] can be helpful. > > > > Thanks! > > > > [1] > > https://github.com/joe-skb7/linux/commit/bbadd46fa525fe1fef2ccbdfff81f7d29caf0506 > > Hi Sam, > > Not Marek here, but I wanted to try this on my jackpotlte (Exynos > 7885). The driver reports it's DPU sysmmu as version 7.2, and manually > reading the capabilities registers it looks like it has the 2nd > capability register but not the VM capability. > > After applying your patches, adding your test driver (with SYSMMU_BASE > corrected to 7885 value), and adding the sysmmu to dt, I tried to cat > the test file that it creates in debugfs and I got an SError kernel > panic. > > I tried tracing where the SError happens and it looks like it's this > line: > /* Preload for emulation */ > iowrite32(rw | vpn, obj->reg_base + MMU_EMU_PRELOAD); > > Trying to read the EMU registers using devmem results in a "Bus error". > > Could these emulation registers be missing from my SysMMU? Do you have > any info on what version should have it? Or maybe some capability bit? > I'll try testing it with DECON/DPP later and see if it works that way. > Hey David, Can you please try out the [1] branch again? I've added support for Exynos7885 there, using the info provided by Janghyuck Kim: apparently Exynos7885 has EMU registers, but those have some other offsets than on Exynos850: #define MMU_EMU_PRELOAD 0x8040 #define MMU_EMU_SHOT 0x8044 I wonder if my changes to [1] do the trick. [1] https://github.com/joe-skb7/linux/tree/e850-96-mainline-iommu > Best regards, > David