How retiring segmentation in AMD64 long mode broke VMware (2006)
pagetable.com
pagetable.com
Segmentation isn't the only one, however; many of the existing seldom-used one-byte instructions also inexplicably went missing (became completely invalid - they didn't reuse them for prefixes or anything like that), and among them were SAHF/LAHF which also turned out to be important for virtualisation. In this case the solution was that both AMD and Intel put them back sometime later, and had to add an extra "feature bit" to indicate this. It's quite absurd considering that these instructions were present in 32-bit mode, and leaving them unchanged in 64-bit mode from the beginning would've avoided this issue completely.
As successful as x86-64 is, I definitely think the 64-bit transition could've been much better, similar to how the 32-bit extensions that came with the 386 fitted nicely into the existing instruction set and could even be used from 16-bit mode. In contrast, there is no way to use 64-bit registers in 32-bit code despite there being reservations in the existing instruction set that would've made it possible. V86-mode, which has been present since the 386, could've been extended in a relatively straightforward manner to make virtualisation easier.
Isn't it what the X32 ABI do?
On x86 CPUs since the the 386, you don't need a hack to make 32-bit mode look like a 16-bit mode, you literally can access the full 32-bit registers in 16-bit modes with an operand size prefix.
VMware (and that style of virtualization) is so popular because of the utter failure of OSes to do what they are supposed to do.
Protected multiuser multitasking operating systems are supposed to be able to protect processes from impinging on one another, and they can't do it. The result is that on a very large scale we have datacenters that spawn VMware virtual machine after VMware virtual machine, a "make everything look like a nail so we can use this hammer" approach that is wasting huge amounts of resources.
There would still be a use for VMware if OSes worked, but nothing like we see today. People should get back to work on fixing OSes so a cloud host could actually run processes from different customers in a lightweight way and have them not screw each other up.
Can you elaborate? In what way are they failing here?