Do you know what is the most popular PC machine nowadays? It is “simple” PCI based x86(-64) machine with i440fx chipset and some expansion cards. Everyone is using them daily. Often you do not even realise that things you do online are handled by machines from 90s.
What? 90s hardware in modern world?
Sounds like a heresy? Who would use 90s hardware in modern world? PCI cards were supposed to be replaced by PCI Express etc, right? No one uses USB 1.x host controllers, hard to find PS/2 mouse or keyboard in stores etc. And you all are wrong…
Meet virtual PC
Most of virtual machines in x86 world is a weird mix of 90s hardware with a bunch of PCI cards to keep them usable in modern world. Parallel ATA storage went to trash replaced by SCSI/SATA/virtual ones. Graphic card is usually simple framebuffer without any 3D acceleration (so like 90s) and typical PS/2 input devices connected. And you have USB 1.1 and 2.0 controllers with one tablet connected. Sounds like retro machines my friends prepare for retro events.
You can upgrade to USB 3.0 controller, graphic card with some 3D acceleration. Or add more memory and cpu cores that i440fx based PC owner ever dreamt about. But it is still 90s hardware.
What about some XXI century hardware?
Want to have something more modern? You can migrate to PCI Express. But nearly no one does that in virtual x86 world. And in AArch64 world we start from here.
And that’s the reason why working with developers of projects related to virtualization (qemu, libvirt, openstack) can be frustrating.
Issues with hotplug?
Hotplug issues? Which hotplug issues? My VM instance allows to plug 10 cards
while it is running so where is a problem? The problem is that your machine is
90s hardware with simple PCI bus and 31 slots present on virtual mainboard while
VM instance with PCI Express (aarch64, x86 with q35
model) has only TWO free
slots present on motherboard. And once they are used no new slots arrive. Unless
you shutdown, add free slots and power up again.
Architecture differences?
Or my recent stuff: adding USB host controller. x86 has it because someone ‘made a mistake’ in past and enabled it. But other architectures got sorted out and did not get it. Now all of them need to have it added when it is needed. Have a patch to Nova for it and I am rewriting it again and again to get it into acceptable form.
Partitioning is fun too. There are so many people who fear switching to GPT…