4 ms·
it would still depend on the firmware. people forget that Raspberry Pi is controlled entirely by the proprietary ThreadX RTOS which acts as a hypervisor and al
by nimbius 6y ago
it would still depend on the firmware. people forget that Raspberry Pi is controlled entirely by the proprietary ThreadX RTOS which acts as a hypervisor and allows Linux to run as a virtual "guest" on the pi.
https://en.wikipedia.org/wiki/ThreadX https://en.wikipedia.org/wiki/ThreadX
and for the uninitiated, ThreadX RTOS is not the same as Intel's ME. ThreadX is a critical dependency to run any OS on PI. without Intel ME, you can still run an OS.
this virtualization model is still largely why Pi performance is complete garbage compared to pine64, banana pi, beagle, and others.
- monocasa 6y agoI think you're mistaken about several pieces. First off ThreadX on the video core does not run as a hypervisor. It also does not impede perf on the ARM core. Additionally, yes, Intel ME is required to run anything on Intel cores. Without it the main cores don't start.
- nimbius 6y agoME isnt required at all... https://www.csoonline.com/article/3220476/researchers-say-now-you-too-can-disable-intel-me-backdoor-thanks-to-the-nsa.html https://www.csoonline.com/article/3220476/researchers-say-no... To explain this again, it technically is a guest. The GPU cores run a real time operating system called ThreadX. This operating system is closed source and rules the system without the open source Linux Kernel being aware of it. When the Raspberry Pi starts booting the CPU is completely disconnected (technically in reset state) and the GPU is the one that starts the system. You can have a look at the `/boot` folder and you will see some of the binary blobs used by the GPU to both start the CPU and run its own ThreadX OS (bootcode.bin and start.elf). You can learn more details about the boot process here. After the GPU has the CPU load the Linux Kernel, it doesn’t just stay there waiting to act as a graphics-processing-unit. The GPU is still in charge. IME is a different beast entirely.
- ylyn 6y agoIt's not running as a hypervisor. A hypervisor is specifically something that hosts VMs. The OS running on the ARM core is not running in a VM.
- monocasa 6y agoME is still required; that strap option that the article describes just disables the stuff like it's network stack and remote admin facilities after it has started the Intel cores. It is still required to be on for power management for instance. Also, interestingly you can swap out the terms on your paragraph and it's still true > When an Intel CPU starts booting the CPU is completely disconnected (technically in reset state) and the ME is the one that starts the system. You can have a look at the boot flash partitions and you will see some of the binary blobs used by the ME to both start the CPU and run its own ThreadX OS. Although albeit, on newer MEs they switched from ThreadX to Minix. The ME is very very very similar. "Technically" it's not a guest relationship, the ARM cores start in EL3 (above hypervisor mode in secure mode). And none of this show any perf costs to having a management core (except maybe some minimal bandwidth pressure?)
- tyingq 6y ago"ME isn't required at all..." The document you linked refers to a more technical one that explains they don't disable the ME until after the main OS is booted, because... "The disappointing fact is that on modern computers, it is impossible to completely disable ME. This is primarily due to the fact that this technology is responsible for initialization, power management, and launch of the main processor." http://blog.ptsecurity.com/2017/08/disabling-intel-me.html http://blog.ptsecurity.com/2017/08/disabling-intel-me.html So, it is serving the same role as the Rpi VideoCore.
- beatrobot 6y agoSeem similar to the CSME on Intel platforms https://igor-blue.github.io/2021/02/04/secure-boot.html#early-power-on https://igor-blue.github.io/2021/02/04/secure-boot.html#earl...
- danaliv 6y ago> ThreadX ... rules the system > The GPU is still in charge Can you explain in specific, concrete terms what this means? For example: I've read that the undervoltage monitoring happens on the ThreadX process, and that it throttles the ARM cores when low voltage is detected. The vcgencmd has more info on this, including the following bit field returned by vcgencmd get_throttled: Bit Hex value Meaning 0 1 Under-voltage detected 1 2 Arm frequency capped 2 4 Currently throttled 3 8 Soft temperature limit active 16 10000 Under-voltage has occurred 17 20000 Arm frequency capping has occurred 18 40000 Throttling has occurred 19 80000 Soft temperature limit has occurred What else does it do?
- tyingq 6y agoI thought ThreadX only ran on the VideoCore, basically to bootstrap Linux on the ARM processer. The only performance that might affect is elapsed time to boot. That doesn't sound like virtualization to me. Do have more info?
- justin66 6y agoThreadX does not do what you think it does. On the Pi it acts as the first stage bootloader, it is not used as a hypervisor. What you've written above is not even remotely true. You've been corrected on this before, you ought to stop spreading kooky misinformation.