Note that this is just test, IOMMU benefits are big. It protects unallocated memory being used by HW (in other words, it prevents HW corrupting memory) and it allows any amount of free memory to be allocated to video decoding (otherwise only CMA memory can be used, which is limited in size).
So far no lock ups (14 hours uptime), Kodi has locked up but not the shell (so this is different), but this is in dmesg, seems to be a conflict between sugov (some sort of kernel thread or work queue?) and kodi.bin:
http://ix.io/4Gr3
[44621.768089] Call trace:
[44621.768132] __switch_to+0x104/0x1a0
[44621.768253] __per_cpu_offset+0x0/0x40
[44621.768355] Task dump for CPU 3:
[44621.768403] task:kodi.bin state:R running task stack:0 pid:810 ppid:806 flags:0x00000002
[44621.768525] Call trace:
[44621.768566] __switch_to+0x104/0x1a0
[44621.768663] 0x7c001c5c3f38
[44684.787412] rcu: INFO: rcu_preempt detected stalls on CPUs/tasks:
[44684.787506] rcu: 2-...0: (3 ticks this GP) idle=45e4/1/0x4000000000000000 softirq=40130/40130 fqs=3281432
[44684.787617] rcu: 3-...0: (91 ticks this GP) idle=f68c/1/0x4000000000000000 softirq=65609/65609 fqs=3281433
[44684.787717] rcu: (detected by 1, t=7158022 jiffies, g=146561, q=36591 ncpus=4)
[44684.787789] Task dump for CPU 2:
[44684.787835] task:sugov:0 state:R running task stack:0 pid:95 ppid:2 flags:0x0000000a
[44684.787966] Call trace:
[44684.788009] __switch_to+0x104/0x1a0
[44684.788130] __per_cpu_offset+0x0/0x40
[44684.788231] Task dump for CPU 3:
[44684.788278] task:kodi.bin state:R running task stack:0 pid:810 ppid:806 flags:0x00000002
[44684.788400] Call trace:
[44684.788442] __switch_to+0x104/0x1a0
[44684.788539] 0x7c001c5c3f38
[44747.807286] rcu: INFO: rcu_preempt detected stalls on CPUs/tasks:
[44747.807382] rcu: 2-...0: (3 ticks this GP) idle=45e4/1/0x4000000000000000 softirq=40130/40130 fqs=3288932
[44747.807491] rcu: 3-...0: (91 ticks this GP) idle=f68c/1/0x4000000000000000 softirq=65609/65609 fqs=3288933
[44747.807591] rcu: (detected by 1, t=7173777 jiffies, g=146561, q=36646 ncpus=4)
[44747.807663] Task dump for CPU 2:
[44747.807709] task:sugov:0 state:R running task stack:0 pid:95 ppid:2 flags:0x0000000a
[44747.807839] Call trace:
[44747.807881] __switch_to+0x104/0x1a0
[44747.808002] __per_cpu_offset+0x0/0x40
[44747.808102] Task dump for CPU 3:
[44747.808149] task:kodi.bin state:R running task stack:0 pid:810 ppid:806 flags:0x00000002
[44747.808273] Call trace:
[44747.808314] __switch_to+0x104/0x1a0
[44747.808411] 0x7c001c5c3f38
Display More
I'm trying the performance governor, when I tried to change it while it was in this state the shell would hang/deadlock. I rebooted, did:
echo performance > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
We will see how that goes, the sugov kthread is related to schedutil governor.