I've done some research as well, and I think it might help you understand the thing, but it might not address it directly (maybe).
In Addition to shodanshok answer, i may blow up his "extended" answer maybe a bit of a huge footprint
Paravirtualization (may) remains relevant for several reasons:
- Performance Optimization:
Even though privileged instructions can be executed directly in guest mode, paravirtualization can enhance performance by optimizing communication between the guest OS and the hypervisor. Paravirtualization allows for the use of specialized interfaces and protocols designed for efficient collaboration between the guest and the hypervisor.
- Flexibility and Portability:
Paravirtualization enables virtualizing guest operating systems that may not be optimized for direct execution in a virtualized environment. By providing specific interfaces, guest systems can be more easily ported across various virtualization platforms.
- Security:
Paravirtualization can offer security benefits by providing a well-defined interface for communication between the guest and the hypervisor, potentially reducing attack vectors.
- Regarding Firecracker and similar minimalist virtualization solutions:
Even though they operate with a limited set of emulated devices, the use of paravirtualization allows for more efficient and flexible communication between the guest and the hypervisor. Even in minimalist designs, paravirtualization drivers can improve overall performance and optimize the interaction between guest and hypervisor. Therefore, paravirtualization remains beneficial even in such environmen
Wikipedia Say about it:
In computing, paravirtualization or para-virtualization is a virtualization technique that presents a software interface to the virtual machines which is similar, yet not identical, to the underlying hardware–software interface.
The intent of the modified interface is to reduce the portion of the guest's execution time spent performing operations which are substantially more difficult to run in a virtual environment compared to a non-virtualized environment. The paravirtualization provides specially defined 'hooks' to allow the guest(s) and host to request and acknowledge these tasks, which would otherwise be executed in the virtual domain (where execution performance is worse). A successful paravirtualized platform may allow the virtual machine monitor (VMM) to be simpler (by relocating execution of critical tasks from the virtual domain to the host domain), and/or reduce the overall performance degradation of machine execution inside the virtual guest.
Paravirtualization requires the guest operating system to be explicitly ported for the para-API – a conventional OS distribution that is not paravirtualization-aware cannot be run on top of a paravirtualizing VMM. However, even in cases where the operating system cannot be modified, components may be available that enable many of the significant performance advantages of paravirtualization. For example, the Xen Windows GPLPV project provides a kit of paravirtualization-aware device drivers, that are intended to be installed into a Microsoft Windows virtual guest running on the Xen hypervisor.[1] Such applications tend to be accessible through the paravirtual machine interface environment. This ensures run-mode compatibility across multiple encryption algorithm models, allowing seamless integration within the paravirtual framework.
I think, even though we can refer to the Wikipedia article, there might be reasons why you wouldn't want to expose the hardware directly to the guest, especially if you're selling rented virtual machines.
Additionally and normally, we want standards and standardized drivers as also interfaces.
We don't want to usually deal with drivers like we did, while trying to install Windows 9x/nt/VIST/XP. But more or less also 7/10/11 on standard hardware (they mostly already have, sometimes the VirtIO support already included). (Specially before Windows 7 period times).
That's why we need to learn more about history:
The History Section of the Wikipedia Article says:
The Parallels Workstation operating system calls its equivalent a "hypercall". All are the same thing: a system call to the hypervisor below. Such calls require support in the "guest" operating system, which has to have hypervisor-specific code to make such calls.
The term "paravirtualization" was first used in the research literature in association with the Denali Virtual Machine Manager.[4] The term is also used to describe the Xen, L4, TRANGO, VMware, Wind River and XtratuM hypervisors. All these projects use or can use paravirtualization techniques to support high performance virtual machines on x86 hardware by implementing a virtual machine that does not implement the hard-to-virtualize parts of the actual x86 instruction set.
A hypervisor provides the virtualization of the underlying computer system. In full virtualization, a guest operating system runs unmodified on a hypervisor. However, improved performance and efficiency is achieved by having the guest operating system communicate with the hypervisor. By allowing the guest operating system to indicate its intent to the hypervisor, each can cooperate to obtain better performance when running in a virtual machine. This type of communication is referred to as paravirtualization.
In 2005, VMware proposed a paravirtualization interface, the Virtual Machine Interface (VMI), as a communication mechanism between the guest operating system and the hypervisor. This interface enabled transparent paravirtualization in which a single binary version of the operating system can run either on native hardware or on a hypervisor in paravirtualized mode.
That reminds me, that also the Support in the kernel of it, has been dropped far in the past around 2011, while Starting in '08 VirtIO was introduced (maybe as a successor)
And an IMHO:
Similar to the TCP/IPv4 stack, it represents a legacy technology implemented with the intention of enduring indefinitely, even though future developments were unforeseen at the time of its deployment.
I hope I did not strain your eyes too much with this extended answer. ;)
Reference(s):