# VMX root-mode vs VMX non-root mode

By vmx-root code execution in HyperDbg, we mean that the code is executed after a vm-exit and before VMRESUME instruction.

By vmx non-root, it means that the code will be executed in regular kernel-mode codes.

You should be cautious if you want to cause vm-exit in vmx non-root. For example, you should not execute CPUID in vmx-root as it makes your logging mechanism slower. In other words, there is no limitation, but you have to know what you want to do.

Please make sure to avoid ["unsafe" behavior](https://docs.hyperdbg.org/tips-and-tricks/considerations/the-unsafe-behavior) in vmx-root mode.
