HN2new | past | comments | ask | show | jobs | submitlogin

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

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.



ThreadX 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.


I 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?


I 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.


ME isnt required at all...

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.


"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

So, it is serving the same role as the Rpi VideoCore.


ME 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?)


> 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?


It'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.


Seem similar to the CSME on Intel platforms

https://igor-blue.github.io/2021/02/04/secure-boot.html#earl...




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: