** Description changed: + [Impact] + + The ipmmu-vmsa driver registers itself to the system via an initcall() + to ipmmu_init(), and in case it's the first (or the only) iommu driver, + it registers its iommu ops to the platform bus - in the tegra2 case, + there's no iommu hardware, so all drivers bail out, except for the + ipmmu-vmsa. + + Later on, during boot, when the Tegra host1x is probing + (drivers/gpu/host1x/dev.c::host1x_probe()), it checks if an iommu device + is present (drivers/iommu/iommu.c::iommu_present() that does so by + identifying if any iommu ops were registered) and attach to the + supposedly present device, incurring in a null pointer dereference. + + Upstream quickly acknowledged the problem, and rolled a patch to + restrict the ipmmu-vmsa driver to register if and only if a compatible + device is present. + + The fix appared initially in 4.19, and was later backported via stable + to 4.18.x, and this is a clean cherry pick of that commit. + + [Fix] + + Apply the attached patch and recompile. + + [How to test] + + Try to boot a patched kernel on a Tegra2 board. + + [Regession potential] + + None, the fix is trivial. + + -- + + Original bug: + Hi, booting the bionic kernel (4.15.0-29-generic) on my Tegra20 device (no iommu), I found it crashes during display driver setup. The bootlog (and crash) is attached. Asking on Tegra IRC channel, digetx found that this is caused by the IPMMU-VMSA driver which is always registered via initcall. Adding "initcall_blacklist=ipmmu_init" to the kernel parameters makes it boot fine. Maybe this buggy driver should be disabled in the config (or fixed somehow)?
-- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1783746 Title: ipmmu is always registered To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1783746/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs