I had encountered the same error after I updated the kernel on my gentoo system
from the old stable version 5.4.109 to the new stable kernel 5.10.27
In my case the hardware is a Banana Pro but also with the same sun7i-a20 SoC
After I booted the new kernel the HDMI Output stoped working and in the log output
I found the nearly exact same error message like here shown by the starter of this thread.
The only difference is a slight differenz in the memory address 7f817000 vs. 7fb00000
on my system. But the reason is the same, the system tries to reach the memmory
addres but the address is Out of memory (ENOMEM/12)
On a system with a working kernel the output at the same place looks like the two
lines below:
simple-framebuffer 7fb00000.framebuffer: framebuffer at 0x7fb00000, 0x500000 bytes, mapped to 0x(ptrval)
simple-framebuffer 7fb00000.framebuffer: format=x8r8g8b8, mode=1280x1024x32, linelength=5120
So I checked all new kernel configuration settings I made when I configured
the new kernel 5.10.27 and there I found the reason for the error.
I changed the old setting FLATMEM_MANUAL to the new setting SPARSEMEM_MANUAL
this "new" option was presented to me when I made the make oldconfig
configuration checks and changes.
After I changed the setting from SPARSEMEM_MANUAL back to FLATMEM_MANUAL
and used the kernel with this setting the error was gone and everything worked like before.
This is a fix but not the real solution for the problem.
The intresting question, where I have no real awnser at the moment, is,
what have to be changed that the kernel will also work with the SPARSEMEM_MANUAL
configuration setting on this device.
I assume that a configuration setting inside the dts file will be needed to protect this
memory region for the frambuffer.
I also checked this configuration setting with older working kernels like 5.5, 5.6, 5.7, 5.8
they all showed the same error and the HDMI port stopped working when I changed
the configuration setting to SPARSEMEM_MANUAL