I don't think those are accessible from the ARM cores, as the Broadcom SoCs used on Raspberry Pi single-board computers only see virtual memory themselves, which is what people are talking about on the thread that you linked. If I recall correctly on the Pi 4 the RAM is physically mapped to 0xC000_0000, whereas the 64-MB reserved for hardware peripherals is mapped to 0x7C00_0000, however the ARM cores see those two regions of memory at 0x0000_0000 and 0xFC00_0000 for the RAM and peripherals respectively, and the peripherals can be moved out of the first 16GB of address space with the peri_high config.txt setting. This happens because, from what I understand, the ARM cores aren't bus masters themselves, and the GPU firmware can control what they see using its own MMU which is likely not configurable from CPU code even if you boot in EL3.
Having said the above, I'm not exactly sure why you need access to that particular MMU since it's likely never touched by anything running on the ARM cores including Linux itself, meaning you don't have to virtualize access to any of that. The GPU exposes a Mailbox hardware interface that you can leverage to call functionality or request information firmware that is not available through any other means, so beyond all the other hardware peripherals, all you have to do is emulate that interface and implement its low level API. Some extremely outdated information about that interface and API that you can read just to get your feet wet can be found on the official firmware wiki. To my knowledge only the property interface channel is really used these days, and on the Raspberry Pi 5 most of that stuff has either been completely removed or is in several states of broken since all the frame buffer stuff is now handled directly from the real Kernel Mode Setting driver on Linux. I can also help you locate the relevant Linux kernel code since I've read a lot of that in the past, but currently don't have it on my system, so if you need assistance with that just say and I'll download it to extract the relevant information.
Having said the above, I'm not exactly sure why you need access to that particular MMU since it's likely never touched by anything running on the ARM cores including Linux itself, meaning you don't have to virtualize access to any of that. The GPU exposes a Mailbox hardware interface that you can leverage to call functionality or request information firmware that is not available through any other means, so beyond all the other hardware peripherals, all you have to do is emulate that interface and implement its low level API. Some extremely outdated information about that interface and API that you can read just to get your feet wet can be found on the official firmware wiki. To my knowledge only the property interface channel is really used these days, and on the Raspberry Pi 5 most of that stuff has either been completely removed or is in several states of broken since all the frame buffer stuff is now handled directly from the real Kernel Mode Setting driver on Linux. I can also help you locate the relevant Linux kernel code since I've read a lot of that in the past, but currently don't have it on my system, so if you need assistance with that just say and I'll download it to extract the relevant information.
Statistics: Posted by Fridux — Thu Sep 04, 2025 8:59 am