4 ms·
It seems like ARM created special instructions called NEVE for performant nested virtualization: https://www.cs.columbia.edu/~nieh/pubs/sosp2017_neve.pdf https:
by legulere 6y ago
It seems like ARM created special instructions called NEVE for performant nested virtualization: https://www.cs.columbia.edu/~nieh/pubs/sosp2017_neve.pdf https://www.cs.columbia.edu/~nieh/pubs/sosp2017_neve.pdf
It says it's added to ARMv8.4 and M1 seems to be ARMv8.6, but I found no information if the M1 has these extensions.
- my123 6y agoNested virtualization including the ARMv8.4 improvements are present on Apple M1. However, Apple's virtualization solution doesn't currently support those.
- londons_explore 6y agoNesting is a key part of any system to make it truly general purpose. It seems crazy that for years we lived with non-nestable VM's. It goes hand in hand with the fact that an emulated or virtualized system shouldn't be able to tell that it is emulated (if the emulator doesn't want it to know). It should run as if on real hardware. Inability to do nested virtualization reveals immediately that emulation is in play.
- saati 6y agoYou just need access to precise timers to tell if you are virtualized. If you can measure how long a full TLB miss takes vs just a cache miss you should be able to tell how deeply is your page table nested.
- londons_explore 6y agoAn emulator can emulate timers however it likes...
- amelius 6y agoOk, but that means that you can't have accurate wall clock time inside your virtual machine. Also, it would make most games impossible as all physics is ultimately tied to a clock. And of course a connection to internet is impossible.