25.09.2020 15:39, Robin Murphy пишет: ... >> IIRC, in the past Robin Murphy was suggesting to read out hardware state >> early during kernel boot in order to find what regions are in use by >> hardware. > > I doubt I suggested that in general, because I've always firmly believed > it to be a terrible idea. I've debugged too many cases where firmware or > kexec has inadvertently left DMA running and corrupted kernel memory, so > in general we definitely *don't* want to blindly trust random hardware > state. Anything I may have said in relation to Qualcomm's fundamentally > broken hypervisor/bootloader setup should not be considered outside that > specific context ;) > > Robin. > >> I think it should be easy to do for the display controller since we >> could check clock and PD states in order to decide whether DC's IO could >> be accessed and then read out the FB pointer and size. I guess it should >> take about hundred lines of code. The active DMA is indeed very dangerous, but it's a bit less dangerous in a case of read-only DMA. I got another idea of how we could benefit from the active display hardware. Maybe we could do the following: 1. Check whether display is active 2. Allocate CMA that matches the FB size 3. Create identity mapping for the CMA 4. Switch display framebuffer to our CMA 5. Create very early simple-framebuffer out of the CMA 6. Once Tegra DRM driver is loaded, it will kick out the simple-fb, and thus, release temporal CMA and identity mapping. This will provide us with a very early framebuffer output and it will work on all devices out-of-the-box!