On Tue, Jul 23, 2019 at 8:38 AM Will Deacon will@kernel.org wrote:
On Mon, Jul 22, 2019 at 09:23:48AM -0700, Rob Clark wrote:
On Mon, Jul 22, 2019 at 8:48 AM Joerg Roedel joro@8bytes.org wrote:
On Mon, Jul 22, 2019 at 08:41:34AM -0700, Rob Clark wrote:
It is set by the driver:
https://patchwork.freedesktop.org/patch/315291/
(This doesn't really belong in devicetree, since it isn't a description of the hardware, so the driver is really the only place to set this.. which is fine because it is about a detail of how the driver works.)
It is more a detail about how the firmware works. IIUC the problem is that the firmware initializes the context mappings for the GPU and the OS doesn't know anything about that and just overwrites them, causing the firmware GPU driver to fail badly.
So I think it is the task of the firmware to tell the OS not to touch the devices mappings until the OS device driver takes over. On x86 there is something similar with the RMRR/unity-map tables from the firmware.
Bjorn had a patchset[1] to inherit the config from firmware/bootloader when arm-smmu is probed which handles that part of the problem. My patch is intended to be used on top of his patchset. This seems to me like the best solution, if we don't have control over the firmware.
Hmm, but the feedback from Robin on the thread you cite was that this should be generalised to look more like RMRR, so there seems to be a clear message here.
Perhaps it is a lack of creativity, or lack of familiarity w/ iommu vs virtualization, but I'm not quite seeing how RMRR would help.. in particular when dealing with both DT and ACPI cases. So I kinda prefer, when possible, if arm-smmu can figure out what is going on by looking at the hw state at boot (since that approach would work equally well for DT and ACPI).
I *think* (but need to confirm if Bjorn hasn't already) that the memory for the pagetables that firmware/bootloader sets up is already removed from the memory map efi passes to kernel, so we don't need to worry about kernel stomping in-use pagetables.
BR, -R